From 472c9116c20c8dd1aa0762869c40781d735cf2a3 Mon Sep 17 00:00:00 2001 From: Robert Date: Sun, 29 Oct 2023 16:23:44 -0700 Subject: [PATCH] Updated dynamic navigation bar and other minor updates Updated the navigation bar code to not use the customJS plugin as it was causing errors to be displayed when the navbar is loaded on launch of Obsidian and occasionally on mobile devices. The README has been updated to reflect this change. --- README.md | 37 +- Vault/.obsidian/community-plugins.json | 1 - Vault/.obsidian/core-plugins-migration.json | 3 +- Vault/.obsidian/plugins/customjs/main.js | 6428 ++++++++++- .../.obsidian/plugins/customjs/manifest.json | 4 +- Vault/.obsidian/plugins/dataview/main.js | 6676 ++++++----- .../.obsidian/plugins/dataview/manifest.json | 2 +- Vault/.obsidian/plugins/dataview/styles.css | 2 +- Vault/.obsidian/plugins/homepage/data.json | 23 - Vault/.obsidian/plugins/homepage/main.js | 3 - .../.obsidian/plugins/homepage/manifest.json | 10 - Vault/.obsidian/plugins/homepage/styles.css | 135 - .../obsidian-book-search-plugin/main.js | 6 +- .../obsidian-book-search-plugin/manifest.json | 2 +- .../obsidian-excalidraw-plugin/main.js | 72 +- .../obsidian-excalidraw-plugin/manifest.json | 2 +- .../obsidian-excalidraw-plugin/styles.css | 131 +- .../plugins/obsidian-image-toolkit/main.js | 914 +- .../obsidian-image-toolkit/manifest.json | 2 +- .../plugins/obsidian-image-toolkit/styles.css | 538 +- .../.obsidian/plugins/obsidian-linter/main.js | 552 +- .../plugins/obsidian-linter/manifest.json | 4 +- .../plugins/obsidian-linter/styles.css | 44 + .../plugins/obsidian-style-settings/main.js | 9992 +++++++++-------- .../obsidian-style-settings/manifest.json | 16 +- .../plugins/obsidian-tasks-plugin/main.js | 176 +- .../obsidian-tasks-plugin/manifest.json | 2 +- Vault/.obsidian/plugins/omnisearch/data.json | 8 +- Vault/.obsidian/plugins/omnisearch/main.js | 69 +- .../plugins/omnisearch/manifest.json | 4 +- Vault/.obsidian/plugins/omnisearch/styles.css | 2 +- .../table-editor-obsidian/manifest.json | 7 +- .../plugins/templater-obsidian/main.js | 342 +- .../plugins/templater-obsidian/manifest.json | 2 +- .../plugins/templater-obsidian/styles.css | 145 +- Vault/.obsidian/themes/Minimal/manifest.json | 2 +- Vault/.obsidian/themes/Minimal/theme.css | 54 +- Vault/.obsidian/workspace.json | 63 +- Vault/Concept Board/Concept Board.md | 75 +- Vault/Dashboard.md | 1 + Vault/{ => Inbox}/Inbox.md | 0 Vault/Journal/Journal Dashboard.md | 75 +- Vault/Learning/Learning Dashboard.md | 75 +- Vault/Notes/Notes Dashboard.md | 75 +- Vault/Personal/Personal Dashboard.md | 75 +- Vault/Projects/Projects.md | 75 +- .../2023-10-29 - Example Meeting Note.md | 28 + Vault/Projects/Top Secret Project/Tasks.md | 1 + Vault/README.md | 38 +- Vault/Resources/Resources Dashboard.md | 75 +- .../Navigation with Dataview and customJS.md | 8 + .../Navigation with DataviewJS.md | 41 + .../Obsidian Development Dashboard.md | 30 + Vault/Spaces/Spaces Dashboard.md | 75 +- .../templates/project/Project meeting.md | 2 +- 55 files changed, 17684 insertions(+), 9540 deletions(-) delete mode 100644 Vault/.obsidian/plugins/homepage/data.json delete mode 100644 Vault/.obsidian/plugins/homepage/main.js delete mode 100644 Vault/.obsidian/plugins/homepage/manifest.json delete mode 100644 Vault/.obsidian/plugins/homepage/styles.css rename Vault/{ => Inbox}/Inbox.md (100%) create mode 100644 Vault/Projects/Top Secret Project/Meetings/2023-10-29 - Example Meeting Note.md create mode 100644 Vault/Spaces/Obsidian Development/Navigation with Dataview and customJS.md create mode 100644 Vault/Spaces/Obsidian Development/Navigation with DataviewJS.md create mode 100644 Vault/Spaces/Obsidian Development/Obsidian Development Dashboard.md diff --git a/README.md b/README.md index ed68aac..be768e3 100644 --- a/README.md +++ b/README.md @@ -202,8 +202,41 @@ The links displayed in the navigation bar are set by a combination of a page's t ```` ```dataviewjs -const {Navbar} = customJS; -await Navbar.createNavbar(app, dv); +let navbar = []; +let loadingMessage = dv.el("span", "**Loading navigation...**", {attr: {style: "font-size:13px; color:gray"}}); + +let allPages = dv.pages("#dashboard").sort(page => page.file.folder, "asc"); +let filteredPages = allPages.filter(p => + p.file.tags.values.includes("#dashboard") && p?.include_in_navbar == true +); + +for(let page of filteredPages){ + let navItem = ''; + let navName = 'Untitled'; + let navLink = ''; + + if(page.navbar_name === undefined){ + navName = page.file.name; + } else { + navName = page.navbar_name; + } + navLink = page.file.path; + + // Format the nav item link + if(dv.current().file.path === page.file.path){ + navItem = `**[[${navLink}|${navName}]]**` + } else { + navItem = `[[${navLink}|${navName}]]` + } + + navbar.push(navItem) +} + +dv.paragraph(navbar.join(' | ')) + +if(filteredPages.values.length > 0){ + loadingMessage.remove(); +} ``` ```` diff --git a/Vault/.obsidian/community-plugins.json b/Vault/.obsidian/community-plugins.json index ba65c1a..fc62ca8 100644 --- a/Vault/.obsidian/community-plugins.json +++ b/Vault/.obsidian/community-plugins.json @@ -7,7 +7,6 @@ "buttons", "obsidian-tasks-plugin", "obsidian-style-settings", - "homepage", "obsidian-book-search-plugin", "templater-obsidian", "obsidian-image-toolkit", diff --git a/Vault/.obsidian/core-plugins-migration.json b/Vault/.obsidian/core-plugins-migration.json index 78d9e27..3e37b32 100644 --- a/Vault/.obsidian/core-plugins-migration.json +++ b/Vault/.obsidian/core-plugins-migration.json @@ -25,5 +25,6 @@ "workspaces": false, "file-recovery": true, "publish": false, - "sync": false + "sync": false, + "properties": false } \ No newline at end of file diff --git a/Vault/.obsidian/plugins/customjs/main.js b/Vault/.obsidian/plugins/customjs/main.js index d173f3e..c0f5a31 100644 --- a/Vault/.obsidian/plugins/customjs/main.js +++ b/Vault/.obsidian/plugins/customjs/main.js @@ -7,184 +7,6227 @@ if you want to view the source visit the plugins github repository var obsidian = require('obsidian'); +function _interopNamespace(e) { + if (e && e.__esModule) return e; + var n = Object.create(null); + if (e) { + Object.keys(e).forEach(function (k) { + if (k !== 'default') { + var d = Object.getOwnPropertyDescriptor(e, k); + Object.defineProperty(n, k, d.get ? d : { + enumerable: true, + get: function () { return e[k]; } + }); + } + }); + } + n["default"] = e; + return Object.freeze(n); +} + +var obsidian__namespace = /*#__PURE__*/_interopNamespace(obsidian); + /****************************************************************************** Copyright (c) Microsoft Corporation. -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted. +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +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. +***************************************************************************** */ + +function __awaiter(thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +} + +var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + +function getAugmentedNamespace(n) { + if (n.__esModule) return n; + var a = Object.defineProperty({}, '__esModule', {value: true}); + Object.keys(n).forEach(function (k) { + var d = Object.getOwnPropertyDescriptor(n, k); + Object.defineProperty(a, k, d.get ? d : { + enumerable: true, + get: function () { + return n[k]; + } + }); + }); + return a; +} + +function createCommonjsModule(fn) { + var module = { exports: {} }; + return fn(module, module.exports), module.exports; +} + +/* global define */ + +var compareVersions = createCommonjsModule(function (module, exports) { +(function (root, factory) { + /* istanbul ignore next */ + { + module.exports = factory(); + } +}(commonjsGlobal, function () { + + var semver = /^v?(?:\d+)(\.(?:[x*]|\d+)(\.(?:[x*]|\d+)(\.(?:[x*]|\d+))?(?:-[\da-z\-]+(?:\.[\da-z\-]+)*)?(?:\+[\da-z\-]+(?:\.[\da-z\-]+)*)?)?)?$/i; + + function indexOrEnd(str, q) { + return str.indexOf(q) === -1 ? str.length : str.indexOf(q); + } + + function split(v) { + var c = v.replace(/^v/, '').replace(/\+.*$/, ''); + var patchIndex = indexOrEnd(c, '-'); + var arr = c.substring(0, patchIndex).split('.'); + arr.push(c.substring(patchIndex + 1)); + return arr; + } + + function tryParse(v) { + return isNaN(Number(v)) ? v : Number(v); + } + + function validate(version) { + if (typeof version !== 'string') { + throw new TypeError('Invalid argument expected string'); + } + if (!semver.test(version)) { + throw new Error('Invalid argument not valid semver (\''+version+'\' received)'); + } + } + + function compareVersions(v1, v2) { + [v1, v2].forEach(validate); + + var s1 = split(v1); + var s2 = split(v2); + + for (var i = 0; i < Math.max(s1.length - 1, s2.length - 1); i++) { + var n1 = parseInt(s1[i] || 0, 10); + var n2 = parseInt(s2[i] || 0, 10); + + if (n1 > n2) return 1; + if (n2 > n1) return -1; + } + + var sp1 = s1[s1.length - 1]; + var sp2 = s2[s2.length - 1]; + + if (sp1 && sp2) { + var p1 = sp1.split('.').map(tryParse); + var p2 = sp2.split('.').map(tryParse); + + for (i = 0; i < Math.max(p1.length, p2.length); i++) { + if (p1[i] === undefined || typeof p2[i] === 'string' && typeof p1[i] === 'number') return -1; + if (p2[i] === undefined || typeof p1[i] === 'string' && typeof p2[i] === 'number') return 1; + + if (p1[i] > p2[i]) return 1; + if (p2[i] > p1[i]) return -1; + } + } else if (sp1 || sp2) { + return sp1 ? -1 : 1; + } + + return 0; + } + var allowedOperators = [ + '>', + '>=', + '=', + '<', + '<=' + ]; + + var operatorResMap = { + '>': [1], + '>=': [0, 1], + '=': [0], + '<=': [-1, 0], + '<': [-1] + }; + + function validateOperator(op) { + if (typeof op !== 'string') { + throw new TypeError('Invalid operator type, expected string but got ' + typeof op); + } + if (allowedOperators.indexOf(op) === -1) { + throw new TypeError('Invalid operator, expected one of ' + allowedOperators.join('|')); + } + } + + compareVersions.validate = function(version) { + return typeof version === 'string' && semver.test(version); + }; + + compareVersions.compare = function (v1, v2, operator) { + // Validate operator + validateOperator(operator); + + // since result of compareVersions can only be -1 or 0 or 1 + // a simple map can be used to replace switch + var res = compareVersions(v1, v2); + return operatorResMap[operator].indexOf(res) > -1; + }; + + return compareVersions; +})); +}); + +// Reserved word lists for various dialects of the language + +var reservedWords = { + 3: "abstract boolean byte char class double enum export extends final float goto implements import int interface long native package private protected public short static super synchronized throws transient volatile", + 5: "class enum extends super const export import", + 6: "enum", + strict: "implements interface let package private protected public static yield", + strictBind: "eval arguments" +}; + +// And the keywords + +var ecma5AndLessKeywords = "break case catch continue debugger default do else finally for function if return switch throw try var while with null true false instanceof typeof void delete new in this"; + +var keywords = { + 5: ecma5AndLessKeywords, + "5module": ecma5AndLessKeywords + " export import", + 6: ecma5AndLessKeywords + " const class extends export import super" +}; + +var keywordRelationalOperator = /^in(stanceof)?$/; + +// ## Character categories + +// Big ugly regular expressions that match characters in the +// whitespace, identifier, and identifier-start categories. These +// are only applied when a character is found to actually have a +// code point above 128. +// Generated by `bin/generate-identifier-regex.js`. +var nonASCIIidentifierStartChars = "\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u037f\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u052f\u0531-\u0556\u0559\u0560-\u0588\u05d0-\u05ea\u05ef-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u0860-\u086a\u08a0-\u08b4\u08b6-\u08c7\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u09fc\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0af9\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d\u0c58-\u0c5a\u0c60\u0c61\u0c80\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d04-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d54-\u0d56\u0d5f-\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e86-\u0e8a\u0e8c-\u0ea3\u0ea5\u0ea7-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f5\u13f8-\u13fd\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f8\u1700-\u170c\u170e-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1878\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191e\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4b\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1c80-\u1c88\u1c90-\u1cba\u1cbd-\u1cbf\u1ce9-\u1cec\u1cee-\u1cf3\u1cf5\u1cf6\u1cfa\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2118-\u211d\u2124\u2126\u2128\u212a-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309b-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312f\u3131-\u318e\u31a0-\u31bf\u31f0-\u31ff\u3400-\u4dbf\u4e00-\u9ffc\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua69d\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua7bf\ua7c2-\ua7ca\ua7f5-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua8fd\ua8fe\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\ua9e0-\ua9e4\ua9e6-\ua9ef\ua9fa-\ua9fe\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa7e-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uab30-\uab5a\uab5c-\uab69\uab70-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc"; +var nonASCIIidentifierChars = "\u200c\u200d\xb7\u0300-\u036f\u0387\u0483-\u0487\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u0669\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7\u06e8\u06ea-\u06ed\u06f0-\u06f9\u0711\u0730-\u074a\u07a6-\u07b0\u07c0-\u07c9\u07eb-\u07f3\u07fd\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u08d3-\u08e1\u08e3-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962\u0963\u0966-\u096f\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09cb-\u09cd\u09d7\u09e2\u09e3\u09e6-\u09ef\u09fe\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a66-\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2\u0ae3\u0ae6-\u0aef\u0afa-\u0aff\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b55-\u0b57\u0b62\u0b63\u0b66-\u0b6f\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0be6-\u0bef\u0c00-\u0c04\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c66-\u0c6f\u0c81-\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0ce6-\u0cef\u0d00-\u0d03\u0d3b\u0d3c\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0d62\u0d63\u0d66-\u0d6f\u0d81-\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0de6-\u0def\u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0e50-\u0e59\u0eb1\u0eb4-\u0ebc\u0ec8-\u0ecd\u0ed0-\u0ed9\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f71-\u0f84\u0f86\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102b-\u103e\u1040-\u1049\u1056-\u1059\u105e-\u1060\u1062-\u1064\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f-\u109d\u135d-\u135f\u1369-\u1371\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b4-\u17d3\u17dd\u17e0-\u17e9\u180b-\u180d\u1810-\u1819\u18a9\u1920-\u192b\u1930-\u193b\u1946-\u194f\u19d0-\u19da\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1ab0-\u1abd\u1abf\u1ac0\u1b00-\u1b04\u1b34-\u1b44\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1b82\u1ba1-\u1bad\u1bb0-\u1bb9\u1be6-\u1bf3\u1c24-\u1c37\u1c40-\u1c49\u1c50-\u1c59\u1cd0-\u1cd2\u1cd4-\u1ce8\u1ced\u1cf4\u1cf7-\u1cf9\u1dc0-\u1df9\u1dfb-\u1dff\u203f\u2040\u2054\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua620-\ua629\ua66f\ua674-\ua67d\ua69e\ua69f\ua6f0\ua6f1\ua802\ua806\ua80b\ua823-\ua827\ua82c\ua880\ua881\ua8b4-\ua8c5\ua8d0-\ua8d9\ua8e0-\ua8f1\ua8ff-\ua909\ua926-\ua92d\ua947-\ua953\ua980-\ua983\ua9b3-\ua9c0\ua9d0-\ua9d9\ua9e5\ua9f0-\ua9f9\uaa29-\uaa36\uaa43\uaa4c\uaa4d\uaa50-\uaa59\uaa7b-\uaa7d\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uaaeb-\uaaef\uaaf5\uaaf6\uabe3-\uabea\uabec\uabed\uabf0-\uabf9\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\ufe33\ufe34\ufe4d-\ufe4f\uff10-\uff19\uff3f"; + +var nonASCIIidentifierStart = new RegExp("[" + nonASCIIidentifierStartChars + "]"); +var nonASCIIidentifier = new RegExp("[" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + "]"); + +nonASCIIidentifierStartChars = nonASCIIidentifierChars = null; + +// These are a run-length and offset encoded representation of the +// >0xffff code points that are a valid part of identifiers. The +// offset starts at 0x10000, and each pair of numbers represents an +// offset to the next range, and then a size of the range. They were +// generated by bin/generate-identifier-regex.js + +// eslint-disable-next-line comma-spacing +var astralIdentifierStartCodes = [0,11,2,25,2,18,2,1,2,14,3,13,35,122,70,52,268,28,4,48,48,31,14,29,6,37,11,29,3,35,5,7,2,4,43,157,19,35,5,35,5,39,9,51,157,310,10,21,11,7,153,5,3,0,2,43,2,1,4,0,3,22,11,22,10,30,66,18,2,1,11,21,11,25,71,55,7,1,65,0,16,3,2,2,2,28,43,28,4,28,36,7,2,27,28,53,11,21,11,18,14,17,111,72,56,50,14,50,14,35,349,41,7,1,79,28,11,0,9,21,107,20,28,22,13,52,76,44,33,24,27,35,30,0,3,0,9,34,4,0,13,47,15,3,22,0,2,0,36,17,2,24,85,6,2,0,2,3,2,14,2,9,8,46,39,7,3,1,3,21,2,6,2,1,2,4,4,0,19,0,13,4,159,52,19,3,21,2,31,47,21,1,2,0,185,46,42,3,37,47,21,0,60,42,14,0,72,26,230,43,117,63,32,7,3,0,3,7,2,1,2,23,16,0,2,0,95,7,3,38,17,0,2,0,29,0,11,39,8,0,22,0,12,45,20,0,35,56,264,8,2,36,18,0,50,29,113,6,2,1,2,37,22,0,26,5,2,1,2,31,15,0,328,18,190,0,80,921,103,110,18,195,2749,1070,4050,582,8634,568,8,30,114,29,19,47,17,3,32,20,6,18,689,63,129,74,6,0,67,12,65,1,2,0,29,6135,9,1237,43,8,8952,286,50,2,18,3,9,395,2309,106,6,12,4,8,8,9,5991,84,2,70,2,1,3,0,3,1,3,3,2,11,2,0,2,6,2,64,2,3,3,7,2,6,2,27,2,3,2,4,2,0,4,6,2,339,3,24,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,7,2357,44,11,6,17,0,370,43,1301,196,60,67,8,0,1205,3,2,26,2,1,2,0,3,0,2,9,2,3,2,0,2,0,7,0,5,0,2,0,2,0,2,2,2,1,2,0,3,0,2,0,2,0,2,0,2,0,2,1,2,0,3,3,2,6,2,3,2,3,2,0,2,9,2,16,6,2,2,4,2,16,4421,42717,35,4148,12,221,3,5761,15,7472,3104,541,1507,4938]; + +// eslint-disable-next-line comma-spacing +var astralIdentifierCodes = [509,0,227,0,150,4,294,9,1368,2,2,1,6,3,41,2,5,0,166,1,574,3,9,9,370,1,154,10,176,2,54,14,32,9,16,3,46,10,54,9,7,2,37,13,2,9,6,1,45,0,13,2,49,13,9,3,2,11,83,11,7,0,161,11,6,9,7,3,56,1,2,6,3,1,3,2,10,0,11,1,3,6,4,4,193,17,10,9,5,0,82,19,13,9,214,6,3,8,28,1,83,16,16,9,82,12,9,9,84,14,5,9,243,14,166,9,71,5,2,1,3,3,2,0,2,1,13,9,120,6,3,6,4,0,29,9,41,6,2,3,9,0,10,10,47,15,406,7,2,7,17,9,57,21,2,13,123,5,4,0,2,1,2,6,2,0,9,9,49,4,2,1,2,4,9,9,330,3,19306,9,135,4,60,6,26,9,1014,0,2,54,8,3,82,0,12,1,19628,1,5319,4,4,5,9,7,3,6,31,3,149,2,1418,49,513,54,5,49,9,0,15,0,23,4,2,14,1361,6,2,16,3,6,2,1,2,4,262,6,10,9,419,13,1495,6,110,6,6,9,4759,9,787719,239]; + +// This has a complexity linear to the value of the code. The +// assumption is that looking up astral identifier characters is +// rare. +function isInAstralSet(code, set) { + var pos = 0x10000; + for (var i = 0; i < set.length; i += 2) { + pos += set[i]; + if (pos > code) { return false } + pos += set[i + 1]; + if (pos >= code) { return true } + } +} + +// Test whether a given character code starts an identifier. + +function isIdentifierStart$1(code, astral) { + if (code < 65) { return code === 36 } + if (code < 91) { return true } + if (code < 97) { return code === 95 } + if (code < 123) { return true } + if (code <= 0xffff) { return code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code)) } + if (astral === false) { return false } + return isInAstralSet(code, astralIdentifierStartCodes) +} + +// Test whether a given character is part of an identifier. + +function isIdentifierChar(code, astral) { + if (code < 48) { return code === 36 } + if (code < 58) { return true } + if (code < 65) { return false } + if (code < 91) { return true } + if (code < 97) { return code === 95 } + if (code < 123) { return true } + if (code <= 0xffff) { return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code)) } + if (astral === false) { return false } + return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes) +} + +// ## Token types + +// The assignment of fine-grained, information-carrying type objects +// allows the tokenizer to store the information it has about a +// token in a way that is very cheap for the parser to look up. + +// All token type variables start with an underscore, to make them +// easy to recognize. + +// The `beforeExpr` property is used to disambiguate between regular +// expressions and divisions. It is set on all token types that can +// be followed by an expression (thus, a slash after them would be a +// regular expression). +// +// The `startsExpr` property is used to check if the token ends a +// `yield` expression. It is set on all token types that either can +// directly start an expression (like a quotation mark) or can +// continue an expression (like the body of a string). +// +// `isLoop` marks a keyword as starting a loop, which is important +// to know when parsing a label, in order to allow or disallow +// continue jumps to that label. + +var TokenType$1 = function TokenType(label, conf) { + if ( conf === void 0 ) conf = {}; + + this.label = label; + this.keyword = conf.keyword; + this.beforeExpr = !!conf.beforeExpr; + this.startsExpr = !!conf.startsExpr; + this.isLoop = !!conf.isLoop; + this.isAssign = !!conf.isAssign; + this.prefix = !!conf.prefix; + this.postfix = !!conf.postfix; + this.binop = conf.binop || null; + this.updateContext = null; +}; + +function binop(name, prec) { + return new TokenType$1(name, {beforeExpr: true, binop: prec}) +} +var beforeExpr = {beforeExpr: true}, startsExpr = {startsExpr: true}; + +// Map keyword names to token types. + +var keywords$1 = {}; + +// Succinct definitions of keyword token types +function kw(name, options) { + if ( options === void 0 ) options = {}; + + options.keyword = name; + return keywords$1[name] = new TokenType$1(name, options) +} + +var types = { + num: new TokenType$1("num", startsExpr), + regexp: new TokenType$1("regexp", startsExpr), + string: new TokenType$1("string", startsExpr), + name: new TokenType$1("name", startsExpr), + eof: new TokenType$1("eof"), + + // Punctuation token types. + bracketL: new TokenType$1("[", {beforeExpr: true, startsExpr: true}), + bracketR: new TokenType$1("]"), + braceL: new TokenType$1("{", {beforeExpr: true, startsExpr: true}), + braceR: new TokenType$1("}"), + parenL: new TokenType$1("(", {beforeExpr: true, startsExpr: true}), + parenR: new TokenType$1(")"), + comma: new TokenType$1(",", beforeExpr), + semi: new TokenType$1(";", beforeExpr), + colon: new TokenType$1(":", beforeExpr), + dot: new TokenType$1("."), + question: new TokenType$1("?", beforeExpr), + questionDot: new TokenType$1("?."), + arrow: new TokenType$1("=>", beforeExpr), + template: new TokenType$1("template"), + invalidTemplate: new TokenType$1("invalidTemplate"), + ellipsis: new TokenType$1("...", beforeExpr), + backQuote: new TokenType$1("`", startsExpr), + dollarBraceL: new TokenType$1("${", {beforeExpr: true, startsExpr: true}), + + // Operators. These carry several kinds of properties to help the + // parser use them properly (the presence of these properties is + // what categorizes them as operators). + // + // `binop`, when present, specifies that this operator is a binary + // operator, and will refer to its precedence. + // + // `prefix` and `postfix` mark the operator as a prefix or postfix + // unary operator. + // + // `isAssign` marks all of `=`, `+=`, `-=` etcetera, which act as + // binary operators with a very low precedence, that should result + // in AssignmentExpression nodes. + + eq: new TokenType$1("=", {beforeExpr: true, isAssign: true}), + assign: new TokenType$1("_=", {beforeExpr: true, isAssign: true}), + incDec: new TokenType$1("++/--", {prefix: true, postfix: true, startsExpr: true}), + prefix: new TokenType$1("!/~", {beforeExpr: true, prefix: true, startsExpr: true}), + logicalOR: binop("||", 1), + logicalAND: binop("&&", 2), + bitwiseOR: binop("|", 3), + bitwiseXOR: binop("^", 4), + bitwiseAND: binop("&", 5), + equality: binop("==/!=/===/!==", 6), + relational: binop("/<=/>=", 7), + bitShift: binop("<>/>>>", 8), + plusMin: new TokenType$1("+/-", {beforeExpr: true, binop: 9, prefix: true, startsExpr: true}), + modulo: binop("%", 10), + star: binop("*", 10), + slash: binop("/", 10), + starstar: new TokenType$1("**", {beforeExpr: true}), + coalesce: binop("??", 1), + + // Keyword token types. + _break: kw("break"), + _case: kw("case", beforeExpr), + _catch: kw("catch"), + _continue: kw("continue"), + _debugger: kw("debugger"), + _default: kw("default", beforeExpr), + _do: kw("do", {isLoop: true, beforeExpr: true}), + _else: kw("else", beforeExpr), + _finally: kw("finally"), + _for: kw("for", {isLoop: true}), + _function: kw("function", startsExpr), + _if: kw("if"), + _return: kw("return", beforeExpr), + _switch: kw("switch"), + _throw: kw("throw", beforeExpr), + _try: kw("try"), + _var: kw("var"), + _const: kw("const"), + _while: kw("while", {isLoop: true}), + _with: kw("with"), + _new: kw("new", {beforeExpr: true, startsExpr: true}), + _this: kw("this", startsExpr), + _super: kw("super", startsExpr), + _class: kw("class", startsExpr), + _extends: kw("extends", beforeExpr), + _export: kw("export"), + _import: kw("import", startsExpr), + _null: kw("null", startsExpr), + _true: kw("true", startsExpr), + _false: kw("false", startsExpr), + _in: kw("in", {beforeExpr: true, binop: 7}), + _instanceof: kw("instanceof", {beforeExpr: true, binop: 7}), + _typeof: kw("typeof", {beforeExpr: true, prefix: true, startsExpr: true}), + _void: kw("void", {beforeExpr: true, prefix: true, startsExpr: true}), + _delete: kw("delete", {beforeExpr: true, prefix: true, startsExpr: true}) +}; + +// Matches a whole line break (where CRLF is considered a single +// line break). Used to count lines. + +var lineBreak = /\r\n?|\n|\u2028|\u2029/; +var lineBreakG = new RegExp(lineBreak.source, "g"); + +function isNewLine(code, ecma2019String) { + return code === 10 || code === 13 || (!ecma2019String && (code === 0x2028 || code === 0x2029)) +} + +var nonASCIIwhitespace = /[\u1680\u2000-\u200a\u202f\u205f\u3000\ufeff]/; + +var skipWhiteSpace$3 = /(?:\s|\/\/.*|\/\*[^]*?\*\/)*/g; + +var ref = Object.prototype; +var hasOwnProperty$1 = ref.hasOwnProperty; +var toString = ref.toString; + +// Checks if an object has a property. + +function has(obj, propName) { + return hasOwnProperty$1.call(obj, propName) +} + +var isArray = Array.isArray || (function (obj) { return ( + toString.call(obj) === "[object Array]" +); }); + +function wordsRegexp(words) { + return new RegExp("^(?:" + words.replace(/ /g, "|") + ")$") +} + +// These are used when `options.locations` is on, for the +// `startLoc` and `endLoc` properties. + +var Position = function Position(line, col) { + this.line = line; + this.column = col; +}; + +Position.prototype.offset = function offset (n) { + return new Position(this.line, this.column + n) +}; + +var SourceLocation = function SourceLocation(p, start, end) { + this.start = start; + this.end = end; + if (p.sourceFile !== null) { this.source = p.sourceFile; } +}; + +// The `getLineInfo` function is mostly useful when the +// `locations` option is off (for performance reasons) and you +// want to find the line/column position for a given character +// offset. `input` should be the code string that the offset refers +// into. + +function getLineInfo(input, offset) { + for (var line = 1, cur = 0;;) { + lineBreakG.lastIndex = cur; + var match = lineBreakG.exec(input); + if (match && match.index < offset) { + ++line; + cur = match.index + match[0].length; + } else { + return new Position(line, offset - cur) + } + } +} + +// A second optional argument can be given to further configure +// the parser process. These options are recognized: + +var defaultOptions = { + // `ecmaVersion` indicates the ECMAScript version to parse. Must be + // either 3, 5, 6 (2015), 7 (2016), 8 (2017), 9 (2018), or 10 + // (2019). This influences support for strict mode, the set of + // reserved words, and support for new syntax features. The default + // is 10. + ecmaVersion: 10, + // `sourceType` indicates the mode the code should be parsed in. + // Can be either `"script"` or `"module"`. This influences global + // strict mode and parsing of `import` and `export` declarations. + sourceType: "script", + // `onInsertedSemicolon` can be a callback that will be called + // when a semicolon is automatically inserted. It will be passed + // the position of the comma as an offset, and if `locations` is + // enabled, it is given the location as a `{line, column}` object + // as second argument. + onInsertedSemicolon: null, + // `onTrailingComma` is similar to `onInsertedSemicolon`, but for + // trailing commas. + onTrailingComma: null, + // By default, reserved words are only enforced if ecmaVersion >= 5. + // Set `allowReserved` to a boolean value to explicitly turn this on + // an off. When this option has the value "never", reserved words + // and keywords can also not be used as property names. + allowReserved: null, + // When enabled, a return at the top level is not considered an + // error. + allowReturnOutsideFunction: false, + // When enabled, import/export statements are not constrained to + // appearing at the top of the program. + allowImportExportEverywhere: false, + // When enabled, await identifiers are allowed to appear at the top-level scope, + // but they are still not allowed in non-async functions. + allowAwaitOutsideFunction: false, + // When enabled, hashbang directive in the beginning of file + // is allowed and treated as a line comment. + allowHashBang: false, + // When `locations` is on, `loc` properties holding objects with + // `start` and `end` properties in `{line, column}` form (with + // line being 1-based and column 0-based) will be attached to the + // nodes. + locations: false, + // A function can be passed as `onToken` option, which will + // cause Acorn to call that function with object in the same + // format as tokens returned from `tokenizer().getToken()`. Note + // that you are not allowed to call the parser from the + // callback—that will corrupt its internal state. + onToken: null, + // A function can be passed as `onComment` option, which will + // cause Acorn to call that function with `(block, text, start, + // end)` parameters whenever a comment is skipped. `block` is a + // boolean indicating whether this is a block (`/* */`) comment, + // `text` is the content of the comment, and `start` and `end` are + // character offsets that denote the start and end of the comment. + // When the `locations` option is on, two more parameters are + // passed, the full `{line, column}` locations of the start and + // end of the comments. Note that you are not allowed to call the + // parser from the callback—that will corrupt its internal state. + onComment: null, + // Nodes have their start and end characters offsets recorded in + // `start` and `end` properties (directly on the node, rather than + // the `loc` object, which holds line/column data. To also add a + // [semi-standardized][range] `range` property holding a `[start, + // end]` array with the same numbers, set the `ranges` option to + // `true`. + // + // [range]: https://bugzilla.mozilla.org/show_bug.cgi?id=745678 + ranges: false, + // It is possible to parse multiple files into a single AST by + // passing the tree produced by parsing the first file as + // `program` option in subsequent parses. This will add the + // toplevel forms of the parsed file to the `Program` (top) node + // of an existing parse tree. + program: null, + // When `locations` is on, you can pass this to record the source + // file in every node's `loc` object. + sourceFile: null, + // This value, if given, is stored in every node, whether + // `locations` is on or off. + directSourceFile: null, + // When enabled, parenthesized expressions are represented by + // (non-standard) ParenthesizedExpression nodes + preserveParens: false +}; + +// Interpret and default an options object + +function getOptions(opts) { + var options = {}; + + for (var opt in defaultOptions) + { options[opt] = opts && has(opts, opt) ? opts[opt] : defaultOptions[opt]; } + + if (options.ecmaVersion >= 2015) + { options.ecmaVersion -= 2009; } + + if (options.allowReserved == null) + { options.allowReserved = options.ecmaVersion < 5; } + + if (isArray(options.onToken)) { + var tokens = options.onToken; + options.onToken = function (token) { return tokens.push(token); }; + } + if (isArray(options.onComment)) + { options.onComment = pushComment(options, options.onComment); } + + return options +} + +function pushComment(options, array) { + return function(block, text, start, end, startLoc, endLoc) { + var comment = { + type: block ? "Block" : "Line", + value: text, + start: start, + end: end + }; + if (options.locations) + { comment.loc = new SourceLocation(this, startLoc, endLoc); } + if (options.ranges) + { comment.range = [start, end]; } + array.push(comment); + } +} + +// Each scope gets a bitset that may contain these flags +var + SCOPE_TOP = 1, + SCOPE_FUNCTION = 2, + SCOPE_VAR = SCOPE_TOP | SCOPE_FUNCTION, + SCOPE_ASYNC = 4, + SCOPE_GENERATOR = 8, + SCOPE_ARROW = 16, + SCOPE_SIMPLE_CATCH = 32, + SCOPE_SUPER = 64, + SCOPE_DIRECT_SUPER = 128; + +function functionFlags(async, generator) { + return SCOPE_FUNCTION | (async ? SCOPE_ASYNC : 0) | (generator ? SCOPE_GENERATOR : 0) +} + +// Used in checkLVal and declareName to determine the type of a binding +var + BIND_NONE = 0, // Not a binding + BIND_VAR = 1, // Var-style binding + BIND_LEXICAL = 2, // Let- or const-style binding + BIND_FUNCTION = 3, // Function declaration + BIND_SIMPLE_CATCH = 4, // Simple (identifier pattern) catch binding + BIND_OUTSIDE = 5; // Special case for function names as bound inside the function + +var Parser = function Parser(options, input, startPos) { + this.options = options = getOptions(options); + this.sourceFile = options.sourceFile; + this.keywords = wordsRegexp(keywords[options.ecmaVersion >= 6 ? 6 : options.sourceType === "module" ? "5module" : 5]); + var reserved = ""; + if (options.allowReserved !== true) { + for (var v = options.ecmaVersion;; v--) + { if (reserved = reservedWords[v]) { break } } + if (options.sourceType === "module") { reserved += " await"; } + } + this.reservedWords = wordsRegexp(reserved); + var reservedStrict = (reserved ? reserved + " " : "") + reservedWords.strict; + this.reservedWordsStrict = wordsRegexp(reservedStrict); + this.reservedWordsStrictBind = wordsRegexp(reservedStrict + " " + reservedWords.strictBind); + this.input = String(input); + + // Used to signal to callers of `readWord1` whether the word + // contained any escape sequences. This is needed because words with + // escape sequences must not be interpreted as keywords. + this.containsEsc = false; + + // Set up token state + + // The current position of the tokenizer in the input. + if (startPos) { + this.pos = startPos; + this.lineStart = this.input.lastIndexOf("\n", startPos - 1) + 1; + this.curLine = this.input.slice(0, this.lineStart).split(lineBreak).length; + } else { + this.pos = this.lineStart = 0; + this.curLine = 1; + } + + // Properties of the current token: + // Its type + this.type = types.eof; + // For tokens that include more information than their type, the value + this.value = null; + // Its start and end offset + this.start = this.end = this.pos; + // And, if locations are used, the {line, column} object + // corresponding to those offsets + this.startLoc = this.endLoc = this.curPosition(); + + // Position information for the previous token + this.lastTokEndLoc = this.lastTokStartLoc = null; + this.lastTokStart = this.lastTokEnd = this.pos; + + // The context stack is used to superficially track syntactic + // context to predict whether a regular expression is allowed in a + // given position. + this.context = this.initialContext(); + this.exprAllowed = true; + + // Figure out if it's a module code. + this.inModule = options.sourceType === "module"; + this.strict = this.inModule || this.strictDirective(this.pos); + + // Used to signify the start of a potential arrow function + this.potentialArrowAt = -1; + + // Positions to delayed-check that yield/await does not exist in default parameters. + this.yieldPos = this.awaitPos = this.awaitIdentPos = 0; + // Labels in scope. + this.labels = []; + // Thus-far undefined exports. + this.undefinedExports = {}; + + // If enabled, skip leading hashbang line. + if (this.pos === 0 && options.allowHashBang && this.input.slice(0, 2) === "#!") + { this.skipLineComment(2); } + + // Scope tracking for duplicate variable names (see scope.js) + this.scopeStack = []; + this.enterScope(SCOPE_TOP); + + // For RegExp validation + this.regexpState = null; +}; + +var prototypeAccessors = { inFunction: { configurable: true },inGenerator: { configurable: true },inAsync: { configurable: true },allowSuper: { configurable: true },allowDirectSuper: { configurable: true },treatFunctionsAsVar: { configurable: true } }; + +Parser.prototype.parse = function parse () { + var node = this.options.program || this.startNode(); + this.nextToken(); + return this.parseTopLevel(node) +}; + +prototypeAccessors.inFunction.get = function () { return (this.currentVarScope().flags & SCOPE_FUNCTION) > 0 }; +prototypeAccessors.inGenerator.get = function () { return (this.currentVarScope().flags & SCOPE_GENERATOR) > 0 }; +prototypeAccessors.inAsync.get = function () { return (this.currentVarScope().flags & SCOPE_ASYNC) > 0 }; +prototypeAccessors.allowSuper.get = function () { return (this.currentThisScope().flags & SCOPE_SUPER) > 0 }; +prototypeAccessors.allowDirectSuper.get = function () { return (this.currentThisScope().flags & SCOPE_DIRECT_SUPER) > 0 }; +prototypeAccessors.treatFunctionsAsVar.get = function () { return this.treatFunctionsAsVarInScope(this.currentScope()) }; + +// Switch to a getter for 7.0.0. +Parser.prototype.inNonArrowFunction = function inNonArrowFunction () { return (this.currentThisScope().flags & SCOPE_FUNCTION) > 0 }; + +Parser.extend = function extend () { + var plugins = [], len = arguments.length; + while ( len-- ) plugins[ len ] = arguments[ len ]; + + var cls = this; + for (var i = 0; i < plugins.length; i++) { cls = plugins[i](cls); } + return cls +}; + +Parser.parse = function parse (input, options) { + return new this(options, input).parse() +}; + +Parser.parseExpressionAt = function parseExpressionAt (input, pos, options) { + var parser = new this(options, input, pos); + parser.nextToken(); + return parser.parseExpression() +}; + +Parser.tokenizer = function tokenizer (input, options) { + return new this(options, input) +}; + +Object.defineProperties( Parser.prototype, prototypeAccessors ); + +var pp = Parser.prototype; + +// ## Parser utilities + +var literal = /^(?:'((?:\\.|[^'\\])*?)'|"((?:\\.|[^"\\])*?)")/; +pp.strictDirective = function(start) { + for (;;) { + // Try to find string literal. + skipWhiteSpace$3.lastIndex = start; + start += skipWhiteSpace$3.exec(this.input)[0].length; + var match = literal.exec(this.input.slice(start)); + if (!match) { return false } + if ((match[1] || match[2]) === "use strict") { + skipWhiteSpace$3.lastIndex = start + match[0].length; + var spaceAfter = skipWhiteSpace$3.exec(this.input), end = spaceAfter.index + spaceAfter[0].length; + var next = this.input.charAt(end); + return next === ";" || next === "}" || + (lineBreak.test(spaceAfter[0]) && + !(/[(`.[+\-/*%<>=,?^&]/.test(next) || next === "!" && this.input.charAt(end + 1) === "=")) + } + start += match[0].length; + + // Skip semicolon, if any. + skipWhiteSpace$3.lastIndex = start; + start += skipWhiteSpace$3.exec(this.input)[0].length; + if (this.input[start] === ";") + { start++; } + } +}; + +// Predicate that tests whether the next token is of the given +// type, and if yes, consumes it as a side effect. + +pp.eat = function(type) { + if (this.type === type) { + this.next(); + return true + } else { + return false + } +}; + +// Tests whether parsed token is a contextual keyword. + +pp.isContextual = function(name) { + return this.type === types.name && this.value === name && !this.containsEsc +}; + +// Consumes contextual keyword if possible. + +pp.eatContextual = function(name) { + if (!this.isContextual(name)) { return false } + this.next(); + return true +}; + +// Asserts that following token is given contextual keyword. + +pp.expectContextual = function(name) { + if (!this.eatContextual(name)) { this.unexpected(); } +}; + +// Test whether a semicolon can be inserted at the current position. + +pp.canInsertSemicolon = function() { + return this.type === types.eof || + this.type === types.braceR || + lineBreak.test(this.input.slice(this.lastTokEnd, this.start)) +}; + +pp.insertSemicolon = function() { + if (this.canInsertSemicolon()) { + if (this.options.onInsertedSemicolon) + { this.options.onInsertedSemicolon(this.lastTokEnd, this.lastTokEndLoc); } + return true + } +}; + +// Consume a semicolon, or, failing that, see if we are allowed to +// pretend that there is a semicolon at this position. + +pp.semicolon = function() { + if (!this.eat(types.semi) && !this.insertSemicolon()) { this.unexpected(); } +}; + +pp.afterTrailingComma = function(tokType, notNext) { + if (this.type === tokType) { + if (this.options.onTrailingComma) + { this.options.onTrailingComma(this.lastTokStart, this.lastTokStartLoc); } + if (!notNext) + { this.next(); } + return true + } +}; + +// Expect a token of a given type. If found, consume it, otherwise, +// raise an unexpected token error. + +pp.expect = function(type) { + this.eat(type) || this.unexpected(); +}; + +// Raise an unexpected token error. + +pp.unexpected = function(pos) { + this.raise(pos != null ? pos : this.start, "Unexpected token"); +}; + +function DestructuringErrors() { + this.shorthandAssign = + this.trailingComma = + this.parenthesizedAssign = + this.parenthesizedBind = + this.doubleProto = + -1; +} + +pp.checkPatternErrors = function(refDestructuringErrors, isAssign) { + if (!refDestructuringErrors) { return } + if (refDestructuringErrors.trailingComma > -1) + { this.raiseRecoverable(refDestructuringErrors.trailingComma, "Comma is not permitted after the rest element"); } + var parens = isAssign ? refDestructuringErrors.parenthesizedAssign : refDestructuringErrors.parenthesizedBind; + if (parens > -1) { this.raiseRecoverable(parens, "Parenthesized pattern"); } +}; + +pp.checkExpressionErrors = function(refDestructuringErrors, andThrow) { + if (!refDestructuringErrors) { return false } + var shorthandAssign = refDestructuringErrors.shorthandAssign; + var doubleProto = refDestructuringErrors.doubleProto; + if (!andThrow) { return shorthandAssign >= 0 || doubleProto >= 0 } + if (shorthandAssign >= 0) + { this.raise(shorthandAssign, "Shorthand property assignments are valid only in destructuring patterns"); } + if (doubleProto >= 0) + { this.raiseRecoverable(doubleProto, "Redefinition of __proto__ property"); } +}; + +pp.checkYieldAwaitInDefaultParams = function() { + if (this.yieldPos && (!this.awaitPos || this.yieldPos < this.awaitPos)) + { this.raise(this.yieldPos, "Yield expression cannot be a default value"); } + if (this.awaitPos) + { this.raise(this.awaitPos, "Await expression cannot be a default value"); } +}; + +pp.isSimpleAssignTarget = function(expr) { + if (expr.type === "ParenthesizedExpression") + { return this.isSimpleAssignTarget(expr.expression) } + return expr.type === "Identifier" || expr.type === "MemberExpression" +}; + +var pp$1 = Parser.prototype; + +// ### Statement parsing + +// Parse a program. Initializes the parser, reads any number of +// statements, and wraps them in a Program node. Optionally takes a +// `program` argument. If present, the statements will be appended +// to its body instead of creating a new node. + +pp$1.parseTopLevel = function(node) { + var exports = {}; + if (!node.body) { node.body = []; } + while (this.type !== types.eof) { + var stmt = this.parseStatement(null, true, exports); + node.body.push(stmt); + } + if (this.inModule) + { for (var i = 0, list = Object.keys(this.undefinedExports); i < list.length; i += 1) + { + var name = list[i]; + + this.raiseRecoverable(this.undefinedExports[name].start, ("Export '" + name + "' is not defined")); + } } + this.adaptDirectivePrologue(node.body); + this.next(); + node.sourceType = this.options.sourceType; + return this.finishNode(node, "Program") +}; + +var loopLabel = {kind: "loop"}, switchLabel = {kind: "switch"}; + +pp$1.isLet = function(context) { + if (this.options.ecmaVersion < 6 || !this.isContextual("let")) { return false } + skipWhiteSpace$3.lastIndex = this.pos; + var skip = skipWhiteSpace$3.exec(this.input); + var next = this.pos + skip[0].length, nextCh = this.input.charCodeAt(next); + // For ambiguous cases, determine if a LexicalDeclaration (or only a + // Statement) is allowed here. If context is not empty then only a Statement + // is allowed. However, `let [` is an explicit negative lookahead for + // ExpressionStatement, so special-case it first. + if (nextCh === 91) { return true } // '[' + if (context) { return false } + + if (nextCh === 123) { return true } // '{' + if (isIdentifierStart$1(nextCh, true)) { + var pos = next + 1; + while (isIdentifierChar(this.input.charCodeAt(pos), true)) { ++pos; } + var ident = this.input.slice(next, pos); + if (!keywordRelationalOperator.test(ident)) { return true } + } + return false +}; + +// check 'async [no LineTerminator here] function' +// - 'async /*foo*/ function' is OK. +// - 'async /*\n*/ function' is invalid. +pp$1.isAsyncFunction = function() { + if (this.options.ecmaVersion < 8 || !this.isContextual("async")) + { return false } + + skipWhiteSpace$3.lastIndex = this.pos; + var skip = skipWhiteSpace$3.exec(this.input); + var next = this.pos + skip[0].length; + return !lineBreak.test(this.input.slice(this.pos, next)) && + this.input.slice(next, next + 8) === "function" && + (next + 8 === this.input.length || !isIdentifierChar(this.input.charAt(next + 8))) +}; + +// Parse a single statement. +// +// If expecting a statement and finding a slash operator, parse a +// regular expression literal. This is to handle cases like +// `if (foo) /blah/.exec(foo)`, where looking at the previous token +// does not help. + +pp$1.parseStatement = function(context, topLevel, exports) { + var starttype = this.type, node = this.startNode(), kind; + + if (this.isLet(context)) { + starttype = types._var; + kind = "let"; + } + + // Most types of statements are recognized by the keyword they + // start with. Many are trivial to parse, some require a bit of + // complexity. + + switch (starttype) { + case types._break: case types._continue: return this.parseBreakContinueStatement(node, starttype.keyword) + case types._debugger: return this.parseDebuggerStatement(node) + case types._do: return this.parseDoStatement(node) + case types._for: return this.parseForStatement(node) + case types._function: + // Function as sole body of either an if statement or a labeled statement + // works, but not when it is part of a labeled statement that is the sole + // body of an if statement. + if ((context && (this.strict || context !== "if" && context !== "label")) && this.options.ecmaVersion >= 6) { this.unexpected(); } + return this.parseFunctionStatement(node, false, !context) + case types._class: + if (context) { this.unexpected(); } + return this.parseClass(node, true) + case types._if: return this.parseIfStatement(node) + case types._return: return this.parseReturnStatement(node) + case types._switch: return this.parseSwitchStatement(node) + case types._throw: return this.parseThrowStatement(node) + case types._try: return this.parseTryStatement(node) + case types._const: case types._var: + kind = kind || this.value; + if (context && kind !== "var") { this.unexpected(); } + return this.parseVarStatement(node, kind) + case types._while: return this.parseWhileStatement(node) + case types._with: return this.parseWithStatement(node) + case types.braceL: return this.parseBlock(true, node) + case types.semi: return this.parseEmptyStatement(node) + case types._export: + case types._import: + if (this.options.ecmaVersion > 10 && starttype === types._import) { + skipWhiteSpace$3.lastIndex = this.pos; + var skip = skipWhiteSpace$3.exec(this.input); + var next = this.pos + skip[0].length, nextCh = this.input.charCodeAt(next); + if (nextCh === 40 || nextCh === 46) // '(' or '.' + { return this.parseExpressionStatement(node, this.parseExpression()) } + } + + if (!this.options.allowImportExportEverywhere) { + if (!topLevel) + { this.raise(this.start, "'import' and 'export' may only appear at the top level"); } + if (!this.inModule) + { this.raise(this.start, "'import' and 'export' may appear only with 'sourceType: module'"); } + } + return starttype === types._import ? this.parseImport(node) : this.parseExport(node, exports) + + // If the statement does not start with a statement keyword or a + // brace, it's an ExpressionStatement or LabeledStatement. We + // simply start parsing an expression, and afterwards, if the + // next token is a colon and the expression was a simple + // Identifier node, we switch to interpreting it as a label. + default: + if (this.isAsyncFunction()) { + if (context) { this.unexpected(); } + this.next(); + return this.parseFunctionStatement(node, true, !context) + } + + var maybeName = this.value, expr = this.parseExpression(); + if (starttype === types.name && expr.type === "Identifier" && this.eat(types.colon)) + { return this.parseLabeledStatement(node, maybeName, expr, context) } + else { return this.parseExpressionStatement(node, expr) } + } +}; + +pp$1.parseBreakContinueStatement = function(node, keyword) { + var isBreak = keyword === "break"; + this.next(); + if (this.eat(types.semi) || this.insertSemicolon()) { node.label = null; } + else if (this.type !== types.name) { this.unexpected(); } + else { + node.label = this.parseIdent(); + this.semicolon(); + } + + // Verify that there is an actual destination to break or + // continue to. + var i = 0; + for (; i < this.labels.length; ++i) { + var lab = this.labels[i]; + if (node.label == null || lab.name === node.label.name) { + if (lab.kind != null && (isBreak || lab.kind === "loop")) { break } + if (node.label && isBreak) { break } + } + } + if (i === this.labels.length) { this.raise(node.start, "Unsyntactic " + keyword); } + return this.finishNode(node, isBreak ? "BreakStatement" : "ContinueStatement") +}; + +pp$1.parseDebuggerStatement = function(node) { + this.next(); + this.semicolon(); + return this.finishNode(node, "DebuggerStatement") +}; + +pp$1.parseDoStatement = function(node) { + this.next(); + this.labels.push(loopLabel); + node.body = this.parseStatement("do"); + this.labels.pop(); + this.expect(types._while); + node.test = this.parseParenExpression(); + if (this.options.ecmaVersion >= 6) + { this.eat(types.semi); } + else + { this.semicolon(); } + return this.finishNode(node, "DoWhileStatement") +}; + +// Disambiguating between a `for` and a `for`/`in` or `for`/`of` +// loop is non-trivial. Basically, we have to parse the init `var` +// statement or expression, disallowing the `in` operator (see +// the second parameter to `parseExpression`), and then check +// whether the next token is `in` or `of`. When there is no init +// part (semicolon immediately after the opening parenthesis), it +// is a regular `for` loop. + +pp$1.parseForStatement = function(node) { + this.next(); + var awaitAt = (this.options.ecmaVersion >= 9 && (this.inAsync || (!this.inFunction && this.options.allowAwaitOutsideFunction)) && this.eatContextual("await")) ? this.lastTokStart : -1; + this.labels.push(loopLabel); + this.enterScope(0); + this.expect(types.parenL); + if (this.type === types.semi) { + if (awaitAt > -1) { this.unexpected(awaitAt); } + return this.parseFor(node, null) + } + var isLet = this.isLet(); + if (this.type === types._var || this.type === types._const || isLet) { + var init$1 = this.startNode(), kind = isLet ? "let" : this.value; + this.next(); + this.parseVar(init$1, true, kind); + this.finishNode(init$1, "VariableDeclaration"); + if ((this.type === types._in || (this.options.ecmaVersion >= 6 && this.isContextual("of"))) && init$1.declarations.length === 1) { + if (this.options.ecmaVersion >= 9) { + if (this.type === types._in) { + if (awaitAt > -1) { this.unexpected(awaitAt); } + } else { node.await = awaitAt > -1; } + } + return this.parseForIn(node, init$1) + } + if (awaitAt > -1) { this.unexpected(awaitAt); } + return this.parseFor(node, init$1) + } + var refDestructuringErrors = new DestructuringErrors; + var init = this.parseExpression(true, refDestructuringErrors); + if (this.type === types._in || (this.options.ecmaVersion >= 6 && this.isContextual("of"))) { + if (this.options.ecmaVersion >= 9) { + if (this.type === types._in) { + if (awaitAt > -1) { this.unexpected(awaitAt); } + } else { node.await = awaitAt > -1; } + } + this.toAssignable(init, false, refDestructuringErrors); + this.checkLVal(init); + return this.parseForIn(node, init) + } else { + this.checkExpressionErrors(refDestructuringErrors, true); + } + if (awaitAt > -1) { this.unexpected(awaitAt); } + return this.parseFor(node, init) +}; + +pp$1.parseFunctionStatement = function(node, isAsync, declarationPosition) { + this.next(); + return this.parseFunction(node, FUNC_STATEMENT | (declarationPosition ? 0 : FUNC_HANGING_STATEMENT), false, isAsync) +}; + +pp$1.parseIfStatement = function(node) { + this.next(); + node.test = this.parseParenExpression(); + // allow function declarations in branches, but only in non-strict mode + node.consequent = this.parseStatement("if"); + node.alternate = this.eat(types._else) ? this.parseStatement("if") : null; + return this.finishNode(node, "IfStatement") +}; + +pp$1.parseReturnStatement = function(node) { + if (!this.inFunction && !this.options.allowReturnOutsideFunction) + { this.raise(this.start, "'return' outside of function"); } + this.next(); + + // In `return` (and `break`/`continue`), the keywords with + // optional arguments, we eagerly look for a semicolon or the + // possibility to insert one. + + if (this.eat(types.semi) || this.insertSemicolon()) { node.argument = null; } + else { node.argument = this.parseExpression(); this.semicolon(); } + return this.finishNode(node, "ReturnStatement") +}; + +pp$1.parseSwitchStatement = function(node) { + this.next(); + node.discriminant = this.parseParenExpression(); + node.cases = []; + this.expect(types.braceL); + this.labels.push(switchLabel); + this.enterScope(0); + + // Statements under must be grouped (by label) in SwitchCase + // nodes. `cur` is used to keep the node that we are currently + // adding statements to. + + var cur; + for (var sawDefault = false; this.type !== types.braceR;) { + if (this.type === types._case || this.type === types._default) { + var isCase = this.type === types._case; + if (cur) { this.finishNode(cur, "SwitchCase"); } + node.cases.push(cur = this.startNode()); + cur.consequent = []; + this.next(); + if (isCase) { + cur.test = this.parseExpression(); + } else { + if (sawDefault) { this.raiseRecoverable(this.lastTokStart, "Multiple default clauses"); } + sawDefault = true; + cur.test = null; + } + this.expect(types.colon); + } else { + if (!cur) { this.unexpected(); } + cur.consequent.push(this.parseStatement(null)); + } + } + this.exitScope(); + if (cur) { this.finishNode(cur, "SwitchCase"); } + this.next(); // Closing brace + this.labels.pop(); + return this.finishNode(node, "SwitchStatement") +}; + +pp$1.parseThrowStatement = function(node) { + this.next(); + if (lineBreak.test(this.input.slice(this.lastTokEnd, this.start))) + { this.raise(this.lastTokEnd, "Illegal newline after throw"); } + node.argument = this.parseExpression(); + this.semicolon(); + return this.finishNode(node, "ThrowStatement") +}; + +// Reused empty array added for node fields that are always empty. + +var empty = []; + +pp$1.parseTryStatement = function(node) { + this.next(); + node.block = this.parseBlock(); + node.handler = null; + if (this.type === types._catch) { + var clause = this.startNode(); + this.next(); + if (this.eat(types.parenL)) { + clause.param = this.parseBindingAtom(); + var simple = clause.param.type === "Identifier"; + this.enterScope(simple ? SCOPE_SIMPLE_CATCH : 0); + this.checkLVal(clause.param, simple ? BIND_SIMPLE_CATCH : BIND_LEXICAL); + this.expect(types.parenR); + } else { + if (this.options.ecmaVersion < 10) { this.unexpected(); } + clause.param = null; + this.enterScope(0); + } + clause.body = this.parseBlock(false); + this.exitScope(); + node.handler = this.finishNode(clause, "CatchClause"); + } + node.finalizer = this.eat(types._finally) ? this.parseBlock() : null; + if (!node.handler && !node.finalizer) + { this.raise(node.start, "Missing catch or finally clause"); } + return this.finishNode(node, "TryStatement") +}; + +pp$1.parseVarStatement = function(node, kind) { + this.next(); + this.parseVar(node, false, kind); + this.semicolon(); + return this.finishNode(node, "VariableDeclaration") +}; + +pp$1.parseWhileStatement = function(node) { + this.next(); + node.test = this.parseParenExpression(); + this.labels.push(loopLabel); + node.body = this.parseStatement("while"); + this.labels.pop(); + return this.finishNode(node, "WhileStatement") +}; + +pp$1.parseWithStatement = function(node) { + if (this.strict) { this.raise(this.start, "'with' in strict mode"); } + this.next(); + node.object = this.parseParenExpression(); + node.body = this.parseStatement("with"); + return this.finishNode(node, "WithStatement") +}; + +pp$1.parseEmptyStatement = function(node) { + this.next(); + return this.finishNode(node, "EmptyStatement") +}; + +pp$1.parseLabeledStatement = function(node, maybeName, expr, context) { + for (var i$1 = 0, list = this.labels; i$1 < list.length; i$1 += 1) + { + var label = list[i$1]; + + if (label.name === maybeName) + { this.raise(expr.start, "Label '" + maybeName + "' is already declared"); + } } + var kind = this.type.isLoop ? "loop" : this.type === types._switch ? "switch" : null; + for (var i = this.labels.length - 1; i >= 0; i--) { + var label$1 = this.labels[i]; + if (label$1.statementStart === node.start) { + // Update information about previous labels on this node + label$1.statementStart = this.start; + label$1.kind = kind; + } else { break } + } + this.labels.push({name: maybeName, kind: kind, statementStart: this.start}); + node.body = this.parseStatement(context ? context.indexOf("label") === -1 ? context + "label" : context : "label"); + this.labels.pop(); + node.label = expr; + return this.finishNode(node, "LabeledStatement") +}; + +pp$1.parseExpressionStatement = function(node, expr) { + node.expression = expr; + this.semicolon(); + return this.finishNode(node, "ExpressionStatement") +}; + +// Parse a semicolon-enclosed block of statements, handling `"use +// strict"` declarations when `allowStrict` is true (used for +// function bodies). + +pp$1.parseBlock = function(createNewLexicalScope, node, exitStrict) { + if ( createNewLexicalScope === void 0 ) createNewLexicalScope = true; + if ( node === void 0 ) node = this.startNode(); + + node.body = []; + this.expect(types.braceL); + if (createNewLexicalScope) { this.enterScope(0); } + while (this.type !== types.braceR) { + var stmt = this.parseStatement(null); + node.body.push(stmt); + } + if (exitStrict) { this.strict = false; } + this.next(); + if (createNewLexicalScope) { this.exitScope(); } + return this.finishNode(node, "BlockStatement") +}; + +// Parse a regular `for` loop. The disambiguation code in +// `parseStatement` will already have parsed the init statement or +// expression. + +pp$1.parseFor = function(node, init) { + node.init = init; + this.expect(types.semi); + node.test = this.type === types.semi ? null : this.parseExpression(); + this.expect(types.semi); + node.update = this.type === types.parenR ? null : this.parseExpression(); + this.expect(types.parenR); + node.body = this.parseStatement("for"); + this.exitScope(); + this.labels.pop(); + return this.finishNode(node, "ForStatement") +}; + +// Parse a `for`/`in` and `for`/`of` loop, which are almost +// same from parser's perspective. + +pp$1.parseForIn = function(node, init) { + var isForIn = this.type === types._in; + this.next(); + + if ( + init.type === "VariableDeclaration" && + init.declarations[0].init != null && + ( + !isForIn || + this.options.ecmaVersion < 8 || + this.strict || + init.kind !== "var" || + init.declarations[0].id.type !== "Identifier" + ) + ) { + this.raise( + init.start, + ((isForIn ? "for-in" : "for-of") + " loop variable declaration may not have an initializer") + ); + } else if (init.type === "AssignmentPattern") { + this.raise(init.start, "Invalid left-hand side in for-loop"); + } + node.left = init; + node.right = isForIn ? this.parseExpression() : this.parseMaybeAssign(); + this.expect(types.parenR); + node.body = this.parseStatement("for"); + this.exitScope(); + this.labels.pop(); + return this.finishNode(node, isForIn ? "ForInStatement" : "ForOfStatement") +}; + +// Parse a list of variable declarations. + +pp$1.parseVar = function(node, isFor, kind) { + node.declarations = []; + node.kind = kind; + for (;;) { + var decl = this.startNode(); + this.parseVarId(decl, kind); + if (this.eat(types.eq)) { + decl.init = this.parseMaybeAssign(isFor); + } else if (kind === "const" && !(this.type === types._in || (this.options.ecmaVersion >= 6 && this.isContextual("of")))) { + this.unexpected(); + } else if (decl.id.type !== "Identifier" && !(isFor && (this.type === types._in || this.isContextual("of")))) { + this.raise(this.lastTokEnd, "Complex binding patterns require an initialization value"); + } else { + decl.init = null; + } + node.declarations.push(this.finishNode(decl, "VariableDeclarator")); + if (!this.eat(types.comma)) { break } + } + return node +}; + +pp$1.parseVarId = function(decl, kind) { + decl.id = this.parseBindingAtom(); + this.checkLVal(decl.id, kind === "var" ? BIND_VAR : BIND_LEXICAL, false); +}; + +var FUNC_STATEMENT = 1, FUNC_HANGING_STATEMENT = 2, FUNC_NULLABLE_ID = 4; + +// Parse a function declaration or literal (depending on the +// `statement & FUNC_STATEMENT`). + +// Remove `allowExpressionBody` for 7.0.0, as it is only called with false +pp$1.parseFunction = function(node, statement, allowExpressionBody, isAsync) { + this.initFunction(node); + if (this.options.ecmaVersion >= 9 || this.options.ecmaVersion >= 6 && !isAsync) { + if (this.type === types.star && (statement & FUNC_HANGING_STATEMENT)) + { this.unexpected(); } + node.generator = this.eat(types.star); + } + if (this.options.ecmaVersion >= 8) + { node.async = !!isAsync; } + + if (statement & FUNC_STATEMENT) { + node.id = (statement & FUNC_NULLABLE_ID) && this.type !== types.name ? null : this.parseIdent(); + if (node.id && !(statement & FUNC_HANGING_STATEMENT)) + // If it is a regular function declaration in sloppy mode, then it is + // subject to Annex B semantics (BIND_FUNCTION). Otherwise, the binding + // mode depends on properties of the current scope (see + // treatFunctionsAsVar). + { this.checkLVal(node.id, (this.strict || node.generator || node.async) ? this.treatFunctionsAsVar ? BIND_VAR : BIND_LEXICAL : BIND_FUNCTION); } + } + + var oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos; + this.yieldPos = 0; + this.awaitPos = 0; + this.awaitIdentPos = 0; + this.enterScope(functionFlags(node.async, node.generator)); + + if (!(statement & FUNC_STATEMENT)) + { node.id = this.type === types.name ? this.parseIdent() : null; } + + this.parseFunctionParams(node); + this.parseFunctionBody(node, allowExpressionBody, false); + + this.yieldPos = oldYieldPos; + this.awaitPos = oldAwaitPos; + this.awaitIdentPos = oldAwaitIdentPos; + return this.finishNode(node, (statement & FUNC_STATEMENT) ? "FunctionDeclaration" : "FunctionExpression") +}; + +pp$1.parseFunctionParams = function(node) { + this.expect(types.parenL); + node.params = this.parseBindingList(types.parenR, false, this.options.ecmaVersion >= 8); + this.checkYieldAwaitInDefaultParams(); +}; + +// Parse a class declaration or literal (depending on the +// `isStatement` parameter). + +pp$1.parseClass = function(node, isStatement) { + this.next(); + + // ecma-262 14.6 Class Definitions + // A class definition is always strict mode code. + var oldStrict = this.strict; + this.strict = true; + + this.parseClassId(node, isStatement); + this.parseClassSuper(node); + var classBody = this.startNode(); + var hadConstructor = false; + classBody.body = []; + this.expect(types.braceL); + while (this.type !== types.braceR) { + var element = this.parseClassElement(node.superClass !== null); + if (element) { + classBody.body.push(element); + if (element.type === "MethodDefinition" && element.kind === "constructor") { + if (hadConstructor) { this.raise(element.start, "Duplicate constructor in the same class"); } + hadConstructor = true; + } + } + } + this.strict = oldStrict; + this.next(); + node.body = this.finishNode(classBody, "ClassBody"); + return this.finishNode(node, isStatement ? "ClassDeclaration" : "ClassExpression") +}; + +pp$1.parseClassElement = function(constructorAllowsSuper) { + var this$1$1 = this; + + if (this.eat(types.semi)) { return null } + + var method = this.startNode(); + var tryContextual = function (k, noLineBreak) { + if ( noLineBreak === void 0 ) noLineBreak = false; + + var start = this$1$1.start, startLoc = this$1$1.startLoc; + if (!this$1$1.eatContextual(k)) { return false } + if (this$1$1.type !== types.parenL && (!noLineBreak || !this$1$1.canInsertSemicolon())) { return true } + if (method.key) { this$1$1.unexpected(); } + method.computed = false; + method.key = this$1$1.startNodeAt(start, startLoc); + method.key.name = k; + this$1$1.finishNode(method.key, "Identifier"); + return false + }; + + method.kind = "method"; + method.static = tryContextual("static"); + var isGenerator = this.eat(types.star); + var isAsync = false; + if (!isGenerator) { + if (this.options.ecmaVersion >= 8 && tryContextual("async", true)) { + isAsync = true; + isGenerator = this.options.ecmaVersion >= 9 && this.eat(types.star); + } else if (tryContextual("get")) { + method.kind = "get"; + } else if (tryContextual("set")) { + method.kind = "set"; + } + } + if (!method.key) { this.parsePropertyName(method); } + var key = method.key; + var allowsDirectSuper = false; + if (!method.computed && !method.static && (key.type === "Identifier" && key.name === "constructor" || + key.type === "Literal" && key.value === "constructor")) { + if (method.kind !== "method") { this.raise(key.start, "Constructor can't have get/set modifier"); } + if (isGenerator) { this.raise(key.start, "Constructor can't be a generator"); } + if (isAsync) { this.raise(key.start, "Constructor can't be an async method"); } + method.kind = "constructor"; + allowsDirectSuper = constructorAllowsSuper; + } else if (method.static && key.type === "Identifier" && key.name === "prototype") { + this.raise(key.start, "Classes may not have a static property named prototype"); + } + this.parseClassMethod(method, isGenerator, isAsync, allowsDirectSuper); + if (method.kind === "get" && method.value.params.length !== 0) + { this.raiseRecoverable(method.value.start, "getter should have no params"); } + if (method.kind === "set" && method.value.params.length !== 1) + { this.raiseRecoverable(method.value.start, "setter should have exactly one param"); } + if (method.kind === "set" && method.value.params[0].type === "RestElement") + { this.raiseRecoverable(method.value.params[0].start, "Setter cannot use rest params"); } + return method +}; + +pp$1.parseClassMethod = function(method, isGenerator, isAsync, allowsDirectSuper) { + method.value = this.parseMethod(isGenerator, isAsync, allowsDirectSuper); + return this.finishNode(method, "MethodDefinition") +}; + +pp$1.parseClassId = function(node, isStatement) { + if (this.type === types.name) { + node.id = this.parseIdent(); + if (isStatement) + { this.checkLVal(node.id, BIND_LEXICAL, false); } + } else { + if (isStatement === true) + { this.unexpected(); } + node.id = null; + } +}; + +pp$1.parseClassSuper = function(node) { + node.superClass = this.eat(types._extends) ? this.parseExprSubscripts() : null; +}; + +// Parses module export declaration. + +pp$1.parseExport = function(node, exports) { + this.next(); + // export * from '...' + if (this.eat(types.star)) { + if (this.options.ecmaVersion >= 11) { + if (this.eatContextual("as")) { + node.exported = this.parseIdent(true); + this.checkExport(exports, node.exported.name, this.lastTokStart); + } else { + node.exported = null; + } + } + this.expectContextual("from"); + if (this.type !== types.string) { this.unexpected(); } + node.source = this.parseExprAtom(); + this.semicolon(); + return this.finishNode(node, "ExportAllDeclaration") + } + if (this.eat(types._default)) { // export default ... + this.checkExport(exports, "default", this.lastTokStart); + var isAsync; + if (this.type === types._function || (isAsync = this.isAsyncFunction())) { + var fNode = this.startNode(); + this.next(); + if (isAsync) { this.next(); } + node.declaration = this.parseFunction(fNode, FUNC_STATEMENT | FUNC_NULLABLE_ID, false, isAsync); + } else if (this.type === types._class) { + var cNode = this.startNode(); + node.declaration = this.parseClass(cNode, "nullableID"); + } else { + node.declaration = this.parseMaybeAssign(); + this.semicolon(); + } + return this.finishNode(node, "ExportDefaultDeclaration") + } + // export var|const|let|function|class ... + if (this.shouldParseExportStatement()) { + node.declaration = this.parseStatement(null); + if (node.declaration.type === "VariableDeclaration") + { this.checkVariableExport(exports, node.declaration.declarations); } + else + { this.checkExport(exports, node.declaration.id.name, node.declaration.id.start); } + node.specifiers = []; + node.source = null; + } else { // export { x, y as z } [from '...'] + node.declaration = null; + node.specifiers = this.parseExportSpecifiers(exports); + if (this.eatContextual("from")) { + if (this.type !== types.string) { this.unexpected(); } + node.source = this.parseExprAtom(); + } else { + for (var i = 0, list = node.specifiers; i < list.length; i += 1) { + // check for keywords used as local names + var spec = list[i]; + + this.checkUnreserved(spec.local); + // check if export is defined + this.checkLocalExport(spec.local); + } + + node.source = null; + } + this.semicolon(); + } + return this.finishNode(node, "ExportNamedDeclaration") +}; + +pp$1.checkExport = function(exports, name, pos) { + if (!exports) { return } + if (has(exports, name)) + { this.raiseRecoverable(pos, "Duplicate export '" + name + "'"); } + exports[name] = true; +}; + +pp$1.checkPatternExport = function(exports, pat) { + var type = pat.type; + if (type === "Identifier") + { this.checkExport(exports, pat.name, pat.start); } + else if (type === "ObjectPattern") + { for (var i = 0, list = pat.properties; i < list.length; i += 1) + { + var prop = list[i]; + + this.checkPatternExport(exports, prop); + } } + else if (type === "ArrayPattern") + { for (var i$1 = 0, list$1 = pat.elements; i$1 < list$1.length; i$1 += 1) { + var elt = list$1[i$1]; + + if (elt) { this.checkPatternExport(exports, elt); } + } } + else if (type === "Property") + { this.checkPatternExport(exports, pat.value); } + else if (type === "AssignmentPattern") + { this.checkPatternExport(exports, pat.left); } + else if (type === "RestElement") + { this.checkPatternExport(exports, pat.argument); } + else if (type === "ParenthesizedExpression") + { this.checkPatternExport(exports, pat.expression); } +}; + +pp$1.checkVariableExport = function(exports, decls) { + if (!exports) { return } + for (var i = 0, list = decls; i < list.length; i += 1) + { + var decl = list[i]; + + this.checkPatternExport(exports, decl.id); + } +}; + +pp$1.shouldParseExportStatement = function() { + return this.type.keyword === "var" || + this.type.keyword === "const" || + this.type.keyword === "class" || + this.type.keyword === "function" || + this.isLet() || + this.isAsyncFunction() +}; + +// Parses a comma-separated list of module exports. + +pp$1.parseExportSpecifiers = function(exports) { + var nodes = [], first = true; + // export { x, y as z } [from '...'] + this.expect(types.braceL); + while (!this.eat(types.braceR)) { + if (!first) { + this.expect(types.comma); + if (this.afterTrailingComma(types.braceR)) { break } + } else { first = false; } + + var node = this.startNode(); + node.local = this.parseIdent(true); + node.exported = this.eatContextual("as") ? this.parseIdent(true) : node.local; + this.checkExport(exports, node.exported.name, node.exported.start); + nodes.push(this.finishNode(node, "ExportSpecifier")); + } + return nodes +}; + +// Parses import declaration. + +pp$1.parseImport = function(node) { + this.next(); + // import '...' + if (this.type === types.string) { + node.specifiers = empty; + node.source = this.parseExprAtom(); + } else { + node.specifiers = this.parseImportSpecifiers(); + this.expectContextual("from"); + node.source = this.type === types.string ? this.parseExprAtom() : this.unexpected(); + } + this.semicolon(); + return this.finishNode(node, "ImportDeclaration") +}; + +// Parses a comma-separated list of module imports. + +pp$1.parseImportSpecifiers = function() { + var nodes = [], first = true; + if (this.type === types.name) { + // import defaultObj, { x, y as z } from '...' + var node = this.startNode(); + node.local = this.parseIdent(); + this.checkLVal(node.local, BIND_LEXICAL); + nodes.push(this.finishNode(node, "ImportDefaultSpecifier")); + if (!this.eat(types.comma)) { return nodes } + } + if (this.type === types.star) { + var node$1 = this.startNode(); + this.next(); + this.expectContextual("as"); + node$1.local = this.parseIdent(); + this.checkLVal(node$1.local, BIND_LEXICAL); + nodes.push(this.finishNode(node$1, "ImportNamespaceSpecifier")); + return nodes + } + this.expect(types.braceL); + while (!this.eat(types.braceR)) { + if (!first) { + this.expect(types.comma); + if (this.afterTrailingComma(types.braceR)) { break } + } else { first = false; } + + var node$2 = this.startNode(); + node$2.imported = this.parseIdent(true); + if (this.eatContextual("as")) { + node$2.local = this.parseIdent(); + } else { + this.checkUnreserved(node$2.imported); + node$2.local = node$2.imported; + } + this.checkLVal(node$2.local, BIND_LEXICAL); + nodes.push(this.finishNode(node$2, "ImportSpecifier")); + } + return nodes +}; + +// Set `ExpressionStatement#directive` property for directive prologues. +pp$1.adaptDirectivePrologue = function(statements) { + for (var i = 0; i < statements.length && this.isDirectiveCandidate(statements[i]); ++i) { + statements[i].directive = statements[i].expression.raw.slice(1, -1); + } +}; +pp$1.isDirectiveCandidate = function(statement) { + return ( + statement.type === "ExpressionStatement" && + statement.expression.type === "Literal" && + typeof statement.expression.value === "string" && + // Reject parenthesized strings. + (this.input[statement.start] === "\"" || this.input[statement.start] === "'") + ) +}; + +var pp$2 = Parser.prototype; + +// Convert existing expression atom to assignable pattern +// if possible. + +pp$2.toAssignable = function(node, isBinding, refDestructuringErrors) { + if (this.options.ecmaVersion >= 6 && node) { + switch (node.type) { + case "Identifier": + if (this.inAsync && node.name === "await") + { this.raise(node.start, "Cannot use 'await' as identifier inside an async function"); } + break + + case "ObjectPattern": + case "ArrayPattern": + case "RestElement": + break + + case "ObjectExpression": + node.type = "ObjectPattern"; + if (refDestructuringErrors) { this.checkPatternErrors(refDestructuringErrors, true); } + for (var i = 0, list = node.properties; i < list.length; i += 1) { + var prop = list[i]; + + this.toAssignable(prop, isBinding); + // Early error: + // AssignmentRestProperty[Yield, Await] : + // `...` DestructuringAssignmentTarget[Yield, Await] + // + // It is a Syntax Error if |DestructuringAssignmentTarget| is an |ArrayLiteral| or an |ObjectLiteral|. + if ( + prop.type === "RestElement" && + (prop.argument.type === "ArrayPattern" || prop.argument.type === "ObjectPattern") + ) { + this.raise(prop.argument.start, "Unexpected token"); + } + } + break + + case "Property": + // AssignmentProperty has type === "Property" + if (node.kind !== "init") { this.raise(node.key.start, "Object pattern can't contain getter or setter"); } + this.toAssignable(node.value, isBinding); + break + + case "ArrayExpression": + node.type = "ArrayPattern"; + if (refDestructuringErrors) { this.checkPatternErrors(refDestructuringErrors, true); } + this.toAssignableList(node.elements, isBinding); + break + + case "SpreadElement": + node.type = "RestElement"; + this.toAssignable(node.argument, isBinding); + if (node.argument.type === "AssignmentPattern") + { this.raise(node.argument.start, "Rest elements cannot have a default value"); } + break + + case "AssignmentExpression": + if (node.operator !== "=") { this.raise(node.left.end, "Only '=' operator can be used for specifying default value."); } + node.type = "AssignmentPattern"; + delete node.operator; + this.toAssignable(node.left, isBinding); + // falls through to AssignmentPattern + + case "AssignmentPattern": + break + + case "ParenthesizedExpression": + this.toAssignable(node.expression, isBinding, refDestructuringErrors); + break + + case "ChainExpression": + this.raiseRecoverable(node.start, "Optional chaining cannot appear in left-hand side"); + break + + case "MemberExpression": + if (!isBinding) { break } + + default: + this.raise(node.start, "Assigning to rvalue"); + } + } else if (refDestructuringErrors) { this.checkPatternErrors(refDestructuringErrors, true); } + return node +}; + +// Convert list of expression atoms to binding list. + +pp$2.toAssignableList = function(exprList, isBinding) { + var end = exprList.length; + for (var i = 0; i < end; i++) { + var elt = exprList[i]; + if (elt) { this.toAssignable(elt, isBinding); } + } + if (end) { + var last = exprList[end - 1]; + if (this.options.ecmaVersion === 6 && isBinding && last && last.type === "RestElement" && last.argument.type !== "Identifier") + { this.unexpected(last.argument.start); } + } + return exprList +}; + +// Parses spread element. + +pp$2.parseSpread = function(refDestructuringErrors) { + var node = this.startNode(); + this.next(); + node.argument = this.parseMaybeAssign(false, refDestructuringErrors); + return this.finishNode(node, "SpreadElement") +}; + +pp$2.parseRestBinding = function() { + var node = this.startNode(); + this.next(); + + // RestElement inside of a function parameter must be an identifier + if (this.options.ecmaVersion === 6 && this.type !== types.name) + { this.unexpected(); } + + node.argument = this.parseBindingAtom(); + + return this.finishNode(node, "RestElement") +}; + +// Parses lvalue (assignable) atom. + +pp$2.parseBindingAtom = function() { + if (this.options.ecmaVersion >= 6) { + switch (this.type) { + case types.bracketL: + var node = this.startNode(); + this.next(); + node.elements = this.parseBindingList(types.bracketR, true, true); + return this.finishNode(node, "ArrayPattern") + + case types.braceL: + return this.parseObj(true) + } + } + return this.parseIdent() +}; + +pp$2.parseBindingList = function(close, allowEmpty, allowTrailingComma) { + var elts = [], first = true; + while (!this.eat(close)) { + if (first) { first = false; } + else { this.expect(types.comma); } + if (allowEmpty && this.type === types.comma) { + elts.push(null); + } else if (allowTrailingComma && this.afterTrailingComma(close)) { + break + } else if (this.type === types.ellipsis) { + var rest = this.parseRestBinding(); + this.parseBindingListItem(rest); + elts.push(rest); + if (this.type === types.comma) { this.raise(this.start, "Comma is not permitted after the rest element"); } + this.expect(close); + break + } else { + var elem = this.parseMaybeDefault(this.start, this.startLoc); + this.parseBindingListItem(elem); + elts.push(elem); + } + } + return elts +}; + +pp$2.parseBindingListItem = function(param) { + return param +}; + +// Parses assignment pattern around given atom if possible. + +pp$2.parseMaybeDefault = function(startPos, startLoc, left) { + left = left || this.parseBindingAtom(); + if (this.options.ecmaVersion < 6 || !this.eat(types.eq)) { return left } + var node = this.startNodeAt(startPos, startLoc); + node.left = left; + node.right = this.parseMaybeAssign(); + return this.finishNode(node, "AssignmentPattern") +}; + +// Verify that a node is an lval — something that can be assigned +// to. +// bindingType can be either: +// 'var' indicating that the lval creates a 'var' binding +// 'let' indicating that the lval creates a lexical ('let' or 'const') binding +// 'none' indicating that the binding should be checked for illegal identifiers, but not for duplicate references + +pp$2.checkLVal = function(expr, bindingType, checkClashes) { + if ( bindingType === void 0 ) bindingType = BIND_NONE; + + switch (expr.type) { + case "Identifier": + if (bindingType === BIND_LEXICAL && expr.name === "let") + { this.raiseRecoverable(expr.start, "let is disallowed as a lexically bound name"); } + if (this.strict && this.reservedWordsStrictBind.test(expr.name)) + { this.raiseRecoverable(expr.start, (bindingType ? "Binding " : "Assigning to ") + expr.name + " in strict mode"); } + if (checkClashes) { + if (has(checkClashes, expr.name)) + { this.raiseRecoverable(expr.start, "Argument name clash"); } + checkClashes[expr.name] = true; + } + if (bindingType !== BIND_NONE && bindingType !== BIND_OUTSIDE) { this.declareName(expr.name, bindingType, expr.start); } + break + + case "ChainExpression": + this.raiseRecoverable(expr.start, "Optional chaining cannot appear in left-hand side"); + break + + case "MemberExpression": + if (bindingType) { this.raiseRecoverable(expr.start, "Binding member expression"); } + break + + case "ObjectPattern": + for (var i = 0, list = expr.properties; i < list.length; i += 1) + { + var prop = list[i]; + + this.checkLVal(prop, bindingType, checkClashes); + } + break + + case "Property": + // AssignmentProperty has type === "Property" + this.checkLVal(expr.value, bindingType, checkClashes); + break + + case "ArrayPattern": + for (var i$1 = 0, list$1 = expr.elements; i$1 < list$1.length; i$1 += 1) { + var elem = list$1[i$1]; + + if (elem) { this.checkLVal(elem, bindingType, checkClashes); } + } + break + + case "AssignmentPattern": + this.checkLVal(expr.left, bindingType, checkClashes); + break + + case "RestElement": + this.checkLVal(expr.argument, bindingType, checkClashes); + break + + case "ParenthesizedExpression": + this.checkLVal(expr.expression, bindingType, checkClashes); + break + + default: + this.raise(expr.start, (bindingType ? "Binding" : "Assigning to") + " rvalue"); + } +}; + +// A recursive descent parser operates by defining functions for all + +var pp$3 = Parser.prototype; + +// Check if property name clashes with already added. +// Object/class getters and setters are not allowed to clash — +// either with each other or with an init property — and in +// strict mode, init properties are also not allowed to be repeated. + +pp$3.checkPropClash = function(prop, propHash, refDestructuringErrors) { + if (this.options.ecmaVersion >= 9 && prop.type === "SpreadElement") + { return } + if (this.options.ecmaVersion >= 6 && (prop.computed || prop.method || prop.shorthand)) + { return } + var key = prop.key; + var name; + switch (key.type) { + case "Identifier": name = key.name; break + case "Literal": name = String(key.value); break + default: return + } + var kind = prop.kind; + if (this.options.ecmaVersion >= 6) { + if (name === "__proto__" && kind === "init") { + if (propHash.proto) { + if (refDestructuringErrors) { + if (refDestructuringErrors.doubleProto < 0) + { refDestructuringErrors.doubleProto = key.start; } + // Backwards-compat kludge. Can be removed in version 6.0 + } else { this.raiseRecoverable(key.start, "Redefinition of __proto__ property"); } + } + propHash.proto = true; + } + return + } + name = "$" + name; + var other = propHash[name]; + if (other) { + var redefinition; + if (kind === "init") { + redefinition = this.strict && other.init || other.get || other.set; + } else { + redefinition = other.init || other[kind]; + } + if (redefinition) + { this.raiseRecoverable(key.start, "Redefinition of property"); } + } else { + other = propHash[name] = { + init: false, + get: false, + set: false + }; + } + other[kind] = true; +}; + +// ### Expression parsing + +// These nest, from the most general expression type at the top to +// 'atomic', nondivisible expression types at the bottom. Most of +// the functions will simply let the function(s) below them parse, +// and, *if* the syntactic construct they handle is present, wrap +// the AST node that the inner parser gave them in another node. + +// Parse a full expression. The optional arguments are used to +// forbid the `in` operator (in for loops initalization expressions) +// and provide reference for storing '=' operator inside shorthand +// property assignment in contexts where both object expression +// and object pattern might appear (so it's possible to raise +// delayed syntax error at correct position). + +pp$3.parseExpression = function(noIn, refDestructuringErrors) { + var startPos = this.start, startLoc = this.startLoc; + var expr = this.parseMaybeAssign(noIn, refDestructuringErrors); + if (this.type === types.comma) { + var node = this.startNodeAt(startPos, startLoc); + node.expressions = [expr]; + while (this.eat(types.comma)) { node.expressions.push(this.parseMaybeAssign(noIn, refDestructuringErrors)); } + return this.finishNode(node, "SequenceExpression") + } + return expr +}; + +// Parse an assignment expression. This includes applications of +// operators like `+=`. + +pp$3.parseMaybeAssign = function(noIn, refDestructuringErrors, afterLeftParse) { + if (this.isContextual("yield")) { + if (this.inGenerator) { return this.parseYield(noIn) } + // The tokenizer will assume an expression is allowed after + // `yield`, but this isn't that kind of yield + else { this.exprAllowed = false; } + } + + var ownDestructuringErrors = false, oldParenAssign = -1, oldTrailingComma = -1; + if (refDestructuringErrors) { + oldParenAssign = refDestructuringErrors.parenthesizedAssign; + oldTrailingComma = refDestructuringErrors.trailingComma; + refDestructuringErrors.parenthesizedAssign = refDestructuringErrors.trailingComma = -1; + } else { + refDestructuringErrors = new DestructuringErrors; + ownDestructuringErrors = true; + } + + var startPos = this.start, startLoc = this.startLoc; + if (this.type === types.parenL || this.type === types.name) + { this.potentialArrowAt = this.start; } + var left = this.parseMaybeConditional(noIn, refDestructuringErrors); + if (afterLeftParse) { left = afterLeftParse.call(this, left, startPos, startLoc); } + if (this.type.isAssign) { + var node = this.startNodeAt(startPos, startLoc); + node.operator = this.value; + node.left = this.type === types.eq ? this.toAssignable(left, false, refDestructuringErrors) : left; + if (!ownDestructuringErrors) { + refDestructuringErrors.parenthesizedAssign = refDestructuringErrors.trailingComma = refDestructuringErrors.doubleProto = -1; + } + if (refDestructuringErrors.shorthandAssign >= node.left.start) + { refDestructuringErrors.shorthandAssign = -1; } // reset because shorthand default was used correctly + this.checkLVal(left); + this.next(); + node.right = this.parseMaybeAssign(noIn); + return this.finishNode(node, "AssignmentExpression") + } else { + if (ownDestructuringErrors) { this.checkExpressionErrors(refDestructuringErrors, true); } + } + if (oldParenAssign > -1) { refDestructuringErrors.parenthesizedAssign = oldParenAssign; } + if (oldTrailingComma > -1) { refDestructuringErrors.trailingComma = oldTrailingComma; } + return left +}; + +// Parse a ternary conditional (`?:`) operator. + +pp$3.parseMaybeConditional = function(noIn, refDestructuringErrors) { + var startPos = this.start, startLoc = this.startLoc; + var expr = this.parseExprOps(noIn, refDestructuringErrors); + if (this.checkExpressionErrors(refDestructuringErrors)) { return expr } + if (this.eat(types.question)) { + var node = this.startNodeAt(startPos, startLoc); + node.test = expr; + node.consequent = this.parseMaybeAssign(); + this.expect(types.colon); + node.alternate = this.parseMaybeAssign(noIn); + return this.finishNode(node, "ConditionalExpression") + } + return expr +}; + +// Start the precedence parser. + +pp$3.parseExprOps = function(noIn, refDestructuringErrors) { + var startPos = this.start, startLoc = this.startLoc; + var expr = this.parseMaybeUnary(refDestructuringErrors, false); + if (this.checkExpressionErrors(refDestructuringErrors)) { return expr } + return expr.start === startPos && expr.type === "ArrowFunctionExpression" ? expr : this.parseExprOp(expr, startPos, startLoc, -1, noIn) +}; + +// Parse binary operators with the operator precedence parsing +// algorithm. `left` is the left-hand side of the operator. +// `minPrec` provides context that allows the function to stop and +// defer further parser to one of its callers when it encounters an +// operator that has a lower precedence than the set it is parsing. + +pp$3.parseExprOp = function(left, leftStartPos, leftStartLoc, minPrec, noIn) { + var prec = this.type.binop; + if (prec != null && (!noIn || this.type !== types._in)) { + if (prec > minPrec) { + var logical = this.type === types.logicalOR || this.type === types.logicalAND; + var coalesce = this.type === types.coalesce; + if (coalesce) { + // Handle the precedence of `tt.coalesce` as equal to the range of logical expressions. + // In other words, `node.right` shouldn't contain logical expressions in order to check the mixed error. + prec = types.logicalAND.binop; + } + var op = this.value; + this.next(); + var startPos = this.start, startLoc = this.startLoc; + var right = this.parseExprOp(this.parseMaybeUnary(null, false), startPos, startLoc, prec, noIn); + var node = this.buildBinary(leftStartPos, leftStartLoc, left, right, op, logical || coalesce); + if ((logical && this.type === types.coalesce) || (coalesce && (this.type === types.logicalOR || this.type === types.logicalAND))) { + this.raiseRecoverable(this.start, "Logical expressions and coalesce expressions cannot be mixed. Wrap either by parentheses"); + } + return this.parseExprOp(node, leftStartPos, leftStartLoc, minPrec, noIn) + } + } + return left +}; + +pp$3.buildBinary = function(startPos, startLoc, left, right, op, logical) { + var node = this.startNodeAt(startPos, startLoc); + node.left = left; + node.operator = op; + node.right = right; + return this.finishNode(node, logical ? "LogicalExpression" : "BinaryExpression") +}; + +// Parse unary operators, both prefix and postfix. + +pp$3.parseMaybeUnary = function(refDestructuringErrors, sawUnary) { + var startPos = this.start, startLoc = this.startLoc, expr; + if (this.isContextual("await") && (this.inAsync || (!this.inFunction && this.options.allowAwaitOutsideFunction))) { + expr = this.parseAwait(); + sawUnary = true; + } else if (this.type.prefix) { + var node = this.startNode(), update = this.type === types.incDec; + node.operator = this.value; + node.prefix = true; + this.next(); + node.argument = this.parseMaybeUnary(null, true); + this.checkExpressionErrors(refDestructuringErrors, true); + if (update) { this.checkLVal(node.argument); } + else if (this.strict && node.operator === "delete" && + node.argument.type === "Identifier") + { this.raiseRecoverable(node.start, "Deleting local variable in strict mode"); } + else { sawUnary = true; } + expr = this.finishNode(node, update ? "UpdateExpression" : "UnaryExpression"); + } else { + expr = this.parseExprSubscripts(refDestructuringErrors); + if (this.checkExpressionErrors(refDestructuringErrors)) { return expr } + while (this.type.postfix && !this.canInsertSemicolon()) { + var node$1 = this.startNodeAt(startPos, startLoc); + node$1.operator = this.value; + node$1.prefix = false; + node$1.argument = expr; + this.checkLVal(expr); + this.next(); + expr = this.finishNode(node$1, "UpdateExpression"); + } + } + + if (!sawUnary && this.eat(types.starstar)) + { return this.buildBinary(startPos, startLoc, expr, this.parseMaybeUnary(null, false), "**", false) } + else + { return expr } +}; + +// Parse call, dot, and `[]`-subscript expressions. + +pp$3.parseExprSubscripts = function(refDestructuringErrors) { + var startPos = this.start, startLoc = this.startLoc; + var expr = this.parseExprAtom(refDestructuringErrors); + if (expr.type === "ArrowFunctionExpression" && this.input.slice(this.lastTokStart, this.lastTokEnd) !== ")") + { return expr } + var result = this.parseSubscripts(expr, startPos, startLoc); + if (refDestructuringErrors && result.type === "MemberExpression") { + if (refDestructuringErrors.parenthesizedAssign >= result.start) { refDestructuringErrors.parenthesizedAssign = -1; } + if (refDestructuringErrors.parenthesizedBind >= result.start) { refDestructuringErrors.parenthesizedBind = -1; } + } + return result +}; + +pp$3.parseSubscripts = function(base, startPos, startLoc, noCalls) { + var maybeAsyncArrow = this.options.ecmaVersion >= 8 && base.type === "Identifier" && base.name === "async" && + this.lastTokEnd === base.end && !this.canInsertSemicolon() && base.end - base.start === 5 && + this.potentialArrowAt === base.start; + var optionalChained = false; + + while (true) { + var element = this.parseSubscript(base, startPos, startLoc, noCalls, maybeAsyncArrow, optionalChained); + + if (element.optional) { optionalChained = true; } + if (element === base || element.type === "ArrowFunctionExpression") { + if (optionalChained) { + var chainNode = this.startNodeAt(startPos, startLoc); + chainNode.expression = element; + element = this.finishNode(chainNode, "ChainExpression"); + } + return element + } + + base = element; + } +}; + +pp$3.parseSubscript = function(base, startPos, startLoc, noCalls, maybeAsyncArrow, optionalChained) { + var optionalSupported = this.options.ecmaVersion >= 11; + var optional = optionalSupported && this.eat(types.questionDot); + if (noCalls && optional) { this.raise(this.lastTokStart, "Optional chaining cannot appear in the callee of new expressions"); } + + var computed = this.eat(types.bracketL); + if (computed || (optional && this.type !== types.parenL && this.type !== types.backQuote) || this.eat(types.dot)) { + var node = this.startNodeAt(startPos, startLoc); + node.object = base; + node.property = computed ? this.parseExpression() : this.parseIdent(this.options.allowReserved !== "never"); + node.computed = !!computed; + if (computed) { this.expect(types.bracketR); } + if (optionalSupported) { + node.optional = optional; + } + base = this.finishNode(node, "MemberExpression"); + } else if (!noCalls && this.eat(types.parenL)) { + var refDestructuringErrors = new DestructuringErrors, oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos; + this.yieldPos = 0; + this.awaitPos = 0; + this.awaitIdentPos = 0; + var exprList = this.parseExprList(types.parenR, this.options.ecmaVersion >= 8, false, refDestructuringErrors); + if (maybeAsyncArrow && !optional && !this.canInsertSemicolon() && this.eat(types.arrow)) { + this.checkPatternErrors(refDestructuringErrors, false); + this.checkYieldAwaitInDefaultParams(); + if (this.awaitIdentPos > 0) + { this.raise(this.awaitIdentPos, "Cannot use 'await' as identifier inside an async function"); } + this.yieldPos = oldYieldPos; + this.awaitPos = oldAwaitPos; + this.awaitIdentPos = oldAwaitIdentPos; + return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), exprList, true) + } + this.checkExpressionErrors(refDestructuringErrors, true); + this.yieldPos = oldYieldPos || this.yieldPos; + this.awaitPos = oldAwaitPos || this.awaitPos; + this.awaitIdentPos = oldAwaitIdentPos || this.awaitIdentPos; + var node$1 = this.startNodeAt(startPos, startLoc); + node$1.callee = base; + node$1.arguments = exprList; + if (optionalSupported) { + node$1.optional = optional; + } + base = this.finishNode(node$1, "CallExpression"); + } else if (this.type === types.backQuote) { + if (optional || optionalChained) { + this.raise(this.start, "Optional chaining cannot appear in the tag of tagged template expressions"); + } + var node$2 = this.startNodeAt(startPos, startLoc); + node$2.tag = base; + node$2.quasi = this.parseTemplate({isTagged: true}); + base = this.finishNode(node$2, "TaggedTemplateExpression"); + } + return base +}; + +// Parse an atomic expression — either a single token that is an +// expression, an expression started by a keyword like `function` or +// `new`, or an expression wrapped in punctuation like `()`, `[]`, +// or `{}`. + +pp$3.parseExprAtom = function(refDestructuringErrors) { + // If a division operator appears in an expression position, the + // tokenizer got confused, and we force it to read a regexp instead. + if (this.type === types.slash) { this.readRegexp(); } + + var node, canBeArrow = this.potentialArrowAt === this.start; + switch (this.type) { + case types._super: + if (!this.allowSuper) + { this.raise(this.start, "'super' keyword outside a method"); } + node = this.startNode(); + this.next(); + if (this.type === types.parenL && !this.allowDirectSuper) + { this.raise(node.start, "super() call outside constructor of a subclass"); } + // The `super` keyword can appear at below: + // SuperProperty: + // super [ Expression ] + // super . IdentifierName + // SuperCall: + // super ( Arguments ) + if (this.type !== types.dot && this.type !== types.bracketL && this.type !== types.parenL) + { this.unexpected(); } + return this.finishNode(node, "Super") + + case types._this: + node = this.startNode(); + this.next(); + return this.finishNode(node, "ThisExpression") + + case types.name: + var startPos = this.start, startLoc = this.startLoc, containsEsc = this.containsEsc; + var id = this.parseIdent(false); + if (this.options.ecmaVersion >= 8 && !containsEsc && id.name === "async" && !this.canInsertSemicolon() && this.eat(types._function)) + { return this.parseFunction(this.startNodeAt(startPos, startLoc), 0, false, true) } + if (canBeArrow && !this.canInsertSemicolon()) { + if (this.eat(types.arrow)) + { return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), [id], false) } + if (this.options.ecmaVersion >= 8 && id.name === "async" && this.type === types.name && !containsEsc) { + id = this.parseIdent(false); + if (this.canInsertSemicolon() || !this.eat(types.arrow)) + { this.unexpected(); } + return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), [id], true) + } + } + return id + + case types.regexp: + var value = this.value; + node = this.parseLiteral(value.value); + node.regex = {pattern: value.pattern, flags: value.flags}; + return node + + case types.num: case types.string: + return this.parseLiteral(this.value) + + case types._null: case types._true: case types._false: + node = this.startNode(); + node.value = this.type === types._null ? null : this.type === types._true; + node.raw = this.type.keyword; + this.next(); + return this.finishNode(node, "Literal") + + case types.parenL: + var start = this.start, expr = this.parseParenAndDistinguishExpression(canBeArrow); + if (refDestructuringErrors) { + if (refDestructuringErrors.parenthesizedAssign < 0 && !this.isSimpleAssignTarget(expr)) + { refDestructuringErrors.parenthesizedAssign = start; } + if (refDestructuringErrors.parenthesizedBind < 0) + { refDestructuringErrors.parenthesizedBind = start; } + } + return expr + + case types.bracketL: + node = this.startNode(); + this.next(); + node.elements = this.parseExprList(types.bracketR, true, true, refDestructuringErrors); + return this.finishNode(node, "ArrayExpression") + + case types.braceL: + return this.parseObj(false, refDestructuringErrors) + + case types._function: + node = this.startNode(); + this.next(); + return this.parseFunction(node, 0) + + case types._class: + return this.parseClass(this.startNode(), false) + + case types._new: + return this.parseNew() + + case types.backQuote: + return this.parseTemplate() + + case types._import: + if (this.options.ecmaVersion >= 11) { + return this.parseExprImport() + } else { + return this.unexpected() + } + + default: + this.unexpected(); + } +}; + +pp$3.parseExprImport = function() { + var node = this.startNode(); + + // Consume `import` as an identifier for `import.meta`. + // Because `this.parseIdent(true)` doesn't check escape sequences, it needs the check of `this.containsEsc`. + if (this.containsEsc) { this.raiseRecoverable(this.start, "Escape sequence in keyword import"); } + var meta = this.parseIdent(true); + + switch (this.type) { + case types.parenL: + return this.parseDynamicImport(node) + case types.dot: + node.meta = meta; + return this.parseImportMeta(node) + default: + this.unexpected(); + } +}; + +pp$3.parseDynamicImport = function(node) { + this.next(); // skip `(` + + // Parse node.source. + node.source = this.parseMaybeAssign(); + + // Verify ending. + if (!this.eat(types.parenR)) { + var errorPos = this.start; + if (this.eat(types.comma) && this.eat(types.parenR)) { + this.raiseRecoverable(errorPos, "Trailing comma is not allowed in import()"); + } else { + this.unexpected(errorPos); + } + } + + return this.finishNode(node, "ImportExpression") +}; + +pp$3.parseImportMeta = function(node) { + this.next(); // skip `.` + + var containsEsc = this.containsEsc; + node.property = this.parseIdent(true); + + if (node.property.name !== "meta") + { this.raiseRecoverable(node.property.start, "The only valid meta property for import is 'import.meta'"); } + if (containsEsc) + { this.raiseRecoverable(node.start, "'import.meta' must not contain escaped characters"); } + if (this.options.sourceType !== "module") + { this.raiseRecoverable(node.start, "Cannot use 'import.meta' outside a module"); } + + return this.finishNode(node, "MetaProperty") +}; + +pp$3.parseLiteral = function(value) { + var node = this.startNode(); + node.value = value; + node.raw = this.input.slice(this.start, this.end); + if (node.raw.charCodeAt(node.raw.length - 1) === 110) { node.bigint = node.raw.slice(0, -1).replace(/_/g, ""); } + this.next(); + return this.finishNode(node, "Literal") +}; + +pp$3.parseParenExpression = function() { + this.expect(types.parenL); + var val = this.parseExpression(); + this.expect(types.parenR); + return val +}; + +pp$3.parseParenAndDistinguishExpression = function(canBeArrow) { + var startPos = this.start, startLoc = this.startLoc, val, allowTrailingComma = this.options.ecmaVersion >= 8; + if (this.options.ecmaVersion >= 6) { + this.next(); + + var innerStartPos = this.start, innerStartLoc = this.startLoc; + var exprList = [], first = true, lastIsComma = false; + var refDestructuringErrors = new DestructuringErrors, oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, spreadStart; + this.yieldPos = 0; + this.awaitPos = 0; + // Do not save awaitIdentPos to allow checking awaits nested in parameters + while (this.type !== types.parenR) { + first ? first = false : this.expect(types.comma); + if (allowTrailingComma && this.afterTrailingComma(types.parenR, true)) { + lastIsComma = true; + break + } else if (this.type === types.ellipsis) { + spreadStart = this.start; + exprList.push(this.parseParenItem(this.parseRestBinding())); + if (this.type === types.comma) { this.raise(this.start, "Comma is not permitted after the rest element"); } + break + } else { + exprList.push(this.parseMaybeAssign(false, refDestructuringErrors, this.parseParenItem)); + } + } + var innerEndPos = this.start, innerEndLoc = this.startLoc; + this.expect(types.parenR); + + if (canBeArrow && !this.canInsertSemicolon() && this.eat(types.arrow)) { + this.checkPatternErrors(refDestructuringErrors, false); + this.checkYieldAwaitInDefaultParams(); + this.yieldPos = oldYieldPos; + this.awaitPos = oldAwaitPos; + return this.parseParenArrowList(startPos, startLoc, exprList) + } + + if (!exprList.length || lastIsComma) { this.unexpected(this.lastTokStart); } + if (spreadStart) { this.unexpected(spreadStart); } + this.checkExpressionErrors(refDestructuringErrors, true); + this.yieldPos = oldYieldPos || this.yieldPos; + this.awaitPos = oldAwaitPos || this.awaitPos; + + if (exprList.length > 1) { + val = this.startNodeAt(innerStartPos, innerStartLoc); + val.expressions = exprList; + this.finishNodeAt(val, "SequenceExpression", innerEndPos, innerEndLoc); + } else { + val = exprList[0]; + } + } else { + val = this.parseParenExpression(); + } + + if (this.options.preserveParens) { + var par = this.startNodeAt(startPos, startLoc); + par.expression = val; + return this.finishNode(par, "ParenthesizedExpression") + } else { + return val + } +}; + +pp$3.parseParenItem = function(item) { + return item +}; + +pp$3.parseParenArrowList = function(startPos, startLoc, exprList) { + return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), exprList) +}; + +// New's precedence is slightly tricky. It must allow its argument to +// be a `[]` or dot subscript expression, but not a call — at least, +// not without wrapping it in parentheses. Thus, it uses the noCalls +// argument to parseSubscripts to prevent it from consuming the +// argument list. + +var empty$1 = []; + +pp$3.parseNew = function() { + if (this.containsEsc) { this.raiseRecoverable(this.start, "Escape sequence in keyword new"); } + var node = this.startNode(); + var meta = this.parseIdent(true); + if (this.options.ecmaVersion >= 6 && this.eat(types.dot)) { + node.meta = meta; + var containsEsc = this.containsEsc; + node.property = this.parseIdent(true); + if (node.property.name !== "target") + { this.raiseRecoverable(node.property.start, "The only valid meta property for new is 'new.target'"); } + if (containsEsc) + { this.raiseRecoverable(node.start, "'new.target' must not contain escaped characters"); } + if (!this.inNonArrowFunction()) + { this.raiseRecoverable(node.start, "'new.target' can only be used in functions"); } + return this.finishNode(node, "MetaProperty") + } + var startPos = this.start, startLoc = this.startLoc, isImport = this.type === types._import; + node.callee = this.parseSubscripts(this.parseExprAtom(), startPos, startLoc, true); + if (isImport && node.callee.type === "ImportExpression") { + this.raise(startPos, "Cannot use new with import()"); + } + if (this.eat(types.parenL)) { node.arguments = this.parseExprList(types.parenR, this.options.ecmaVersion >= 8, false); } + else { node.arguments = empty$1; } + return this.finishNode(node, "NewExpression") +}; + +// Parse template expression. + +pp$3.parseTemplateElement = function(ref) { + var isTagged = ref.isTagged; + + var elem = this.startNode(); + if (this.type === types.invalidTemplate) { + if (!isTagged) { + this.raiseRecoverable(this.start, "Bad escape sequence in untagged template literal"); + } + elem.value = { + raw: this.value, + cooked: null + }; + } else { + elem.value = { + raw: this.input.slice(this.start, this.end).replace(/\r\n?/g, "\n"), + cooked: this.value + }; + } + this.next(); + elem.tail = this.type === types.backQuote; + return this.finishNode(elem, "TemplateElement") +}; + +pp$3.parseTemplate = function(ref) { + if ( ref === void 0 ) ref = {}; + var isTagged = ref.isTagged; if ( isTagged === void 0 ) isTagged = false; + + var node = this.startNode(); + this.next(); + node.expressions = []; + var curElt = this.parseTemplateElement({isTagged: isTagged}); + node.quasis = [curElt]; + while (!curElt.tail) { + if (this.type === types.eof) { this.raise(this.pos, "Unterminated template literal"); } + this.expect(types.dollarBraceL); + node.expressions.push(this.parseExpression()); + this.expect(types.braceR); + node.quasis.push(curElt = this.parseTemplateElement({isTagged: isTagged})); + } + this.next(); + return this.finishNode(node, "TemplateLiteral") +}; + +pp$3.isAsyncProp = function(prop) { + return !prop.computed && prop.key.type === "Identifier" && prop.key.name === "async" && + (this.type === types.name || this.type === types.num || this.type === types.string || this.type === types.bracketL || this.type.keyword || (this.options.ecmaVersion >= 9 && this.type === types.star)) && + !lineBreak.test(this.input.slice(this.lastTokEnd, this.start)) +}; + +// Parse an object literal or binding pattern. + +pp$3.parseObj = function(isPattern, refDestructuringErrors) { + var node = this.startNode(), first = true, propHash = {}; + node.properties = []; + this.next(); + while (!this.eat(types.braceR)) { + if (!first) { + this.expect(types.comma); + if (this.options.ecmaVersion >= 5 && this.afterTrailingComma(types.braceR)) { break } + } else { first = false; } + + var prop = this.parseProperty(isPattern, refDestructuringErrors); + if (!isPattern) { this.checkPropClash(prop, propHash, refDestructuringErrors); } + node.properties.push(prop); + } + return this.finishNode(node, isPattern ? "ObjectPattern" : "ObjectExpression") +}; + +pp$3.parseProperty = function(isPattern, refDestructuringErrors) { + var prop = this.startNode(), isGenerator, isAsync, startPos, startLoc; + if (this.options.ecmaVersion >= 9 && this.eat(types.ellipsis)) { + if (isPattern) { + prop.argument = this.parseIdent(false); + if (this.type === types.comma) { + this.raise(this.start, "Comma is not permitted after the rest element"); + } + return this.finishNode(prop, "RestElement") + } + // To disallow parenthesized identifier via `this.toAssignable()`. + if (this.type === types.parenL && refDestructuringErrors) { + if (refDestructuringErrors.parenthesizedAssign < 0) { + refDestructuringErrors.parenthesizedAssign = this.start; + } + if (refDestructuringErrors.parenthesizedBind < 0) { + refDestructuringErrors.parenthesizedBind = this.start; + } + } + // Parse argument. + prop.argument = this.parseMaybeAssign(false, refDestructuringErrors); + // To disallow trailing comma via `this.toAssignable()`. + if (this.type === types.comma && refDestructuringErrors && refDestructuringErrors.trailingComma < 0) { + refDestructuringErrors.trailingComma = this.start; + } + // Finish + return this.finishNode(prop, "SpreadElement") + } + if (this.options.ecmaVersion >= 6) { + prop.method = false; + prop.shorthand = false; + if (isPattern || refDestructuringErrors) { + startPos = this.start; + startLoc = this.startLoc; + } + if (!isPattern) + { isGenerator = this.eat(types.star); } + } + var containsEsc = this.containsEsc; + this.parsePropertyName(prop); + if (!isPattern && !containsEsc && this.options.ecmaVersion >= 8 && !isGenerator && this.isAsyncProp(prop)) { + isAsync = true; + isGenerator = this.options.ecmaVersion >= 9 && this.eat(types.star); + this.parsePropertyName(prop, refDestructuringErrors); + } else { + isAsync = false; + } + this.parsePropertyValue(prop, isPattern, isGenerator, isAsync, startPos, startLoc, refDestructuringErrors, containsEsc); + return this.finishNode(prop, "Property") +}; + +pp$3.parsePropertyValue = function(prop, isPattern, isGenerator, isAsync, startPos, startLoc, refDestructuringErrors, containsEsc) { + if ((isGenerator || isAsync) && this.type === types.colon) + { this.unexpected(); } + + if (this.eat(types.colon)) { + prop.value = isPattern ? this.parseMaybeDefault(this.start, this.startLoc) : this.parseMaybeAssign(false, refDestructuringErrors); + prop.kind = "init"; + } else if (this.options.ecmaVersion >= 6 && this.type === types.parenL) { + if (isPattern) { this.unexpected(); } + prop.kind = "init"; + prop.method = true; + prop.value = this.parseMethod(isGenerator, isAsync); + } else if (!isPattern && !containsEsc && + this.options.ecmaVersion >= 5 && !prop.computed && prop.key.type === "Identifier" && + (prop.key.name === "get" || prop.key.name === "set") && + (this.type !== types.comma && this.type !== types.braceR && this.type !== types.eq)) { + if (isGenerator || isAsync) { this.unexpected(); } + prop.kind = prop.key.name; + this.parsePropertyName(prop); + prop.value = this.parseMethod(false); + var paramCount = prop.kind === "get" ? 0 : 1; + if (prop.value.params.length !== paramCount) { + var start = prop.value.start; + if (prop.kind === "get") + { this.raiseRecoverable(start, "getter should have no params"); } + else + { this.raiseRecoverable(start, "setter should have exactly one param"); } + } else { + if (prop.kind === "set" && prop.value.params[0].type === "RestElement") + { this.raiseRecoverable(prop.value.params[0].start, "Setter cannot use rest params"); } + } + } else if (this.options.ecmaVersion >= 6 && !prop.computed && prop.key.type === "Identifier") { + if (isGenerator || isAsync) { this.unexpected(); } + this.checkUnreserved(prop.key); + if (prop.key.name === "await" && !this.awaitIdentPos) + { this.awaitIdentPos = startPos; } + prop.kind = "init"; + if (isPattern) { + prop.value = this.parseMaybeDefault(startPos, startLoc, prop.key); + } else if (this.type === types.eq && refDestructuringErrors) { + if (refDestructuringErrors.shorthandAssign < 0) + { refDestructuringErrors.shorthandAssign = this.start; } + prop.value = this.parseMaybeDefault(startPos, startLoc, prop.key); + } else { + prop.value = prop.key; + } + prop.shorthand = true; + } else { this.unexpected(); } +}; + +pp$3.parsePropertyName = function(prop) { + if (this.options.ecmaVersion >= 6) { + if (this.eat(types.bracketL)) { + prop.computed = true; + prop.key = this.parseMaybeAssign(); + this.expect(types.bracketR); + return prop.key + } else { + prop.computed = false; + } + } + return prop.key = this.type === types.num || this.type === types.string ? this.parseExprAtom() : this.parseIdent(this.options.allowReserved !== "never") +}; + +// Initialize empty function node. + +pp$3.initFunction = function(node) { + node.id = null; + if (this.options.ecmaVersion >= 6) { node.generator = node.expression = false; } + if (this.options.ecmaVersion >= 8) { node.async = false; } +}; + +// Parse object or class method. + +pp$3.parseMethod = function(isGenerator, isAsync, allowDirectSuper) { + var node = this.startNode(), oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos; + + this.initFunction(node); + if (this.options.ecmaVersion >= 6) + { node.generator = isGenerator; } + if (this.options.ecmaVersion >= 8) + { node.async = !!isAsync; } + + this.yieldPos = 0; + this.awaitPos = 0; + this.awaitIdentPos = 0; + this.enterScope(functionFlags(isAsync, node.generator) | SCOPE_SUPER | (allowDirectSuper ? SCOPE_DIRECT_SUPER : 0)); + + this.expect(types.parenL); + node.params = this.parseBindingList(types.parenR, false, this.options.ecmaVersion >= 8); + this.checkYieldAwaitInDefaultParams(); + this.parseFunctionBody(node, false, true); + + this.yieldPos = oldYieldPos; + this.awaitPos = oldAwaitPos; + this.awaitIdentPos = oldAwaitIdentPos; + return this.finishNode(node, "FunctionExpression") +}; + +// Parse arrow function expression with given parameters. + +pp$3.parseArrowExpression = function(node, params, isAsync) { + var oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos; + + this.enterScope(functionFlags(isAsync, false) | SCOPE_ARROW); + this.initFunction(node); + if (this.options.ecmaVersion >= 8) { node.async = !!isAsync; } + + this.yieldPos = 0; + this.awaitPos = 0; + this.awaitIdentPos = 0; + + node.params = this.toAssignableList(params, true); + this.parseFunctionBody(node, true, false); + + this.yieldPos = oldYieldPos; + this.awaitPos = oldAwaitPos; + this.awaitIdentPos = oldAwaitIdentPos; + return this.finishNode(node, "ArrowFunctionExpression") +}; + +// Parse function body and check parameters. + +pp$3.parseFunctionBody = function(node, isArrowFunction, isMethod) { + var isExpression = isArrowFunction && this.type !== types.braceL; + var oldStrict = this.strict, useStrict = false; + + if (isExpression) { + node.body = this.parseMaybeAssign(); + node.expression = true; + this.checkParams(node, false); + } else { + var nonSimple = this.options.ecmaVersion >= 7 && !this.isSimpleParamList(node.params); + if (!oldStrict || nonSimple) { + useStrict = this.strictDirective(this.end); + // If this is a strict mode function, verify that argument names + // are not repeated, and it does not try to bind the words `eval` + // or `arguments`. + if (useStrict && nonSimple) + { this.raiseRecoverable(node.start, "Illegal 'use strict' directive in function with non-simple parameter list"); } + } + // Start a new scope with regard to labels and the `inFunction` + // flag (restore them to their old value afterwards). + var oldLabels = this.labels; + this.labels = []; + if (useStrict) { this.strict = true; } + + // Add the params to varDeclaredNames to ensure that an error is thrown + // if a let/const declaration in the function clashes with one of the params. + this.checkParams(node, !oldStrict && !useStrict && !isArrowFunction && !isMethod && this.isSimpleParamList(node.params)); + // Ensure the function name isn't a forbidden identifier in strict mode, e.g. 'eval' + if (this.strict && node.id) { this.checkLVal(node.id, BIND_OUTSIDE); } + node.body = this.parseBlock(false, undefined, useStrict && !oldStrict); + node.expression = false; + this.adaptDirectivePrologue(node.body.body); + this.labels = oldLabels; + } + this.exitScope(); +}; + +pp$3.isSimpleParamList = function(params) { + for (var i = 0, list = params; i < list.length; i += 1) + { + var param = list[i]; + + if (param.type !== "Identifier") { return false + } } + return true +}; + +// Checks function params for various disallowed patterns such as using "eval" +// or "arguments" and duplicate parameters. + +pp$3.checkParams = function(node, allowDuplicates) { + var nameHash = {}; + for (var i = 0, list = node.params; i < list.length; i += 1) + { + var param = list[i]; + + this.checkLVal(param, BIND_VAR, allowDuplicates ? null : nameHash); + } +}; + +// Parses a comma-separated list of expressions, and returns them as +// an array. `close` is the token type that ends the list, and +// `allowEmpty` can be turned on to allow subsequent commas with +// nothing in between them to be parsed as `null` (which is needed +// for array literals). + +pp$3.parseExprList = function(close, allowTrailingComma, allowEmpty, refDestructuringErrors) { + var elts = [], first = true; + while (!this.eat(close)) { + if (!first) { + this.expect(types.comma); + if (allowTrailingComma && this.afterTrailingComma(close)) { break } + } else { first = false; } + + var elt = (void 0); + if (allowEmpty && this.type === types.comma) + { elt = null; } + else if (this.type === types.ellipsis) { + elt = this.parseSpread(refDestructuringErrors); + if (refDestructuringErrors && this.type === types.comma && refDestructuringErrors.trailingComma < 0) + { refDestructuringErrors.trailingComma = this.start; } + } else { + elt = this.parseMaybeAssign(false, refDestructuringErrors); + } + elts.push(elt); + } + return elts +}; + +pp$3.checkUnreserved = function(ref) { + var start = ref.start; + var end = ref.end; + var name = ref.name; + + if (this.inGenerator && name === "yield") + { this.raiseRecoverable(start, "Cannot use 'yield' as identifier inside a generator"); } + if (this.inAsync && name === "await") + { this.raiseRecoverable(start, "Cannot use 'await' as identifier inside an async function"); } + if (this.keywords.test(name)) + { this.raise(start, ("Unexpected keyword '" + name + "'")); } + if (this.options.ecmaVersion < 6 && + this.input.slice(start, end).indexOf("\\") !== -1) { return } + var re = this.strict ? this.reservedWordsStrict : this.reservedWords; + if (re.test(name)) { + if (!this.inAsync && name === "await") + { this.raiseRecoverable(start, "Cannot use keyword 'await' outside an async function"); } + this.raiseRecoverable(start, ("The keyword '" + name + "' is reserved")); + } +}; + +// Parse the next token as an identifier. If `liberal` is true (used +// when parsing properties), it will also convert keywords into +// identifiers. + +pp$3.parseIdent = function(liberal, isBinding) { + var node = this.startNode(); + if (this.type === types.name) { + node.name = this.value; + } else if (this.type.keyword) { + node.name = this.type.keyword; + + // To fix https://github.com/acornjs/acorn/issues/575 + // `class` and `function` keywords push new context into this.context. + // But there is no chance to pop the context if the keyword is consumed as an identifier such as a property name. + // If the previous token is a dot, this does not apply because the context-managing code already ignored the keyword + if ((node.name === "class" || node.name === "function") && + (this.lastTokEnd !== this.lastTokStart + 1 || this.input.charCodeAt(this.lastTokStart) !== 46)) { + this.context.pop(); + } + } else { + this.unexpected(); + } + this.next(!!liberal); + this.finishNode(node, "Identifier"); + if (!liberal) { + this.checkUnreserved(node); + if (node.name === "await" && !this.awaitIdentPos) + { this.awaitIdentPos = node.start; } + } + return node +}; + +// Parses yield expression inside generator. + +pp$3.parseYield = function(noIn) { + if (!this.yieldPos) { this.yieldPos = this.start; } + + var node = this.startNode(); + this.next(); + if (this.type === types.semi || this.canInsertSemicolon() || (this.type !== types.star && !this.type.startsExpr)) { + node.delegate = false; + node.argument = null; + } else { + node.delegate = this.eat(types.star); + node.argument = this.parseMaybeAssign(noIn); + } + return this.finishNode(node, "YieldExpression") +}; + +pp$3.parseAwait = function() { + if (!this.awaitPos) { this.awaitPos = this.start; } + + var node = this.startNode(); + this.next(); + node.argument = this.parseMaybeUnary(null, false); + return this.finishNode(node, "AwaitExpression") +}; + +var pp$4 = Parser.prototype; + +// This function is used to raise exceptions on parse errors. It +// takes an offset integer (into the current `input`) to indicate +// the location of the error, attaches the position to the end +// of the error message, and then raises a `SyntaxError` with that +// message. + +pp$4.raise = function(pos, message) { + var loc = getLineInfo(this.input, pos); + message += " (" + loc.line + ":" + loc.column + ")"; + var err = new SyntaxError(message); + err.pos = pos; err.loc = loc; err.raisedAt = this.pos; + throw err +}; + +pp$4.raiseRecoverable = pp$4.raise; + +pp$4.curPosition = function() { + if (this.options.locations) { + return new Position(this.curLine, this.pos - this.lineStart) + } +}; + +var pp$5 = Parser.prototype; + +var Scope = function Scope(flags) { + this.flags = flags; + // A list of var-declared names in the current lexical scope + this.var = []; + // A list of lexically-declared names in the current lexical scope + this.lexical = []; + // A list of lexically-declared FunctionDeclaration names in the current lexical scope + this.functions = []; +}; + +// The functions in this module keep track of declared variables in the current scope in order to detect duplicate variable names. + +pp$5.enterScope = function(flags) { + this.scopeStack.push(new Scope(flags)); +}; + +pp$5.exitScope = function() { + this.scopeStack.pop(); +}; + +// The spec says: +// > At the top level of a function, or script, function declarations are +// > treated like var declarations rather than like lexical declarations. +pp$5.treatFunctionsAsVarInScope = function(scope) { + return (scope.flags & SCOPE_FUNCTION) || !this.inModule && (scope.flags & SCOPE_TOP) +}; + +pp$5.declareName = function(name, bindingType, pos) { + var redeclared = false; + if (bindingType === BIND_LEXICAL) { + var scope = this.currentScope(); + redeclared = scope.lexical.indexOf(name) > -1 || scope.functions.indexOf(name) > -1 || scope.var.indexOf(name) > -1; + scope.lexical.push(name); + if (this.inModule && (scope.flags & SCOPE_TOP)) + { delete this.undefinedExports[name]; } + } else if (bindingType === BIND_SIMPLE_CATCH) { + var scope$1 = this.currentScope(); + scope$1.lexical.push(name); + } else if (bindingType === BIND_FUNCTION) { + var scope$2 = this.currentScope(); + if (this.treatFunctionsAsVar) + { redeclared = scope$2.lexical.indexOf(name) > -1; } + else + { redeclared = scope$2.lexical.indexOf(name) > -1 || scope$2.var.indexOf(name) > -1; } + scope$2.functions.push(name); + } else { + for (var i = this.scopeStack.length - 1; i >= 0; --i) { + var scope$3 = this.scopeStack[i]; + if (scope$3.lexical.indexOf(name) > -1 && !((scope$3.flags & SCOPE_SIMPLE_CATCH) && scope$3.lexical[0] === name) || + !this.treatFunctionsAsVarInScope(scope$3) && scope$3.functions.indexOf(name) > -1) { + redeclared = true; + break + } + scope$3.var.push(name); + if (this.inModule && (scope$3.flags & SCOPE_TOP)) + { delete this.undefinedExports[name]; } + if (scope$3.flags & SCOPE_VAR) { break } + } + } + if (redeclared) { this.raiseRecoverable(pos, ("Identifier '" + name + "' has already been declared")); } +}; + +pp$5.checkLocalExport = function(id) { + // scope.functions must be empty as Module code is always strict. + if (this.scopeStack[0].lexical.indexOf(id.name) === -1 && + this.scopeStack[0].var.indexOf(id.name) === -1) { + this.undefinedExports[id.name] = id; + } +}; + +pp$5.currentScope = function() { + return this.scopeStack[this.scopeStack.length - 1] +}; + +pp$5.currentVarScope = function() { + for (var i = this.scopeStack.length - 1;; i--) { + var scope = this.scopeStack[i]; + if (scope.flags & SCOPE_VAR) { return scope } + } +}; + +// Could be useful for `this`, `new.target`, `super()`, `super.property`, and `super[property]`. +pp$5.currentThisScope = function() { + for (var i = this.scopeStack.length - 1;; i--) { + var scope = this.scopeStack[i]; + if (scope.flags & SCOPE_VAR && !(scope.flags & SCOPE_ARROW)) { return scope } + } +}; + +var Node = function Node(parser, pos, loc) { + this.type = ""; + this.start = pos; + this.end = 0; + if (parser.options.locations) + { this.loc = new SourceLocation(parser, loc); } + if (parser.options.directSourceFile) + { this.sourceFile = parser.options.directSourceFile; } + if (parser.options.ranges) + { this.range = [pos, 0]; } +}; + +// Start an AST node, attaching a start offset. + +var pp$6 = Parser.prototype; + +pp$6.startNode = function() { + return new Node(this, this.start, this.startLoc) +}; + +pp$6.startNodeAt = function(pos, loc) { + return new Node(this, pos, loc) +}; + +// Finish an AST node, adding `type` and `end` properties. + +function finishNodeAt(node, type, pos, loc) { + node.type = type; + node.end = pos; + if (this.options.locations) + { node.loc.end = loc; } + if (this.options.ranges) + { node.range[1] = pos; } + return node +} + +pp$6.finishNode = function(node, type) { + return finishNodeAt.call(this, node, type, this.lastTokEnd, this.lastTokEndLoc) +}; + +// Finish node at given position + +pp$6.finishNodeAt = function(node, type, pos, loc) { + return finishNodeAt.call(this, node, type, pos, loc) +}; + +// The algorithm used to determine whether a regexp can appear at a + +var TokContext = function TokContext(token, isExpr, preserveSpace, override, generator) { + this.token = token; + this.isExpr = !!isExpr; + this.preserveSpace = !!preserveSpace; + this.override = override; + this.generator = !!generator; +}; + +var types$1 = { + b_stat: new TokContext("{", false), + b_expr: new TokContext("{", true), + b_tmpl: new TokContext("${", false), + p_stat: new TokContext("(", false), + p_expr: new TokContext("(", true), + q_tmpl: new TokContext("`", true, true, function (p) { return p.tryReadTemplateToken(); }), + f_stat: new TokContext("function", false), + f_expr: new TokContext("function", true), + f_expr_gen: new TokContext("function", true, false, null, true), + f_gen: new TokContext("function", false, false, null, true) +}; + +var pp$7 = Parser.prototype; + +pp$7.initialContext = function() { + return [types$1.b_stat] +}; + +pp$7.braceIsBlock = function(prevType) { + var parent = this.curContext(); + if (parent === types$1.f_expr || parent === types$1.f_stat) + { return true } + if (prevType === types.colon && (parent === types$1.b_stat || parent === types$1.b_expr)) + { return !parent.isExpr } + + // The check for `tt.name && exprAllowed` detects whether we are + // after a `yield` or `of` construct. See the `updateContext` for + // `tt.name`. + if (prevType === types._return || prevType === types.name && this.exprAllowed) + { return lineBreak.test(this.input.slice(this.lastTokEnd, this.start)) } + if (prevType === types._else || prevType === types.semi || prevType === types.eof || prevType === types.parenR || prevType === types.arrow) + { return true } + if (prevType === types.braceL) + { return parent === types$1.b_stat } + if (prevType === types._var || prevType === types._const || prevType === types.name) + { return false } + return !this.exprAllowed +}; + +pp$7.inGeneratorContext = function() { + for (var i = this.context.length - 1; i >= 1; i--) { + var context = this.context[i]; + if (context.token === "function") + { return context.generator } + } + return false +}; + +pp$7.updateContext = function(prevType) { + var update, type = this.type; + if (type.keyword && prevType === types.dot) + { this.exprAllowed = false; } + else if (update = type.updateContext) + { update.call(this, prevType); } + else + { this.exprAllowed = type.beforeExpr; } +}; + +// Token-specific context update code + +types.parenR.updateContext = types.braceR.updateContext = function() { + if (this.context.length === 1) { + this.exprAllowed = true; + return + } + var out = this.context.pop(); + if (out === types$1.b_stat && this.curContext().token === "function") { + out = this.context.pop(); + } + this.exprAllowed = !out.isExpr; +}; + +types.braceL.updateContext = function(prevType) { + this.context.push(this.braceIsBlock(prevType) ? types$1.b_stat : types$1.b_expr); + this.exprAllowed = true; +}; + +types.dollarBraceL.updateContext = function() { + this.context.push(types$1.b_tmpl); + this.exprAllowed = true; +}; + +types.parenL.updateContext = function(prevType) { + var statementParens = prevType === types._if || prevType === types._for || prevType === types._with || prevType === types._while; + this.context.push(statementParens ? types$1.p_stat : types$1.p_expr); + this.exprAllowed = true; +}; + +types.incDec.updateContext = function() { + // tokExprAllowed stays unchanged +}; + +types._function.updateContext = types._class.updateContext = function(prevType) { + if (prevType.beforeExpr && prevType !== types.semi && prevType !== types._else && + !(prevType === types._return && lineBreak.test(this.input.slice(this.lastTokEnd, this.start))) && + !((prevType === types.colon || prevType === types.braceL) && this.curContext() === types$1.b_stat)) + { this.context.push(types$1.f_expr); } + else + { this.context.push(types$1.f_stat); } + this.exprAllowed = false; +}; + +types.backQuote.updateContext = function() { + if (this.curContext() === types$1.q_tmpl) + { this.context.pop(); } + else + { this.context.push(types$1.q_tmpl); } + this.exprAllowed = false; +}; + +types.star.updateContext = function(prevType) { + if (prevType === types._function) { + var index = this.context.length - 1; + if (this.context[index] === types$1.f_expr) + { this.context[index] = types$1.f_expr_gen; } + else + { this.context[index] = types$1.f_gen; } + } + this.exprAllowed = true; +}; + +types.name.updateContext = function(prevType) { + var allowed = false; + if (this.options.ecmaVersion >= 6 && prevType !== types.dot) { + if (this.value === "of" && !this.exprAllowed || + this.value === "yield" && this.inGeneratorContext()) + { allowed = true; } + } + this.exprAllowed = allowed; +}; + +// This file contains Unicode properties extracted from the ECMAScript +// specification. The lists are extracted like so: +// $$('#table-binary-unicode-properties > figure > table > tbody > tr > td:nth-child(1) code').map(el => el.innerText) + +// #table-binary-unicode-properties +var ecma9BinaryProperties = "ASCII ASCII_Hex_Digit AHex Alphabetic Alpha Any Assigned Bidi_Control Bidi_C Bidi_Mirrored Bidi_M Case_Ignorable CI Cased Changes_When_Casefolded CWCF Changes_When_Casemapped CWCM Changes_When_Lowercased CWL Changes_When_NFKC_Casefolded CWKCF Changes_When_Titlecased CWT Changes_When_Uppercased CWU Dash Default_Ignorable_Code_Point DI Deprecated Dep Diacritic Dia Emoji Emoji_Component Emoji_Modifier Emoji_Modifier_Base Emoji_Presentation Extender Ext Grapheme_Base Gr_Base Grapheme_Extend Gr_Ext Hex_Digit Hex IDS_Binary_Operator IDSB IDS_Trinary_Operator IDST ID_Continue IDC ID_Start IDS Ideographic Ideo Join_Control Join_C Logical_Order_Exception LOE Lowercase Lower Math Noncharacter_Code_Point NChar Pattern_Syntax Pat_Syn Pattern_White_Space Pat_WS Quotation_Mark QMark Radical Regional_Indicator RI Sentence_Terminal STerm Soft_Dotted SD Terminal_Punctuation Term Unified_Ideograph UIdeo Uppercase Upper Variation_Selector VS White_Space space XID_Continue XIDC XID_Start XIDS"; +var ecma10BinaryProperties = ecma9BinaryProperties + " Extended_Pictographic"; +var ecma11BinaryProperties = ecma10BinaryProperties; +var unicodeBinaryProperties = { + 9: ecma9BinaryProperties, + 10: ecma10BinaryProperties, + 11: ecma11BinaryProperties +}; + +// #table-unicode-general-category-values +var unicodeGeneralCategoryValues = "Cased_Letter LC Close_Punctuation Pe Connector_Punctuation Pc Control Cc cntrl Currency_Symbol Sc Dash_Punctuation Pd Decimal_Number Nd digit Enclosing_Mark Me Final_Punctuation Pf Format Cf Initial_Punctuation Pi Letter L Letter_Number Nl Line_Separator Zl Lowercase_Letter Ll Mark M Combining_Mark Math_Symbol Sm Modifier_Letter Lm Modifier_Symbol Sk Nonspacing_Mark Mn Number N Open_Punctuation Ps Other C Other_Letter Lo Other_Number No Other_Punctuation Po Other_Symbol So Paragraph_Separator Zp Private_Use Co Punctuation P punct Separator Z Space_Separator Zs Spacing_Mark Mc Surrogate Cs Symbol S Titlecase_Letter Lt Unassigned Cn Uppercase_Letter Lu"; + +// #table-unicode-script-values +var ecma9ScriptValues = "Adlam Adlm Ahom Ahom Anatolian_Hieroglyphs Hluw Arabic Arab Armenian Armn Avestan Avst Balinese Bali Bamum Bamu Bassa_Vah Bass Batak Batk Bengali Beng Bhaiksuki Bhks Bopomofo Bopo Brahmi Brah Braille Brai Buginese Bugi Buhid Buhd Canadian_Aboriginal Cans Carian Cari Caucasian_Albanian Aghb Chakma Cakm Cham Cham Cherokee Cher Common Zyyy Coptic Copt Qaac Cuneiform Xsux Cypriot Cprt Cyrillic Cyrl Deseret Dsrt Devanagari Deva Duployan Dupl Egyptian_Hieroglyphs Egyp Elbasan Elba Ethiopic Ethi Georgian Geor Glagolitic Glag Gothic Goth Grantha Gran Greek Grek Gujarati Gujr Gurmukhi Guru Han Hani Hangul Hang Hanunoo Hano Hatran Hatr Hebrew Hebr Hiragana Hira Imperial_Aramaic Armi Inherited Zinh Qaai Inscriptional_Pahlavi Phli Inscriptional_Parthian Prti Javanese Java Kaithi Kthi Kannada Knda Katakana Kana Kayah_Li Kali Kharoshthi Khar Khmer Khmr Khojki Khoj Khudawadi Sind Lao Laoo Latin Latn Lepcha Lepc Limbu Limb Linear_A Lina Linear_B Linb Lisu Lisu Lycian Lyci Lydian Lydi Mahajani Mahj Malayalam Mlym Mandaic Mand Manichaean Mani Marchen Marc Masaram_Gondi Gonm Meetei_Mayek Mtei Mende_Kikakui Mend Meroitic_Cursive Merc Meroitic_Hieroglyphs Mero Miao Plrd Modi Modi Mongolian Mong Mro Mroo Multani Mult Myanmar Mymr Nabataean Nbat New_Tai_Lue Talu Newa Newa Nko Nkoo Nushu Nshu Ogham Ogam Ol_Chiki Olck Old_Hungarian Hung Old_Italic Ital Old_North_Arabian Narb Old_Permic Perm Old_Persian Xpeo Old_South_Arabian Sarb Old_Turkic Orkh Oriya Orya Osage Osge Osmanya Osma Pahawh_Hmong Hmng Palmyrene Palm Pau_Cin_Hau Pauc Phags_Pa Phag Phoenician Phnx Psalter_Pahlavi Phlp Rejang Rjng Runic Runr Samaritan Samr Saurashtra Saur Sharada Shrd Shavian Shaw Siddham Sidd SignWriting Sgnw Sinhala Sinh Sora_Sompeng Sora Soyombo Soyo Sundanese Sund Syloti_Nagri Sylo Syriac Syrc Tagalog Tglg Tagbanwa Tagb Tai_Le Tale Tai_Tham Lana Tai_Viet Tavt Takri Takr Tamil Taml Tangut Tang Telugu Telu Thaana Thaa Thai Thai Tibetan Tibt Tifinagh Tfng Tirhuta Tirh Ugaritic Ugar Vai Vaii Warang_Citi Wara Yi Yiii Zanabazar_Square Zanb"; +var ecma10ScriptValues = ecma9ScriptValues + " Dogra Dogr Gunjala_Gondi Gong Hanifi_Rohingya Rohg Makasar Maka Medefaidrin Medf Old_Sogdian Sogo Sogdian Sogd"; +var ecma11ScriptValues = ecma10ScriptValues + " Elymaic Elym Nandinagari Nand Nyiakeng_Puachue_Hmong Hmnp Wancho Wcho"; +var unicodeScriptValues = { + 9: ecma9ScriptValues, + 10: ecma10ScriptValues, + 11: ecma11ScriptValues +}; + +var data = {}; +function buildUnicodeData(ecmaVersion) { + var d = data[ecmaVersion] = { + binary: wordsRegexp(unicodeBinaryProperties[ecmaVersion] + " " + unicodeGeneralCategoryValues), + nonBinary: { + General_Category: wordsRegexp(unicodeGeneralCategoryValues), + Script: wordsRegexp(unicodeScriptValues[ecmaVersion]) + } + }; + d.nonBinary.Script_Extensions = d.nonBinary.Script; + + d.nonBinary.gc = d.nonBinary.General_Category; + d.nonBinary.sc = d.nonBinary.Script; + d.nonBinary.scx = d.nonBinary.Script_Extensions; +} +buildUnicodeData(9); +buildUnicodeData(10); +buildUnicodeData(11); + +var pp$8 = Parser.prototype; + +var RegExpValidationState = function RegExpValidationState(parser) { + this.parser = parser; + this.validFlags = "gim" + (parser.options.ecmaVersion >= 6 ? "uy" : "") + (parser.options.ecmaVersion >= 9 ? "s" : ""); + this.unicodeProperties = data[parser.options.ecmaVersion >= 11 ? 11 : parser.options.ecmaVersion]; + this.source = ""; + this.flags = ""; + this.start = 0; + this.switchU = false; + this.switchN = false; + this.pos = 0; + this.lastIntValue = 0; + this.lastStringValue = ""; + this.lastAssertionIsQuantifiable = false; + this.numCapturingParens = 0; + this.maxBackReference = 0; + this.groupNames = []; + this.backReferenceNames = []; +}; + +RegExpValidationState.prototype.reset = function reset (start, pattern, flags) { + var unicode = flags.indexOf("u") !== -1; + this.start = start | 0; + this.source = pattern + ""; + this.flags = flags; + this.switchU = unicode && this.parser.options.ecmaVersion >= 6; + this.switchN = unicode && this.parser.options.ecmaVersion >= 9; +}; + +RegExpValidationState.prototype.raise = function raise (message) { + this.parser.raiseRecoverable(this.start, ("Invalid regular expression: /" + (this.source) + "/: " + message)); +}; + +// If u flag is given, this returns the code point at the index (it combines a surrogate pair). +// Otherwise, this returns the code unit of the index (can be a part of a surrogate pair). +RegExpValidationState.prototype.at = function at (i, forceU) { + if ( forceU === void 0 ) forceU = false; + + var s = this.source; + var l = s.length; + if (i >= l) { + return -1 + } + var c = s.charCodeAt(i); + if (!(forceU || this.switchU) || c <= 0xD7FF || c >= 0xE000 || i + 1 >= l) { + return c + } + var next = s.charCodeAt(i + 1); + return next >= 0xDC00 && next <= 0xDFFF ? (c << 10) + next - 0x35FDC00 : c +}; + +RegExpValidationState.prototype.nextIndex = function nextIndex (i, forceU) { + if ( forceU === void 0 ) forceU = false; + + var s = this.source; + var l = s.length; + if (i >= l) { + return l + } + var c = s.charCodeAt(i), next; + if (!(forceU || this.switchU) || c <= 0xD7FF || c >= 0xE000 || i + 1 >= l || + (next = s.charCodeAt(i + 1)) < 0xDC00 || next > 0xDFFF) { + return i + 1 + } + return i + 2 +}; + +RegExpValidationState.prototype.current = function current (forceU) { + if ( forceU === void 0 ) forceU = false; + + return this.at(this.pos, forceU) +}; + +RegExpValidationState.prototype.lookahead = function lookahead (forceU) { + if ( forceU === void 0 ) forceU = false; + + return this.at(this.nextIndex(this.pos, forceU), forceU) +}; + +RegExpValidationState.prototype.advance = function advance (forceU) { + if ( forceU === void 0 ) forceU = false; + + this.pos = this.nextIndex(this.pos, forceU); +}; + +RegExpValidationState.prototype.eat = function eat (ch, forceU) { + if ( forceU === void 0 ) forceU = false; + + if (this.current(forceU) === ch) { + this.advance(forceU); + return true + } + return false +}; + +function codePointToString(ch) { + if (ch <= 0xFFFF) { return String.fromCharCode(ch) } + ch -= 0x10000; + return String.fromCharCode((ch >> 10) + 0xD800, (ch & 0x03FF) + 0xDC00) +} + +/** + * Validate the flags part of a given RegExpLiteral. + * + * @param {RegExpValidationState} state The state to validate RegExp. + * @returns {void} + */ +pp$8.validateRegExpFlags = function(state) { + var validFlags = state.validFlags; + var flags = state.flags; + + for (var i = 0; i < flags.length; i++) { + var flag = flags.charAt(i); + if (validFlags.indexOf(flag) === -1) { + this.raise(state.start, "Invalid regular expression flag"); + } + if (flags.indexOf(flag, i + 1) > -1) { + this.raise(state.start, "Duplicate regular expression flag"); + } + } +}; + +/** + * Validate the pattern part of a given RegExpLiteral. + * + * @param {RegExpValidationState} state The state to validate RegExp. + * @returns {void} + */ +pp$8.validateRegExpPattern = function(state) { + this.regexp_pattern(state); + + // The goal symbol for the parse is |Pattern[~U, ~N]|. If the result of + // parsing contains a |GroupName|, reparse with the goal symbol + // |Pattern[~U, +N]| and use this result instead. Throw a *SyntaxError* + // exception if _P_ did not conform to the grammar, if any elements of _P_ + // were not matched by the parse, or if any Early Error conditions exist. + if (!state.switchN && this.options.ecmaVersion >= 9 && state.groupNames.length > 0) { + state.switchN = true; + this.regexp_pattern(state); + } +}; + +// https://www.ecma-international.org/ecma-262/8.0/#prod-Pattern +pp$8.regexp_pattern = function(state) { + state.pos = 0; + state.lastIntValue = 0; + state.lastStringValue = ""; + state.lastAssertionIsQuantifiable = false; + state.numCapturingParens = 0; + state.maxBackReference = 0; + state.groupNames.length = 0; + state.backReferenceNames.length = 0; + + this.regexp_disjunction(state); + + if (state.pos !== state.source.length) { + // Make the same messages as V8. + if (state.eat(0x29 /* ) */)) { + state.raise("Unmatched ')'"); + } + if (state.eat(0x5D /* ] */) || state.eat(0x7D /* } */)) { + state.raise("Lone quantifier brackets"); + } + } + if (state.maxBackReference > state.numCapturingParens) { + state.raise("Invalid escape"); + } + for (var i = 0, list = state.backReferenceNames; i < list.length; i += 1) { + var name = list[i]; + + if (state.groupNames.indexOf(name) === -1) { + state.raise("Invalid named capture referenced"); + } + } +}; + +// https://www.ecma-international.org/ecma-262/8.0/#prod-Disjunction +pp$8.regexp_disjunction = function(state) { + this.regexp_alternative(state); + while (state.eat(0x7C /* | */)) { + this.regexp_alternative(state); + } + + // Make the same message as V8. + if (this.regexp_eatQuantifier(state, true)) { + state.raise("Nothing to repeat"); + } + if (state.eat(0x7B /* { */)) { + state.raise("Lone quantifier brackets"); + } +}; + +// https://www.ecma-international.org/ecma-262/8.0/#prod-Alternative +pp$8.regexp_alternative = function(state) { + while (state.pos < state.source.length && this.regexp_eatTerm(state)) + { } +}; + +// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-Term +pp$8.regexp_eatTerm = function(state) { + if (this.regexp_eatAssertion(state)) { + // Handle `QuantifiableAssertion Quantifier` alternative. + // `state.lastAssertionIsQuantifiable` is true if the last eaten Assertion + // is a QuantifiableAssertion. + if (state.lastAssertionIsQuantifiable && this.regexp_eatQuantifier(state)) { + // Make the same message as V8. + if (state.switchU) { + state.raise("Invalid quantifier"); + } + } + return true + } + + if (state.switchU ? this.regexp_eatAtom(state) : this.regexp_eatExtendedAtom(state)) { + this.regexp_eatQuantifier(state); + return true + } + + return false +}; + +// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-Assertion +pp$8.regexp_eatAssertion = function(state) { + var start = state.pos; + state.lastAssertionIsQuantifiable = false; + + // ^, $ + if (state.eat(0x5E /* ^ */) || state.eat(0x24 /* $ */)) { + return true + } + + // \b \B + if (state.eat(0x5C /* \ */)) { + if (state.eat(0x42 /* B */) || state.eat(0x62 /* b */)) { + return true + } + state.pos = start; + } + + // Lookahead / Lookbehind + if (state.eat(0x28 /* ( */) && state.eat(0x3F /* ? */)) { + var lookbehind = false; + if (this.options.ecmaVersion >= 9) { + lookbehind = state.eat(0x3C /* < */); + } + if (state.eat(0x3D /* = */) || state.eat(0x21 /* ! */)) { + this.regexp_disjunction(state); + if (!state.eat(0x29 /* ) */)) { + state.raise("Unterminated group"); + } + state.lastAssertionIsQuantifiable = !lookbehind; + return true + } + } + + state.pos = start; + return false +}; + +// https://www.ecma-international.org/ecma-262/8.0/#prod-Quantifier +pp$8.regexp_eatQuantifier = function(state, noError) { + if ( noError === void 0 ) noError = false; + + if (this.regexp_eatQuantifierPrefix(state, noError)) { + state.eat(0x3F /* ? */); + return true + } + return false +}; + +// https://www.ecma-international.org/ecma-262/8.0/#prod-QuantifierPrefix +pp$8.regexp_eatQuantifierPrefix = function(state, noError) { + return ( + state.eat(0x2A /* * */) || + state.eat(0x2B /* + */) || + state.eat(0x3F /* ? */) || + this.regexp_eatBracedQuantifier(state, noError) + ) +}; +pp$8.regexp_eatBracedQuantifier = function(state, noError) { + var start = state.pos; + if (state.eat(0x7B /* { */)) { + var min = 0, max = -1; + if (this.regexp_eatDecimalDigits(state)) { + min = state.lastIntValue; + if (state.eat(0x2C /* , */) && this.regexp_eatDecimalDigits(state)) { + max = state.lastIntValue; + } + if (state.eat(0x7D /* } */)) { + // SyntaxError in https://www.ecma-international.org/ecma-262/8.0/#sec-term + if (max !== -1 && max < min && !noError) { + state.raise("numbers out of order in {} quantifier"); + } + return true + } + } + if (state.switchU && !noError) { + state.raise("Incomplete quantifier"); + } + state.pos = start; + } + return false +}; + +// https://www.ecma-international.org/ecma-262/8.0/#prod-Atom +pp$8.regexp_eatAtom = function(state) { + return ( + this.regexp_eatPatternCharacters(state) || + state.eat(0x2E /* . */) || + this.regexp_eatReverseSolidusAtomEscape(state) || + this.regexp_eatCharacterClass(state) || + this.regexp_eatUncapturingGroup(state) || + this.regexp_eatCapturingGroup(state) + ) +}; +pp$8.regexp_eatReverseSolidusAtomEscape = function(state) { + var start = state.pos; + if (state.eat(0x5C /* \ */)) { + if (this.regexp_eatAtomEscape(state)) { + return true + } + state.pos = start; + } + return false +}; +pp$8.regexp_eatUncapturingGroup = function(state) { + var start = state.pos; + if (state.eat(0x28 /* ( */)) { + if (state.eat(0x3F /* ? */) && state.eat(0x3A /* : */)) { + this.regexp_disjunction(state); + if (state.eat(0x29 /* ) */)) { + return true + } + state.raise("Unterminated group"); + } + state.pos = start; + } + return false +}; +pp$8.regexp_eatCapturingGroup = function(state) { + if (state.eat(0x28 /* ( */)) { + if (this.options.ecmaVersion >= 9) { + this.regexp_groupSpecifier(state); + } else if (state.current() === 0x3F /* ? */) { + state.raise("Invalid group"); + } + this.regexp_disjunction(state); + if (state.eat(0x29 /* ) */)) { + state.numCapturingParens += 1; + return true + } + state.raise("Unterminated group"); + } + return false +}; + +// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ExtendedAtom +pp$8.regexp_eatExtendedAtom = function(state) { + return ( + state.eat(0x2E /* . */) || + this.regexp_eatReverseSolidusAtomEscape(state) || + this.regexp_eatCharacterClass(state) || + this.regexp_eatUncapturingGroup(state) || + this.regexp_eatCapturingGroup(state) || + this.regexp_eatInvalidBracedQuantifier(state) || + this.regexp_eatExtendedPatternCharacter(state) + ) +}; + +// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-InvalidBracedQuantifier +pp$8.regexp_eatInvalidBracedQuantifier = function(state) { + if (this.regexp_eatBracedQuantifier(state, true)) { + state.raise("Nothing to repeat"); + } + return false +}; + +// https://www.ecma-international.org/ecma-262/8.0/#prod-SyntaxCharacter +pp$8.regexp_eatSyntaxCharacter = function(state) { + var ch = state.current(); + if (isSyntaxCharacter(ch)) { + state.lastIntValue = ch; + state.advance(); + return true + } + return false +}; +function isSyntaxCharacter(ch) { + return ( + ch === 0x24 /* $ */ || + ch >= 0x28 /* ( */ && ch <= 0x2B /* + */ || + ch === 0x2E /* . */ || + ch === 0x3F /* ? */ || + ch >= 0x5B /* [ */ && ch <= 0x5E /* ^ */ || + ch >= 0x7B /* { */ && ch <= 0x7D /* } */ + ) +} + +// https://www.ecma-international.org/ecma-262/8.0/#prod-PatternCharacter +// But eat eager. +pp$8.regexp_eatPatternCharacters = function(state) { + var start = state.pos; + var ch = 0; + while ((ch = state.current()) !== -1 && !isSyntaxCharacter(ch)) { + state.advance(); + } + return state.pos !== start +}; + +// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ExtendedPatternCharacter +pp$8.regexp_eatExtendedPatternCharacter = function(state) { + var ch = state.current(); + if ( + ch !== -1 && + ch !== 0x24 /* $ */ && + !(ch >= 0x28 /* ( */ && ch <= 0x2B /* + */) && + ch !== 0x2E /* . */ && + ch !== 0x3F /* ? */ && + ch !== 0x5B /* [ */ && + ch !== 0x5E /* ^ */ && + ch !== 0x7C /* | */ + ) { + state.advance(); + return true + } + return false +}; + +// GroupSpecifier :: +// [empty] +// `?` GroupName +pp$8.regexp_groupSpecifier = function(state) { + if (state.eat(0x3F /* ? */)) { + if (this.regexp_eatGroupName(state)) { + if (state.groupNames.indexOf(state.lastStringValue) !== -1) { + state.raise("Duplicate capture group name"); + } + state.groupNames.push(state.lastStringValue); + return + } + state.raise("Invalid group"); + } +}; + +// GroupName :: +// `<` RegExpIdentifierName `>` +// Note: this updates `state.lastStringValue` property with the eaten name. +pp$8.regexp_eatGroupName = function(state) { + state.lastStringValue = ""; + if (state.eat(0x3C /* < */)) { + if (this.regexp_eatRegExpIdentifierName(state) && state.eat(0x3E /* > */)) { + return true + } + state.raise("Invalid capture group name"); + } + return false +}; + +// RegExpIdentifierName :: +// RegExpIdentifierStart +// RegExpIdentifierName RegExpIdentifierPart +// Note: this updates `state.lastStringValue` property with the eaten name. +pp$8.regexp_eatRegExpIdentifierName = function(state) { + state.lastStringValue = ""; + if (this.regexp_eatRegExpIdentifierStart(state)) { + state.lastStringValue += codePointToString(state.lastIntValue); + while (this.regexp_eatRegExpIdentifierPart(state)) { + state.lastStringValue += codePointToString(state.lastIntValue); + } + return true + } + return false +}; + +// RegExpIdentifierStart :: +// UnicodeIDStart +// `$` +// `_` +// `\` RegExpUnicodeEscapeSequence[+U] +pp$8.regexp_eatRegExpIdentifierStart = function(state) { + var start = state.pos; + var forceU = this.options.ecmaVersion >= 11; + var ch = state.current(forceU); + state.advance(forceU); + + if (ch === 0x5C /* \ */ && this.regexp_eatRegExpUnicodeEscapeSequence(state, forceU)) { + ch = state.lastIntValue; + } + if (isRegExpIdentifierStart(ch)) { + state.lastIntValue = ch; + return true + } + + state.pos = start; + return false +}; +function isRegExpIdentifierStart(ch) { + return isIdentifierStart$1(ch, true) || ch === 0x24 /* $ */ || ch === 0x5F /* _ */ +} + +// RegExpIdentifierPart :: +// UnicodeIDContinue +// `$` +// `_` +// `\` RegExpUnicodeEscapeSequence[+U] +// +// +pp$8.regexp_eatRegExpIdentifierPart = function(state) { + var start = state.pos; + var forceU = this.options.ecmaVersion >= 11; + var ch = state.current(forceU); + state.advance(forceU); + + if (ch === 0x5C /* \ */ && this.regexp_eatRegExpUnicodeEscapeSequence(state, forceU)) { + ch = state.lastIntValue; + } + if (isRegExpIdentifierPart(ch)) { + state.lastIntValue = ch; + return true + } + + state.pos = start; + return false +}; +function isRegExpIdentifierPart(ch) { + return isIdentifierChar(ch, true) || ch === 0x24 /* $ */ || ch === 0x5F /* _ */ || ch === 0x200C /* */ || ch === 0x200D /* */ +} + +// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-AtomEscape +pp$8.regexp_eatAtomEscape = function(state) { + if ( + this.regexp_eatBackReference(state) || + this.regexp_eatCharacterClassEscape(state) || + this.regexp_eatCharacterEscape(state) || + (state.switchN && this.regexp_eatKGroupName(state)) + ) { + return true + } + if (state.switchU) { + // Make the same message as V8. + if (state.current() === 0x63 /* c */) { + state.raise("Invalid unicode escape"); + } + state.raise("Invalid escape"); + } + return false +}; +pp$8.regexp_eatBackReference = function(state) { + var start = state.pos; + if (this.regexp_eatDecimalEscape(state)) { + var n = state.lastIntValue; + if (state.switchU) { + // For SyntaxError in https://www.ecma-international.org/ecma-262/8.0/#sec-atomescape + if (n > state.maxBackReference) { + state.maxBackReference = n; + } + return true + } + if (n <= state.numCapturingParens) { + return true + } + state.pos = start; + } + return false +}; +pp$8.regexp_eatKGroupName = function(state) { + if (state.eat(0x6B /* k */)) { + if (this.regexp_eatGroupName(state)) { + state.backReferenceNames.push(state.lastStringValue); + return true + } + state.raise("Invalid named reference"); + } + return false +}; + +// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-CharacterEscape +pp$8.regexp_eatCharacterEscape = function(state) { + return ( + this.regexp_eatControlEscape(state) || + this.regexp_eatCControlLetter(state) || + this.regexp_eatZero(state) || + this.regexp_eatHexEscapeSequence(state) || + this.regexp_eatRegExpUnicodeEscapeSequence(state, false) || + (!state.switchU && this.regexp_eatLegacyOctalEscapeSequence(state)) || + this.regexp_eatIdentityEscape(state) + ) +}; +pp$8.regexp_eatCControlLetter = function(state) { + var start = state.pos; + if (state.eat(0x63 /* c */)) { + if (this.regexp_eatControlLetter(state)) { + return true + } + state.pos = start; + } + return false +}; +pp$8.regexp_eatZero = function(state) { + if (state.current() === 0x30 /* 0 */ && !isDecimalDigit(state.lookahead())) { + state.lastIntValue = 0; + state.advance(); + return true + } + return false +}; + +// https://www.ecma-international.org/ecma-262/8.0/#prod-ControlEscape +pp$8.regexp_eatControlEscape = function(state) { + var ch = state.current(); + if (ch === 0x74 /* t */) { + state.lastIntValue = 0x09; /* \t */ + state.advance(); + return true + } + if (ch === 0x6E /* n */) { + state.lastIntValue = 0x0A; /* \n */ + state.advance(); + return true + } + if (ch === 0x76 /* v */) { + state.lastIntValue = 0x0B; /* \v */ + state.advance(); + return true + } + if (ch === 0x66 /* f */) { + state.lastIntValue = 0x0C; /* \f */ + state.advance(); + return true + } + if (ch === 0x72 /* r */) { + state.lastIntValue = 0x0D; /* \r */ + state.advance(); + return true + } + return false +}; + +// https://www.ecma-international.org/ecma-262/8.0/#prod-ControlLetter +pp$8.regexp_eatControlLetter = function(state) { + var ch = state.current(); + if (isControlLetter(ch)) { + state.lastIntValue = ch % 0x20; + state.advance(); + return true + } + return false +}; +function isControlLetter(ch) { + return ( + (ch >= 0x41 /* A */ && ch <= 0x5A /* Z */) || + (ch >= 0x61 /* a */ && ch <= 0x7A /* z */) + ) +} + +// https://www.ecma-international.org/ecma-262/8.0/#prod-RegExpUnicodeEscapeSequence +pp$8.regexp_eatRegExpUnicodeEscapeSequence = function(state, forceU) { + if ( forceU === void 0 ) forceU = false; + + var start = state.pos; + var switchU = forceU || state.switchU; + + if (state.eat(0x75 /* u */)) { + if (this.regexp_eatFixedHexDigits(state, 4)) { + var lead = state.lastIntValue; + if (switchU && lead >= 0xD800 && lead <= 0xDBFF) { + var leadSurrogateEnd = state.pos; + if (state.eat(0x5C /* \ */) && state.eat(0x75 /* u */) && this.regexp_eatFixedHexDigits(state, 4)) { + var trail = state.lastIntValue; + if (trail >= 0xDC00 && trail <= 0xDFFF) { + state.lastIntValue = (lead - 0xD800) * 0x400 + (trail - 0xDC00) + 0x10000; + return true + } + } + state.pos = leadSurrogateEnd; + state.lastIntValue = lead; + } + return true + } + if ( + switchU && + state.eat(0x7B /* { */) && + this.regexp_eatHexDigits(state) && + state.eat(0x7D /* } */) && + isValidUnicode(state.lastIntValue) + ) { + return true + } + if (switchU) { + state.raise("Invalid unicode escape"); + } + state.pos = start; + } + + return false +}; +function isValidUnicode(ch) { + return ch >= 0 && ch <= 0x10FFFF +} + +// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-IdentityEscape +pp$8.regexp_eatIdentityEscape = function(state) { + if (state.switchU) { + if (this.regexp_eatSyntaxCharacter(state)) { + return true + } + if (state.eat(0x2F /* / */)) { + state.lastIntValue = 0x2F; /* / */ + return true + } + return false + } + + var ch = state.current(); + if (ch !== 0x63 /* c */ && (!state.switchN || ch !== 0x6B /* k */)) { + state.lastIntValue = ch; + state.advance(); + return true + } + + return false +}; + +// https://www.ecma-international.org/ecma-262/8.0/#prod-DecimalEscape +pp$8.regexp_eatDecimalEscape = function(state) { + state.lastIntValue = 0; + var ch = state.current(); + if (ch >= 0x31 /* 1 */ && ch <= 0x39 /* 9 */) { + do { + state.lastIntValue = 10 * state.lastIntValue + (ch - 0x30 /* 0 */); + state.advance(); + } while ((ch = state.current()) >= 0x30 /* 0 */ && ch <= 0x39 /* 9 */) + return true + } + return false +}; + +// https://www.ecma-international.org/ecma-262/8.0/#prod-CharacterClassEscape +pp$8.regexp_eatCharacterClassEscape = function(state) { + var ch = state.current(); + + if (isCharacterClassEscape(ch)) { + state.lastIntValue = -1; + state.advance(); + return true + } + + if ( + state.switchU && + this.options.ecmaVersion >= 9 && + (ch === 0x50 /* P */ || ch === 0x70 /* p */) + ) { + state.lastIntValue = -1; + state.advance(); + if ( + state.eat(0x7B /* { */) && + this.regexp_eatUnicodePropertyValueExpression(state) && + state.eat(0x7D /* } */) + ) { + return true + } + state.raise("Invalid property name"); + } + + return false +}; +function isCharacterClassEscape(ch) { + return ( + ch === 0x64 /* d */ || + ch === 0x44 /* D */ || + ch === 0x73 /* s */ || + ch === 0x53 /* S */ || + ch === 0x77 /* w */ || + ch === 0x57 /* W */ + ) +} + +// UnicodePropertyValueExpression :: +// UnicodePropertyName `=` UnicodePropertyValue +// LoneUnicodePropertyNameOrValue +pp$8.regexp_eatUnicodePropertyValueExpression = function(state) { + var start = state.pos; + + // UnicodePropertyName `=` UnicodePropertyValue + if (this.regexp_eatUnicodePropertyName(state) && state.eat(0x3D /* = */)) { + var name = state.lastStringValue; + if (this.regexp_eatUnicodePropertyValue(state)) { + var value = state.lastStringValue; + this.regexp_validateUnicodePropertyNameAndValue(state, name, value); + return true + } + } + state.pos = start; + + // LoneUnicodePropertyNameOrValue + if (this.regexp_eatLoneUnicodePropertyNameOrValue(state)) { + var nameOrValue = state.lastStringValue; + this.regexp_validateUnicodePropertyNameOrValue(state, nameOrValue); + return true + } + return false +}; +pp$8.regexp_validateUnicodePropertyNameAndValue = function(state, name, value) { + if (!has(state.unicodeProperties.nonBinary, name)) + { state.raise("Invalid property name"); } + if (!state.unicodeProperties.nonBinary[name].test(value)) + { state.raise("Invalid property value"); } +}; +pp$8.regexp_validateUnicodePropertyNameOrValue = function(state, nameOrValue) { + if (!state.unicodeProperties.binary.test(nameOrValue)) + { state.raise("Invalid property name"); } +}; + +// UnicodePropertyName :: +// UnicodePropertyNameCharacters +pp$8.regexp_eatUnicodePropertyName = function(state) { + var ch = 0; + state.lastStringValue = ""; + while (isUnicodePropertyNameCharacter(ch = state.current())) { + state.lastStringValue += codePointToString(ch); + state.advance(); + } + return state.lastStringValue !== "" +}; +function isUnicodePropertyNameCharacter(ch) { + return isControlLetter(ch) || ch === 0x5F /* _ */ +} + +// UnicodePropertyValue :: +// UnicodePropertyValueCharacters +pp$8.regexp_eatUnicodePropertyValue = function(state) { + var ch = 0; + state.lastStringValue = ""; + while (isUnicodePropertyValueCharacter(ch = state.current())) { + state.lastStringValue += codePointToString(ch); + state.advance(); + } + return state.lastStringValue !== "" +}; +function isUnicodePropertyValueCharacter(ch) { + return isUnicodePropertyNameCharacter(ch) || isDecimalDigit(ch) +} + +// LoneUnicodePropertyNameOrValue :: +// UnicodePropertyValueCharacters +pp$8.regexp_eatLoneUnicodePropertyNameOrValue = function(state) { + return this.regexp_eatUnicodePropertyValue(state) +}; + +// https://www.ecma-international.org/ecma-262/8.0/#prod-CharacterClass +pp$8.regexp_eatCharacterClass = function(state) { + if (state.eat(0x5B /* [ */)) { + state.eat(0x5E /* ^ */); + this.regexp_classRanges(state); + if (state.eat(0x5D /* ] */)) { + return true + } + // Unreachable since it threw "unterminated regular expression" error before. + state.raise("Unterminated character class"); + } + return false +}; + +// https://www.ecma-international.org/ecma-262/8.0/#prod-ClassRanges +// https://www.ecma-international.org/ecma-262/8.0/#prod-NonemptyClassRanges +// https://www.ecma-international.org/ecma-262/8.0/#prod-NonemptyClassRangesNoDash +pp$8.regexp_classRanges = function(state) { + while (this.regexp_eatClassAtom(state)) { + var left = state.lastIntValue; + if (state.eat(0x2D /* - */) && this.regexp_eatClassAtom(state)) { + var right = state.lastIntValue; + if (state.switchU && (left === -1 || right === -1)) { + state.raise("Invalid character class"); + } + if (left !== -1 && right !== -1 && left > right) { + state.raise("Range out of order in character class"); + } + } + } +}; + +// https://www.ecma-international.org/ecma-262/8.0/#prod-ClassAtom +// https://www.ecma-international.org/ecma-262/8.0/#prod-ClassAtomNoDash +pp$8.regexp_eatClassAtom = function(state) { + var start = state.pos; + + if (state.eat(0x5C /* \ */)) { + if (this.regexp_eatClassEscape(state)) { + return true + } + if (state.switchU) { + // Make the same message as V8. + var ch$1 = state.current(); + if (ch$1 === 0x63 /* c */ || isOctalDigit(ch$1)) { + state.raise("Invalid class escape"); + } + state.raise("Invalid escape"); + } + state.pos = start; + } + + var ch = state.current(); + if (ch !== 0x5D /* ] */) { + state.lastIntValue = ch; + state.advance(); + return true + } + + return false +}; + +// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ClassEscape +pp$8.regexp_eatClassEscape = function(state) { + var start = state.pos; + + if (state.eat(0x62 /* b */)) { + state.lastIntValue = 0x08; /* */ + return true + } + + if (state.switchU && state.eat(0x2D /* - */)) { + state.lastIntValue = 0x2D; /* - */ + return true + } + + if (!state.switchU && state.eat(0x63 /* c */)) { + if (this.regexp_eatClassControlLetter(state)) { + return true + } + state.pos = start; + } + + return ( + this.regexp_eatCharacterClassEscape(state) || + this.regexp_eatCharacterEscape(state) + ) +}; + +// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ClassControlLetter +pp$8.regexp_eatClassControlLetter = function(state) { + var ch = state.current(); + if (isDecimalDigit(ch) || ch === 0x5F /* _ */) { + state.lastIntValue = ch % 0x20; + state.advance(); + return true + } + return false +}; + +// https://www.ecma-international.org/ecma-262/8.0/#prod-HexEscapeSequence +pp$8.regexp_eatHexEscapeSequence = function(state) { + var start = state.pos; + if (state.eat(0x78 /* x */)) { + if (this.regexp_eatFixedHexDigits(state, 2)) { + return true + } + if (state.switchU) { + state.raise("Invalid escape"); + } + state.pos = start; + } + return false +}; + +// https://www.ecma-international.org/ecma-262/8.0/#prod-DecimalDigits +pp$8.regexp_eatDecimalDigits = function(state) { + var start = state.pos; + var ch = 0; + state.lastIntValue = 0; + while (isDecimalDigit(ch = state.current())) { + state.lastIntValue = 10 * state.lastIntValue + (ch - 0x30 /* 0 */); + state.advance(); + } + return state.pos !== start +}; +function isDecimalDigit(ch) { + return ch >= 0x30 /* 0 */ && ch <= 0x39 /* 9 */ +} + +// https://www.ecma-international.org/ecma-262/8.0/#prod-HexDigits +pp$8.regexp_eatHexDigits = function(state) { + var start = state.pos; + var ch = 0; + state.lastIntValue = 0; + while (isHexDigit(ch = state.current())) { + state.lastIntValue = 16 * state.lastIntValue + hexToInt(ch); + state.advance(); + } + return state.pos !== start +}; +function isHexDigit(ch) { + return ( + (ch >= 0x30 /* 0 */ && ch <= 0x39 /* 9 */) || + (ch >= 0x41 /* A */ && ch <= 0x46 /* F */) || + (ch >= 0x61 /* a */ && ch <= 0x66 /* f */) + ) +} +function hexToInt(ch) { + if (ch >= 0x41 /* A */ && ch <= 0x46 /* F */) { + return 10 + (ch - 0x41 /* A */) + } + if (ch >= 0x61 /* a */ && ch <= 0x66 /* f */) { + return 10 + (ch - 0x61 /* a */) + } + return ch - 0x30 /* 0 */ +} + +// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-LegacyOctalEscapeSequence +// Allows only 0-377(octal) i.e. 0-255(decimal). +pp$8.regexp_eatLegacyOctalEscapeSequence = function(state) { + if (this.regexp_eatOctalDigit(state)) { + var n1 = state.lastIntValue; + if (this.regexp_eatOctalDigit(state)) { + var n2 = state.lastIntValue; + if (n1 <= 3 && this.regexp_eatOctalDigit(state)) { + state.lastIntValue = n1 * 64 + n2 * 8 + state.lastIntValue; + } else { + state.lastIntValue = n1 * 8 + n2; + } + } else { + state.lastIntValue = n1; + } + return true + } + return false +}; + +// https://www.ecma-international.org/ecma-262/8.0/#prod-OctalDigit +pp$8.regexp_eatOctalDigit = function(state) { + var ch = state.current(); + if (isOctalDigit(ch)) { + state.lastIntValue = ch - 0x30; /* 0 */ + state.advance(); + return true + } + state.lastIntValue = 0; + return false +}; +function isOctalDigit(ch) { + return ch >= 0x30 /* 0 */ && ch <= 0x37 /* 7 */ +} + +// https://www.ecma-international.org/ecma-262/8.0/#prod-Hex4Digits +// https://www.ecma-international.org/ecma-262/8.0/#prod-HexDigit +// And HexDigit HexDigit in https://www.ecma-international.org/ecma-262/8.0/#prod-HexEscapeSequence +pp$8.regexp_eatFixedHexDigits = function(state, length) { + var start = state.pos; + state.lastIntValue = 0; + for (var i = 0; i < length; ++i) { + var ch = state.current(); + if (!isHexDigit(ch)) { + state.pos = start; + return false + } + state.lastIntValue = 16 * state.lastIntValue + hexToInt(ch); + state.advance(); + } + return true +}; + +// Object type used to represent tokens. Note that normally, tokens +// simply exist as properties on the parser object. This is only +// used for the onToken callback and the external tokenizer. + +var Token = function Token(p) { + this.type = p.type; + this.value = p.value; + this.start = p.start; + this.end = p.end; + if (p.options.locations) + { this.loc = new SourceLocation(p, p.startLoc, p.endLoc); } + if (p.options.ranges) + { this.range = [p.start, p.end]; } +}; + +// ## Tokenizer + +var pp$9 = Parser.prototype; + +// Move to the next token + +pp$9.next = function(ignoreEscapeSequenceInKeyword) { + if (!ignoreEscapeSequenceInKeyword && this.type.keyword && this.containsEsc) + { this.raiseRecoverable(this.start, "Escape sequence in keyword " + this.type.keyword); } + if (this.options.onToken) + { this.options.onToken(new Token(this)); } + + this.lastTokEnd = this.end; + this.lastTokStart = this.start; + this.lastTokEndLoc = this.endLoc; + this.lastTokStartLoc = this.startLoc; + this.nextToken(); +}; + +pp$9.getToken = function() { + this.next(); + return new Token(this) +}; + +// If we're in an ES6 environment, make parsers iterable +if (typeof Symbol !== "undefined") + { pp$9[Symbol.iterator] = function() { + var this$1$1 = this; + + return { + next: function () { + var token = this$1$1.getToken(); + return { + done: token.type === types.eof, + value: token + } + } + } + }; } + +// Toggle strict mode. Re-reads the next number or string to please +// pedantic tests (`"use strict"; 010;` should fail). + +pp$9.curContext = function() { + return this.context[this.context.length - 1] +}; + +// Read a single token, updating the parser object's token-related +// properties. + +pp$9.nextToken = function() { + var curContext = this.curContext(); + if (!curContext || !curContext.preserveSpace) { this.skipSpace(); } + + this.start = this.pos; + if (this.options.locations) { this.startLoc = this.curPosition(); } + if (this.pos >= this.input.length) { return this.finishToken(types.eof) } + + if (curContext.override) { return curContext.override(this) } + else { this.readToken(this.fullCharCodeAtPos()); } +}; + +pp$9.readToken = function(code) { + // Identifier or keyword. '\uXXXX' sequences are allowed in + // identifiers, so '\' also dispatches to that. + if (isIdentifierStart$1(code, this.options.ecmaVersion >= 6) || code === 92 /* '\' */) + { return this.readWord() } + + return this.getTokenFromCode(code) +}; + +pp$9.fullCharCodeAtPos = function() { + var code = this.input.charCodeAt(this.pos); + if (code <= 0xd7ff || code >= 0xe000) { return code } + var next = this.input.charCodeAt(this.pos + 1); + return (code << 10) + next - 0x35fdc00 +}; + +pp$9.skipBlockComment = function() { + var startLoc = this.options.onComment && this.curPosition(); + var start = this.pos, end = this.input.indexOf("*/", this.pos += 2); + if (end === -1) { this.raise(this.pos - 2, "Unterminated comment"); } + this.pos = end + 2; + if (this.options.locations) { + lineBreakG.lastIndex = start; + var match; + while ((match = lineBreakG.exec(this.input)) && match.index < this.pos) { + ++this.curLine; + this.lineStart = match.index + match[0].length; + } + } + if (this.options.onComment) + { this.options.onComment(true, this.input.slice(start + 2, end), start, this.pos, + startLoc, this.curPosition()); } +}; + +pp$9.skipLineComment = function(startSkip) { + var start = this.pos; + var startLoc = this.options.onComment && this.curPosition(); + var ch = this.input.charCodeAt(this.pos += startSkip); + while (this.pos < this.input.length && !isNewLine(ch)) { + ch = this.input.charCodeAt(++this.pos); + } + if (this.options.onComment) + { this.options.onComment(false, this.input.slice(start + startSkip, this.pos), start, this.pos, + startLoc, this.curPosition()); } +}; + +// Called at the start of the parse and after every token. Skips +// whitespace and comments, and. + +pp$9.skipSpace = function() { + loop: while (this.pos < this.input.length) { + var ch = this.input.charCodeAt(this.pos); + switch (ch) { + case 32: case 160: // ' ' + ++this.pos; + break + case 13: + if (this.input.charCodeAt(this.pos + 1) === 10) { + ++this.pos; + } + case 10: case 8232: case 8233: + ++this.pos; + if (this.options.locations) { + ++this.curLine; + this.lineStart = this.pos; + } + break + case 47: // '/' + switch (this.input.charCodeAt(this.pos + 1)) { + case 42: // '*' + this.skipBlockComment(); + break + case 47: + this.skipLineComment(2); + break + default: + break loop + } + break + default: + if (ch > 8 && ch < 14 || ch >= 5760 && nonASCIIwhitespace.test(String.fromCharCode(ch))) { + ++this.pos; + } else { + break loop + } + } + } +}; + +// Called at the end of every token. Sets `end`, `val`, and +// maintains `context` and `exprAllowed`, and skips the space after +// the token, so that the next one's `start` will point at the +// right position. + +pp$9.finishToken = function(type, val) { + this.end = this.pos; + if (this.options.locations) { this.endLoc = this.curPosition(); } + var prevType = this.type; + this.type = type; + this.value = val; + + this.updateContext(prevType); +}; + +// ### Token reading + +// This is the function that is called to fetch the next token. It +// is somewhat obscure, because it works in character codes rather +// than characters, and because operator parsing has been inlined +// into it. +// +// All in the name of speed. +// +pp$9.readToken_dot = function() { + var next = this.input.charCodeAt(this.pos + 1); + if (next >= 48 && next <= 57) { return this.readNumber(true) } + var next2 = this.input.charCodeAt(this.pos + 2); + if (this.options.ecmaVersion >= 6 && next === 46 && next2 === 46) { // 46 = dot '.' + this.pos += 3; + return this.finishToken(types.ellipsis) + } else { + ++this.pos; + return this.finishToken(types.dot) + } +}; + +pp$9.readToken_slash = function() { // '/' + var next = this.input.charCodeAt(this.pos + 1); + if (this.exprAllowed) { ++this.pos; return this.readRegexp() } + if (next === 61) { return this.finishOp(types.assign, 2) } + return this.finishOp(types.slash, 1) +}; + +pp$9.readToken_mult_modulo_exp = function(code) { // '%*' + var next = this.input.charCodeAt(this.pos + 1); + var size = 1; + var tokentype = code === 42 ? types.star : types.modulo; + + // exponentiation operator ** and **= + if (this.options.ecmaVersion >= 7 && code === 42 && next === 42) { + ++size; + tokentype = types.starstar; + next = this.input.charCodeAt(this.pos + 2); + } + + if (next === 61) { return this.finishOp(types.assign, size + 1) } + return this.finishOp(tokentype, size) +}; + +pp$9.readToken_pipe_amp = function(code) { // '|&' + var next = this.input.charCodeAt(this.pos + 1); + if (next === code) { + if (this.options.ecmaVersion >= 12) { + var next2 = this.input.charCodeAt(this.pos + 2); + if (next2 === 61) { return this.finishOp(types.assign, 3) } + } + return this.finishOp(code === 124 ? types.logicalOR : types.logicalAND, 2) + } + if (next === 61) { return this.finishOp(types.assign, 2) } + return this.finishOp(code === 124 ? types.bitwiseOR : types.bitwiseAND, 1) +}; + +pp$9.readToken_caret = function() { // '^' + var next = this.input.charCodeAt(this.pos + 1); + if (next === 61) { return this.finishOp(types.assign, 2) } + return this.finishOp(types.bitwiseXOR, 1) +}; + +pp$9.readToken_plus_min = function(code) { // '+-' + var next = this.input.charCodeAt(this.pos + 1); + if (next === code) { + if (next === 45 && !this.inModule && this.input.charCodeAt(this.pos + 2) === 62 && + (this.lastTokEnd === 0 || lineBreak.test(this.input.slice(this.lastTokEnd, this.pos)))) { + // A `-->` line comment + this.skipLineComment(3); + this.skipSpace(); + return this.nextToken() + } + return this.finishOp(types.incDec, 2) + } + if (next === 61) { return this.finishOp(types.assign, 2) } + return this.finishOp(types.plusMin, 1) +}; + +pp$9.readToken_lt_gt = function(code) { // '<>' + var next = this.input.charCodeAt(this.pos + 1); + var size = 1; + if (next === code) { + size = code === 62 && this.input.charCodeAt(this.pos + 2) === 62 ? 3 : 2; + if (this.input.charCodeAt(this.pos + size) === 61) { return this.finishOp(types.assign, size + 1) } + return this.finishOp(types.bitShift, size) + } + if (next === 33 && code === 60 && !this.inModule && this.input.charCodeAt(this.pos + 2) === 45 && + this.input.charCodeAt(this.pos + 3) === 45) { + // ` ${l+1}`)}),` +\`\`\`${n} +flowchart LR +${i.join(` +`)} +${s.join(` +`)} +\`\`\` +`}};var or=class{static calculate(e){let t=0;if(e.dueDate!==null){let n=window.moment().startOf("day"),i=Math.round(n.diff(e.dueDate)/or.milliSecondsPerDay),s;i>=7?s=1:i>=-14?s=(i+14)*.8/21+.2:s=.2,t+=s*or.dueCoefficient}switch(e.scheduledDate!==null&&window.moment().isSameOrAfter(e.scheduledDate)&&(t+=1*or.scheduledCoefficient),e.startDate!==null&&window.moment().isBefore(e.startDate)&&(t+=1*or.startedCoefficient),e.priority){case"0":t+=1.5*or.priorityCoefficient;break;case"1":t+=1*or.priorityCoefficient;break;case"2":t+=.65*or.priorityCoefficient;break;case"3":t+=.325*or.priorityCoefficient;break;case"5":t-=.3*or.priorityCoefficient;break}return t}},jr=or;jr.dueCoefficient=12,jr.scheduledCoefficient=5,jr.startedCoefficient=-3,jr.priorityCoefficient=6,jr.milliSecondsPerDay=1e3*60*60*24;var Rt=class{static fromPath(e){let{useFilenameAsScheduledDate:t,filenameAsDateFolders:n}=Q();return!t||!this.matchesAnyFolder(n,e)?null:this.extractDateFromPath(e)}static matchesAnyFolder(e,t){return e.length===0?!0:e.some(n=>t.startsWith(n+"/"))}static extractDateFromPath(e){let t=Math.max(0,e.lastIndexOf("/")+1),n=e.lastIndexOf("."),i=e.substring(t,n),s=/(\d{4})-(\d{2})-(\d{2})/.exec(i);if(s||(s=/(\d{4})(\d{2})(\d{2})/.exec(i)),s){let a=window.moment([parseInt(s[1]),parseInt(s[2])-1,parseInt(s[3])]);if(a.isValid())return a}return null}static canApplyFallback({startDate:e,scheduledDate:t,dueDate:n}){return e===null&&n===null&&t===null}static updateTaskPath(e,t,n){let i=e.scheduledDate,s=e.scheduledDateIsInferred;return n===null?s&&(s=!1,i=null):s?i=n:this.canApplyFallback(e)&&(i=n,s=!0),new ye(Tt(pe({},e),{taskLocation:e.taskLocation.fromRenamedFile(t),scheduledDate:i,scheduledDateIsInferred:s}))}static removeInferredStatusIfNeeded(e,t){let n=e.scheduledDateIsInferred?e.scheduledDate:null;return t.map(i=>(n!==null&&!n.isSame(i.scheduledDate,"day")&&(i=new ye(Tt(pe({},i),{scheduledDateIsInferred:!1}))),i))}};var Gr=class{constructor(e,t){this.name=e,this.sortOrder=t}get groupText(){return this.name!==""?`%%${this.sortOrder}%% ${this.name}`:""}};var vt=class{constructor(e){this._date=null;this._date=e}get moment(){return this._date}formatAsDate(e=""){return this.format(z.dateFormat,e)}formatAsDateAndTime(e=""){return this.format(z.dateTimeFormat,e)}format(e,t=""){return this._date?this._date.format(e):t}toISOString(e){return this._date?this._date.toISOString(e):""}get category(){let e=window.moment(),t=this.moment;return t?t.isBefore(e,"day")?new Gr("Overdue",1):t.isSame(e,"day")?new Gr("Today",2):new Gr("Future",3):new Gr("Undated",4)}get fromNow(){let e=this.moment;if(!e)return new Gr("",0);let t=this.fromNowOrder(e);return new Gr(e.fromNow(),t)}fromNowOrder(e){let t=window.moment(),n=e.isSameOrBefore(t,"day"),i=this.fromNowStartDateOfGroup(e,n,t);return Number((n?1:3)+i.format("YYYYMMDD"))}fromNowStartDateOfGroup(e,t,n){let i=e.fromNow(!0).split(" "),s,a=Number(i[0]);isNaN(a)?s=1:s=a;let o=i[1];return t?n.subtract(s,o):n.add(s,o)}};var Ei=class{constructor(e){this._path=e}get path(){return this._path}get pathWithoutExtension(){return this.withoutExtension(this.path)}withoutExtension(e){return e.replace(/\.md$/,"")}get root(){let e=this.path.replace(/\\/g,"/");e.charAt(0)==="/"&&(e=e.substring(1));let t=e.indexOf("/");return t==-1?"/":e.substring(0,t+1)}get folder(){let e=this.path,t=this.filename,n=e.substring(0,e.lastIndexOf(t));return n===""?"/":n}get filename(){let e=this.path.match(/([^/]+)$/);return e!==null?e[1]:""}get filenameWithoutExtension(){return this.withoutExtension(this.filename)}};var Br=class{static priorityNameUsingNone(e){let t="ERROR";switch(e){case"1":t="High";break;case"0":t="Highest";break;case"2":t="Medium";break;case"3":t="None";break;case"4":t="Low";break;case"5":t="Lowest";break}return t}static priorityNameUsingNormal(e){return Br.priorityNameUsingNone(e).replace("None","Normal")}};var It=class{},z=It;z.dateFormat="YYYY-MM-DD",z.dateTimeFormat="YYYY-MM-DD HH:mm",z.indentationRegex=/^([\s\t>]*)/,z.listMarkerRegex=/([-*+]|[0-9]+\.)/,z.checkboxRegex=/\[(.)\]/u,z.afterCheckboxRegex=/ *(.*)/u,z.taskRegex=new RegExp(It.indentationRegex.source+It.listMarkerRegex.source+" +"+It.checkboxRegex.source+It.afterCheckboxRegex.source,"u"),z.nonTaskRegex=new RegExp(It.indentationRegex.source+It.listMarkerRegex.source+"? *("+It.checkboxRegex.source+")?"+It.afterCheckboxRegex.source,"u"),z.listItemRegex=new RegExp(It.indentationRegex.source+It.listMarkerRegex.source),z.blockLinkRegex=/ \^[a-zA-Z0-9-]+$/u,z.hashTags=/(^|\s)#[^ !@#$%^&*(),.?":{}|<>]+/g,z.hashTagsFromEnd=new RegExp(It.hashTags.source+"$");var ye=class{constructor({status:e,description:t,taskLocation:n,indentation:i,listMarker:s,priority:a,createdDate:o,startDate:u,scheduledDate:l,dueDate:c,doneDate:p,recurrence:h,blockLink:_,tags:y,originalMarkdown:E,scheduledDateIsInferred:x}){this._urgency=null;this.status=e,this.description=t,this.indentation=i,this.listMarker=s,this.taskLocation=n,this.tags=y,this.priority=a,this.createdDate=o,this.startDate=u,this.scheduledDate=l,this.dueDate=c,this.doneDate=p,this.recurrence=h,this.blockLink=_,this.originalMarkdown=E,this.scheduledDateIsInferred=x}static fromLine({line:e,taskLocation:t,fallbackDate:n}){let i=ye.extractTaskComponents(e);return i===null||!ge.getInstance().includedIn(i.body)?null:ye.parseTaskSignifiers(e,t,n)}static parseTaskSignifiers(e,t,n){let i=ye.extractTaskComponents(e);if(i===null)return null;let{taskSerializer:s}=ca(),a=s.deserialize(i.body),o=!1;return Rt.canApplyFallback(a)&&n!==null&&(a.scheduledDate=n,o=!0),a.tags=a.tags.map(u=>u.trim()),a.tags=a.tags.filter(u=>!ge.getInstance().equals(u)),new ye(Tt(pe(pe({},i),a),{taskLocation:t,originalMarkdown:e,scheduledDateIsInferred:o}))}static extractTaskComponents(e){let t=e.match(z.taskRegex);if(t===null)return null;let n=t[1],i=t[2],s=t[3],a=De.getInstance().bySymbolOrCreate(s),o=t[4].trim(),u=o.match(z.blockLinkRegex),l=u!==null?u[0]:"";return l!==""&&(o=o.replace(z.blockLinkRegex,"").trim()),{indentation:n,listMarker:i,status:a,body:o,blockLink:l}}toString(){return ca().taskSerializer.serialize(this)}toFileLineString(){return`${this.indentation}${this.listMarker} [${this.status.symbol}] ${this.toString()}`}toggle(){let e=De.getInstance().getNextStatusOrCreate(this.status),t=null,n=null;if(e.isCompleted()){let{setDoneDate:a}=Q();a&&(t=window.moment()),this.recurrence!==null&&(n=this.recurrence.next())}let i=new ye(Tt(pe({},this),{status:e,doneDate:t})),s=[];if(n!==null){let{setCreatedDate:a}=Q(),o=null;a&&(o=window.moment());let u=De.getInstance().getNextStatusOrCreate(e),l=new ye(Tt(pe(pe({},this),n),{status:u,blockLink:"",createdDate:o}));s.push(l)}return s.push(i),s}toggleWithRecurrenceInUsersOrder(){let e=this.toggle(),{recurrenceOnNextLine:t}=Q();return t?e.reverse():e}get isDone(){return this.status.type==="DONE"||this.status.type==="CANCELLED"||this.status.type==="NON_TASK"}get priorityNumber(){return Number.parseInt(this.priority)}get priorityNameGroupText(){let e=Br.priorityNameUsingNormal(this.priority);return`%%${this.priority}%%${e} priority`}get descriptionWithoutTags(){return this.description.replace(z.hashTags,"").trim()}get priorityName(){return Br.priorityNameUsingNormal(this.priority)}get urgency(){return this._urgency===null&&(this._urgency=jr.calculate(this)),this._urgency}get path(){return this.taskLocation.path}get created(){return new vt(this.createdDate)}get done(){return new vt(this.doneDate)}get due(){return new vt(this.dueDate)}get scheduled(){return new vt(this.scheduledDate)}get start(){return new vt(this.startDate)}get happensDates(){return Array.of(this.startDate,this.scheduledDate,this.dueDate)}get happens(){let t=this.happensDates.sort($r);return new vt(t[0])}get isRecurring(){return this.recurrence!==null}get recurrenceRule(){return this.recurrence?this.recurrence.toText():""}get heading(){return this.precedingHeader}get hasHeading(){return this.precedingHeader!==null}get file(){return new Ei(this.path)}get filename(){let e=this.path.match(/([^/]+)\.md$/);return e!==null?e[1]:null}get lineNumber(){return this.taskLocation.lineNumber}get sectionStart(){return this.taskLocation.sectionStart}get sectionIndex(){return this.taskLocation.sectionIndex}get precedingHeader(){return this.taskLocation.precedingHeader}getLinkText({isFilenameUnique:e}){let t;return e?t=this.filename:t="/"+this.path,t===null?null:(this.precedingHeader!==null&&this.precedingHeader!==t&&(t=t+" > "+this.precedingHeader),t)}static tasksListsIdentical(e,t){return e.length!==t.length?!1:e.every((n,i)=>n.identicalTo(t[i]))}identicalTo(e){let t=["description","path","indentation","listMarker","lineNumber","sectionStart","sectionIndex","precedingHeader","priority","blockLink","scheduledDateIsInferred"];for(let s of t)if(this[s]!==e[s])return!1;if(!this.status.identicalTo(e.status)||this.tags.length!==e.tags.length||!this.tags.every(function(s,a){return s===e.tags[a]}))return!1;t=["createdDate","startDate","scheduledDate","dueDate","doneDate"];for(let s of t){let a=this[s],o=e[s];if($r(a,o)!==0)return!1}let n=this.recurrence,i=e.recurrence;return n===null&&i!==null||n!==null&&i===null?!1:!(n&&i&&!n.identicalTo(i))}static extractHashtags(e){var t,n;return(n=(t=e.match(z.hashTags))==null?void 0:t.map(i=>i.trim()))!=null?n:[]}};var da=class{constructor(e){this.fetch=e;this._value=void 0}get value(){return this._value===void 0&&(this._value=this.fetch()),this._value}};var ot=class{constructor(e,t,n,i,s){this._path=e,this._lineNumber=t,this._sectionStart=n,this._sectionIndex=i,this._precedingHeader=s}static fromUnknownPosition(e){return new ot(e,0,0,0,null)}fromRenamedFile(e){return new ot(e,this.lineNumber,this.sectionStart,this.sectionIndex,this.precedingHeader)}get path(){return this._path}get lineNumber(){return this._lineNumber}get sectionStart(){return this._sectionStart}get sectionIndex(){return this._sectionIndex}get precedingHeader(){return this._precedingHeader}};var Ln=class{constructor({metadataCache:e,vault:t,events:n}){this.metadataCache=e,this.metadataCacheEventReferences=[],this.vault=t,this.vaultEventReferences=[],this.events=n,this.eventsEventReferences=[],this.tasksMutex=new Ia,this.state="Cold",this.tasks=[],this.loadedAfterFirstResolve=!1,this.subscribeToCache(),this.subscribeToVault(),this.subscribeToEvents(),this.loadVault()}unload(){for(let e of this.metadataCacheEventReferences)this.metadataCache.offref(e);for(let e of this.vaultEventReferences)this.vault.offref(e);for(let e of this.eventsEventReferences)this.events.off(e)}getTasks(){return this.tasks}getState(){return this.state}notifySubscribers(){this.events.triggerCacheUpdate({tasks:this.tasks,state:this.state})}subscribeToCache(){let e=this.metadataCache.on("resolved",()=>q(this,null,function*(){this.loadedAfterFirstResolve||(this.loadedAfterFirstResolve=!0,this.loadVault())}));this.metadataCacheEventReferences.push(e);let t=this.metadataCache.on("changed",n=>{this.tasksMutex.runExclusive(()=>{this.indexFile(n)})});this.metadataCacheEventReferences.push(t)}subscribeToVault(){let{useFilenameAsScheduledDate:e}=Q(),t=this.vault.on("create",s=>{s instanceof wi.TFile&&this.tasksMutex.runExclusive(()=>{this.indexFile(s)})});this.vaultEventReferences.push(t);let n=this.vault.on("delete",s=>{s instanceof wi.TFile&&this.tasksMutex.runExclusive(()=>{this.tasks=this.tasks.filter(a=>a.path!==s.path),this.notifySubscribers()})});this.vaultEventReferences.push(n);let i=this.vault.on("rename",(s,a)=>{s instanceof wi.TFile&&this.tasksMutex.runExclusive(()=>{let o=new da(()=>Rt.fromPath(s.path));this.tasks=this.tasks.map(u=>u.path===a?e?Rt.updateTaskPath(u,s.path,o.value):new ye(Tt(pe({},u),{taskLocation:u.taskLocation.fromRenamedFile(s.path)})):u),this.notifySubscribers()})});this.vaultEventReferences.push(i)}subscribeToEvents(){let e=this.events.onRequestCacheUpdate(t=>{t({tasks:this.tasks,state:this.state})});this.eventsEventReferences.push(e)}loadVault(){return this.tasksMutex.runExclusive(()=>q(this,null,function*(){this.state="Initializing",yield Promise.all(this.vault.getMarkdownFiles().map(e=>this.indexFile(e))),this.state="Warm",this.notifySubscribers()}))}indexFile(e){return q(this,null,function*(){let t=this.metadataCache.getFileCache(e);if(t==null)return;let n=this.tasks.filter(a=>a.path===e.path),i=t.listItems,s=[];if(i!==void 0){let a=yield this.vault.cachedRead(e);s=this.getTasksFromFileContent(a,i,t,e)}ye.tasksListsIdentical(n,s)||(this.tasks=this.tasks.filter(a=>a.path!==e.path),this.tasks.push(...s),this.notifySubscribers())})}getTasksFromFileContent(e,t,n,i){let s=[],a=e.split(` +`),o=a.length,u=new da(()=>Rt.fromPath(i.path)),l=null,c=0;for(let p of t)if(p.task!==void 0){let h=p.position.start.line;if(h>=o)return console.log(`${i.path} Obsidian gave us a line number ${h} past the end of the file. ${o}.`),s;if((l===null||l.position.end.line=e)return n;return null}static getPrecedingHeader(e,t){if(t===void 0)return null;let n=null;for(let i of t){if(i.position.start.line>e)return n;n=i.heading}return n}};var Lf=require("obsidian");var AT=require("obsidian");function Nr(){}function Mf(r){return r()}function mT(){return Object.create(null)}function Mn(r){r.forEach(Mf)}function Ro(r){return typeof r=="function"}function gT(r,e){return r!=r?e==e:r!==e||r&&typeof r=="object"||typeof r=="function"}function yT(r){return Object.keys(r).length===0}var _T=typeof window!="undefined"?window:typeof globalThis!="undefined"?globalThis:global,ea=class{constructor(e){this.options=e,this._listeners="WeakMap"in _T?new WeakMap:void 0}observe(e,t){return this._listeners.set(e,t),this._getObserver().observe(e,this.options),()=>{this._listeners.delete(e),this._observer.unobserve(e)}}_getObserver(){var e;return(e=this._observer)!==null&&e!==void 0?e:this._observer=new ResizeObserver(t=>{var n;for(let i of t)ea.entries.set(i.target,i),(n=this._listeners.get(i.target))===null||n===void 0||n(i)})}};ea.entries="WeakMap"in _T?new WeakMap:void 0;var TT=!1;function Yx(){TT=!0}function $x(){TT=!1}function R(r,e){r.appendChild(e)}function hi(r,e,t){r.insertBefore(e,t||null)}function xn(r){r.parentNode&&r.parentNode.removeChild(r)}function xf(r,e){for(let t=0;tr.removeEventListener(e,t,n)}function bT(r){return function(e){return e.preventDefault(),r.call(this,e)}}function N(r,e,t){t==null?r.removeAttribute(e):r.getAttribute(e)!==t&&r.setAttribute(e,t)}function vT(r){let e;return{p(...t){e=t,e.forEach(n=>r.push(n))},r(){e.forEach(t=>r.splice(r.indexOf(t),1))}}}function Gx(r){return Array.from(r.childNodes)}function Af(r,e){e=""+e,r.data!==e&&(r.data=e)}function nr(r,e){r.value=e==null?"":e}function Cf(r,e,t){for(let n=0;nr.indexOf(n)===-1?e.push(n):t.push(n)),t.forEach(n=>n()),mi=e}var Qx=new Set;function Xx(r,e){r&&r.i&&(Qx.delete(r),r.i(e))}var Zx=["allowfullscreen","allowpaymentrequest","async","autofocus","autoplay","checked","controls","default","defer","disabled","formnovalidate","hidden","inert","ismap","loop","multiple","muted","nomodule","novalidate","open","playsinline","readonly","required","reversed","selected"],N2=new Set([...Zx]);function Jx(r,e,t,n){let{fragment:i,after_update:s}=r.$$;i&&i.m(e,t),n||ra(()=>{let a=r.$$.on_mount.map(Mf).filter(Ro);r.$$.on_destroy?r.$$.on_destroy.push(...a):Mn(a),r.$$.on_mount=[]}),s.forEach(ra)}function kT(r,e){let t=r.$$;t.fragment!==null&&(Kx(t.after_update),Mn(t.on_destroy),t.fragment&&t.fragment.d(e),t.on_destroy=t.fragment=null,t.ctx=[])}function eA(r,e){r.$$.dirty[0]===-1&&(pi.push(r),zx(),r.$$.dirty.fill(0)),r.$$.dirty[e/31|0]|=1<{let y=T.length?T[0]:m;return l.ctx&&i(l.ctx[p],l.ctx[p]=y)&&(!l.skip_bound&&l.bound[p]&&l.bound[p](y),c&&eA(r,p)),m}):[],l.update(),c=!0,Mn(l.before_update),l.fragment=n?n(l.ctx):!1,e.target){if(e.hydrate){Yx();let p=Gx(e.target);l.fragment&&l.fragment.l(p),p.forEach(xn)}else l.fragment&&l.fragment.c();e.intro&&Xx(r.$$.fragment),Jx(r,e.target,e.anchor,e.customElement),$x(),wT()}Js(u)}var tA;typeof HTMLElement=="function"&&(tA=class extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"})}connectedCallback(){let{on_mount:r}=this.$$;this.$$.on_disconnect=r.map(Mf).filter(Ro);for(let e in this.$$.slotted)this.appendChild(this.$$.slotted[e])}attributeChangedCallback(r,e,t){this[r]=t}disconnectedCallback(){Mn(this.$$.on_disconnect)}$destroy(){kT(this,1),this.$destroy=Nr}$on(r,e){if(!Ro(e))return Nr;let t=this.$$.callbacks[r]||(this.$$.callbacks[r]=[]);return t.push(e),()=>{let n=t.indexOf(e);n!==-1&&t.splice(n,1)}}$set(r){this.$$set&&!yT(r)&&(this.$$.skip_bound=!0,this.$$set(r),this.$$.skip_bound=!1)}});var xo=class{$destroy(){kT(this,1),this.$destroy=Nr}$on(e,t){if(!Ro(t))return Nr;let n=this.$$.callbacks[e]||(this.$$.callbacks[e]=[]);return n.push(t),()=>{let i=n.indexOf(t);i!==-1&&n.splice(i,1)}}$set(e){this.$$set&&!yT(e)&&(this.$$.skip_bound=!0,this.$$set(e),this.$$.skip_bound=!1)}};var If=Ui(Be());function DT(r,e,t){let n=r.slice();return n[45]=e[t],n}function ST(r,e,t){let n=r.slice();return n[48]=e[t].value,n[49]=e[t].label,n[50]=e[t].symbol,n[51]=e[t].accessKey,n[52]=e[t].accessKeyIndex,n}function rA(r){let e,t=r[50]+"",n;return{c(){e=V("span"),n=dt(t)},m(i,s){hi(i,e,s),R(e,n)},p:Nr,d(i){i&&xn(e)}}}function RT(r){let e,t,n,i,s,a,o,u,l=r[49].substring(0,r[52])+"",c,p,m=r[49].substring(r[52],r[52]+1)+"",T,y,E=r[49].substring(r[52]+1)+"",M,U,q=r[50]&&r[50].charCodeAt(0)>=256,W,ie,re,ve,G,K=q&&rA(r);return re=vT(r[33][0]),{c(){e=V("span"),t=V("input"),a=fe(),o=V("label"),u=V("span"),c=dt(l),p=V("span"),T=dt(m),y=V("span"),M=dt(E),U=fe(),K&&K.c(),ie=fe(),N(t,"type","radio"),N(t,"id",n="priority-"+r[48]),t.__value=i=r[48],t.value=t.__value,N(t,"accesskey",s=r[15](r[51])),N(p,"class","accesskey"),N(o,"for",W="priority-"+r[48]),re.p(t)},m(Pe,Fe){hi(Pe,e,Fe),R(e,t),t.checked=t.__value===r[1].priority,R(e,a),R(e,o),R(o,u),R(u,c),R(o,p),R(p,T),R(o,y),R(y,M),R(o,U),K&&K.m(o,null),R(e,ie),ve||(G=bt(t,"change",r[32]),ve=!0)},p(Pe,Fe){Fe[0]&32768&&s!==(s=Pe[15](Pe[51]))&&N(t,"accesskey",s),Fe[0]&3&&(t.checked=t.__value===Pe[1].priority),q&&K.p(Pe,Fe)},d(Pe){Pe&&xn(e),K&&K.d(),re.r(),ve=!1,G()}}}function MT(r){let e,t=r[45].name+"",n,i,s=r[45].symbol+"",a,o,u;return{c(){e=V("option"),n=dt(t),i=dt(" ["),a=dt(s),o=dt("]"),e.__value=u=r[45],e.value=e.__value},m(l,c){hi(l,e,c),R(e,n),R(e,i),R(e,a),R(e,o)},p(l,c){c[0]&1&&t!==(t=l[45].name+"")&&Af(n,t),c[0]&1&&s!==(s=l[45].symbol+"")&&Af(a,s),c[0]&1&&u!==(u=l[45])&&(e.__value=u,e.value=e.__value)},d(l){l&&xn(e)}}}function nA(r){let e,t,n,i,s,a,o,u,l,c,p,m,T,y,E,M,U,q,W,ie,re,ve,G,K,Pe,Fe,j,A,w,B,C,X,d,f,h,g,_,v,k,S,O,D,P,me,ae,te,De,I,Ae,Ce,rt,Tr,We,Le,np,Ai,ca,ip,ar,da,sp,qn,fa,ap,Lt,pa,op,Yr,Ci,ma,up,$r,ha,lp,Pi,mu,cp,ga,dp,Ni,hu,fp,ya,pp,Yn,ln,mp,_a,hp,Ii,gu,gp,$n=r[20],mt=[];for(let $=0;$<$n.length;$+=1)mt[$]=RT(ST(r,$n,$));let jn=r[0],ht=[];for(let $=0;$tion',s=fe(),a=V("textarea"),u=fe(),l=V("div"),c=V("label"),p=dt("Priority"),T=fe();for(let $=0;$art',De=fe(),I=V("input"),Ce=fe(),rt=V("code"),Tr=dt(r[17]),We=fe(),Le=new Rn(!1),np=fe(),Ai=V("div"),ca=V("label"),ca.innerHTML=`Only - future dates:`,ip=fe(),ar=V("input"),sp=fe(),qn=V("div"),fa=V("label"),fa.innerHTML='Status',ap=fe(),Lt=V("select");for(let $=0;$r[39].call(Lt)),N(qn,"class","tasks-modal-section"),N(ma,"for","status"),N($r,"id","status"),N($r,"type","checkbox"),N($r,"class","task-list-item-checkbox tasks-modal-checkbox"),$r.checked=ha=r[1].status.isCompleted(),$r.disabled=!0,N(Yr,"class","tasks-modal-section tasks-modal-status"),ln.disabled=_a=!r[14],N(ln,"type","submit"),N(ln,"class","mod-cta"),N(Ii,"type","button"),N(Yn,"class","tasks-modal-section tasks-modal-buttons"),ir(t,"with-accesskeys",r[9]),N(e,"class","tasks-modal")},m($,pe){hi($,e,pe),R(e,t),R(t,n),R(n,i),R(n,s),R(n,a),nr(a,r[1].description),r[31](a),R(t,u),R(t,l),R(l,c),R(c,p),R(l,T);for(let ce=0;ceno ${I} date`;let rt=If.parseDate(Ae,Ce,{forwardDate:Ce!=null});return rt!==null?window.moment(rt).format("YYYY-MM-DD"):`invalid ${I} date`}function C(I,Ae){return B(I,Ae,y.forwardOnly?new Date:void 0)}function X(I){let Ae=null,Ce=If.parseDate(I,new Date,{forwardDate:y.forwardOnly});return Ce!==null&&(Ae=window.moment(Ce)),Ae}Pf(()=>{let{provideAccessKeys:I}=Q();t(9,j=I);let Ae=we.removeAsWordFrom(s.description);(Ae!=s.description||!we.includedIn(s.description))&&(Fe=!0);let Ce="none";s.priority==="5"?Ce="lowest":s.priority==="4"?Ce="low":s.priority==="2"?Ce="medium":s.priority==="1"?Ce="high":s.priority==="0"&&(Ce="highest"),t(1,y={description:Ae,status:s.status,priority:Ce,recurrenceRule:s.recurrence?s.recurrence.toText():"",createdDate:new Tt(s.createdDate).formatAsDate(),startDate:new Tt(s.startDate).formatAsDate(),scheduledDate:new Tt(s.scheduledDate).formatAsDate(),dueDate:new Tt(s.dueDate).formatAsDate(),doneDate:new Tt(s.doneDate).formatAsDate(),forwardOnly:!0}),setTimeout(()=>{T.focus()},10)});let d=I=>{if(I.key&&!I.altKey&&!I.ctrlKey){let Ae=w.find(Ce=>Ce.label.charAt(0).toLowerCase()==I.key);Ae&&t(1,y.priority=Ae.value,y)}},f=()=>{a([])},h=I=>{I.key==="Enter"&&(I.preventDefault(),A&&_())},g=()=>{setTimeout(()=>{t(1,y.description=y.description.replace(/[\r\n]+/g," "),y)},0)},_=()=>{let I=y.description.trim();Fe&&(I=we.prependTo(I));let Ae=X(y.startDate),Ce=X(y.scheduledDate),rt=X(y.dueDate),Tr=null;y.recurrenceRule&&(Tr=et.fromText({recurrenceRuleText:y.recurrenceRule,startDate:Ae,scheduledDate:Ce,dueDate:rt}));let We;switch(y.priority){case"lowest":We="5";break;case"low":We="4";break;case"medium":We="2";break;case"high":We="1";break;case"highest":We="0";break;default:We="3"}let Le=new Te(Object.assign(Object.assign({},s),{description:I,status:y.status,priority:We,recurrence:Tr,startDate:Ae,scheduledDate:Ce,dueDate:rt,doneDate:window.moment(y.doneDate,"YYYY-MM-DD").isValid()?window.moment(y.doneDate,"YYYY-MM-DD"):null}));a([Le])},v=[[]];function k(){y.description=this.value,t(1,y),t(6,re),t(2,U),t(4,W),t(0,o)}function S(I){Mo[I?"unshift":"push"](()=>{T=I,t(10,T)})}function O(){y.priority=this.__value,t(1,y),t(6,re),t(2,U),t(4,W),t(0,o)}function D(){y.recurrenceRule=this.value,t(1,y),t(6,re),t(2,U),t(4,W),t(0,o)}function P(){y.dueDate=this.value,t(1,y),t(6,re),t(2,U),t(4,W),t(0,o)}function me(){y.scheduledDate=this.value,t(1,y),t(6,re),t(2,U),t(4,W),t(0,o)}function ae(){y.startDate=this.value,t(1,y),t(6,re),t(2,U),t(4,W),t(0,o)}function te(){y.forwardOnly=this.checked,t(1,y),t(6,re),t(2,U),t(4,W),t(0,o)}function De(){y.status=ET(this),t(1,y),t(6,re),t(2,U),t(4,W),t(0,o)}return r.$$set=I=>{"task"in I&&t(26,s=I.task),"onSubmit"in I&&t(27,a=I.onSubmit),"statusOptions"in I&&t(0,o=I.statusOptions)},r.$$.update=()=>{if(r.$$.dirty[0]&512){e:t(15,n=I=>j?I:null)}if(r.$$.dirty[0]&66){e:t(1,y.dueDate=ai(y.dueDate),y),t(6,re=C("due",y.dueDate)),t(7,ve=!re.includes("invalid"))}if(r.$$.dirty[0]&6){e:t(1,y.startDate=ai(y.startDate),y),t(2,U=C("start",y.startDate)),t(3,q=!U.includes("invalid"))}if(r.$$.dirty[0]&18){e:t(1,y.scheduledDate=ai(y.scheduledDate),y),t(4,W=C("scheduled",y.scheduledDate)),t(5,ie=!W.includes("invalid"))}if(r.$$.dirty[0]&268435458){e:if(t(8,K=!0),!y.recurrenceRule)t(12,G="not recurring");else{let I=t(28,i=et.fromText({recurrenceRuleText:y.recurrenceRule,startDate:null,scheduledDate:null,dueDate:null}))===null||i===void 0?void 0:i.toText();I?t(12,G=I):(t(12,G="invalid recurrence rule"),t(8,K=!1))}}if(r.$$.dirty[0]&2){e:t(29,E=y.description.trim()!=="")}if(r.$$.dirty[0]&536871336){e:t(14,A=ve&&K&&ie&&q&&E)}if(r.$$.dirty[0]&2){e:t(11,M=B("created",y.createdDate)),t(13,Pe=B("done",y.doneDate))}},[o,y,U,q,W,ie,re,ve,K,j,T,M,G,Pe,A,n,l,c,p,m,w,d,f,h,g,_,s,a,i,E,k,S,O,v,D,P,me,ae,te,De]}var Ff=class extends xo{constructor(e){super(),OT(this,e,iA,nA,gT,{task:26,onSubmit:27,statusOptions:0},null,[-1,-1])}},xT=Ff;var nn=class extends AT.Modal{constructor({app:t,task:n,onSubmit:i}){super(t);this.task=n,this.onSubmit=s=>{s.length&&i(s),this.close()}}onOpen(){this.titleEl.setText("Create or edit Task");let{contentEl:t}=this,n=this.getKnownStatusesAndCurrentTaskStatusIfNotKnown();new xT({target:t,props:{task:this.task,statusOptions:n,onSubmit:this.onSubmit}})}getKnownStatusesAndCurrentTaskStatusIfNotKnown(){let t=Se.getInstance().registeredStatuses;return Se.getInstance().bySymbol(this.task.status.symbol)===J.EMPTY&&t.push(this.task.status),t}onClose(){let{contentEl:t}=this;t.empty()}};var Ao=({line:r,path:e})=>{var T,y;let t=Te.parseTaskSignifiers(r,ot.fromUnknownPosition(e),Ot.fromPath(e));if(t!==null)return t;let{setCreatedDate:n}=Q(),i=n?window.moment():null,s=r.match(H.nonTaskRegex);if(s===null)return console.error("Tasks: Cannot create task on line:",r),new Te({status:J.TODO,description:"",taskLocation:ot.fromUnknownPosition(e),indentation:"",listMarker:"-",priority:"3",createdDate:i,startDate:null,scheduledDate:null,dueDate:null,doneDate:null,recurrence:null,blockLink:"",tags:[],originalMarkdown:"",scheduledDateIsInferred:!1});let a=s[1],o=(T=s[2])!=null?T:"-",u=(y=s[4])!=null?y:" ",l=Se.getInstance().bySymbolOrCreate(u),c=s[5],p=r.match(H.blockLinkRegex),m=p!==null?p[0]:"";return m!==""&&(c=c.replace(H.blockLinkRegex,"")),new Te({status:l,description:c,taskLocation:ot.fromUnknownPosition(e),indentation:a,listMarker:o,blockLink:m,priority:"3",createdDate:i,startDate:null,scheduledDate:null,dueDate:null,doneDate:null,recurrence:null,tags:[],originalMarkdown:"",scheduledDateIsInferred:!1})};var CT=(r,e,t,n)=>{var p;if(r)return t instanceof Lf.MarkdownView;if(!(t instanceof Lf.MarkdownView))return;let i=(p=t.file)==null?void 0:p.path;if(i===void 0)return;let a=e.getCursor().line,o=e.getLine(a),u=Ao({line:o,path:i}),l=m=>{let T=Ot.removeInferredStatusIfNeeded(u,m).map(y=>y.toFileLineString()).join(` -`);e.setLine(a,T)};new nn({app:n,task:u,onSubmit:l}).open()};var Uf=require("obsidian");var PT=(r,e,t)=>{var u;if(r)return t instanceof Uf.MarkdownView;if(!(t instanceof Uf.MarkdownView))return;let n=(u=t.file)==null?void 0:u.path;if(n===void 0)return;let i=e.getCursor(),s=i.line,a=e.getLine(s),o=sA(a,n);e.setLine(s,o.text),e.setCursor(aA(i,o))},sA=(r,e)=>{let t=Te.fromLine({line:r,taskLocation:ot.fromUnknownPosition(e),fallbackDate:null});if(t!==null){let n=t.toggleWithRecurrenceInUsersOrder().map(i=>i.toFileLineString());return{text:n.join(` -`),moveTo:{line:n.length-1}}}else{let n=r.match(H.taskRegex);if(n!==null){let i=n[3],a=Se.getInstance().bySymbol(i).nextStatusSymbol;return{text:r.replace(H.taskRegex,`$1- [${a}] $4`)}}else if(H.listItemRegex.test(r)){let i=r.replace(H.listItemRegex,"$1$2 [ ]");return{text:i,moveTo:{ch:i.length}}}else{let i=r.replace(H.indentationRegex,"$1- ");return{text:i,moveTo:{ch:i.length}}}}},aA=(r,e)=>{var s;let t={line:0,ch:r.ch},n=he(he({},t),(s=e.moveTo)!=null?s:{}),i=e.text.split(` -`)[n.line].length;return{line:r.line+n.line,ch:Math.min(n.ch,i)}};var Co=class{get app(){return this.plugin.app}constructor({plugin:e}){this.plugin=e,e.addCommand({id:"edit-task",name:"Create or edit task",icon:"pencil",editorCheckCallback:(t,n,i)=>CT(t,n,i,this.app)}),e.addCommand({id:"toggle-done",name:"Toggle task done",icon:"check-in-circle",editorCheckCallback:PT})}};var Po=class{constructor({obsidianEvents:e}){this.obsidianEvents=e}onCacheUpdate(e){return this.obsidianEvents.on("obsidian-tasks-plugin:cache-update",e)}triggerCacheUpdate(e){this.obsidianEvents.trigger("obsidian-tasks-plugin:cache-update",e)}onRequestCacheUpdate(e){return this.obsidianEvents.on("obsidian-tasks-plugin:request-cache-update",e)}triggerRequestCacheUpdate(e){this.obsidianEvents.trigger("obsidian-tasks-plugin:request-cache-update",e)}off(e){this.obsidianEvents.offref(e)}};var NT=require("obsidian");var No=class{constructor({plugin:e}){this.markdownPostProcessor=this._markdownPostProcessor.bind(this);e.registerMarkdownPostProcessor(this._markdownPostProcessor.bind(this))}_markdownPostProcessor(e,t){return F(this,null,function*(){var c;let n=new NT.MarkdownRenderChild(e);t.addChild(n);let i=e.findAll(".task-list-item").filter(p=>{var y;let m=(y=p.textContent)==null?void 0:y.split(` -`);if(m===void 0)return!1;let T=null;for(let E=0;EIT.ViewPlugin.fromClass(Wf),Wf=class{constructor(e){this.view=e,this.handleClickEvent=this.handleClickEvent.bind(this),this.view.dom.addEventListener("click",this.handleClickEvent)}destroy(){this.view.dom.removeEventListener("click",this.handleClickEvent)}handleClickEvent(e){let{target:t}=e;if(!t||!(t instanceof HTMLInputElement)||t.type!=="checkbox")return!1;let n=t.closest("ul.plugin-tasks-query-result, div.callout-content");if(n){if(n.matches("div.callout-content")){let m=`obsidian-tasks-plugin warning: Tasks cannot add or remove completion dates or make the next copy of a recurring task for tasks written inside a callout when you click their checkboxes in Live Preview. -If you wanted Tasks to do these things, please undo your change, then either click the line of the task and use the "Toggle Task Done" command, or switch to Reading View to click the checkbox.`;console.warn(m),new FT.Notice(m,45e3)}return!1}let{state:i}=this.view,s=this.view.posAtDOM(t),a=i.doc.lineAt(s),o=Te.fromLine({line:a.text,taskLocation:ot.fromUnknownPosition(""),fallbackDate:null});if(console.debug(`Live Preview Extension: toggle called. Position: ${s} Line: ${a.text}`),o===null)return!1;e.preventDefault();let l=o.toggleWithRecurrenceInUsersOrder().map(m=>m.toFileLineString()).join(i.lineBreak),c=i.update({changes:{from:a.from,to:a.to,insert:l}});this.view.dispatch(c);let p=t.checked;return setTimeout(()=>{t.checked=p},1),!0}};var Mi=require("obsidian");function na(r,e){let t=`Error: ${r}. The error message was:`,n="";return e instanceof Error?n+=e:n+="Unknown error",`${t} "${n}"`}var Ir=class{constructor(e,t,n){this.property=e,this.comparator=Ir.maybeReverse(n,t)}static maybeReverse(e,t){return e?Ir.makeReversedComparator(t):t}static makeReversedComparator(e){return(t,n)=>e(t,n)*-1}};var sn=class{constructor(e,t,n){this.property=e,this.grouper=t,this.reverse=n}};var ke=class{canCreateFilterForLine(e){return ke.lineMatchesFilter(this.filterRegExp(),e)}static lineMatchesFilter(e,t){return e?e.test(t):!1}static getMatch(e,t){return e?t.match(e):null}fieldNameSingular(){return this.fieldName()}fieldNameSingularEscaped(){return Eo(this.fieldNameSingular())}supportsSorting(){return!1}createSorterFromLine(e){if(!this.supportsSorting())return null;let t=ke.getMatch(this.sorterRegExp(),e);if(t===null)return null;let n=!!t[1];return this.createSorter(n)}sorterRegExp(){if(!this.supportsSorting())throw Error(`sorterRegExp() unimplemented for ${this.fieldNameSingular()}`);return new RegExp(`^sort by ${this.fieldNameSingularEscaped()}( reverse)?`)}comparator(){throw Error(`comparator() unimplemented for ${this.fieldNameSingular()}`)}createSorter(e){return new Ir(this.fieldNameSingular(),this.comparator(),e)}createNormalSorter(){return this.createSorter(!1)}createReverseSorter(){return this.createSorter(!0)}supportsGrouping(){return!1}createGrouperFromLine(e){if(!this.supportsGrouping())return null;let t=ke.getMatch(this.grouperRegExp(),e);if(t===null)return null;let n=!!t[1];return this.createGrouper(n)}grouperRegExp(){if(!this.supportsGrouping())throw Error(`grouperRegExp() unimplemented for ${this.fieldNameSingular()}`);return new RegExp(`^group by ${this.fieldNameSingularEscaped()}( reverse)?$`)}grouper(){throw Error(`grouper() unimplemented for ${this.fieldNameSingular()}`)}createGrouper(e){return new sn(this.fieldNameSingular(),this.grouper(),e)}createNormalGrouper(){return this.createGrouper(!1)}createReverseGrouper(){return this.createGrouper(!0)}};var Re=class{constructor(e,t=[],n=""){this.description=e,this.symbol=n,this.children=t}static booleanAnd(e){return this.combineOrCreateExplanation("All of",e,"AND")}static booleanOr(e){return this.combineOrCreateExplanation("At least one of",e,"OR")}static booleanNot(e){return new Re("None of",e,"NOT")}static booleanXor(e){return new Re("Exactly one of",e,"XOR")}asString(e=""){if(this.children.length==0)return e+this.description;let t=e;this.symbol===""?t+=this.description:(t+=this.symbol,this.children.length>1&&(t+=` (${this.description})`),t+=":");let n=e+" ";for(let i=0;i=e)return n;return null}static getPrecedingHeader(e,t){if(t===void 0)return null;let n=null;for(let i of t){if(i.position.start.line>e)return n;n=i.heading}return n}};var Zf=require("obsidian");var Sb=require("obsidian");function Hr(){}function Gf(r){return r()}function lb(){return Object.create(null)}function Wn(r){r.forEach(Gf)}function qo(r){return typeof r=="function"}function db(r,e){return r!=r?e==e:r!==e||r&&typeof r=="object"||typeof r=="function"}function fb(r){return Object.keys(r).length===0}var pb=typeof window!="undefined"?window:typeof globalThis!="undefined"?globalThis:global,pa=class{constructor(e){this.options=e,this._listeners="WeakMap"in pb?new WeakMap:void 0}observe(e,t){return this._listeners.set(e,t),this._getObserver().observe(e,this.options),()=>{this._listeners.delete(e),this._observer.unobserve(e)}}_getObserver(){var e;return(e=this._observer)!==null&&e!==void 0?e:this._observer=new ResizeObserver(t=>{var n;for(let i of t)pa.entries.set(i.target,i),(n=this._listeners.get(i.target))===null||n===void 0||n(i)})}};pa.entries="WeakMap"in pb?new WeakMap:void 0;var hb=!1;function QM(){hb=!0}function XM(){hb=!1}function R(r,e){r.appendChild(e)}function Di(r,e,t){r.insertBefore(e,t||null)}function qn(r){r.parentNode&&r.parentNode.removeChild(r)}function Bf(r,e){for(let t=0;tr.removeEventListener(e,t,n)}function mb(r){return function(e){return e.preventDefault(),r.call(this,e)}}function L(r,e,t){t==null?r.removeAttribute(e):r.getAttribute(e)!==t&&r.setAttribute(e,t)}function gb(r){let e;return{p(...t){e=t,e.forEach(n=>r.push(n))},r(){e.forEach(t=>r.splice(r.indexOf(t),1))}}}function JM(r){return Array.from(r.childNodes)}function Hf(r,e){e=""+e,r.data!==e&&(r.data=e)}function ur(r,e){r.value=e==null?"":e}function zf(r,e,t){for(let n=0;nr.indexOf(n)===-1?e.push(n):t.push(n)),t.forEach(n=>n()),Si=e}var sA=new Set;function aA(r,e){r&&r.i&&(sA.delete(r),r.i(e))}var oA=["allowfullscreen","allowpaymentrequest","async","autofocus","autoplay","checked","controls","default","defer","disabled","formnovalidate","hidden","inert","ismap","loop","multiple","muted","nomodule","novalidate","open","playsinline","readonly","required","reversed","selected"],lU=new Set([...oA]);function uA(r,e,t,n){let{fragment:i,after_update:s}=r.$$;i&&i.m(e,t),n||ma(()=>{let a=r.$$.on_mount.map(Gf).filter(qo);r.$$.on_destroy?r.$$.on_destroy.push(...a):Wn(a),r.$$.on_mount=[]}),s.forEach(ma)}function bb(r,e){let t=r.$$;t.fragment!==null&&(iA(t.after_update),Wn(t.on_destroy),t.fragment&&t.fragment.d(e),t.on_destroy=t.fragment=null,t.ctx=[])}function lA(r,e){r.$$.dirty[0]===-1&&(Oi.push(r),rA(),r.$$.dirty.fill(0)),r.$$.dirty[e/31|0]|=1<{let y=_.length?_[0]:h;return l.ctx&&i(l.ctx[p],l.ctx[p]=y)&&(!l.skip_bound&&l.bound[p]&&l.bound[p](y),c&&lA(r,p)),h}):[],l.update(),c=!0,Wn(l.before_update),l.fragment=n?n(l.ctx):!1,e.target){if(e.hydrate){QM();let p=JM(e.target);l.fragment&&l.fragment.l(p),p.forEach(qn)}else l.fragment&&l.fragment.c();e.intro&&aA(r.$$.fragment),uA(r,e.target,e.anchor,e.customElement),XM(),Tb()}fa(u)}var cA;typeof HTMLElement=="function"&&(cA=class extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"})}connectedCallback(){let{on_mount:r}=this.$$;this.$$.on_disconnect=r.map(Gf).filter(qo);for(let e in this.$$.slotted)this.appendChild(this.$$.slotted[e])}attributeChangedCallback(r,e,t){this[r]=t}disconnectedCallback(){Wn(this.$$.on_disconnect)}$destroy(){bb(this,1),this.$destroy=Hr}$on(r,e){if(!qo(e))return Hr;let t=this.$$.callbacks[r]||(this.$$.callbacks[r]=[]);return t.push(e),()=>{let n=t.indexOf(e);n!==-1&&t.splice(n,1)}}$set(r){this.$$set&&!fb(r)&&(this.$$.skip_bound=!0,this.$$set(r),this.$$.skip_bound=!1)}});var Yo=class{$destroy(){bb(this,1),this.$destroy=Hr}$on(e,t){if(!qo(t))return Hr;let n=this.$$.callbacks[e]||(this.$$.callbacks[e]=[]);return n.push(t),()=>{let i=n.indexOf(t);i!==-1&&n.splice(i,1)}}$set(e){this.$$set&&!fb(e)&&(this.$$.skip_bound=!0,this.$$set(e),this.$$.skip_bound=!1)}};var Qf=Ji(je());function vb(r,e,t){let n=r.slice();return n[45]=e[t],n}function Eb(r,e,t){let n=r.slice();return n[48]=e[t].value,n[49]=e[t].label,n[50]=e[t].symbol,n[51]=e[t].accessKey,n[52]=e[t].accessKeyIndex,n}function dA(r){let e,t=r[50]+"",n;return{c(){e=K("span"),n=dt(t)},m(i,s){Di(i,e,s),R(e,n)},p:Hr,d(i){i&&qn(e)}}}function wb(r){let e,t,n,i,s,a,o,u,l=r[49].substring(0,r[52])+"",c,p,h=r[49].substring(r[52],r[52]+1)+"",_,y,E=r[49].substring(r[52]+1)+"",x,P,N=r[50]&&r[50].charCodeAt(0)>=256,F,X,V,he,j,G=N&&dA(r);return V=gb(r[33][0]),{c(){e=K("span"),t=K("input"),a=de(),o=K("label"),u=K("span"),c=dt(l),p=K("span"),_=dt(h),y=K("span"),x=dt(E),P=de(),G&&G.c(),X=de(),L(t,"type","radio"),L(t,"id",n="priority-"+r[48]),t.__value=i=r[48],t.value=t.__value,L(t,"accesskey",s=r[15](r[51])),L(p,"class","accesskey"),L(o,"for",F="priority-"+r[48]),V.p(t)},m(Ce,Ie){Di(Ce,e,Ie),R(e,t),t.checked=t.__value===r[1].priority,R(e,a),R(e,o),R(o,u),R(u,c),R(o,p),R(p,_),R(o,y),R(y,x),R(o,P),G&&G.m(o,null),R(e,X),he||(j=Et(t,"change",r[32]),he=!0)},p(Ce,Ie){Ie[0]&32768&&s!==(s=Ce[15](Ce[51]))&&L(t,"accesskey",s),Ie[0]&3&&(t.checked=t.__value===Ce[1].priority),N&&G.p(Ce,Ie)},d(Ce){Ce&&qn(e),G&&G.d(),V.r(),he=!1,j()}}}function kb(r){let e,t=r[45].name+"",n,i,s=r[45].symbol+"",a,o,u;return{c(){e=K("option"),n=dt(t),i=dt(" ["),a=dt(s),o=dt("]"),e.__value=u=r[45],e.value=e.__value},m(l,c){Di(l,e,c),R(e,n),R(e,i),R(e,a),R(e,o)},p(l,c){c[0]&1&&t!==(t=l[45].name+"")&&Hf(n,t),c[0]&1&&s!==(s=l[45].symbol+"")&&Hf(a,s),c[0]&1&&u!==(u=l[45])&&(e.__value=u,e.value=e.__value)},d(l){l&&qn(e)}}}function fA(r){let e,t,n,i,s,a,o,u,l,c,p,h,_,y,E,x,P,N,F,X,V,he,j,G,Ce,Ie,B,A,w,H,C,Z,d,f,m,g,T,v,k,D,O,S,I,me,se,re,Se,U,xe,Ae,tt,Dr,Ue,Fe,Sp,Hi,Sa,Dp,fr,Da,Rp,Qn,Ra,xp,qt,xa,Mp,Qr,zi,Ma,Ap,Xr,Aa,Cp,Ki,Pu,Pp,Ca,Np,Vi,Nu,Ip,Pa,Fp,Xn,Tn,Lp,Na,Up,Qi,Iu,Wp,Zn=r[20],gt=[];for(let Y=0;Ytion',s=de(),a=K("textarea"),u=de(),l=K("div"),c=K("label"),p=dt("Priority"),_=de();for(let Y=0;Yart',Se=de(),U=K("input"),Ae=de(),tt=K("code"),Dr=dt(r[17]),Ue=de(),Fe=new Un(!1),Sp=de(),Hi=K("div"),Sa=K("label"),Sa.innerHTML=`Only + future dates:`,Dp=de(),fr=K("input"),Rp=de(),Qn=K("div"),Ra=K("label"),Ra.innerHTML='Status',xp=de(),qt=K("select");for(let Y=0;Yr[39].call(qt)),L(Qn,"class","tasks-modal-section"),L(Ma,"for","status"),L(Xr,"id","status"),L(Xr,"type","checkbox"),L(Xr,"class","task-list-item-checkbox tasks-modal-checkbox"),Xr.checked=Aa=r[1].status.isCompleted(),Xr.disabled=!0,L(Qr,"class","tasks-modal-section tasks-modal-status"),Tn.disabled=Na=!r[14],L(Tn,"type","submit"),L(Tn,"class","mod-cta"),L(Qi,"type","button"),L(Xn,"class","tasks-modal-section tasks-modal-buttons"),lr(t,"with-accesskeys",r[9]),L(e,"class","tasks-modal")},m(Y,fe){Di(Y,e,fe),R(e,t),R(t,n),R(n,i),R(n,s),R(n,a),ur(a,r[1].description),r[31](a),R(t,u),R(t,l),R(l,c),R(c,p),R(l,_);for(let le=0;leno ${U} date`;let tt=Qf.parseDate(xe,Ae,{forwardDate:Ae!=null});return tt!==null?window.moment(tt).format("YYYY-MM-DD"):`invalid ${U} date`}function C(U,xe){return H(U,xe,y.forwardOnly?new Date:void 0)}function Z(U){let xe=null,Ae=Qf.parseDate(U,new Date,{forwardDate:y.forwardOnly});return Ae!==null&&(xe=window.moment(Ae)),xe}Kf(()=>{let{provideAccessKeys:U}=Q();t(9,B=U);let xe=ge.getInstance().removeAsWordFrom(s.description);(xe!=s.description||!ge.getInstance().includedIn(s.description))&&(Ie=!0);let Ae="none";s.priority==="5"?Ae="lowest":s.priority==="4"?Ae="low":s.priority==="2"?Ae="medium":s.priority==="1"?Ae="high":s.priority==="0"&&(Ae="highest"),t(1,y={description:xe,status:s.status,priority:Ae,recurrenceRule:s.recurrence?s.recurrence.toText():"",createdDate:new vt(s.createdDate).formatAsDate(),startDate:new vt(s.startDate).formatAsDate(),scheduledDate:new vt(s.scheduledDate).formatAsDate(),dueDate:new vt(s.dueDate).formatAsDate(),doneDate:new vt(s.doneDate).formatAsDate(),forwardOnly:!0}),setTimeout(()=>{_.focus()},10)});let d=U=>{if(U.key&&!U.altKey&&!U.ctrlKey){let xe=w.find(Ae=>Ae.label.charAt(0).toLowerCase()==U.key);xe&&t(1,y.priority=xe.value,y)}},f=()=>{a([])},m=U=>{U.key==="Enter"&&(U.preventDefault(),A&&T())},g=()=>{setTimeout(()=>{t(1,y.description=y.description.replace(/[\r\n]+/g," "),y)},0)},T=()=>{let U=y.description.trim();Ie&&(U=ge.getInstance().prependTo(U));let xe=Z(y.startDate),Ae=Z(y.scheduledDate),tt=Z(y.dueDate),Dr=null;y.recurrenceRule&&(Dr=Ze.fromText({recurrenceRuleText:y.recurrenceRule,startDate:xe,scheduledDate:Ae,dueDate:tt}));let Ue;switch(y.priority){case"lowest":Ue="5";break;case"low":Ue="4";break;case"medium":Ue="2";break;case"high":Ue="1";break;case"highest":Ue="0";break;default:Ue="3"}let Fe=new ye(Object.assign(Object.assign({},s),{description:U,status:y.status,priority:Ue,recurrence:Dr,startDate:xe,scheduledDate:Ae,dueDate:tt,doneDate:window.moment(y.doneDate,"YYYY-MM-DD").isValid()?window.moment(y.doneDate,"YYYY-MM-DD"):null}));a([Fe])},v=[[]];function k(){y.description=this.value,t(1,y),t(6,V),t(2,P),t(4,F),t(0,o)}function D(U){$o[U?"unshift":"push"](()=>{_=U,t(10,_)})}function O(){y.priority=this.__value,t(1,y),t(6,V),t(2,P),t(4,F),t(0,o)}function S(){y.recurrenceRule=this.value,t(1,y),t(6,V),t(2,P),t(4,F),t(0,o)}function I(){y.dueDate=this.value,t(1,y),t(6,V),t(2,P),t(4,F),t(0,o)}function me(){y.scheduledDate=this.value,t(1,y),t(6,V),t(2,P),t(4,F),t(0,o)}function se(){y.startDate=this.value,t(1,y),t(6,V),t(2,P),t(4,F),t(0,o)}function re(){y.forwardOnly=this.checked,t(1,y),t(6,V),t(2,P),t(4,F),t(0,o)}function Se(){y.status=yb(this),t(1,y),t(6,V),t(2,P),t(4,F),t(0,o)}return r.$$set=U=>{"task"in U&&t(26,s=U.task),"onSubmit"in U&&t(27,a=U.onSubmit),"statusOptions"in U&&t(0,o=U.statusOptions)},r.$$.update=()=>{if(r.$$.dirty[0]&512){e:t(15,n=U=>B?U:null)}if(r.$$.dirty[0]&66){e:t(1,y.dueDate=gi(y.dueDate),y),t(6,V=C("due",y.dueDate)),t(7,he=!V.includes("invalid"))}if(r.$$.dirty[0]&6){e:t(1,y.startDate=gi(y.startDate),y),t(2,P=C("start",y.startDate)),t(3,N=!P.includes("invalid"))}if(r.$$.dirty[0]&18){e:t(1,y.scheduledDate=gi(y.scheduledDate),y),t(4,F=C("scheduled",y.scheduledDate)),t(5,X=!F.includes("invalid"))}if(r.$$.dirty[0]&268435458){e:if(t(8,G=!0),!y.recurrenceRule)t(12,j="not recurring");else{let U=t(28,i=Ze.fromText({recurrenceRuleText:y.recurrenceRule,startDate:null,scheduledDate:null,dueDate:null}))===null||i===void 0?void 0:i.toText();U?!y.startDate&&!y.scheduledDate&&!y.dueDate?(t(12,j="due, scheduled or start date required"),t(8,G=!1)):t(12,j=U):(t(12,j="invalid recurrence rule"),t(8,G=!1))}}if(r.$$.dirty[0]&2){e:t(29,E=y.description.trim()!=="")}if(r.$$.dirty[0]&536871336){e:t(14,A=he&&G&&X&&N&&E)}if(r.$$.dirty[0]&2){e:t(11,x=H("created",y.createdDate)),t(13,Ce=H("done",y.doneDate))}},[o,y,P,N,F,X,V,he,G,B,_,x,j,Ce,A,n,l,c,p,h,w,d,f,m,g,T,s,a,i,E,k,D,O,v,S,I,me,se,re,Se]}var Xf=class extends Yo{constructor(e){super(),_b(this,e,pA,fA,db,{task:26,onSubmit:27,statusOptions:0},null,[-1,-1])}},Ob=Xf;var dn=class extends Sb.Modal{constructor({app:t,task:n,onSubmit:i}){super(t);this.task=n,this.onSubmit=s=>{s.length&&i(s),this.close()}}onOpen(){this.titleEl.setText("Create or edit Task");let{contentEl:t}=this,n=this.getKnownStatusesAndCurrentTaskStatusIfNotKnown();new Ob({target:t,props:{task:this.task,statusOptions:n,onSubmit:this.onSubmit}})}getKnownStatusesAndCurrentTaskStatusIfNotKnown(){let t=De.getInstance().registeredStatuses;return De.getInstance().bySymbol(this.task.status.symbol)===te.EMPTY&&t.push(this.task.status),t}onClose(){let{contentEl:t}=this;t.empty()}};function hA(){let{setCreatedDate:r}=Q();return r?window.moment():null}function mA(r){let{setCreatedDate:e}=Q();if(!e||r.createdDate!==null)return!1;let t=r.description==="",n=!ge.getInstance().isEmpty(),i=!ge.getInstance().includedIn(r.description);return t||n&&i}var jo=({line:r,path:e})=>{var h,_;let t=ye.parseTaskSignifiers(r,ot.fromUnknownPosition(e),Rt.fromPath(e)),n=hA();if(t!==null)return mA(t)?new ye(Tt(pe({},t),{createdDate:n})):t;let i=r.match(z.nonTaskRegex);if(i===null)return console.error("Tasks: Cannot create task on line:",r),new ye({status:te.TODO,description:"",taskLocation:ot.fromUnknownPosition(e),indentation:"",listMarker:"-",priority:"3",createdDate:n,startDate:null,scheduledDate:null,dueDate:null,doneDate:null,recurrence:null,blockLink:"",tags:[],originalMarkdown:"",scheduledDateIsInferred:!1});let s=i[1],a=(h=i[2])!=null?h:"-",o=(_=i[4])!=null?_:" ",u=De.getInstance().bySymbolOrCreate(o),l=i[5],c=r.match(z.blockLinkRegex),p=c!==null?c[0]:"";return p!==""&&(l=l.replace(z.blockLinkRegex,"")),new ye({status:u,description:l,taskLocation:ot.fromUnknownPosition(e),indentation:s,listMarker:a,blockLink:p,priority:"3",createdDate:n,startDate:null,scheduledDate:null,dueDate:null,doneDate:null,recurrence:null,tags:[],originalMarkdown:"",scheduledDateIsInferred:!1})};var Db=(r,e,t,n)=>{var p;if(r)return t instanceof Zf.MarkdownView;if(!(t instanceof Zf.MarkdownView))return;let i=(p=t.file)==null?void 0:p.path;if(i===void 0)return;let a=e.getCursor().line,o=e.getLine(a),u=jo({line:o,path:i}),l=h=>{let _=Rt.removeInferredStatusIfNeeded(u,h).map(y=>y.toFileLineString()).join(` +`);e.setLine(a,_)};new dn({app:n,task:u,onSubmit:l}).open()};var Jf=require("obsidian");var Rb=(r,e,t)=>{var u;if(r)return t instanceof Jf.MarkdownView;if(!(t instanceof Jf.MarkdownView))return;let n=(u=t.file)==null?void 0:u.path;if(n===void 0)return;let i=e.getCursor(),s=i.line,a=e.getLine(s),o=gA(a,n);e.setLine(s,o.text),e.setCursor(yA(i,o))},gA=(r,e)=>{let t=ye.fromLine({line:r,taskLocation:ot.fromUnknownPosition(e),fallbackDate:null});if(t!==null){let n=t.toggleWithRecurrenceInUsersOrder().map(i=>i.toFileLineString());return{text:n.join(` +`),moveTo:{line:n.length-1}}}else{let n=r.match(z.taskRegex);if(n!==null){let i=n[3],a=De.getInstance().bySymbol(i).nextStatusSymbol;return{text:r.replace(z.taskRegex,`$1- [${a}] $4`)}}else if(z.listItemRegex.test(r)){let i=r.replace(z.listItemRegex,"$1$2 [ ]");return{text:i,moveTo:{ch:i.length}}}else{let i=r.replace(z.indentationRegex,"$1- ");return{text:i,moveTo:{ch:i.length}}}}},yA=(r,e)=>{var s;let t={line:0,ch:r.ch},n=pe(pe({},t),(s=e.moveTo)!=null?s:{}),i=e.text.split(` +`)[n.line].length;return{line:r.line+n.line,ch:Math.min(n.ch,i)}};var Go=class{get app(){return this.plugin.app}constructor({plugin:e}){this.plugin=e,e.addCommand({id:"edit-task",name:"Create or edit task",icon:"pencil",editorCheckCallback:(t,n,i)=>Db(t,n,i,this.app)}),e.addCommand({id:"toggle-done",name:"Toggle task done",icon:"check-in-circle",editorCheckCallback:Rb})}};var TA=Object.prototype.toString,xi=Array.isArray||function(e){return TA.call(e)==="[object Array]"};function tp(r){return typeof r=="function"}function bA(r){return xi(r)?"array":typeof r}function ep(r){return r.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}function xb(r,e){return r!=null&&typeof r=="object"&&e in r}function _A(r,e){return r!=null&&typeof r!="object"&&r.hasOwnProperty&&r.hasOwnProperty(e)}var vA=RegExp.prototype.test;function EA(r,e){return vA.call(r,e)}var wA=/\S/;function kA(r){return!EA(wA,r)}var OA={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/","`":"`","=":"="};function SA(r){return String(r).replace(/[&<>"'`=\/]/g,function(t){return OA[t]})}var DA=/\s*/,RA=/\s+/,Mb=/\s*=/,xA=/\s*\}/,MA=/#|\^|\/|>|\{|&|=|!/;function AA(r,e){if(!r)return[];var t=!1,n=[],i=[],s=[],a=!1,o=!1,u="",l=0;function c(){if(a&&!o)for(;s.length;)delete i[s.pop()];else s=[];a=!1,o=!1}var p,h,_;function y(G){if(typeof G=="string"&&(G=G.split(RA,2)),!xi(G)||G.length!==2)throw new Error("Invalid tags: "+G);p=new RegExp(ep(G[0])+"\\s*"),h=new RegExp("\\s*"+ep(G[1])),_=new RegExp("\\s*"+ep("}"+G[1]))}y(e||Xt.tags);for(var E=new ya(r),x,P,N,F,X,V;!E.eos();){if(x=E.pos,N=E.scanUntil(p),N)for(var he=0,j=N.length;he"?X=[P,N,x,E.pos,u,l,t]:X=[P,N,x,E.pos],l++,i.push(X),P==="#"||P==="^")n.push(X);else if(P==="/"){if(V=n.pop(),!V)throw new Error('Unopened section "'+N+'" at '+x);if(V[1]!==N)throw new Error('Unclosed section "'+V[1]+'" at '+x)}else P==="name"||P==="{"||P==="&"?o=!0:P==="="&&y(N)}if(c(),V=n.pop(),V)throw new Error('Unclosed section "'+V[1]+'" at '+E.pos);return PA(CA(i))}function CA(r){for(var e=[],t,n,i=0,s=r.length;i0?n[n.length-1][4]:e;break;default:t.push(i)}return e}function ya(r){this.string=r,this.tail=r,this.pos=0}ya.prototype.eos=function(){return this.tail===""};ya.prototype.scan=function(e){var t=this.tail.match(e);if(!t||t.index!==0)return"";var n=t[0];return this.tail=this.tail.substring(n.length),this.pos+=n.length,n};ya.prototype.scanUntil=function(e){var t=this.tail.search(e),n;switch(t){case-1:n=this.tail,this.tail="";break;case 0:n="";break;default:n=this.tail.substring(0,t),this.tail=this.tail.substring(t)}return this.pos+=n.length,n};function Ri(r,e){this.view=r,this.cache={".":this.view},this.parent=e}Ri.prototype.push=function(e){return new Ri(e,this)};Ri.prototype.lookup=function(e){var t=this.cache,n;if(t.hasOwnProperty(e))n=t[e];else{for(var i=this,s,a,o,u=!1;i;){if(e.indexOf(".")>0)for(s=i.view,a=e.split("."),o=0;s!=null&&o"?l=this.renderPartial(o,t,n,s):u==="&"?l=this.unescapedValue(o,t):u==="name"?l=this.escapedValue(o,t,s):u==="text"&&(l=this.rawValue(o)),l!==void 0&&(a+=l);return a};wt.prototype.renderSection=function(e,t,n,i,s){var a=this,o="",u=t.lookup(e[1]);function l(h){return a.render(h,t,n,s)}if(!!u){if(xi(u))for(var c=0,p=u.length;c0||!n)&&(s[a]=i+s[a]);return s.join(` +`)};wt.prototype.renderPartial=function(e,t,n,i){if(!!n){var s=this.getConfigTags(i),a=tp(n)?n(e[1]):n[e[1]];if(a!=null){var o=e[6],u=e[5],l=e[4],c=a;u==0&&l&&(c=this.indentPartial(a,l,o));var p=this.parse(c,s);return this.renderTokens(p,t,n,c,i)}}};wt.prototype.unescapedValue=function(e,t){var n=t.lookup(e[1]);if(n!=null)return n};wt.prototype.escapedValue=function(e,t,n){var i=this.getConfigEscape(n)||Xt.escape,s=t.lookup(e[1]);if(s!=null)return typeof s=="number"&&i===Xt.escape?String(s):i(s)};wt.prototype.rawValue=function(e){return e[1]};wt.prototype.getConfigTags=function(e){return xi(e)?e:e&&typeof e=="object"?e.tags:void 0};wt.prototype.getConfigEscape=function(e){if(e&&typeof e=="object"&&!xi(e))return e.escape};var Xt={name:"mustache.js",version:"4.2.0",tags:["{{","}}"],clearCache:void 0,escape:void 0,parse:void 0,render:void 0,Scanner:void 0,Context:void 0,Writer:void 0,set templateCache(r){ga.templateCache=r},get templateCache(){return ga.templateCache}},ga=new wt;Xt.clearCache=function(){return ga.clearCache()};Xt.parse=function(e,t){return ga.parse(e,t)};Xt.render=function(e,t,n,i){if(typeof e!="string")throw new TypeError('Invalid template! Template should be a "string" but "'+bA(e)+'" was given as the first argument for mustache#render(template, view, partials)');return ga.render(e,t,n,i)};Xt.escape=SA;Xt.Scanner=ya;Xt.Context=Ri;Xt.Writer=wt;var rp=Xt;var Ib=Ji(Nb());function Fb(r,e){rp.escape=function(t){return t};try{return rp.render(r,(0,Ib.default)(e))}catch(t){let n="";throw t instanceof Error?n=`There was an error expanding one or more placeholders. + +The error message was: + ${t.message.replace(/ > /g,".").replace("Missing Mustache data property","Unknown property")}`:n="Unknown error expanding placeholders.",n+=` + +The problem is in: + ${r}`,Error(n)}}function Lb(r){return{query:{file:new Ei(r)}}}function $n(r,e){let t=`Error: ${r}. +The error message was: + `,n="";return e instanceof Error?n+=e:n+="Unknown error",`${t}"${n}"`}var zr=class{constructor(e,t,n){this.property=e,this.comparator=zr.maybeReverse(n,t)}static maybeReverse(e,t){return e?zr.makeReversedComparator(t):t}static makeReversedComparator(e){return(t,n)=>e(t,n)*-1}};var fn=class{constructor(e,t,n){this.property=e,this.grouper=t,this.reverse=n}};var we=class{canCreateFilterForLine(e){return we.lineMatchesFilter(this.filterRegExp(),e)}static lineMatchesFilter(e,t){return e?e.test(t):!1}static getMatch(e,t){return e?t.match(e):null}fieldNameSingular(){return this.fieldName()}fieldNameSingularEscaped(){return Lo(this.fieldNameSingular())}supportsSorting(){return!1}createSorterFromLine(e){if(!this.supportsSorting())return null;let t=we.getMatch(this.sorterRegExp(),e);if(t===null)return null;let n=!!t[1];return this.createSorter(n)}sorterRegExp(){if(!this.supportsSorting())throw Error(`sorterRegExp() unimplemented for ${this.fieldNameSingular()}`);return new RegExp(`^sort by ${this.fieldNameSingularEscaped()}( reverse)?`)}comparator(){throw Error(`comparator() unimplemented for ${this.fieldNameSingular()}`)}createSorter(e){return new zr(this.fieldNameSingular(),this.comparator(),e)}createNormalSorter(){return this.createSorter(!1)}createReverseSorter(){return this.createSorter(!0)}supportsGrouping(){return!1}createGrouperFromLine(e){if(!this.supportsGrouping())return null;let t=we.getMatch(this.grouperRegExp(),e);if(t===null)return null;let n=!!t[1];return this.createGrouper(n)}grouperRegExp(){if(!this.supportsGrouping())throw Error(`grouperRegExp() unimplemented for ${this.fieldNameSingular()}`);return new RegExp(`^group by ${this.fieldNameSingularEscaped()}( reverse)?$`)}grouper(){throw Error(`grouper() unimplemented for ${this.fieldNameSingular()}`)}createGrouper(e){return new fn(this.fieldNameSingular(),this.grouper(),e)}createNormalGrouper(){return this.createGrouper(!1)}createReverseGrouper(){return this.createGrouper(!0)}};var ke=class{constructor(e,t=[],n=""){this.description=e,this.symbol=n,this.children=t}static booleanAnd(e){return this.combineOrCreateExplanation("All of",e,"AND")}static booleanOr(e){return this.combineOrCreateExplanation("At least one of",e,"OR")}static booleanNot(e){return new ke("None of",e,"NOT")}static booleanXor(e){return new ke("Exactly one of",e,"XOR")}asString(e=""){if(this.children.length==0)return e+this.description;let t=e;this.symbol===""?t+=this.description:(t+=this.symbol,this.children.length>1&&(t+=` (${this.description})`),t+=":");let n=e+" ";for(let i=0;i ${t.asString(" ")} -`}};var hr=class{constructor(e){this.instruction=e}get queryComponent(){return this._queryComponent}set queryComponent(e){this._queryComponent=e}get error(){return this._error}set error(e){this._error=e}static fromObject(e,t){let n=new hr(e);return n._queryComponent=t,n}static fromError(e,t){let n=new hr(e);return n._error=t,n}};var ee=class{constructor(e){this.object=e}get instruction(){return this.object.instruction}get filter(){return this.object.queryComponent}get error(){return this.object.error}get filterFunction(){if(this.filter)return this.filter.filterFunction}static fromFilter(e){return new ee(hr.fromObject(e.instruction,e))}static fromError(e,t){return new ee(hr.fromError(e,t))}};var Io=class{constructor(e,t){this._instruction=e,this._filter=t}canCreateFilterForLine(e){return e==this._instruction}createFilterOrErrorMessage(e){return e===this._instruction?ee.fromFilter(new ft(e,this._filter,new Re(e))):ee.fromError(e,`do not understand filter: ${e}`)}};var gr=class{constructor(){this._filters=[]}add(e,t){this._filters.push(new Io(e,t))}canCreateFilterForLine(e){for(let t of this._filters)if(t.canCreateFilterForLine(e))return!0;return!1}createFilterOrErrorMessage(e){for(let t of this._filters){let n=t.createFilterOrErrorMessage(e);if(n.error===void 0)return n}return ee.fromError(e,`do not understand filter: ${e}`)}};var an=class extends ke{constructor(){super(...arguments);this._filters=new gr}canCreateFilterForLine(t){return this._filters.canCreateFilterForLine(t)}createFilterOrErrorMessage(t){return this._filters.createFilterOrErrorMessage(t)}filterRegExp(){return null}};var yr=class extends an{constructor(){super(),this._filters.add("done",e=>e.isDone),this._filters.add("not done",e=>!e.isDone)}fieldName(){return"status"}supportsSorting(){return!0}comparator(){return(e,t)=>{let n=yr.oldStatusName(e),i=yr.oldStatusName(t);return ni?-1:0}}static oldStatusName(e){return e.status.symbol===" "?"Todo":"Done"}supportsGrouping(){return!0}grouper(){return e=>[yr.oldStatusName(e)]}};var pt=class extends ke{constructor(t=null){super();t!==null?this.filterInstructions=t:(this.filterInstructions=new gr,this.filterInstructions.add(`has ${this.fieldName()} date`,n=>this.date(n)!==null),this.filterInstructions.add(`no ${this.fieldName()} date`,n=>this.date(n)===null),this.filterInstructions.add(`${this.fieldName()} date is invalid`,n=>{let i=this.date(n);return i!==null&&!i.isValid()}))}canCreateFilterForLine(t){return this.filterInstructions.canCreateFilterForLine(t)?!0:super.canCreateFilterForLine(t)}createFilterOrErrorMessage(t){let n=this.filterInstructions.createFilterOrErrorMessage(t);if(n.filter!==void 0)return n;let i=ke.getMatch(this.filterRegExp(),t);if(i!==null){let s=i[1],a=i[2],o=i[3],u=xt.parseDateRange(o);if(!u.isValid()){let l=xt.parseDate(s);l.isValid()&&(u=new yt(l,l))}if(u.isValid()){let l=this.buildFilterFunction(a,u),c=pt.buildExplanation(this.fieldNameForExplanation(),a,this.filterResultIfFieldMissing(),u);return ee.fromFilter(new ft(t,l,c))}else return ee.fromError(t,"do not understand "+this.fieldName()+" date")}else return ee.fromError(t,"do not understand query filter ("+this.fieldName()+" date)")}buildFilterFunction(t,n){let i;return t==="before"?i=s=>s?s.isBefore(n.start):this.filterResultIfFieldMissing():t==="after"?i=s=>s?s.isAfter(n.end):this.filterResultIfFieldMissing():i=s=>s?s.isSameOrAfter(n.start)&&s.isSameOrBefore(n.end):this.filterResultIfFieldMissing(),this.getFilter(i)}getFilter(t){return n=>t(this.date(n))}filterRegExp(){return new RegExp(`^${this.fieldNameForFilterInstruction()} ((before|after|on|in)? ?(.*))`)}fieldNameForFilterInstruction(){return this.fieldName()}static buildExplanation(t,n,i,s){let a,o="YYYY-MM-DD (dddd Do MMMM YYYY)",u;switch(n){case"before":a=n,u=s.start.format(o);break;case"after":a=n,u=s.end.format(o);break;default:if(s.start.isSame(s.end))a="on",u=s.start.format(o);else{let c=`${t} date is between:`,p=[new Re(`${s.start.format(o)} and`),new Re(`${s.end.format(o)} inclusive`)];return i&&p.push(new Re(`OR no ${t} date`)),new Re(c,p)}break}let l=`${t} date is ${a} ${u}`;return i&&(l+=` OR no ${t} date`),new Re(l)}fieldNameForExplanation(){return this.fieldName()}supportsSorting(){return!0}comparator(){return(t,n)=>Ar(this.date(t),this.date(n))}supportsGrouping(){return!0}grouper(){return t=>{let n=this.date(t);return n===null?["No "+this.fieldName()+" date"]:[n.format("YYYY-MM-DD dddd")]}}};var gi=class extends pt{fieldName(){return"due"}date(e){return e.dueDate}filterResultIfFieldMissing(){return!1}};var qf=class extends ke{createFilterOrErrorMessage(e){let t=ke.getMatch(this.filterRegExp(),e);if(t!==null){let n=t[5],i=null;switch(n){case"lowest":i="5";break;case"low":i="4";break;case"none":i="3";break;case"medium":i="2";break;case"high":i="1";break;case"highest":i="0";break}if(i===null)return ee.fromError(e,"do not understand priority");let s=e,a;switch(t[3]){case"above":a=o=>o.priority.localeCompare(i)<0;break;case"below":a=o=>o.priority.localeCompare(i)>0;break;case"not":a=o=>o.priority!==i;break;default:a=o=>o.priority===i,s=`${this.fieldName()} is ${n}`}return ee.fromFilter(new ft(e,a,new Re(s)))}else return ee.fromError(e,"do not understand query filter (priority)")}fieldName(){return"priority"}filterRegExp(){return qf.priorityRegexp}supportsSorting(){return!0}comparator(){return(e,t)=>e.priority.localeCompare(t.priority)}supportsGrouping(){return!0}grouper(){return e=>{let t=mr.priorityNameUsingNormal(e.priority);return[`%%${e.priority}%%${t} priority`]}}},An=qf;An.priorityRegexp=/^priority(\s+is)?(\s+(above|below|not))?(\s+(lowest|low|none|medium|high|highest))$/;var yi=class{matchesAnyOf(e){return e.some(t=>this.matches(t))}};var _i=class extends yi{constructor(t){super();this.stringToFind=t}matches(t){return _i.stringIncludesCaseInsensitive(t,this.stringToFind)}static stringIncludesCaseInsensitive(t,n){return t.toLocaleLowerCase().includes(n.toLocaleLowerCase())}};var Ti=class extends yi{constructor(t){super();this.regex=t}static validateAndConstruct(t){let n=/\/((?![*+?])(?:[^\r\n[/\\]|\\.|\[(?:[^\r\n\]\\]|\\.)*])+)\/((?:g(?:im?|mi?)?|i(?:gm?|mg?)?|m(?:gi?|ig?)?)?)/,i=t.match(n);if(i!==null){let s=new RegExp(i[1],i[2]);return new Ti(s)}else return null}matches(t){return t.match(this.regex)!==null}};var xe=class extends ke{createFilterOrErrorMessage(e){let t=ke.getMatch(this.filterRegExp(),e);if(t===null)return ee.fromError(e,`do not understand query filter (${this.fieldName()})`);let[n,i,s]=t,a=null;if(i.includes("include"))a=new _i(s);else if(i.includes("regex")&&(a=Ti.validateAndConstruct(s),a===null))return ee.fromError(e,`cannot parse regex (${this.fieldName()}); check your leading and trailing slashes for your query`);if(a===null)return ee.fromError(e,`do not understand query filter (${this.fieldName()})`);let o=i.match(/not/)!==null,u=new ft(e,this.getFilter(a,o),new Re(e));return ee.fromFilter(u)}fieldPattern(){return this.fieldNameSingularEscaped()}filterOperatorPattern(){return"includes|does not include|regex matches|regex does not match"}filterRegExp(){return new RegExp(`^(?:${this.fieldPattern()}) (${this.filterOperatorPattern()}) (.*)`)}getFilter(e,t){return n=>{let i=e.matches(this.value(n));return t?!i:i}}comparator(){return(e,t)=>this.value(e).localeCompare(this.value(t),void 0,{numeric:!0})}grouper(){return e=>[this.value(e)]}static escapeMarkdownCharacters(e){return e.replace(/\\/g,"\\\\").replace(/_/g,"\\_")}};var bi=class extends xe{fieldName(){return"path"}value(e){return e.path}supportsSorting(){return!0}supportsGrouping(){return!0}grouper(){return e=>[xe.escapeMarkdownCharacters(e.path.replace(".md",""))]}};var vi=class extends ke{canCreateFilterForLine(e){return!1}createFilterOrErrorMessage(e){return ee.fromError(e,"Filtering by urgency is not yet supported")}fieldName(){return"urgency"}filterRegExp(){throw Error(`filterRegExp() unimplemented for ${this.fieldName()}`)}supportsSorting(){return!0}comparator(){return(e,t)=>t.urgency-e.urgency}supportsGrouping(){return!0}grouper(){return e=>[`${e.urgency.toFixed(2)}`]}createGrouper(e){return super.createGrouper(!e)}};var Ei=class{static by(e,t){let n=[new vi().comparator(),new yr().comparator(),new gi().comparator(),new An().comparator(),new bi().comparator()],i=[];for(let s of e)i.push(s.comparator);return t.sort(Ei.makeCompositeComparator([...i,...n]))}static makeCompositeComparator(e){return(t,n)=>{for(let i of e){let s=i(t,n);if(s!==0)return s}return 0}}};var Fo=class{constructor(e,t,n){this.nestingLevel=e,this.displayName=t,this.property=n}};var Lo=class{constructor(e,t){this.lastHeadingAtLevel=new Array;this.groupers=t;let i=e.keys().next().value.length;for(let s=0;st.set(o,a)),e.pop();return t}};var Wo=class extends Uo{},qo=class{constructor(e,t){this.root=new Wo(t),this.buildGroupingTree(e)}buildGroupingTree(e){let t=[this.root];for(let n of e){let i=[];for(let s of t)for(let a of s.values){let o=n.grouper(a);o.length===0&&o.push("");for(let u of o){let l=s.children.get(u);l===void 0&&(l=new Wo([]),s.children.set(u,l),i.push(l)),l.values.push(a)}}t=i}}generateTaskTreeStorage(){return this.root.generateAllPaths()}};var Yo=class{constructor(e,t){this.groups=e,this.groupHeadings=[],this.tasks=t}setGroupHeadings(e){for(let t of e)this.groupHeadings.push(t)}applyTaskLimit(e){this.tasks=this.tasks.slice(0,e)}tasksAsStringOfLines(){let e="";for(let t of this.tasks)e+=t.toFileLineString()+` +`}};var vr=class{constructor(e){this.instruction=e}get queryComponent(){return this._queryComponent}set queryComponent(e){this._queryComponent=e}get error(){return this._error}set error(e){this._error=e}static fromObject(e,t){let n=new vr(e);return n._queryComponent=t,n}static fromError(e,t){let n=new vr(e);return n._error=t,n}};var J=class{constructor(e){this.object=e}get instruction(){return this.object.instruction}get filter(){return this.object.queryComponent}get error(){return this.object.error}get filterFunction(){if(this.filter)return this.filter.filterFunction}static fromFilter(e){return new J(vr.fromObject(e.instruction,e))}static fromError(e,t){return new J(vr.fromError(e,t))}};var Bo=class{constructor(e,t){this._instruction=e,this._filter=t}canCreateFilterForLine(e){return e==this._instruction}createFilterOrErrorMessage(e){return e===this._instruction?J.fromFilter(new ft(e,this._filter,new ke(e))):J.fromError(e,`do not understand filter: ${e}`)}};var Er=class{constructor(){this._filters=[]}add(e,t){this._filters.push(new Bo(e,t))}canCreateFilterForLine(e){for(let t of this._filters)if(t.canCreateFilterForLine(e))return!0;return!1}createFilterOrErrorMessage(e){for(let t of this._filters){let n=t.createFilterOrErrorMessage(e);if(n.error===void 0)return n}return J.fromError(e,`do not understand filter: ${e}`)}};var pn=class extends we{constructor(){super(...arguments);this._filters=new Er}canCreateFilterForLine(t){return this._filters.canCreateFilterForLine(t)}createFilterOrErrorMessage(t){return this._filters.createFilterOrErrorMessage(t)}filterRegExp(){return null}};var wr=class extends pn{constructor(){super(),this._filters.add("done",e=>e.isDone),this._filters.add("not done",e=>!e.isDone)}fieldName(){return"status"}supportsSorting(){return!0}comparator(){return(e,t)=>{let n=wr.oldStatusName(e),i=wr.oldStatusName(t);return ni?-1:0}}static oldStatusName(e){return e.status.symbol===" "?"Todo":"Done"}supportsGrouping(){return!0}grouper(){return e=>[wr.oldStatusName(e)]}};var Ho=class{findUnexpandedDateText(e){let t=["<%","YYYY-MM-DD"];for(let n of t)if(e.includes(n))return this.unexpandedDateTextMessage(n);return null}unexpandedDateTextMessage(e){return`Instruction contains unexpanded template text: "${e}" - and cannot be interpreted. + +Possible causes: +- The query is an a template file, and is not intended to be searched. +- A command such as "Replace templates in the active file" needs to be run. +- The core "Daily notes" plugin is in use, and the template contained + date calculations that it does not support. +- Some sample template text was accidentally pasted in to a tasks query, + instead of in to a template file. + +See: https://publish.obsidian.md/tasks/Advanced/Instruction+contains+unexpanded+template+text +`}};var pt=class extends we{constructor(t=null){super();t!==null?this.filterInstructions=t:(this.filterInstructions=new Er,this.filterInstructions.add(`has ${this.fieldName()} date`,n=>this.date(n)!==null),this.filterInstructions.add(`no ${this.fieldName()} date`,n=>this.date(n)===null),this.filterInstructions.add(`${this.fieldName()} date is invalid`,n=>{let i=this.date(n);return i!==null&&!i.isValid()}))}canCreateFilterForLine(t){return this.filterInstructions.canCreateFilterForLine(t)?!0:super.canCreateFilterForLine(t)}createFilterOrErrorMessage(t){let n=this.checkForUnexpandedTemplateText(t);if(n)return J.fromError(t,n);let i=this.filterInstructions.createFilterOrErrorMessage(t);if(i.filter!==void 0)return i;let s=we.getMatch(this.filterRegExp(),t);if(s===null)return J.fromError(t,"do not understand query filter ("+this.fieldName()+" date)");let a=s[1],o=s[2],u=s[3],l=Ct.parseDateRange(u);if(!l.isValid()){let h=Ct.parseDate(a);h.isValid()&&(l=new _t(h,h))}if(!l.isValid())return J.fromError(t,"do not understand "+this.fieldName()+" date");let c=this.buildFilterFunction(o,l),p=pt.buildExplanation(this.fieldNameForExplanation(),o,this.filterResultIfFieldMissing(),l);return J.fromFilter(new ft(t,c,p))}buildFilterFunction(t,n){let i;switch(t){case"before":i=s=>s?s.isBefore(n.start):this.filterResultIfFieldMissing();break;case"after":i=s=>s?s.isAfter(n.end):this.filterResultIfFieldMissing();break;case"on or before":case"in or before":i=s=>s?s.isSameOrBefore(n.end):this.filterResultIfFieldMissing();break;case"on or after":case"in or after":i=s=>s?s.isSameOrAfter(n.start):this.filterResultIfFieldMissing();break;default:i=s=>s?s.isSameOrAfter(n.start)&&s.isSameOrBefore(n.end):this.filterResultIfFieldMissing()}return this.getFilter(i)}getFilter(t){return n=>t(this.date(n))}filterRegExp(){return new RegExp(`^${this.fieldNameForFilterInstruction()} (((?:on|in) or before|before|(?:on|in) or after|after|on|in)? ?(.*))`)}fieldNameForFilterInstruction(){return this.fieldName()}static buildExplanation(t,n,i,s){let a=n,o="YYYY-MM-DD (dddd Do MMMM YYYY)",u;switch(n){case"before":case"on or after":u=s.start.format(o);break;case"after":case"on or before":u=s.end.format(o);break;case"in or before":a="on or before",u=s.end.format(o);break;case"in or after":a="on or after",u=s.start.format(o);break;default:if(!s.start.isSame(s.end)){let c=`${t} date is between:`,p=[new ke(`${s.start.format(o)} and`),new ke(`${s.end.format(o)} inclusive`)];return i&&p.push(new ke(`OR no ${t} date`)),new ke(c,p)}a="on",u=s.start.format(o);break}let l=`${t} date is ${a} ${u}`;return i&&(l+=` OR no ${t} date`),new ke(l)}fieldNameForExplanation(){return this.fieldName()}supportsSorting(){return!0}comparator(){return(t,n)=>$r(this.date(t),this.date(n))}supportsGrouping(){return!0}grouper(){return t=>{let n=this.date(t);return n===null?["No "+this.fieldName()+" date"]:[n.format("YYYY-MM-DD dddd")]}}checkForUnexpandedTemplateText(t){return new Ho().findUnexpandedDateText(t)}};var Mi=class extends pt{fieldName(){return"due"}date(e){return e.dueDate}filterResultIfFieldMissing(){return!1}};var ip=class extends we{createFilterOrErrorMessage(e){let t=we.getMatch(this.filterRegExp(),e);if(t!==null){let n=t[5],i=null;switch(n){case"lowest":i="5";break;case"low":i="4";break;case"none":i="3";break;case"medium":i="2";break;case"high":i="1";break;case"highest":i="0";break}if(i===null)return J.fromError(e,"do not understand priority");let s=e,a;switch(t[3]){case"above":a=o=>o.priority.localeCompare(i)<0;break;case"below":a=o=>o.priority.localeCompare(i)>0;break;case"not":a=o=>o.priority!==i;break;default:a=o=>o.priority===i,s=`${this.fieldName()} is ${n}`}return J.fromFilter(new ft(e,a,new ke(s)))}else return J.fromError(e,"do not understand query filter (priority)")}fieldName(){return"priority"}filterRegExp(){return ip.priorityRegexp}supportsSorting(){return!0}comparator(){return(e,t)=>e.priority.localeCompare(t.priority)}supportsGrouping(){return!0}grouper(){return e=>[e.priorityNameGroupText]}},Yn=ip;Yn.priorityRegexp=/^priority(\s+is)?(\s+(above|below|not))?(\s+(lowest|low|none|medium|high|highest))$/;var Ai=class{matchesAnyOf(e){return e.some(t=>this.matches(t))}};var Ci=class extends Ai{constructor(t){super();this.stringToFind=t}matches(t){return Ci.stringIncludesCaseInsensitive(t,this.stringToFind)}static stringIncludesCaseInsensitive(t,n){return t.toLocaleLowerCase().includes(n.toLocaleLowerCase())}explanation(t){return new ke(t)}};var hn=class extends Ai{constructor(t){super();this.regex=t}static validateAndConstruct(t){let n=/^\/(.+)\/([^/]*)$/,i=t.match(n);if(i!==null){let s=new RegExp(i[1],i[2]);return new hn(s)}else return null}matches(t){return t.match(this.regex)!==null}static helpMessage(){return String.raw`See https://publish.obsidian.md/tasks/Queries/Regular+Expressions + +Regular expressions must look like this: + /pattern/ +or this: + /pattern/flags + +Where: +- pattern: The 'regular expression' pattern to search for. +- flags: Optional characters that modify the search. + i => make the search case-insensitive + u => add Unicode support + +Examples: /^Log/ + /^Log/i + /File Name\.md/ + /waiting|waits|waited/i + /\d\d:\d\d/ + +The following characters have special meaning in the pattern: +to find them literally, you must add a \ before them: + [\^$.|?*+() + +CAUTION! Regular expression (or 'regex') searching is a powerful +but advanced feature that requires thorough knowledge in order to +use successfully, and not miss intended search results. +`}explanation(t){let i=NA(t,"using regex: ",this.regexAsString());return new ke(i)}regexAsString(){let t=`'${this.regex.source}' with `;switch(this.regex.flags.length){case 0:t+="no flags";break;case 1:t+=`flag '${this.regex.flags}'`;break;default:t+=`flags '${this.regex.flags}'`;break}return t}};function NA(r,e,t){var o;let n=r.match(/\//);if(!n)return"Error explaining instruction. Could not find a slash character";let i=2,s=((o=n.index)!=null?o:i)-i;return`${e.padEnd(s)}${t}`}var Me=class extends we{createFilterOrErrorMessage(e){let t=we.getMatch(this.filterRegExp(),e);if(t===null)return J.fromError(e,`do not understand query filter (${this.fieldName()})`);let[n,i,s]=t,a=null;if(i.includes("include"))a=new Ci(s);else if(i.includes("regex")){try{a=hn.validateAndConstruct(s)}catch(l){let c=$n("Parsing regular expression",l)+` + +${hn.helpMessage()}`;return J.fromError(e,c)}if(a===null)return J.fromError(e,`Invalid instruction: '${e}' + +${hn.helpMessage()}`)}if(a===null)return J.fromError(e,`do not understand query filter (${this.fieldName()})`);let o=i.match(/not/)!==null,u=new ft(e,this.getFilter(a,o),a.explanation(e));return J.fromFilter(u)}fieldPattern(){return this.fieldNameSingularEscaped()}filterOperatorPattern(){return"includes|does not include|regex matches|regex does not match"}filterRegExp(){return new RegExp(`^(?:${this.fieldPattern()}) (${this.filterOperatorPattern()}) (.*)`)}getFilter(e,t){return n=>{let i=e.matches(this.value(n));return t?!i:i}}comparator(){return(e,t)=>this.value(e).localeCompare(this.value(t),void 0,{numeric:!0})}grouper(){return e=>[this.value(e)]}static escapeMarkdownCharacters(e){return e.replace(/\\/g,"\\\\").replace(/_/g,"\\_")}};var Pi=class extends Me{fieldName(){return"path"}value(e){return e.path}supportsSorting(){return!0}supportsGrouping(){return!0}grouper(){return e=>[Me.escapeMarkdownCharacters(e.path.replace(".md",""))]}};var Ni=class extends we{canCreateFilterForLine(e){return!1}createFilterOrErrorMessage(e){return J.fromError(e,"Filtering by urgency is not yet supported")}fieldName(){return"urgency"}filterRegExp(){throw Error(`filterRegExp() unimplemented for ${this.fieldName()}`)}supportsSorting(){return!0}comparator(){return(e,t)=>t.urgency-e.urgency}supportsGrouping(){return!0}grouper(){return e=>[`${e.urgency.toFixed(2)}`]}createGrouper(e){return super.createGrouper(!e)}};var Ii=class{static by(e,t){let n=[new Ni().comparator(),new wr().comparator(),new Mi().comparator(),new Yn().comparator(),new Pi().comparator()],i=[];for(let s of e)i.push(s.comparator);return t.sort(Ii.makeCompositeComparator([...i,...n]))}static makeCompositeComparator(e){return(t,n)=>{for(let i of e){let s=i(t,n);if(s!==0)return s}return 0}}};var zo=class{constructor(e,t,n){this.nestingLevel=e,this.displayName=t,this.property=n}};var Ko=class{constructor(e,t){this.lastHeadingAtLevel=new Array;this.groupers=t;let i=e.keys().next().value.length;for(let s=0;st.set(o,a)),e.pop();return t}};var Qo=class extends Vo{},Xo=class{constructor(e,t){this.root=new Qo(t),this.buildGroupingTree(e)}buildGroupingTree(e){let t=[this.root];for(let n of e){let i=[];for(let s of t)for(let a of s.values){let o=n.grouper(a);o.length===0&&o.push("");for(let u of o){let l=s.children.get(u);l===void 0&&(l=new Qo([]),s.children.set(u,l),i.push(l)),l.values.push(a)}}t=i}}generateTaskTreeStorage(){return this.root.generateAllPaths()}};var Zo=class{constructor(e,t){this.groups=e,this.groupHeadings=[],this.tasks=t}setGroupHeadings(e){for(let t of e)this.groupHeadings.push(t)}applyTaskLimit(e){this.tasks=this.tasks.slice(0,e)}tasksAsStringOfLines(){let e="";for(let t of this.tasks)e+=t.toFileLineString()+` `;return e}toString(){let e=` `;e+=`Group names: [${this.groups}] `;for(let t of this.groupHeadings)e+=`${"#".repeat(4+t.nestingLevel)} [${t.property}] ${t.displayName} -`;return e+=this.tasksAsStringOfLines(),e}};var wi=class{constructor(e,t){this._groups=new Array;this._totalTaskCount=0;this._totalTaskCount=t.length,this._groupers=e;let i=new qo(e,t).generateTaskTreeStorage();this.addTaskGroups(i),this.sortTaskGroups(),this.setGroupsHeadings(i)}get groupers(){return this._groupers}get groups(){return this._groups}totalTasksCount(){return this._totalTaskCount}toString(){let e="";e+=`Groupers (if any): +`;return e+=this.tasksAsStringOfLines(),e}};var Fi=class{constructor(e,t){this._groups=new Array;this._totalTaskCount=0;this._totalTaskCount=t.length,this._groupers=e;let i=new Xo(e,t).generateTaskTreeStorage();this.addTaskGroups(i),this.sortTaskGroups(),this.setGroupsHeadings(i)}get groupers(){return this._groupers}get groups(){return this._groups}totalTasksCount(){return this._totalTaskCount}toString(){let e="";e+=`Groupers (if any): `;for(let n of this._groupers){let i=n.reverse?" reverse":"";e+=`- ${n.property}${i} `}for(let n of this.groups)e+=n.toString(),e+=` --- `;return e+=` ${this.totalTasksCount()} tasks -`,e}addTaskGroups(e){for(let[t,n]of e){let i=new Yo(t,n);this.addTaskGroup(i)}}addTaskGroup(e){this._groups.push(e)}sortTaskGroups(){let e=(t,n)=>{let i=t.groups,s=n.groups;for(let a=0;a{t.applyTaskLimit(e)}),this.recalculateTotalTaskCount())}recalculateTotalTaskCount(){let e=[];this._groups.forEach(n=>{e=[...e,...n.tasks]});let t=[...new Set(e)];this._totalTaskCount=t.length}};var Cn=class extends xe{fieldName(){return"description"}value(e){return we.removeAsSubstringFrom(e.description)}supportsSorting(){return!0}comparator(){return(e,t)=>{let n=Cn.cleanDescription(e.description),i=Cn.cleanDescription(t.description);return n.localeCompare(i,void 0,{numeric:!0})}}static cleanDescription(e){e=we.removeAsSubstringFrom(e);let t=/^\[\[?([^\]]*)]]?/,n=e.match(t);if(n!==null){let i=n[1];e=i.substring(i.indexOf("|")+1)+e.replace(t,"")}return e=this.replaceFormatting(e,/^\*\*([^*]+)\*\*/),e=this.replaceFormatting(e,/^\*([^*]+)\*/),e=this.replaceFormatting(e,/^==([^=]+)==/),e=this.replaceFormatting(e,/^__([^_]+)__/),e=this.replaceFormatting(e,/^_([^_]+)_/),e}static replaceFormatting(e,t){let n=e.match(t);return n!==null&&(e=n[1]+e.replace(t,"")),e}};var $o=class extends pt{fieldName(){return"created"}date(e){return e.createdDate}filterResultIfFieldMissing(){return!1}};var jo=class extends pt{fieldName(){return"done"}date(e){return e.doneDate}filterResultIfFieldMissing(){return!1}};var Go=class extends an{constructor(){super(),this._filters.add("exclude sub-items",e=>{if(e.indentation==="")return!0;let t=e.indentation.lastIndexOf(">");return t===-1?!1:/^ ?$/.test(e.indentation.slice(t+1))})}fieldName(){return"exclude"}};var ia=class extends hr{};function sa(r){return[["task",r]]}function Yf(r,e){let t=r.map(([n])=>n);try{let n=e&&new Function(...t,`return ${e}`);return n instanceof Function?ia.fromObject(e,n):ia.fromError(e,"Error parsing group function")}catch(n){return ia.fromError(e,na(`Failed parsing expression "${e}"`,n))}}function $f(r,e){let t=e.map(([n,i])=>i);return r(...t)}function jf(r,e,t){try{return $f(r,e)}catch(n){return na(`Failed calculating expression "${t}"`,n)}}function UT(r,e){let t=sa(r),n=Yf(t,e);return n.error?n.error:jf(n.queryComponent,t,e)}var Bo=class{constructor(e){this.line=e,this.functionOrError=Yf(sa(null),e)}isValid(){return this.functionOrError.error===void 0}get parseError(){return this.functionOrError.error}evaluate(e){if(!this.isValid())throw Error(`Error: Cannot evaluate an expression which is not valid: "${this.line}" gave error: "${this.parseError}"`);return $f(this.functionOrError.queryComponent,sa(e))}evaluateOrCatch(e){return this.isValid()?jf(this.functionOrError.queryComponent,sa(e),this.line):`Error: Cannot evaluate an expression which is not valid: "${this.line}" gave error: "${this.parseError}"`}};var Ho=class extends ke{createFilterOrErrorMessage(e){let t=ke.getMatch(this.filterRegExp(),e);if(t===null)return ee.fromError(e,"Unable to parse line");let n=t[1],i=new Bo(n);return i.isValid()?ee.fromFilter(new ft(e,oA(i),new Re(e))):ee.fromError(e,i.parseError)}fieldName(){return"function"}filterRegExp(){return new RegExp(`^filter by ${this.fieldNameSingularEscaped()} (.*)`)}supportsGrouping(){return!0}createGrouperFromLine(e){let t=ke.getMatch(this.grouperRegExp(),e);if(t===null)return null;let n=!!t[1],i=t[2];return new sn("function",lA(i),n)}grouperRegExp(){return new RegExp(`^group by ${this.fieldNameSingularEscaped()}( reverse)? (.*)`)}grouper(){throw Error("grouper() function not valid for FunctionField. Use createGrouperFromLine() instead.")}};function oA(r){return e=>uA(r,e)}function uA(r,e){let t=r.evaluate(e);if(typeof t=="boolean")return t;throw Error(`filtering function must return true or false. This returned "${t}".`)}function lA(r){return e=>cA(e,r)}function cA(r,e){try{let t=UT(r,e);return Array.isArray(t)?t.map(i=>i.toString()):t===null?[]:[t.toString()]}catch(t){let n=`Error: Failed calculating expression "${e}". The error message was: `;return t instanceof Error?[n+t.message]:[n+"Unknown error"]}}var zo=class extends xe{fieldName(){return"heading"}value(e){return e.precedingHeader?e.precedingHeader:""}supportsSorting(){return!0}supportsGrouping(){return!0}grouper(){return e=>e.precedingHeader===null||e.precedingHeader.length===0?["(No heading)"]:[e.precedingHeader]}};var Vo=class extends pt{fieldName(){return"scheduled"}date(e){return e.scheduledDate}filterResultIfFieldMissing(){return!1}};var Ko=class extends pt{fieldName(){return"start"}fieldNameForFilterInstruction(){return"starts"}date(e){return e.startDate}filterResultIfFieldMissing(){return!0}};var Qo=class extends pt{constructor(){let e=new gr;e.add("has happens date",t=>this.dates(t).some(n=>n!==null)),e.add("no happens date",t=>!this.dates(t).some(n=>n!==null)),super(e)}fieldName(){return"happens"}fieldNameForExplanation(){return"due, start or scheduled"}date(e){return this.earliestDate(e)}dates(e){return e.happensDates}earliestDate(e){return e.happens.moment}filterResultIfFieldMissing(){return!1}getFilter(e){return t=>this.dates(t).some(n=>e(n))}};var Xo=class extends an{constructor(){super(),this._filters.add("is recurring",e=>e.recurrence!==null),this._filters.add("is not recurring",e=>e.recurrence===null)}fieldName(){return"recurring"}supportsSorting(){return!0}comparator(){return(e,t)=>e.recurrence!==null&&t.recurrence===null?-1:e.recurrence===null&&t.recurrence!==null?1:0}supportsGrouping(){return!0}grouper(){return e=>e.recurrence!==null?["Recurring"]:["Not Recurring"]}};var Zo=class extends xe{fieldNamePlural(){return this.fieldNameSingular()+"s"}fieldName(){return`${this.fieldNameSingular()}/${this.fieldNamePlural()}`}fieldPattern(){return`${this.fieldNameSingular()}|${this.fieldNamePlural()}`}filterOperatorPattern(){return`${super.filterOperatorPattern()}|include|do not include`}value(e){return this.values(e).join(", ")}getFilter(e,t){return n=>{let i=e.matchesAnyOf(this.values(n));return t?!i:i}}createGrouper(e){return new sn(this.fieldNamePlural(),this.grouper(),e)}grouperRegExp(){if(!this.supportsGrouping())throw Error(`grouperRegExp() unimplemented for ${this.fieldNameSingular()}`);return new RegExp(`^group by ${this.fieldNamePlural()}( reverse)?$`)}};var Pn=class extends Zo{constructor(){super();this.filterInstructions=new gr,this.filterInstructions.add(`has ${this.fieldNameSingular()}`,t=>this.values(t).length>0),this.filterInstructions.add(`has ${this.fieldNamePlural()}`,t=>this.values(t).length>0),this.filterInstructions.add(`no ${this.fieldNameSingular()}`,t=>this.values(t).length===0),this.filterInstructions.add(`no ${this.fieldNamePlural()}`,t=>this.values(t).length===0)}createFilterOrErrorMessage(t){let n=this.filterInstructions.createFilterOrErrorMessage(t);return n.filter!==void 0?n:super.createFilterOrErrorMessage(t)}canCreateFilterForLine(t){return this.filterInstructions.canCreateFilterForLine(t)?!0:super.canCreateFilterForLine(t)}fieldNameSingular(){return"tag"}values(t){return t.tags}supportsSorting(){return!0}createSorterFromLine(t){let n=t.match(this.sorterRegExp());if(n===null)return null;let i=!!n[1],s=isNaN(+n[2])?1:+n[2],a=Pn.makeCompareByTagComparator(s);return new Ir(this.fieldNameSingular(),a,i)}sorterRegExp(){return/^sort by tag( reverse)?[\s]*(\d+)?/}comparator(){return Pn.makeCompareByTagComparator(1)}static makeCompareByTagComparator(t){return(n,i)=>{if(n.tags.length===0&&i.tags.length===0)return 0;if(n.tags.length===0)return 1;if(i.tags.length===0)return-1;let s=t-1;if(n.tags.length=t)return 1;if(i.tags.length=t)return-1;if(n.tags.lengtht.tags.length==0?["(No tags)"]:t.tags}};var XT=Ui(QT());var ru=class extends ke{constructor(){super(...arguments);this.basicBooleanRegexp=/(.*(AND|OR|XOR|NOT)\s*[("].*|\(.+\))/g;this.supportedOperators=["AND","OR","XOR","NOT"];this.subFields={}}filterRegExp(){return this.basicBooleanRegexp}createFilterOrErrorMessage(t){return this.parseLine(t)}fieldName(){return"boolean query"}parseLine(t){if(t.length===0)return ee.fromError(t,"empty line");let n=this.preprocessExpression(t);try{let i=(0,XT.parse)(n);for(let o of i)if(o.name==="IDENTIFIER"&&o.value){let u=o.value.trim();if(!(u in this.subFields)){let l=nu(u);if(l===null)return ee.fromError(t,`couldn't parse sub-expression '${u}'`);if(l.error)return ee.fromError(t,`couldn't parse sub-expression '${u}': ${l.error}`);l.filter&&(this.subFields[u]=l.filter)}}else if(o.name==="OPERATOR"){if(o.value==null)return ee.fromError(t,"empty operator in boolean query");if(!this.supportedOperators.includes(o.value))return ee.fromError(t,`unknown boolean operator '${o.value}'`)}let s=o=>this.filterTaskWithParsedQuery(o,i),a=this.constructExplanation(i);return ee.fromFilter(new ft(t,s,a))}catch(i){let s=i instanceof Error?i.message:"unknown error type";return ee.fromError(t,`malformed boolean query -- ${s} (check the documentation for guidelines)`)}}preprocessExpression(t){return t.replace(/\(([^()]+)\)/g,'("$1")')}filterTaskWithParsedQuery(t,n){let i=o=>o==="true",s=o=>o?"true":"false",a=[];for(let o of n)if(o.name==="IDENTIFIER"){if(o.value==null)throw Error("null token value");let l=this.subFields[o.value.trim()].filterFunction(t);a.push(s(l))}else if(o.name==="OPERATOR")if(o.value==="NOT"){let u=i(a.pop());a.push(s(!u))}else if(o.value==="OR"){let u=i(a.pop()),l=i(a.pop());a.push(s(u||l))}else if(o.value==="AND"){let u=i(a.pop()),l=i(a.pop());a.push(s(u&&l))}else if(o.value==="XOR"){let u=i(a.pop()),l=i(a.pop());a.push(s(u&&!l||!u&&l))}else throw Error("Unsupported operator: "+o.value);else throw Error("Unsupported token type: "+o);return i(a[0])}constructExplanation(t){let n=[];for(let i of t)if(i.name==="IDENTIFIER"){if(i.value==null)throw Error("null token value");let s=this.subFields[i.value.trim()];n.push(s.explanation)}else if(i.name==="OPERATOR")if(i.value==="NOT"){let s=n.pop();n.push(Re.booleanNot([s]))}else if(i.value==="OR"){let s=n.pop(),a=n.pop();n.push(Re.booleanOr([a,s]))}else if(i.value==="AND"){let s=n.pop(),a=n.pop();n.push(Re.booleanAnd([a,s]))}else if(i.value==="XOR"){let s=n.pop(),a=n.pop();n.push(Re.booleanXor([a,s]))}else throw Error("Unsupported operator: "+i.value);else throw Error("Unsupported token type: "+i);return n[0]}};var iu=class extends xe{fieldName(){return"filename"}value(e){let t=e.filename;return t===null?"":t+".md"}supportsSorting(){return!0}supportsGrouping(){return!0}grouper(){return e=>{let t=e.filename;return t===null?["Unknown Location"]:["[["+t+"]]"]}}};var su=class extends xe{constructor(){super()}fieldName(){return"status.name"}value(e){return e.status.name}supportsSorting(){return!0}supportsGrouping(){return!0}};var un=class extends ke{canCreateFilterForLine(e){let t=new RegExp(`^(?:${this.fieldNameSingularEscaped()})`);return ke.lineMatchesFilter(t,e)}createFilterOrErrorMessage(e){let t=ke.getMatch(this.filterRegExp(),e);if(t===null)return this.helpMessage(e);let[n,i,s]=t,a=zt[s.toUpperCase()];if(!a)return this.helpMessage(e);let o;switch(i){case"is":o=u=>u.status.type===a;break;case"is not":o=u=>u.status.type!==a;break;default:return this.helpMessage(e)}return ee.fromFilter(new ft(e,o,new Re(e)))}filterRegExp(){return new RegExp(`^(?:${this.fieldNameSingularEscaped()}) (is|is not) ([^ ]+)$`)}helpMessage(e){let t=Object.values(zt).filter(i=>i!=="EMPTY").join(" "),n=`Invalid ${this.fieldNameSingular()} instruction: '${e}'. +`,e}addTaskGroups(e){for(let[t,n]of e){let i=new Zo(t,n);this.addTaskGroup(i)}}addTaskGroup(e){this._groups.push(e)}sortTaskGroups(){let e=(t,n)=>{let i=t.groups,s=n.groups;for(let a=0;a{t.applyTaskLimit(e)}),this.recalculateTotalTaskCount())}recalculateTotalTaskCount(){let e=[];this._groups.forEach(n=>{e=[...e,...n.tasks]});let t=[...new Set(e)];this._totalTaskCount=t.length}};var jn=class extends Me{fieldName(){return"description"}value(e){return ge.getInstance().removeAsSubstringFrom(e.description)}supportsSorting(){return!0}comparator(){return(e,t)=>{let n=jn.cleanDescription(e.description),i=jn.cleanDescription(t.description);return n.localeCompare(i,void 0,{numeric:!0})}}static cleanDescription(e){e=ge.getInstance().removeAsSubstringFrom(e);let t=/^\[\[?([^\]]*)]]?/,n=e.match(t);if(n!==null){let i=n[1];e=i.substring(i.indexOf("|")+1)+e.replace(t,"")}return e=this.replaceFormatting(e,/^\*\*([^*]+)\*\*/),e=this.replaceFormatting(e,/^\*([^*]+)\*/),e=this.replaceFormatting(e,/^==([^=]+)==/),e=this.replaceFormatting(e,/^__([^_]+)__/),e=this.replaceFormatting(e,/^_([^_]+)_/),e}static replaceFormatting(e,t){let n=e.match(t);return n!==null&&(e=n[1]+e.replace(t,"")),e}};var Jo=class extends pt{fieldName(){return"created"}date(e){return e.createdDate}filterResultIfFieldMissing(){return!1}};var eu=class extends pt{fieldName(){return"done"}date(e){return e.doneDate}filterResultIfFieldMissing(){return!1}};var tu=class extends pn{constructor(){super(),this._filters.add("exclude sub-items",e=>{if(e.indentation==="")return!0;let t=e.indentation.lastIndexOf(">");return t===-1?!1:/^ ?$/.test(e.indentation.slice(t+1))})}fieldName(){return"exclude"}};var Ta=class extends vr{};function ba(r){return[["task",r]]}function sp(r,e){let t=r.map(([n])=>n);try{let n=e.includes("return")?e:`return ${e}`,i=e&&new Function(...t,n);return i instanceof Function?Ta.fromObject(e,i):Ta.fromError(e,"Error parsing group function")}catch(n){return Ta.fromError(e,$n(`Failed parsing expression "${e}"`,n))}}function ap(r,e){let t=e.map(([n,i])=>i);return r(...t)}function op(r,e,t){try{return ap(r,e)}catch(n){return $n(`Failed calculating expression "${t}"`,n)}}function Ub(r,e){let t=ba(r),n=sp(t,e);return n.error?n.error:op(n.queryComponent,t,e)}var ru=class{constructor(e){this.line=e,this.functionOrError=sp(ba(null),e)}isValid(){return this.functionOrError.error===void 0}get parseError(){return this.functionOrError.error}evaluate(e){if(!this.isValid())throw Error(`Error: Cannot evaluate an expression which is not valid: "${this.line}" gave error: "${this.parseError}"`);return ap(this.functionOrError.queryComponent,ba(e))}evaluateOrCatch(e){return this.isValid()?op(this.functionOrError.queryComponent,ba(e),this.line):`Error: Cannot evaluate an expression which is not valid: "${this.line}" gave error: "${this.parseError}"`}};var nu=class extends we{createFilterOrErrorMessage(e){let t=we.getMatch(this.filterRegExp(),e);if(t===null)return J.fromError(e,"Unable to parse line");let n=t[1],i=new ru(n);return i.isValid()?J.fromFilter(new ft(e,IA(i),new ke(e))):J.fromError(e,i.parseError)}fieldName(){return"function"}filterRegExp(){return new RegExp(`^filter by ${this.fieldNameSingularEscaped()} (.*)`)}supportsGrouping(){return!0}createGrouperFromLine(e){let t=we.getMatch(this.grouperRegExp(),e);if(t===null)return null;let n=!!t[1],i=t[2];return new fn("function",LA(i),n)}grouperRegExp(){return new RegExp(`^group by ${this.fieldNameSingularEscaped()}( reverse)? (.*)`)}grouper(){throw Error("grouper() function not valid for FunctionField. Use createGrouperFromLine() instead.")}};function IA(r){return e=>FA(r,e)}function FA(r,e){let t=r.evaluate(e);if(typeof t=="boolean")return t;throw Error(`filtering function must return true or false. This returned "${t}".`)}function LA(r){return e=>UA(e,r)}function UA(r,e){try{let t=Ub(r,e);return Array.isArray(t)?t.map(i=>i.toString()):t===null?[]:[t.toString()]}catch(t){let n=`Error: Failed calculating expression "${e}". The error message was: `;return t instanceof Error?[n+t.message]:[n+"Unknown error"]}}var iu=class extends Me{fieldName(){return"heading"}value(e){return e.precedingHeader?e.precedingHeader:""}supportsSorting(){return!0}supportsGrouping(){return!0}grouper(){return e=>e.precedingHeader===null||e.precedingHeader.length===0?["(No heading)"]:[e.precedingHeader]}};var su=class extends pt{fieldName(){return"scheduled"}date(e){return e.scheduledDate}filterResultIfFieldMissing(){return!1}};var au=class extends pt{fieldName(){return"start"}fieldNameForFilterInstruction(){return"starts"}date(e){return e.startDate}filterResultIfFieldMissing(){return!0}};var ou=class extends pt{constructor(){let e=new Er;e.add("has happens date",t=>this.dates(t).some(n=>n!==null)),e.add("no happens date",t=>!this.dates(t).some(n=>n!==null)),super(e)}fieldName(){return"happens"}fieldNameForExplanation(){return"due, start or scheduled"}date(e){return this.earliestDate(e)}dates(e){return e.happensDates}earliestDate(e){return e.happens.moment}filterResultIfFieldMissing(){return!1}getFilter(e){return t=>this.dates(t).some(n=>e(n))}};var uu=class extends pn{constructor(){super(),this._filters.add("is recurring",e=>e.recurrence!==null),this._filters.add("is not recurring",e=>e.recurrence===null)}fieldName(){return"recurring"}supportsSorting(){return!0}comparator(){return(e,t)=>e.recurrence!==null&&t.recurrence===null?-1:e.recurrence===null&&t.recurrence!==null?1:0}supportsGrouping(){return!0}grouper(){return e=>e.recurrence!==null?["Recurring"]:["Not Recurring"]}};var lu=class extends Me{fieldNamePlural(){return this.fieldNameSingular()+"s"}fieldName(){return`${this.fieldNameSingular()}/${this.fieldNamePlural()}`}fieldPattern(){return`${this.fieldNameSingular()}|${this.fieldNamePlural()}`}filterOperatorPattern(){return`${super.filterOperatorPattern()}|include|do not include`}value(e){return this.values(e).join(", ")}getFilter(e,t){return n=>{let i=e.matchesAnyOf(this.values(n));return t?!i:i}}createGrouper(e){return new fn(this.fieldNamePlural(),this.grouper(),e)}grouperRegExp(){if(!this.supportsGrouping())throw Error(`grouperRegExp() unimplemented for ${this.fieldNameSingular()}`);return new RegExp(`^group by ${this.fieldNamePlural()}( reverse)?$`)}};var Gn=class extends lu{constructor(){super();this.filterInstructions=new Er,this.filterInstructions.add(`has ${this.fieldNameSingular()}`,t=>this.values(t).length>0),this.filterInstructions.add(`has ${this.fieldNamePlural()}`,t=>this.values(t).length>0),this.filterInstructions.add(`no ${this.fieldNameSingular()}`,t=>this.values(t).length===0),this.filterInstructions.add(`no ${this.fieldNamePlural()}`,t=>this.values(t).length===0)}createFilterOrErrorMessage(t){let n=this.filterInstructions.createFilterOrErrorMessage(t);return n.filter!==void 0?n:super.createFilterOrErrorMessage(t)}canCreateFilterForLine(t){return this.filterInstructions.canCreateFilterForLine(t)?!0:super.canCreateFilterForLine(t)}fieldNameSingular(){return"tag"}values(t){return t.tags}supportsSorting(){return!0}createSorterFromLine(t){let n=t.match(this.sorterRegExp());if(n===null)return null;let i=!!n[1],s=isNaN(+n[2])?1:+n[2],a=Gn.makeCompareByTagComparator(s);return new zr(this.fieldNameSingular(),a,i)}sorterRegExp(){return/^sort by tag( reverse)?[\s]*(\d+)?/}comparator(){return Gn.makeCompareByTagComparator(1)}static makeCompareByTagComparator(t){return(n,i)=>{if(n.tags.length===0&&i.tags.length===0)return 0;if(n.tags.length===0)return 1;if(i.tags.length===0)return-1;let s=t-1;if(n.tags.length=t)return 1;if(i.tags.length=t)return-1;if(n.tags.lengtht.tags.length==0?["(No tags)"]:t.tags}};var Zb=Ji(Xb());var hu=class extends we{constructor(){super(...arguments);this.basicBooleanRegexp=/(.*(AND|OR|XOR|NOT)\s*[("].*|\(.+\))/g;this.supportedOperators=["AND","OR","XOR","NOT"];this.subFields={}}filterRegExp(){return this.basicBooleanRegexp}createFilterOrErrorMessage(t){return this.parseLine(t)}fieldName(){return"boolean query"}parseLine(t){if(t.length===0)return J.fromError(t,"empty line");let n=this.preprocessExpression(t);try{let i=(0,Zb.parse)(n);for(let o of i)if(o.name==="IDENTIFIER"&&o.value){let u=o.value.trim();if(!(u in this.subFields)){let l=mu(u);if(l===null)return J.fromError(t,`couldn't parse sub-expression '${u}'`);if(l.error)return J.fromError(t,`couldn't parse sub-expression '${u}': ${l.error}`);l.filter&&(this.subFields[u]=l.filter)}}else if(o.name==="OPERATOR"){if(o.value==null)return J.fromError(t,"empty operator in boolean query");if(!this.supportedOperators.includes(o.value))return J.fromError(t,`unknown boolean operator '${o.value}'`)}let s=o=>this.filterTaskWithParsedQuery(o,i),a=this.constructExplanation(i);return J.fromFilter(new ft(t,s,a))}catch(i){let s=i instanceof Error?i.message:"unknown error type";return J.fromError(t,`malformed boolean query -- ${s} (check the documentation for guidelines)`)}}preprocessExpression(t){return t.replace(/\(([^()]+)\)/g,'("$1")')}filterTaskWithParsedQuery(t,n){let i=o=>o==="true",s=o=>o?"true":"false",a=[];for(let o of n)if(o.name==="IDENTIFIER"){if(o.value==null)throw Error("null token value");let l=this.subFields[o.value.trim()].filterFunction(t);a.push(s(l))}else if(o.name==="OPERATOR")if(o.value==="NOT"){let u=i(a.pop());a.push(s(!u))}else if(o.value==="OR"){let u=i(a.pop()),l=i(a.pop());a.push(s(u||l))}else if(o.value==="AND"){let u=i(a.pop()),l=i(a.pop());a.push(s(u&&l))}else if(o.value==="XOR"){let u=i(a.pop()),l=i(a.pop());a.push(s(u&&!l||!u&&l))}else throw Error("Unsupported operator: "+o.value);else throw Error("Unsupported token type: "+o);return i(a[0])}constructExplanation(t){let n=[];for(let i of t)if(i.name==="IDENTIFIER"){if(i.value==null)throw Error("null token value");let s=this.subFields[i.value.trim()];n.push(s.explanation)}else if(i.name==="OPERATOR")if(i.value==="NOT"){let s=n.pop();n.push(ke.booleanNot([s]))}else if(i.value==="OR"){let s=n.pop(),a=n.pop();n.push(ke.booleanOr([a,s]))}else if(i.value==="AND"){let s=n.pop(),a=n.pop();n.push(ke.booleanAnd([a,s]))}else if(i.value==="XOR"){let s=n.pop(),a=n.pop();n.push(ke.booleanXor([a,s]))}else throw Error("Unsupported operator: "+i.value);else throw Error("Unsupported token type: "+i.name);return n[0]}};var gu=class extends Me{fieldName(){return"filename"}value(e){let t=e.filename;return t===null?"":t+".md"}supportsSorting(){return!0}supportsGrouping(){return!0}grouper(){return e=>{let t=e.filename;return t===null?["Unknown Location"]:["[["+t+"]]"]}}};var yu=class extends Me{constructor(){super()}fieldName(){return"status.name"}value(e){return e.status.name}supportsSorting(){return!0}supportsGrouping(){return!0}};var mn=class extends we{canCreateFilterForLine(e){let t=new RegExp(`^(?:${this.fieldNameSingularEscaped()})`);return we.lineMatchesFilter(t,e)}createFilterOrErrorMessage(e){let t=we.getMatch(this.filterRegExp(),e);if(t===null)return this.helpMessage(e);let[n,i,s]=t,a=Qt[s.toUpperCase()];if(!a)return this.helpMessage(e);let o;switch(i){case"is":o=u=>u.status.type===a;break;case"is not":o=u=>u.status.type!==a;break;default:return this.helpMessage(e)}return J.fromFilter(new ft(e,o,new ke(e)))}filterRegExp(){return new RegExp(`^(?:${this.fieldNameSingularEscaped()}) (is|is not) ([^ ]+)$`)}helpMessage(e){let t=Object.values(Qt).filter(i=>i!=="EMPTY").join(" "),n=`Invalid ${this.fieldNameSingular()} instruction: '${e}'. Allowed options: 'is' and 'is not' (without quotes). Allowed values: ${t} Note: values are case-insensitive, so 'in_progress' works too, for example. - Example: ${this.fieldNameSingular()} is not NON_TASK`;return ee.fromError(e,n)}fieldName(){return"status.type"}value(e){return e.status.type}supportsSorting(){return!0}comparator(){return(e,t)=>{let n=un.groupName(e),i=un.groupName(t);return n.localeCompare(i,void 0,{numeric:!0})}}supportsGrouping(){return!0}grouper(){return e=>[un.groupName(e)]}static groupName(e){let t;switch(e.status.type){case"IN_PROGRESS":t="1";break;case"TODO":t="2";break;case"DONE":t="3";break;case"CANCELLED":t="4";break;case"NON_TASK":t="5";break;case"EMPTY":t="6";break}return`%%${t}%%${e.status.type}`}};var au=class extends xe{fieldName(){return"recurrence"}value(e){return e.recurrence!==null?e.recurrence.toText():""}supportsGrouping(){return!0}grouper(){return e=>e.recurrence!==null?[e.recurrence.toText()]:["None"]}};var ou=class extends xe{fieldName(){return"folder"}value(e){return e.file.folder}supportsGrouping(){return!0}grouper(){return e=>[xe.escapeMarkdownCharacters(this.value(e))]}};var uu=class extends xe{fieldName(){return"root"}value(e){return e.file.root}supportsGrouping(){return!0}grouper(){return e=>[xe.escapeMarkdownCharacters(this.value(e))]}};var lu=class extends xe{fieldName(){return"backlink"}value(e){let t=e.getLinkText({isFilenameUnique:!0});return t===null?"Unknown Location":t}createFilterOrErrorMessage(e){return ee.fromError(e,"backlink field does not support filtering")}canCreateFilterForLine(e){return!1}supportsGrouping(){return!0}grouper(){return e=>{let t=e.filename;if(t===null)return["Unknown Location"];let n=xe.escapeMarkdownCharacters(t);return e.precedingHeader&&e.precedingHeader!==t&&(n+=" > "+e.precedingHeader),[n]}}};var tp=[()=>new su,()=>new un,()=>new yr,()=>new Xo,()=>new An,()=>new Qo,()=>new $o,()=>new Ko,()=>new Vo,()=>new gi,()=>new jo,()=>new bi,()=>new ou,()=>new uu,()=>new lu,()=>new Cn,()=>new Pn,()=>new zo,()=>new Go,()=>new iu,()=>new vi,()=>new au,()=>new Ho,()=>new ru];function nu(r){for(let e of tp){let t=e();if(t.canCreateFilterForLine(r))return t.createFilterOrErrorMessage(r)}return null}function ZT(r){let e=/^sort by /;if(r.match(e)===null)return null;for(let t of tp){let i=t().createSorterFromLine(r);if(i)return i}return null}function JT(r){let e=/^group by /;if(r.match(e)===null)return null;for(let t of tp){let i=t().createGrouperFromLine(r);if(i)return i}return null}var Ln=class{constructor(e){this._searchErrorMessage=void 0;this.taskGroups=e}get searchErrorMessage(){return this._searchErrorMessage}set searchErrorMessage(e){this._searchErrorMessage=e}get totalTasksCount(){return this.taskGroups.totalTasksCount()}get groups(){return this.taskGroups.groups}static fromError(e){let t=new Ln(new wi([],[]));return t._searchErrorMessage=e,t}};var qr=class{constructor({source:e}){this._limit=void 0;this._taskGroupLimit=void 0;this._layoutOptions=new Bs;this._filters=[];this._error=void 0;this._sorting=[];this._grouping=[];this.hideOptionsRegexp=/^(hide|show) (task count|backlink|priority|created date|start date|scheduled date|done date|due date|recurrence rule|edit button|urgency|tags)/;this.shortModeRegexp=/^short/;this.explainQueryRegexp=/^explain/;this.limitRegexp=/^limit (groups )?(to )?(\d+)( tasks?)?/;this.commentRegexp=/^#.*/;this.source=e,e.split(` -`).map(t=>t.trim()).forEach(t=>{switch(!0){case t==="":break;case this.shortModeRegexp.test(t):this._layoutOptions.shortMode=!0;break;case this.explainQueryRegexp.test(t):this._layoutOptions.explainQuery=!0;break;case this.limitRegexp.test(t):this.parseLimit({line:t});break;case this.parseSortBy({line:t}):break;case this.parseGroupBy({line:t}):break;case this.hideOptionsRegexp.test(t):this.parseHideOptions({line:t});break;case this.commentRegexp.test(t):break;case this.parseFilter(t):break;default:this._error=`do not understand query: ${t}`}})}append(e){return this.source===""?e:e.source===""?this:new qr({source:`${this.source} -${e.source}`})}explainQuery(){let e="",t=this.filters.length;if(t===0)e+="No filters supplied. All tasks will match the query.";else for(let i=0;i0&&(e+=` + Example: ${this.fieldNameSingular()} is not NON_TASK`;return J.fromError(e,n)}fieldName(){return"status.type"}value(e){return e.status.type}supportsSorting(){return!0}comparator(){return(e,t)=>{let n=mn.groupName(e),i=mn.groupName(t);return n.localeCompare(i,void 0,{numeric:!0})}}supportsGrouping(){return!0}grouper(){return e=>[mn.groupName(e)]}static groupName(e){return e.status.typeGroupText}};var Tu=class extends Me{fieldName(){return"recurrence"}value(e){return e.recurrence!==null?e.recurrence.toText():""}supportsGrouping(){return!0}grouper(){return e=>e.recurrence!==null?[e.recurrence.toText()]:["None"]}};var bu=class extends Me{fieldName(){return"folder"}value(e){return e.file.folder}supportsGrouping(){return!0}grouper(){return e=>[Me.escapeMarkdownCharacters(this.value(e))]}};var _u=class extends Me{fieldName(){return"root"}value(e){return e.file.root}supportsGrouping(){return!0}grouper(){return e=>[Me.escapeMarkdownCharacters(this.value(e))]}};var vu=class extends Me{fieldName(){return"backlink"}value(e){let t=e.getLinkText({isFilenameUnique:!0});return t===null?"Unknown Location":t}createFilterOrErrorMessage(e){return J.fromError(e,"backlink field does not support filtering")}canCreateFilterForLine(e){return!1}supportsGrouping(){return!0}grouper(){return e=>{let t=e.filename;if(t===null)return["Unknown Location"];let n=e.precedingHeader;return n===null?["[["+t+"]]"]:[`[[${t}#${n}|${t} > ${n}]]`]}}};var yp=[()=>new yu,()=>new mn,()=>new wr,()=>new uu,()=>new Yn,()=>new ou,()=>new Jo,()=>new au,()=>new su,()=>new Mi,()=>new eu,()=>new Pi,()=>new bu,()=>new _u,()=>new vu,()=>new jn,()=>new Gn,()=>new iu,()=>new tu,()=>new gu,()=>new Ni,()=>new Tu,()=>new nu,()=>new hu];function mu(r){for(let e of yp){let t=e();if(t.canCreateFilterForLine(r))return t.createFilterOrErrorMessage(r)}return null}function Jb(r){let e=/^sort by /;if(r.match(e)===null)return null;for(let t of yp){let i=t().createSorterFromLine(r);if(i)return i}return null}function e_(r){let e=/^group by /;if(r.match(e)===null)return null;for(let t of yp){let i=t().createGrouperFromLine(r);if(i)return i}return null}function t_(r){return`task${r!==1?"s":""}`}var zn=class{constructor(e,t){this.totalTasksCountBeforeLimit=0;this._searchErrorMessage=void 0;this.taskGroups=e,this.totalTasksCountBeforeLimit=t}get searchErrorMessage(){return this._searchErrorMessage}set searchErrorMessage(e){this._searchErrorMessage=e}get totalTasksCount(){return this.taskGroups.totalTasksCount()}totalTasksCountDisplayText(){let e=this.totalTasksCount,t=this.totalTasksCountBeforeLimit;return e===t?`${e} ${t_(e)}`:`${e} of ${t} ${t_(t)}`}get groups(){return this.taskGroups.groups}static fromError(e){let t=new zn(new Fi([],[]),0);return t._searchErrorMessage=e,t}};function r_(r){return r.endsWith("\\")}function n_(r){return r.endsWith("\\\\")}function dC(r){return r.replace(/^[ \t]*/,"")}function fC(r){return r.replace(/[ \t]*\\$/,"")}function pC(r,e){let t=r;return e&&(t=dC(r)),n_(t)?t=t.slice(0,-1):r_(r)&&(t=fC(t)),t}function hC(r,e,t){e?r[r.length-1]+=" "+t:r.push(t)}function mC(r){let e=[],t=!1;for(let n of r.split(` +`)){let i=pC(n,t);hC(e,t,i),n_(n)?t=!1:t=r_(n)}return e.join(` +`)}function i_(r){return mC(r).split(` +`).map(e=>e.trim()).filter(e=>e!=="")}var Vr=class{constructor(e,t=void 0){this._limit=void 0;this._taskGroupLimit=void 0;this._layoutOptions=new ua;this._filters=[];this._error=void 0;this._sorting=[];this._grouping=[];this._ignoreGlobalQuery=!1;this.hideOptionsRegexp=/^(hide|show) (task count|backlink|priority|created date|start date|scheduled date|done date|due date|recurrence rule|edit button|urgency|tags)/;this.shortModeRegexp=/^short/;this.explainQueryRegexp=/^explain/;this.ignoreGlobalQueryRegexp=/^ignore global query/;this.limitRegexp=/^limit (groups )?(to )?(\d+)( tasks?)?/;this.commentRegexp=/^#.*/;this.source=e,this.filePath=t,i_(e).forEach(n=>{let i=this.expandPlaceholders(n,t);if(this.error===void 0)switch(!0){case this.shortModeRegexp.test(i):this._layoutOptions.shortMode=!0;break;case this.explainQueryRegexp.test(i):this._layoutOptions.explainQuery=!0;break;case this.ignoreGlobalQueryRegexp.test(i):this._ignoreGlobalQuery=!0;break;case this.limitRegexp.test(i):this.parseLimit(i);break;case this.parseSortBy(i):break;case this.parseGroupBy(i):break;case this.hideOptionsRegexp.test(i):this.parseHideOptions(i);break;case this.commentRegexp.test(i):break;case this.parseFilter(i):break;default:this.setError("do not understand query",i)}})}expandPlaceholders(e,t){if(e.includes("{{")&&e.includes("}}")&&this.filePath===void 0)return this._error=`The query looks like it contains a placeholder, with "{{" and "}}" +but no file path has been supplied, so cannot expand placeholder values. +The query is: +${e}`,e;let n=e;if(t){let i=Lb(t);try{n=Fb(e,i)}catch(s){return s instanceof Error?this._error=s.message:this._error="Internal error. expandPlaceholders() threw something other than Error.",e}}return n}append(e){return this.source===""?e:e.source===""?this:new Vr(`${this.source} +${e.source}`,this.filePath)}explainQuery(){let e="";if(this.error!==void 0)return e+=`Query has an error: +`,e+=this.error+` +`,e;let t=this.filters.length;if(t===0)e+="No filters supplied. All tasks will match the query.";else for(let i=0;i0&&(e+=` `),e+=this.filters[i].explainFilterIndented("");e+=this.explainQueryLimits();let{debugSettings:n}=Q();return n.ignoreSortInstructions&&(e+=` NOTE: All sort instructions, including default sort order, are disabled, due to 'ignoreSortInstructions' setting.`),e}explainQueryLimits(){let e="";function t(n){let i=` At most ${n} task`;return n!==1&&(i+="s"),i}return this._limit!==void 0&&(e+=t(this._limit),e+=`. `),this._taskGroupLimit!==void 0&&(e+=t(this._taskGroupLimit),e+=` per group (if any "group by" options are supplied). -`),e}get limit(){return this._limit}get layoutOptions(){return this._layoutOptions}get filters(){return this._filters}get sorting(){return this._sorting}get grouping(){return this._grouping}get error(){return this._error}applyQueryToTasks(e){try{this.filters.forEach(a=>{e=e.filter(a.filterFunction)});let{debugSettings:t}=Q(),i=(t.ignoreSortInstructions?e:Ei.by(this.sorting,e)).slice(0,this.limit),s=new wi(this.grouping,i);return this._taskGroupLimit!==void 0&&s.applyTaskLimit(this._taskGroupLimit),new Ln(s)}catch(t){let n="Search failed";return Ln.fromError(na(n,t))}}parseHideOptions({line:e}){let t=e.match(this.hideOptionsRegexp);if(t!==null){let n=t[1]==="hide";switch(t[2]){case"task count":this._layoutOptions.hideTaskCount=n;break;case"backlink":this._layoutOptions.hideBacklinks=n;break;case"priority":this._layoutOptions.hidePriority=n;break;case"created date":this._layoutOptions.hideCreatedDate=n;break;case"start date":this._layoutOptions.hideStartDate=n;break;case"scheduled date":this._layoutOptions.hideScheduledDate=n;break;case"due date":this._layoutOptions.hideDueDate=n;break;case"done date":this._layoutOptions.hideDoneDate=n;break;case"recurrence rule":this._layoutOptions.hideRecurrenceRule=n;break;case"edit button":this._layoutOptions.hideEditButton=n;break;case"urgency":this._layoutOptions.hideUrgency=n;break;case"tags":this._layoutOptions.hideTags=n;break;default:this._error="do not understand hide/show option"}}}parseFilter(e){let t=nu(e);return t!=null?(t.filter?this._filters.push(t.filter):this._error=t.error,!0):!1}parseLimit({line:e}){let t=e.match(this.limitRegexp);if(t===null){this._error="do not understand query limit";return}let n=Number.parseInt(t[3],10);t[1]!==void 0?this._taskGroupLimit=n:this._limit=n}parseSortBy({line:e}){let t=ZT(e);return t?(this._sorting.push(t),!0):!1}parseGroupBy({line:e}){let t=JT(e);return t?(this._grouping.push(t),!0):!1}};function eb(r){let e="";we.isEmpty()||(e+=`Only tasks containing the global filter '${we.get()}'. +`),e}get limit(){return this._limit}get layoutOptions(){return this._layoutOptions}get filters(){return this._filters}get sorting(){return this._sorting}get grouping(){return this._grouping}get error(){return this._error}setError(e,t){this._error=`${e} +Problem line: "${t}"`}get ignoreGlobalQuery(){return this._ignoreGlobalQuery}applyQueryToTasks(e){try{this.filters.forEach(a=>{e=e.filter(a.filterFunction)});let{debugSettings:t}=Q(),n=t.ignoreSortInstructions?e:Ii.by(this.sorting,e),i=n.slice(0,this.limit),s=new Fi(this.grouping,i);return this._taskGroupLimit!==void 0&&s.applyTaskLimit(this._taskGroupLimit),new zn(s,n.length)}catch(t){let n="Search failed";return zn.fromError($n(n,t))}}parseHideOptions(e){let t=e.match(this.hideOptionsRegexp);if(t!==null){let n=t[1]==="hide";switch(t[2]){case"task count":this._layoutOptions.hideTaskCount=n;break;case"backlink":this._layoutOptions.hideBacklinks=n;break;case"priority":this._layoutOptions.hidePriority=n;break;case"created date":this._layoutOptions.hideCreatedDate=n;break;case"start date":this._layoutOptions.hideStartDate=n;break;case"scheduled date":this._layoutOptions.hideScheduledDate=n;break;case"due date":this._layoutOptions.hideDueDate=n;break;case"done date":this._layoutOptions.hideDoneDate=n;break;case"recurrence rule":this._layoutOptions.hideRecurrenceRule=n;break;case"edit button":this._layoutOptions.hideEditButton=n;break;case"urgency":this._layoutOptions.hideUrgency=n;break;case"tags":this._layoutOptions.hideTags=n;break;default:this.setError("do not understand hide/show option",e)}}}parseFilter(e){var n;let t=mu(e);return t!=null?(t.filter?this._filters.push(t.filter):this.setError((n=t.error)!=null?n:"Unknown error",e),!0):!1}parseLimit(e){let t=e.match(this.limitRegexp);if(t===null){this.setError("do not understand query limit",e);return}let n=Number.parseInt(t[3],10);t[1]!==void 0?this._taskGroupLimit=n:this._limit=n}parseSortBy(e){let t=Jb(e);return t?(this._sorting.push(t),!0):!1}parseGroupBy(e){let t=e_(e);return t?(this._grouping.push(t),!0):!1}};var gn=class{constructor(e=gn.empty){this._source=e}static getInstance(){return gn.instance||(gn.instance=new gn),gn.instance}set(e){this._source=e}query(e=void 0){return new Vr(this._source,e)}hasInstructions(){return this._source.trim()!==gn.empty}},Jt=gn;Jt.empty="";var Eu=class{constructor({obsidianEvents:e}){this.obsidianEvents=e}onCacheUpdate(e){return this.obsidianEvents.on("obsidian-tasks-plugin:cache-update",e)}triggerCacheUpdate(e){this.obsidianEvents.trigger("obsidian-tasks-plugin:cache-update",e)}onRequestCacheUpdate(e){return this.obsidianEvents.on("obsidian-tasks-plugin:request-cache-update",e)}triggerRequestCacheUpdate(e){this.obsidianEvents.trigger("obsidian-tasks-plugin:request-cache-update",e)}off(e){this.obsidianEvents.offref(e)}};var wa=require("obsidian");var gC=require("obsidian"),u_=Ji(o_());var Tp=class extends u_.EventEmitter2{constructor(){super(...arguments);this.options={minLevels:{"":"info",tasks:"info"}};this.consoleLoggerRegistered=!1;this.arrAvg=t=>t.reduce((n,i)=>n+i,0)/t.length}configure(t){return this.options=Object.assign({},this.options,t),this}getLogger(t){let n="none",i="";for(let s in this.options.minLevels)t.startsWith(s)&&s.length>=i.length&&(n=this.options.minLevels[s],i=s);return new bp(this,t,n)}onLogEntry(t){return this.on("log",t),this}registerConsoleLogger(){return this.consoleLoggerRegistered?this:(this.onLogEntry(t=>{let n=`[${window.moment().format("YYYY-MM-DD-HH:mm:ss.SSS")}][${t.level}][${t.module}]`;switch(t.traceId&&(n+=`[${t.traceId}]`),n+=` ${t.message}`,t.objects===void 0&&(t.objects=""),t.level){case"trace":console.trace(n,t.objects);break;case"debug":console.debug(n,t.objects);break;case"info":console.info(n,t.objects);break;case"warn":console.warn(n,t.objects);break;case"error":console.error(n,t.objects);break;default:console.log(`{${t.level}} ${n}`,t.objects)}}),this.consoleLoggerRegistered=!0,this)}},wu=new Tp,bp=class{constructor(e,t,n){this.levels={trace:1,debug:2,info:3,warn:4,error:5};this.logManager=e,this.module=t,this.minLevel=this.levelToInt(n)}levelToInt(e){return e.toLowerCase()in this.levels?this.levels[e.toLowerCase()]:99}log(e,t,n){if(this.levelToInt(e){va=r,_p=e,vp=t},Su=t=>q(void 0,[t],function*({originalTask:r,newTasks:e}){if(_p===void 0||va===void 0||vp===void 0){ku("Tasks: cannot use File before initializing it.");return}Array.isArray(e)||(e=[e]),Ea.debug(`replaceTaskWithTasks entered. ${r.path}`),d_({originalTask:r,newTasks:e,vault:_p,metadataCache:va,workspace:vp,previousTries:0})});function ku(r){console.error(r),new wa.Notice(r,15e3)}function c_(r){console.warn(r),new wa.Notice(r,1e4)}function TC(r){Ea.debug(r)}var yn=class extends Error{},Ou=class extends Error{},d_=a=>q(void 0,[a],function*({originalTask:r,newTasks:e,vault:t,metadataCache:n,workspace:i,previousTries:s}){Ea.debug(`tryRepetitive after ${s} previous tries`);let o=()=>{if(s>10){let l=`Tasks: Could not find the correct task line to update. + +The task line not updated is: +${r.originalMarkdown} + +In this markdown file: +"${r.taskLocation.path}" + +Note: further clicks on this checkbox will usually now be ignored until the file is opened (or certain, specific edits are made - it's complicated). + +Recommendations: -`);let t=new qr(bf());return t.source.trim()!==""&&(e+=`Explanation of the global query: +1. Close all panes that have the above file open, and then re-open the file. -${t.explainQuery()} -`),e+=`Explanation of this Tasks code block query: +2. Check for exactly identical copies of the task line, in this file, and see if you can make them different. +`;ku(l);return}let u=Math.min(Math.pow(10,s),100);Ea.debug(`timeout = ${u}`),setTimeout(()=>{d_({originalTask:r,newTasks:e,vault:t,metadataCache:n,workspace:i,previousTries:s+1})},u)};try{let[u,l,c]=yield f_(r,t),p=[...c.slice(0,u),...e.map(h=>h.toFileLineString()),...c.slice(u+1)];yield t.modify(l,p.join(` +`))}catch(u){if(u instanceof yn)return u.message&&c_(u.message),o();if(u instanceof Ou)return o();u instanceof Error&&ku(u.message)}});function f_(r,e){return q(this,null,function*(){if(va===void 0)throw new yn;let t=e.getAbstractFileByPath(r.path);if(!(t instanceof wa.TFile))throw new yn(`Tasks: No file found for task ${r.description}. Retrying ...`);if(!yC.includes(t.extension))throw new Error(`Tasks: Does not support files with the ${t.extension} file extension.`);let n=va.getFileCache(t);if(n==null||n===null)throw new yn(`Tasks: No file cache found for file ${t.path}. Retrying ...`);let i=n.listItems;if(i===void 0||i.length===0)throw new yn(`Tasks: No list items found in file cache of ${t.path}. Retrying ...`);let a=(yield e.read(t)).split(` +`),o=bC(r,a,i,TC);if(o===void 0)throw new Ou;return[o,t,a]})}function Ep(r,e){return q(this,null,function*(){try{let[t,n,i]=yield f_(r,e);return[t,n]}catch(t){t instanceof yn?t.message&&c_(t.message):t instanceof Error&&ku(t.message)}})}function p_(r,e){return r{u.preventDefault(),u.stopPropagation(),a.disabled=!0;let l=r.toggleWithRecurrenceInUsersOrder();Su({originalTask:r,newTasks:l})}),n.prepend(a),n.setAttribute("data-task",r.status.symbol.trim()),n.setAttribute("data-line",e.listIndex.toString()),n.setAttribute("data-task-status-name",r.status.name),n.setAttribute("data-task-status-type",r.status.type),a.setAttribute("data-line",e.listIndex.toString()),(o=e.layoutOptions)!=null&&o.shortMode&&PC({task:r,element:i,isFilenameUnique:e.isFilenameUnique}),n})}function DC(r,e,t,n){return q(this,null,function*(){let i={},s=new ln(e.layoutOptions),a=Yr.tasksPluginEmoji.taskSerializer;for(let o of s.shownTaskLayoutComponents){let u=a.componentToString(r,s,o);if(u){o==="description"&&(u=ge.getInstance().removeAsWordFromDependingOnSettings(u));let l=document.createElement("span");if(t.appendChild(l),l){let c=document.createElement("span");l.appendChild(c),yield RC(c,u,o,r,n,e.obsidianComponent),MC(o,c);let p=xC(o,r);l.classList.add(...p);let h=wp(o,r);for(let _ in h)l.dataset[_]=h[_];i=pe(pe({},i),h)}}}for(let o of s.hiddenTaskLayoutComponents){let u=wp(o,r);i=pe(pe({},i),u)}if(i.taskPriority===void 0){let o=wp("priority",r);i=pe(pe({},i),o)}return i})}function RC(r,e,t,n,i,s){return q(this,null,function*(){if(t==="description"){let{debugSettings:a}=Q();a.showTaskHiddenData&&(e+=`
\u{1F41B} ${n.lineNumber} . ${n.sectionStart} . ${n.sectionIndex} . '${n.originalMarkdown}'
'${n.path}' > '${n.precedingHeader}'
`),yield i(e,r,n.path,s);let o=r.querySelector("blockquote"),u=o!=null?o:r,l=u.querySelector("p");if(l!==null){for(;l.firstChild;)u.insertBefore(l.firstChild,l);l.remove()}r.querySelectorAll("p").forEach(c=>{c.hasChildNodes()||c.remove()}),r.querySelectorAll(".footnotes").forEach(c=>{c.remove()})}else r.innerHTML=e})}function xC(r,e){let t=[],n=wC[r];switch(r){case"blockLink":break;case"description":case"priority":case"recurrenceRule":t.push(n);break;case"createdDate":case"dueDate":case"startDate":case"scheduledDate":case"doneDate":{e[r]&&t.push(n);break}}return t}function wp(r,e){let t={},n={createdDate:"taskCreated",dueDate:"taskDue",startDate:"taskStart",scheduledDate:"taskScheduled",doneDate:"taskDone",priority:"taskPriority",description:"",recurrenceRule:"",blockLink:""};switch(r){case"description":case"recurrenceRule":case"blockLink":break;case"priority":{let i=n[r];t[i]=Br.priorityNameUsingNormal(e.priority).toLocaleLowerCase();break}case"createdDate":case"dueDate":case"startDate":case"scheduledDate":case"doneDate":{let i=e[r];if(i){let s=AC(i);if(s){let a=n[r];t[a]=s}}break}}return t}function MC(r,e){if(r==="description"){let t=e.getElementsByClassName("tag");for(let n=0;n0?t+="past-":n<0&&(t+="future-"),Math.abs(n)<=kC?t+=Math.abs(n).toString()+"d":t+=OC,t)}function CC(r){let e=/["&\x00\r\n]/g,t=r.replace(e,"-");return t=t.replace(/^[-_]+/,""),t.length>0?t:null}function PC({task:r,element:e,isFilenameUnique:t}){let{recurrenceSymbol:n,startDateSymbol:i,createdDateSymbol:s,scheduledDateSymbol:a,dueDateSymbol:o,doneDateSymbol:u}=Yr.tasksPluginEmoji.taskSerializer.symbols;e.addEventListener("mouseenter",()=>{let l=e.createDiv();l.addClasses(["tooltip","pop-up"]),r.recurrence&&l.createDiv().setText(`${n} ${r.recurrence.toText()}`),ka(l,r.createdDate,s),ka(l,r.startDate,i),ka(l,r.scheduledDate,a),ka(l,r.dueDate,o),ka(l,r.doneDate,u);let c=r.getLinkText({isFilenameUnique:t});c&&l.createDiv().setText(`\u{1F517} ${c}`),e.addEventListener("mouseleave",()=>{l.remove()})})}function ka(r,e,t){e&&r.createDiv().setText(NC({signifier:t,date:e}))}function NC({signifier:r,date:e}){return`${r} ${e.format(z.dateFormat)} (${e.from(window.moment().startOf("day"))})`}function Du(r,e){function t(n,i,s,a){return q(this,null,function*(){if(!a)throw new Error("Must call the Obsidian renderer with an Obsidian Component object");yield h_.MarkdownRenderer.renderMarkdown(n,i,s,a)})}return SC(r,e,t)}var Ru=class{constructor({plugin:e}){this.markdownPostProcessor=this._markdownPostProcessor.bind(this);e.registerMarkdownPostProcessor(this._markdownPostProcessor.bind(this))}_markdownPostProcessor(e,t){return q(this,null,function*(){var c;let n=new m_.MarkdownRenderChild(e);t.addChild(n);let i=e.findAll(".task-list-item").filter(p=>{var y;let h=(y=p.textContent)==null?void 0:y.split(` +`);if(h===void 0)return!1;let _=null;for(let E=0;Eg_.ViewPlugin.fromClass(kp),kp=class{constructor(e){this.view=e,this.handleClickEvent=this.handleClickEvent.bind(this),this.view.dom.addEventListener("click",this.handleClickEvent)}destroy(){this.view.dom.removeEventListener("click",this.handleClickEvent)}handleClickEvent(e){let{target:t}=e;if(!t||!(t instanceof HTMLInputElement)||t.type!=="checkbox")return!1;let n=t.closest("ul.plugin-tasks-query-result, div.callout-content");if(n){if(n.matches("div.callout-content")){let h=`obsidian-tasks-plugin warning: Tasks cannot add or remove completion dates or make the next copy of a recurring task for tasks written inside a callout when you click their checkboxes in Live Preview. +If you wanted Tasks to do these things, please undo your change, then either click the line of the task and use the "Toggle Task Done" command, or switch to Reading View to click the checkbox.`;console.warn(h),new y_.Notice(h,45e3)}return!1}let{state:i}=this.view,s=this.view.posAtDOM(t),a=i.doc.lineAt(s),o=ye.fromLine({line:a.text,taskLocation:ot.fromUnknownPosition(""),fallbackDate:null});if(o===null)return!1;e.preventDefault();let l=o.toggleWithRecurrenceInUsersOrder().map(h=>h.toFileLineString()).join(i.lineBreak),c=i.update({changes:{from:a.from,to:a.to,insert:l}});this.view.dispatch(c);let p=t.checked;return setTimeout(()=>{t.checked=p},1),!0}};var Gi=require("obsidian");function b_(r,e,t,n=void 0){let i="";e.isEmpty()||(i+=`Only tasks containing the global filter '${e.get()}'. -${new qr({source:r}).explainQuery()}`,e}function cu(r){return new qr(bf()).append(new qr({source:r}))}var du=class{constructor({plugin:e,events:t}){this.addQueryRenderChild=this._addQueryRenderChild.bind(this);this.app=e.app,this.events=t,e.registerMarkdownCodeBlockProcessor("tasks",this._addQueryRenderChild.bind(this))}_addQueryRenderChild(e,t,n){return F(this,null,function*(){n.addChild(new rp({app:this.app,events:this.events,container:t,source:e,filePath:n.sourcePath}))})}},rp=class extends Mi.MarkdownRenderChild{constructor({app:t,events:n,container:i,source:s,filePath:a}){super(i);switch(this.app=t,this.events=n,this.source=s,this.filePath=a,this.containerEl.className){case"block-language-tasks":this.query=cu(this.source),this.queryType="tasks";break;default:this.query=cu(this.source),this.queryType="tasks";break}}onload(){this.events.triggerRequestCacheUpdate(this.render.bind(this)),this.renderEventRef=this.events.onCacheUpdate(this.render.bind(this)),this.reloadQueryAtMidnight()}onunload(){this.renderEventRef!==void 0&&this.events.off(this.renderEventRef),this.queryReloadTimeout!==void 0&&clearTimeout(this.queryReloadTimeout)}reloadQueryAtMidnight(){let t=new Date;t.setHours(24,0,0,0);let n=new Date,i=t.getTime()-n.getTime();this.queryReloadTimeout=setTimeout(()=>{this.query=cu(this.source),this.events.triggerRequestCacheUpdate(this.render.bind(this)),this.reloadQueryAtMidnight()},i+1e3)}render(i){return F(this,arguments,function*({tasks:t,state:n}){var a;let s=this.containerEl.createEl("div");n==="Warm"&&this.query.error===void 0?yield this.renderQuerySearchResults(t,n,s):this.query.error!==void 0?this.renderErrorMessage(s,this.query.error):this.renderLoadingMessage(s),(a=this.containerEl.firstChild)==null||a.replaceWith(s)})}renderQuerySearchResults(t,n,i){return F(this,null,function*(){console.debug(`Render ${this.queryType} called for a block in active file "${this.filePath}", to select from ${t.length} tasks: plugin state: ${n}`),this.query.layoutOptions.explainQuery&&this.createExplanation(i);let s=this.query.applyQueryToTasks(t);if(s.searchErrorMessage!==void 0){this.renderErrorMessage(i,s.searchErrorMessage);return}yield this.addAllTaskGroups(s.taskGroups,i);let a=s.totalTasksCount;console.debug(`${a} of ${t.length} tasks displayed in a block in "${this.filePath}"`),this.addTaskCount(i,a)})}renderErrorMessage(t,n){t.createDiv().innerHTML=`
Tasks query: ${n.replace(/\n/g,"
")}
`}renderLoadingMessage(t){t.setText("Loading Tasks ...")}createExplanation(t){let n=eb(this.source),i=t.createEl("pre");i.addClasses(["plugin-tasks-query-explanation"]),i.setText(n),t.appendChild(i)}createTasksList(i){return F(this,arguments,function*({tasks:t,content:n}){let s=t.length,a=new Jr(this.query.layoutOptions),o=n.createEl("ul");o.addClasses(["contains-task-list","plugin-tasks-query-result"]),o.addClasses(a.specificClasses);let u=this.getGroupingAttribute();u&&u.length>0&&(o.dataset.taskGroupBy=u);for(let l=0;lM.remove());let y=this.query.layoutOptions.shortMode,E=m.createSpan("task-extras");this.query.layoutOptions.hideUrgency||this.addUrgency(E,c),this.query.layoutOptions.hideBacklinks||this.addBacklinks(E,c,y,p),this.query.layoutOptions.hideEditButton||this.addEditButton(E,c),o.appendChild(m)}return{taskList:o,tasksCount:s}})}addEditButton(t,n){t.createEl("a",{cls:"tasks-edit"}).onClickEvent(s=>{s.preventDefault();let a=u=>{Do({originalTask:n,newTasks:Ot.removeInferredStatusIfNeeded(n,u)})};new nn({app:this.app,task:n,onSubmit:a}).open()})}addUrgency(t,n){let i=new Intl.NumberFormat().format(n.urgency);t.createSpan({text:i,cls:"tasks-urgency"})}addAllTaskGroups(t,n){return F(this,null,function*(){for(let i of t.groups){this.addGroupHeadings(n,i.groupHeadings);let{taskList:s}=yield this.createTasksList({tasks:i.tasks,content:n});n.appendChild(s)}})}addGroupHeadings(t,n){for(let i of n)this.addGroupHeading(t,i)}addGroupHeading(t,n){return F(this,null,function*(){let i="h6";n.nestingLevel===0?i="h4":n.nestingLevel===1&&(i="h5");let s=t.createEl(i,{cls:"tasks-group-heading"});yield Mi.MarkdownRenderer.renderMarkdown(n.displayName,s,this.filePath,this)})}addBacklinks(t,n,i,s){var c;let a=t.createSpan({cls:"tasks-backlink"});i||a.append(" (");let o=a.createEl("a");o.rel="noopener",o.target="_blank",o.addClass("internal-link"),i&&o.addClass("internal-link-short-mode");let u;i?u=" \u{1F517}":u=(c=n.getLinkText({isFilenameUnique:s}))!=null?c:"",o.setText(u);let l=this.app.vault;o.addEventListener("click",p=>F(this,null,function*(){let m=yield Of(n,l);if(m){let[T,y]=m;yield this.app.workspace.getLeaf(Mi.Keymap.isModEvent(p)).openFile(y,{eState:{line:T}})}})),o.addEventListener("mousedown",p=>F(this,null,function*(){if(p.button===1){let m=yield Of(n,l);if(m){let[T,y]=m;yield this.app.workspace.getLeaf("tab").openFile(y,{eState:{line:T}})}}})),i||a.append(")")}addTaskCount(t,n){this.query.layoutOptions.hideTaskCount||t.createDiv({text:`${n} task${n!==1?"s":""}`,cls:"tasks-count"})}isFilenameUnique({task:t}){let n=t.path.match(/([^/]*)\..+$/i);if(n===null)return;let i=n[1];return this.app.vault.getMarkdownFiles().filter(a=>{if(a.basename===i)return!0}).length<2}getGroupingAttribute(){let t=[];for(let n of this.query.grouping)t.push(n.property);return t.join(",")}};var be=require("obsidian");function tb(){return[[" ","Unchecked","x","TODO"],["x","Checked"," ","DONE"],[">","Rescheduled","x","TODO"],["<","Scheduled","x","TODO"],["!","Important","x","TODO"],["-","Cancelled"," ","CANCELLED"],["/","In Progress","x","IN_PROGRESS"],["?","Question","x","TODO"],["*","Star","x","TODO"],["n","Note","x","TODO"],["l","Location","x","TODO"],["i","Information","x","TODO"],["I","Idea","x","TODO"],["S","Amount","x","TODO"],["p","Pro","x","TODO"],["c","Con","x","TODO"],["b","Bookmark","x","TODO"],['"',"Quote","x","TODO"],["0","Speech bubble 0","0","NON_TASK"],["1","Speech bubble 1","1","NON_TASK"],["2","Speech bubble 2","2","NON_TASK"],["3","Speech bubble 3","3","NON_TASK"],["4","Speech bubble 4","4","NON_TASK"],["5","Speech bubble 5","5","NON_TASK"],["6","Speech bubble 6","6","NON_TASK"],["7","Speech bubble 7","7","NON_TASK"],["8","Speech bubble 8","8","NON_TASK"],["9","Speech bubble 9","9","NON_TASK"]]}function rb(){return[[" ","incomplete","x","TODO"],["x","complete / done"," ","DONE"],["-","cancelled"," ","CANCELLED"],[">","deferred","x","TODO"],["/","in progress, or half-done","x","IN_PROGRESS"],["!","Important","x","TODO"],["?","question","x","TODO"],["R","review","x","TODO"],["+","Inbox / task that should be processed later","x","TODO"],["b","bookmark","x","TODO"],["B","brainstorm","x","TODO"],["D","deferred or scheduled","x","TODO"],["I","Info","x","TODO"],["i","idea","x","TODO"],["N","note","x","TODO"],["Q","quote","x","TODO"],["W","win / success / reward","x","TODO"],["P","pro","x","TODO"],["C","con","x","TODO"]]}function nb(){return[[" ","Unchecked","x","TODO"],["x","Checked"," ","DONE"],["-","Cancelled"," ","CANCELLED"],["/","In Progress","x","IN_PROGRESS"],[">","Deferred","x","TODO"],["!","Important","x","TODO"],["?","Question","x","TODO"],["r","Review","x","TODO"]]}function ib(){return[[" ","Unchecked","x","TODO"],["x","Regular"," ","DONE"],["X","Checked"," ","DONE"],["-","Dropped"," ","CANCELLED"],[">","Forward","x","TODO"],["D","Date","x","TODO"],["?","Question","x","TODO"],["/","Half Done","x","IN_PROGRESS"],["+","Add","x","TODO"],["R","Research","x","TODO"],["!","Important","x","TODO"],["i","Idea","x","TODO"],["B","Brainstorm","x","TODO"],["P","Pro","x","TODO"],["C","Con","x","TODO"],["Q","Quote","x","TODO"],["N","Note","x","TODO"],["b","Bookmark","x","TODO"],["I","Information","x","TODO"],["p","Paraphrase","x","TODO"],["L","Location","x","TODO"],["E","Example","x","TODO"],["A","Answer","x","TODO"],["r","Reward","x","TODO"],["c","Choice","x","TODO"],["d","Doing","x","IN_PROGRESS"],["T","Time","x","TODO"],["@","Character / Person","x","TODO"],["t","Talk","x","TODO"],["O","Outline / Plot","x","TODO"],["~","Conflict","x","TODO"],["W","World","x","TODO"],["f","Clue / Find","x","TODO"],["F","Foreshadow","x","TODO"],["H","Favorite / Health","x","TODO"],["&","Symbolism","x","TODO"],["s","Secret","x","TODO"]]}function sb(){return[[" ","Unchecked","x","TODO"],["x","Checked"," ","DONE"],[">","Rescheduled","x","TODO"],["<","Scheduled","x","TODO"],["!","Important","x","TODO"],["-","Cancelled"," ","CANCELLED"],["/","In Progress","x","IN_PROGRESS"],["?","Question","x","TODO"],["*","Star","x","TODO"],["n","Note","x","TODO"],["l","Location","x","TODO"],["i","Information","x","TODO"],["I","Idea","x","TODO"],["S","Amount","x","TODO"],["p","Pro","x","TODO"],["c","Con","x","TODO"],["b","Bookmark","x","TODO"],["f","Fire","x","TODO"],["k","Key","x","TODO"],["w","Win","x","TODO"],["u","Up","x","TODO"],["d","Down","x","TODO"]]}function ab(){return[[" ","to-do","x","TODO"],["/","incomplete","x","IN_PROGRESS"],["x","done"," ","DONE"],["-","canceled"," ","CANCELLED"],[">","forwarded","x","TODO"],["<","scheduling","x","TODO"],["?","question","x","TODO"],["!","important","x","TODO"],["*","star","x","TODO"],['"',"quote","x","TODO"],["l","location","x","TODO"],["b","bookmark","x","TODO"],["i","information","x","TODO"],["S","savings","x","TODO"],["I","idea","x","TODO"],["p","pros","x","TODO"],["c","cons","x","TODO"],["f","fire","x","TODO"],["k","key","x","TODO"],["w","win","x","TODO"],["u","up","x","TODO"],["d","down","x","TODO"]]}function ob(){return[[" ","to-do","x","TODO"],["/","incomplete","x","IN_PROGRESS"],["x","done"," ","DONE"],["-","canceled"," ","CANCELLED"],[">","forwarded","x","TODO"],["<","scheduling","x","TODO"],["?","question","x","TODO"],["!","important","x","TODO"],["*","star","x","TODO"],['"',"quote","x","TODO"],["l","location","x","TODO"],["b","bookmark","x","TODO"],["i","information","x","TODO"],["S","savings","x","TODO"],["I","idea","x","TODO"],["p","pros","x","TODO"],["c","cons","x","TODO"],["f","fire","x","TODO"],["k","key","x","TODO"],["w","win","x","TODO"],["u","up","x","TODO"],["d","down","x","TODO"]]}var ub=[{text:"Core Statuses",level:"h3",class:"",open:!0,notice:{class:"setting-item-description",text:null,html:"

These are the core statuses that Tasks supports natively, with no need for custom CSS styling or theming.

You can add edit and add your own custom statuses in the section below.

"},settings:[{name:"",description:"",type:"function",initialValue:"",placeholder:"",settingName:"insertTaskCoreStatusSettings",featureFlag:"",notice:null}]},{text:"Custom Statuses",level:"h3",class:"",open:!0,notice:{class:"setting-item-description",text:null,html:`

You should first select and install a CSS Snippet or Theme to style custom checkboxes.

Then, use the buttons below to set up your custom statuses, to match your chosen CSS checkboxes.

Note Any statuses with the same symbol as any earlier statuses will be ignored. You can confirm the actually loaded statuses by running the 'Create or edit task' command and looking at the Status drop-down.

See the documentation to get started!

`},settings:[{name:"",description:"",type:"function",initialValue:"",placeholder:"",settingName:"insertCustomTaskStatusSettings",featureFlag:"",notice:null}]}];var sr=require("obsidian");var Un=class{validate(e){let t=[];return t.push(...this.validateSymbol(e)),t.push(...this.validateName(e)),t.push(...this.validateNextSymbol(e)),t}validateStatusCollectionEntry(e){let[t,n,i,s]=e,a=[];if(a.push(...this.validateType(s)),t===i&&s!=="NON_TASK"&&a.push(`Status symbol '${t}' toggles to itself`),a.length>0)return a;let o=J.createFromImportedValue(e).configuration;return a.push(...this.validateSymbolTypeConventions(o)),a.push(...this.validate(o)),a}validateSymbol(e){return Un.validateOneSymbol(e.symbol,"Task Status Symbol")}validateNextSymbol(e){return Un.validateOneSymbol(e.nextStatusSymbol,"Task Next Status Symbol")}validateName(e){let t=[];return e.name.length===0&&t.push("Task Status Name cannot be empty."),t}validateType(e){let t=zt[e],n=[];return t||n.push(`Status Type "${e}" is not a valid type`),t=="EMPTY"&&n.push('Status Type "EMPTY" is not permitted in user data'),n}validateSymbolTypeConventions(e){let t=[],n=e.symbol,i=new Se,s=n==="X"?"x":n,a=i.bySymbol(s);return a.type!=="EMPTY"&&(e.nextStatusSymbol!==a.nextStatusSymbol&&t.push(`Next Status Symbol for symbol '${n}': '${e.nextStatusSymbol}' is inconsistent with convention '${a.nextStatusSymbol}'`),e.type!==a.type&&t.push(`Status Type for symbol '${n}': '${e.type}' is inconsistent with convention '${a.type}'`)),t}static validateOneSymbol(e,t){let n=[];return e.length===0&&n.push(`${t} cannot be empty.`),e.length>1&&n.push(`${t} ("${e}") must be a single character.`),n}};var Wn=new Un,It=class extends sr.Modal{constructor(t,n,i){super(t.app);this.plugin=t;this.saved=!1;this.error=!1;this.statusSymbol=n.symbol,this.statusName=n.name,this.statusNextSymbol=n.nextStatusSymbol,this.statusAvailableAsCommand=n.availableAsCommand,this.type=n.type,this.isCoreStatus=i}statusConfiguration(){return new tt(this.statusSymbol,this.statusName,this.statusNextSymbol,this.statusAvailableAsCommand,this.type)}display(){return F(this,null,function*(){let{contentEl:t}=this;t.empty();let n=t.createDiv(),i;new sr.Setting(n).setName("Task Status Symbol").setDesc("This is the character between the square braces. (It can only be edited for Custom statuses, and not Core statuses.)").addText(l=>{i=l,l.setValue(this.statusSymbol).onChange(c=>{this.statusSymbol=c,It.setValid(l,Wn.validateSymbol(this.statusConfiguration()))})}).setDisabled(this.isCoreStatus).then(l=>{It.setValid(i,Wn.validateSymbol(this.statusConfiguration()))});let s;new sr.Setting(n).setName("Task Status Name").setDesc("This is the friendly name of the task status.").addText(l=>{s=l,l.setValue(this.statusName).onChange(c=>{this.statusName=c,It.setValid(l,Wn.validateName(this.statusConfiguration()))})}).then(l=>{It.setValid(s,Wn.validateName(this.statusConfiguration()))});let a;new sr.Setting(n).setName("Task Next Status Symbol").setDesc("When clicked on this is the symbol that should be used next.").addText(l=>{a=l,l.setValue(this.statusNextSymbol).onChange(c=>{this.statusNextSymbol=c,It.setValid(l,Wn.validateNextSymbol(this.statusConfiguration()))})}).then(l=>{It.setValid(a,Wn.validateNextSymbol(this.statusConfiguration()))}),new sr.Setting(n).setName("Task Status Type").setDesc("Control how the status behaves for searching and toggling.").addDropdown(l=>{["TODO","IN_PROGRESS","DONE","CANCELLED","NON_TASK"].forEach(p=>{l.addOption(p,p)}),l.setValue(this.type).onChange(p=>{this.type=J.getTypeFromStatusTypeString(p)})}),J.tasksPluginCanCreateCommandsForStatuses()&&new sr.Setting(n).setName("Available as command").setDesc("If enabled this status will be available as a command so you can assign a hotkey and toggle the status using it.").addToggle(l=>{l.setValue(this.statusAvailableAsCommand).onChange(c=>F(this,null,function*(){this.statusAvailableAsCommand=c}))});let o=t.createDiv(),u=new sr.Setting(o);u.addButton(l=>(l.setTooltip("Save").setIcon("checkmark").onClick(()=>F(this,null,function*(){let c=Wn.validate(this.statusConfiguration());if(c.length>0){let p=c.join(` +`);let s=new Vr(r,n);return s.ignoreGlobalQuery||t.hasInstructions()&&(i+=`Explanation of the global query: + +${t.query(n).explainQuery()} +`),i+=`Explanation of this Tasks code block query: + +${s.explainQuery()}`,i}function xu(r,e,t){let n=new Vr(r,t);return n.ignoreGlobalQuery?n:e.query(t).append(n)}var Mu=class{constructor({plugin:e,events:t}){this.addQueryRenderChild=this._addQueryRenderChild.bind(this);this.app=e.app,this.events=t,e.registerMarkdownCodeBlockProcessor("tasks",this._addQueryRenderChild.bind(this))}_addQueryRenderChild(e,t,n){return q(this,null,function*(){n.addChild(new Op({app:this.app,events:this.events,container:t,source:e,filePath:n.sourcePath}))})}},Op=class extends Gi.MarkdownRenderChild{constructor({app:t,events:n,container:i,source:s,filePath:a}){super(i);switch(this.app=t,this.events=n,this.source=s,this.filePath=a,this.containerEl.className){case"block-language-tasks":this.query=xu(this.source,Jt.getInstance(),this.filePath),this.queryType="tasks";break;default:this.query=xu(this.source,Jt.getInstance(),this.filePath),this.queryType="tasks";break}}onload(){this.events.triggerRequestCacheUpdate(this.render.bind(this)),this.renderEventRef=this.events.onCacheUpdate(this.render.bind(this)),this.reloadQueryAtMidnight()}onunload(){this.renderEventRef!==void 0&&this.events.off(this.renderEventRef),this.queryReloadTimeout!==void 0&&clearTimeout(this.queryReloadTimeout)}reloadQueryAtMidnight(){let t=new Date;t.setHours(24,0,0,0);let n=new Date,i=t.getTime()-n.getTime();this.queryReloadTimeout=setTimeout(()=>{this.query=xu(this.source,Jt.getInstance(),this.filePath),this.events.triggerRequestCacheUpdate(this.render.bind(this)),this.reloadQueryAtMidnight()},i+1e3)}render(i){return q(this,arguments,function*({tasks:t,state:n}){var a;let s=this.containerEl.createEl("div");n==="Warm"&&this.query.error===void 0?yield this.renderQuerySearchResults(t,n,s):this.query.error!==void 0?this.renderErrorMessage(s,this.query.error):this.renderLoadingMessage(s),(a=this.containerEl.firstChild)==null||a.replaceWith(s)})}renderQuerySearchResults(t,n,i){return q(this,null,function*(){this.query.layoutOptions.explainQuery&&this.createExplanation(i);let a=this.query.applyQueryToTasks(t);if(a.searchErrorMessage!==void 0){this.renderErrorMessage(i,a.searchErrorMessage);return}yield this.addAllTaskGroups(a.taskGroups,i);let o=a.totalTasksCount;this.addTaskCount(i,a)})}renderErrorMessage(t,n){t.createDiv().innerHTML=`
Tasks query: ${n.replace(/\n/g,"
")}
`}renderLoadingMessage(t){t.setText("Loading Tasks ...")}createExplanation(t){let n=b_(this.source,ge.getInstance(),Jt.getInstance(),this.filePath),i=t.createEl("pre");i.addClasses(["plugin-tasks-query-explanation"]),i.setText(n),t.appendChild(i)}createTaskList(t,n){return q(this,null,function*(){let i=new ln(this.query.layoutOptions),s=n.createEl("ul");s.addClasses(["contains-task-list","plugin-tasks-query-result"]),s.addClasses(i.taskListHiddenClasses);let a=this.getGroupingAttribute();a&&a.length>0&&(s.dataset.taskGroupBy=a);for(let[o,u]of t.entries()){let l=this.isFilenameUnique({task:u}),c=yield Du(u,{parentUlElement:s,listIndex:o,layoutOptions:this.query.layoutOptions,isFilenameUnique:l,taskLayout:i,obsidianComponent:this});c.querySelectorAll("[data-footnote-id]").forEach(_=>_.remove());let h=c.createSpan("task-extras");if(this.query.layoutOptions.hideUrgency||this.addUrgency(h,u),!this.query.layoutOptions.hideBacklinks){let _=this.query.layoutOptions.shortMode;this.addBacklinks(h,u,_,l)}this.query.layoutOptions.hideEditButton||this.addEditButton(h,u),s.appendChild(c)}n.appendChild(s)})}addEditButton(t,n){t.createEl("a",{cls:"tasks-edit"}).onClickEvent(s=>{s.preventDefault();let a=u=>{Su({originalTask:n,newTasks:Rt.removeInferredStatusIfNeeded(n,u)})};new dn({app:this.app,task:n,onSubmit:a}).open()})}addUrgency(t,n){let i=new Intl.NumberFormat().format(n.urgency);t.createSpan({text:i,cls:"tasks-urgency"})}addAllTaskGroups(t,n){return q(this,null,function*(){for(let i of t.groups)this.addGroupHeadings(n,i.groupHeadings),yield this.createTaskList(i.tasks,n)})}addGroupHeadings(t,n){for(let i of n)this.addGroupHeading(t,i)}addGroupHeading(t,n){return q(this,null,function*(){let i="h6";n.nestingLevel===0?i="h4":n.nestingLevel===1&&(i="h5");let s=t.createEl(i,{cls:"tasks-group-heading"});yield Gi.MarkdownRenderer.renderMarkdown(n.displayName,s,this.filePath,this)})}addBacklinks(t,n,i,s){var c;let a=t.createSpan({cls:"tasks-backlink"});i||a.append(" (");let o=a.createEl("a");o.rel="noopener",o.target="_blank",o.addClass("internal-link"),i&&o.addClass("internal-link-short-mode");let u;i?u=" \u{1F517}":u=(c=n.getLinkText({isFilenameUnique:s}))!=null?c:"",o.setText(u);let l=this.app.vault;o.addEventListener("click",p=>q(this,null,function*(){let h=yield Ep(n,l);if(h){let[_,y]=h;yield this.app.workspace.getLeaf(Gi.Keymap.isModEvent(p)).openFile(y,{eState:{line:_}})}})),o.addEventListener("mousedown",p=>q(this,null,function*(){if(p.button===1){let h=yield Ep(n,l);if(h){let[_,y]=h;yield this.app.workspace.getLeaf("tab").openFile(y,{eState:{line:_}})}}})),i||a.append(")")}addTaskCount(t,n){this.query.layoutOptions.hideTaskCount||t.createDiv({text:n.totalTasksCountDisplayText(),cls:"tasks-count"})}isFilenameUnique({task:t}){let n=t.path.match(/([^/]*)\..+$/i);if(n===null)return;let i=n[1];return this.app.vault.getMarkdownFiles().filter(a=>{if(a.basename===i)return!0}).length<2}getGroupingAttribute(){let t=[];for(let n of this.query.grouping)t.push(n.property);return t.join(",")}};var ve=require("obsidian");function __(){return[[" ","Unchecked","x","TODO"],["x","Checked"," ","DONE"],[">","Rescheduled","x","TODO"],["<","Scheduled","x","TODO"],["!","Important","x","TODO"],["-","Cancelled"," ","CANCELLED"],["/","In Progress","x","IN_PROGRESS"],["?","Question","x","TODO"],["*","Star","x","TODO"],["n","Note","x","TODO"],["l","Location","x","TODO"],["i","Information","x","TODO"],["I","Idea","x","TODO"],["S","Amount","x","TODO"],["p","Pro","x","TODO"],["c","Con","x","TODO"],["b","Bookmark","x","TODO"],['"',"Quote","x","TODO"],["0","Speech bubble 0","0","NON_TASK"],["1","Speech bubble 1","1","NON_TASK"],["2","Speech bubble 2","2","NON_TASK"],["3","Speech bubble 3","3","NON_TASK"],["4","Speech bubble 4","4","NON_TASK"],["5","Speech bubble 5","5","NON_TASK"],["6","Speech bubble 6","6","NON_TASK"],["7","Speech bubble 7","7","NON_TASK"],["8","Speech bubble 8","8","NON_TASK"],["9","Speech bubble 9","9","NON_TASK"]]}function v_(){return[[" ","incomplete","x","TODO"],["x","complete / done"," ","DONE"],["-","cancelled"," ","CANCELLED"],[">","deferred","x","TODO"],["/","in progress, or half-done","x","IN_PROGRESS"],["!","Important","x","TODO"],["?","question","x","TODO"],["R","review","x","TODO"],["+","Inbox / task that should be processed later","x","TODO"],["b","bookmark","x","TODO"],["B","brainstorm","x","TODO"],["D","deferred or scheduled","x","TODO"],["I","Info","x","TODO"],["i","idea","x","TODO"],["N","note","x","TODO"],["Q","quote","x","TODO"],["W","win / success / reward","x","TODO"],["P","pro","x","TODO"],["C","con","x","TODO"]]}function E_(){return[[" ","Unchecked","x","TODO"],["x","Checked"," ","DONE"],["-","Cancelled"," ","CANCELLED"],["/","In Progress","x","IN_PROGRESS"],[">","Deferred","x","TODO"],["!","Important","x","TODO"],["?","Question","x","TODO"],["r","Review","x","TODO"]]}function w_(){return[[" ","Unchecked","x","TODO"],["x","Regular"," ","DONE"],["X","Checked"," ","DONE"],["-","Dropped"," ","CANCELLED"],[">","Forward","x","TODO"],["D","Date","x","TODO"],["?","Question","x","TODO"],["/","Half Done","x","IN_PROGRESS"],["+","Add","x","TODO"],["R","Research","x","TODO"],["!","Important","x","TODO"],["i","Idea","x","TODO"],["B","Brainstorm","x","TODO"],["P","Pro","x","TODO"],["C","Con","x","TODO"],["Q","Quote","x","TODO"],["N","Note","x","TODO"],["b","Bookmark","x","TODO"],["I","Information","x","TODO"],["p","Paraphrase","x","TODO"],["L","Location","x","TODO"],["E","Example","x","TODO"],["A","Answer","x","TODO"],["r","Reward","x","TODO"],["c","Choice","x","TODO"],["d","Doing","x","IN_PROGRESS"],["T","Time","x","TODO"],["@","Character / Person","x","TODO"],["t","Talk","x","TODO"],["O","Outline / Plot","x","TODO"],["~","Conflict","x","TODO"],["W","World","x","TODO"],["f","Clue / Find","x","TODO"],["F","Foreshadow","x","TODO"],["H","Favorite / Health","x","TODO"],["&","Symbolism","x","TODO"],["s","Secret","x","TODO"]]}function k_(){return[[" ","Unchecked","x","TODO"],["x","Checked"," ","DONE"],[">","Rescheduled","x","TODO"],["<","Scheduled","x","TODO"],["!","Important","x","TODO"],["-","Cancelled"," ","CANCELLED"],["/","In Progress","x","IN_PROGRESS"],["?","Question","x","TODO"],["*","Star","x","TODO"],["n","Note","x","TODO"],["l","Location","x","TODO"],["i","Information","x","TODO"],["I","Idea","x","TODO"],["S","Amount","x","TODO"],["p","Pro","x","TODO"],["c","Con","x","TODO"],["b","Bookmark","x","TODO"],["f","Fire","x","TODO"],["k","Key","x","TODO"],["w","Win","x","TODO"],["u","Up","x","TODO"],["d","Down","x","TODO"]]}function O_(){return[[" ","to-do","x","TODO"],["/","incomplete","x","IN_PROGRESS"],["x","done"," ","DONE"],["-","canceled"," ","CANCELLED"],[">","forwarded","x","TODO"],["<","scheduling","x","TODO"],["?","question","x","TODO"],["!","important","x","TODO"],["*","star","x","TODO"],['"',"quote","x","TODO"],["l","location","x","TODO"],["b","bookmark","x","TODO"],["i","information","x","TODO"],["S","savings","x","TODO"],["I","idea","x","TODO"],["p","pros","x","TODO"],["c","cons","x","TODO"],["f","fire","x","TODO"],["k","key","x","TODO"],["w","win","x","TODO"],["u","up","x","TODO"],["d","down","x","TODO"]]}function S_(){return[[" ","to-do","x","TODO"],["/","incomplete","x","IN_PROGRESS"],["x","done"," ","DONE"],["-","canceled"," ","CANCELLED"],[">","forwarded","x","TODO"],["<","scheduling","x","TODO"],["?","question","x","TODO"],["!","important","x","TODO"],["*","star","x","TODO"],['"',"quote","x","TODO"],["l","location","x","TODO"],["b","bookmark","x","TODO"],["i","information","x","TODO"],["S","savings","x","TODO"],["I","idea","x","TODO"],["p","pros","x","TODO"],["c","cons","x","TODO"],["f","fire","x","TODO"],["k","key","x","TODO"],["w","win","x","TODO"],["u","up","x","TODO"],["d","down","x","TODO"]]}var D_=[{text:"Core Statuses",level:"h3",class:"",open:!0,notice:{class:"setting-item-description",text:null,html:"

These are the core statuses that Tasks supports natively, with no need for custom CSS styling or theming.

You can add edit and add your own custom statuses in the section below.

"},settings:[{name:"",description:"",type:"function",initialValue:"",placeholder:"",settingName:"insertTaskCoreStatusSettings",featureFlag:"",notice:null}]},{text:"Custom Statuses",level:"h3",class:"",open:!0,notice:{class:"setting-item-description",text:null,html:`

You should first select and install a CSS Snippet or Theme to style custom checkboxes.

Then, use the buttons below to set up your custom statuses, to match your chosen CSS checkboxes.

Note Any statuses with the same symbol as any earlier statuses will be ignored. You can confirm the actually loaded statuses by running the 'Create or edit task' command and looking at the Status drop-down.

See the documentation to get started!

`},settings:[{name:"",description:"",type:"function",initialValue:"",placeholder:"",settingName:"insertCustomTaskStatusSettings",featureFlag:"",notice:null}]}];var dr=require("obsidian");var Kn=class{validate(e){let t=[];return t.push(...this.validateSymbol(e)),t.push(...this.validateName(e)),t.push(...this.validateNextSymbol(e)),t}validateStatusCollectionEntry(e){let[t,n,i,s]=e,a=[];if(a.push(...this.validateType(s)),t===i&&s!=="NON_TASK"&&a.push(`Status symbol '${t}' toggles to itself`),a.length>0)return a;let o=te.createFromImportedValue(e).configuration;return a.push(...this.validateSymbolTypeConventions(o)),a.push(...this.validate(o)),a}validateSymbol(e){return Kn.validateOneSymbol(e.symbol,"Task Status Symbol")}validateNextSymbol(e){return Kn.validateOneSymbol(e.nextStatusSymbol,"Task Next Status Symbol")}validateName(e){let t=[];return e.name.length===0&&t.push("Task Status Name cannot be empty."),t}validateType(e){let t=Qt[e],n=[];return t||n.push(`Status Type "${e}" is not a valid type`),t=="EMPTY"&&n.push('Status Type "EMPTY" is not permitted in user data'),n}validateSymbolTypeConventions(e){let t=[],n=e.symbol,i=new De,s=n==="X"?"x":n,a=i.bySymbol(s);return a.type!=="EMPTY"&&(e.nextStatusSymbol!==a.nextStatusSymbol&&t.push(`Next Status Symbol for symbol '${n}': '${e.nextStatusSymbol}' is inconsistent with convention '${a.nextStatusSymbol}'`),e.type!==a.type&&t.push(`Status Type for symbol '${n}': '${e.type}' is inconsistent with convention '${a.type}'`)),t}static validateOneSymbol(e,t){let n=[];return e.length===0&&n.push(`${t} cannot be empty.`),e.length>1&&n.push(`${t} ("${e}") must be a single character.`),n}};var Vn=new Kn,Ut=class extends dr.Modal{constructor(t,n,i){super(t.app);this.plugin=t;this.saved=!1;this.error=!1;this.statusSymbol=n.symbol,this.statusName=n.name,this.statusNextSymbol=n.nextStatusSymbol,this.statusAvailableAsCommand=n.availableAsCommand,this.type=n.type,this.isCoreStatus=i}statusConfiguration(){return new Je(this.statusSymbol,this.statusName,this.statusNextSymbol,this.statusAvailableAsCommand,this.type)}display(){return q(this,null,function*(){let{contentEl:t}=this;t.empty();let n=t.createDiv(),i;new dr.Setting(n).setName("Task Status Symbol").setDesc("This is the character between the square braces. (It can only be edited for Custom statuses, and not Core statuses.)").addText(l=>{i=l,l.setValue(this.statusSymbol).onChange(c=>{this.statusSymbol=c,Ut.setValid(l,Vn.validateSymbol(this.statusConfiguration()))})}).setDisabled(this.isCoreStatus).then(l=>{Ut.setValid(i,Vn.validateSymbol(this.statusConfiguration()))});let s;new dr.Setting(n).setName("Task Status Name").setDesc("This is the friendly name of the task status.").addText(l=>{s=l,l.setValue(this.statusName).onChange(c=>{this.statusName=c,Ut.setValid(l,Vn.validateName(this.statusConfiguration()))})}).then(l=>{Ut.setValid(s,Vn.validateName(this.statusConfiguration()))});let a;new dr.Setting(n).setName("Task Next Status Symbol").setDesc("When clicked on this is the symbol that should be used next.").addText(l=>{a=l,l.setValue(this.statusNextSymbol).onChange(c=>{this.statusNextSymbol=c,Ut.setValid(l,Vn.validateNextSymbol(this.statusConfiguration()))})}).then(l=>{Ut.setValid(a,Vn.validateNextSymbol(this.statusConfiguration()))}),new dr.Setting(n).setName("Task Status Type").setDesc("Control how the status behaves for searching and toggling.").addDropdown(l=>{["TODO","IN_PROGRESS","DONE","CANCELLED","NON_TASK"].forEach(p=>{l.addOption(p,p)}),l.setValue(this.type).onChange(p=>{this.type=te.getTypeFromStatusTypeString(p)})}),te.tasksPluginCanCreateCommandsForStatuses()&&new dr.Setting(n).setName("Available as command").setDesc("If enabled this status will be available as a command so you can assign a hotkey and toggle the status using it.").addToggle(l=>{l.setValue(this.statusAvailableAsCommand).onChange(c=>q(this,null,function*(){this.statusAvailableAsCommand=c}))});let o=t.createDiv(),u=new dr.Setting(o);u.addButton(l=>(l.setTooltip("Save").setIcon("checkmark").onClick(()=>q(this,null,function*(){let c=Vn.validate(this.statusConfiguration());if(c.length>0){let p=c.join(` `)+` -Fix errors before saving.`;new sr.Notice(p);return}this.saved=!0,this.close()})),l)),u.addExtraButton(l=>(l.setIcon("cross").setTooltip("Cancel").onClick(()=>{this.saved=!1,this.close()}),l))})}onOpen(){this.display()}static setValidationError(t){t.inputEl.addClass("tasks-settings-is-invalid")}static removeValidationError(t){t.inputEl.removeClass("tasks-settings-is-invalid")}static setValid(t,n){n.length===0?It.removeValidationError(t):It.setValidationError(t)}};var Ft=class extends be.PluginSettingTab{constructor({plugin:t}){super(t.app,t);this.customFunctions={insertTaskCoreStatusSettings:this.insertTaskCoreStatusSettings.bind(this),insertCustomTaskStatusSettings:this.insertCustomTaskStatusSettings.bind(this)};this.plugin=t}saveSettings(t){return F(this,null,function*(){yield this.plugin.saveSettings(),t&&this.display()})}display(){let{containerEl:t}=this;t.empty(),this.containerEl.addClass("tasks-settings"),t.createEl("h3",{text:"Tasks Settings"}),t.createEl("p",{cls:"tasks-setting-important",text:"Changing any settings requires a restart of obsidian."}),t.createEl("h4",{text:"Task Format Settings"}),new be.Setting(t).setName("Task Format").setDesc(Ft.createFragmentWithHTML('

The format that Tasks uses to read and write tasks.

Important: Tasks currently only supports one format at a time. Selecting Dataview will currently stop Tasks reading its own emoji signifiers.

See the documentation.

')).addDropdown(i=>{for(let s of Object.keys(Cr))i.addOption(s,Cr[s].displayName);i.setValue(Q().taskFormat).onChange(s=>F(this,null,function*(){Ge({taskFormat:s}),yield this.plugin.saveSettings()}))}),t.createEl("h4",{text:"Global filter Settings"}),new be.Setting(t).setName("Global task filter").setDesc(Ft.createFragmentWithHTML('

Recommended: Leave empty if you want all checklist items in your vault to be tasks managed by this plugin.

Use a global filter if you want Tasks to only act on a subset of your "- [ ]" checklist items, so that a checklist item must include the specified string in its description in order to be considered a task.

For example, if you set the global filter to #task, the Tasks plugin will only handle checklist items tagged with #task.
Other checklist items will remain normal checklist items and not appear in queries or get a done date set.

See the documentation.

')).addText(i=>{i.setPlaceholder("e.g. #task or TODO").setValue(we.get()).onChange(s=>F(this,null,function*(){we.set(s),yield this.plugin.saveSettings()}))}),new be.Setting(t).setName("Remove global filter from description").setDesc("Enabling this removes the string that you set as global filter from the task description when displaying a task.").addToggle(i=>{let s=Q();i.setValue(s.removeGlobalFilter).onChange(a=>F(this,null,function*(){Ge({removeGlobalFilter:a}),yield this.plugin.saveSettings()}))}),t.createEl("h4",{text:"Global Query"}),wA(new be.Setting(t).setDesc(Ft.createFragmentWithHTML('

A query that is automatically included at the start of every Tasks block in the vault. Useful for adding default filters, or layout options.

See the documentation.

')).addTextArea(i=>{let s=Q();i.inputEl.rows=4,i.setPlaceholder(`# For example... +Fix errors before saving.`;new dr.Notice(p);return}this.saved=!0,this.close()})),l)),u.addExtraButton(l=>(l.setIcon("cross").setTooltip("Cancel").onClick(()=>{this.saved=!1,this.close()}),l))})}onOpen(){this.display()}static setValidationError(t){t.inputEl.addClass("tasks-settings-is-invalid")}static removeValidationError(t){t.inputEl.removeClass("tasks-settings-is-invalid")}static setValid(t,n){n.length===0?Ut.removeValidationError(t):Ut.setValidationError(t)}};var Wt=class extends ve.PluginSettingTab{constructor({plugin:t}){super(t.app,t);this.customFunctions={insertTaskCoreStatusSettings:this.insertTaskCoreStatusSettings.bind(this),insertCustomTaskStatusSettings:this.insertCustomTaskStatusSettings.bind(this)};this.plugin=t}saveSettings(t){return q(this,null,function*(){yield this.plugin.saveSettings(),t&&this.display()})}display(){let{containerEl:t}=this;t.empty(),this.containerEl.addClass("tasks-settings"),t.createEl("h3",{text:"Tasks Settings"}),t.createEl("p",{cls:"tasks-setting-important",text:"Changing any settings requires a restart of obsidian."}),t.createEl("h4",{text:"Task Format Settings"}),new ve.Setting(t).setName("Task Format").setDesc(Wt.createFragmentWithHTML('

The format that Tasks uses to read and write tasks.

Important: Tasks currently only supports one format at a time. Selecting Dataview will currently stop Tasks reading its own emoji signifiers.

See the documentation.

')).addDropdown(i=>{for(let s of Object.keys(Yr))i.addOption(s,Yr[s].displayName);i.setValue(Q().taskFormat).onChange(s=>q(this,null,function*(){et({taskFormat:s}),yield this.plugin.saveSettings()}))}),t.createEl("h4",{text:"Global filter Settings"}),new ve.Setting(t).setName("Global task filter").setDesc(Wt.createFragmentWithHTML('

Recommended: Leave empty if you want all checklist items in your vault to be tasks managed by this plugin.

Use a global filter if you want Tasks to only act on a subset of your "- [ ]" checklist items, so that a checklist item must include the specified string in its description in order to be considered a task.

For example, if you set the global filter to #task, the Tasks plugin will only handle checklist items tagged with #task.
Other checklist items will remain normal checklist items and not appear in queries or get a done date set.

See the documentation.

')).addText(i=>{i.setPlaceholder("e.g. #task or TODO").setValue(ge.getInstance().get()).onChange(s=>q(this,null,function*(){et({globalFilter:s}),ge.getInstance().set(s),yield this.plugin.saveSettings()}))}),new ve.Setting(t).setName("Remove global filter from description").setDesc("Enabling this removes the string that you set as global filter from the task description when displaying a task.").addToggle(i=>{let s=Q();i.setValue(s.removeGlobalFilter).onChange(a=>q(this,null,function*(){et({removeGlobalFilter:a}),ge.getInstance().setRemoveGlobalFilter(a),yield this.plugin.saveSettings()}))}),t.createEl("h4",{text:"Global Query"}),UC(new ve.Setting(t).setDesc(Wt.createFragmentWithHTML('

A query that is automatically included at the start of every Tasks block in the vault. Useful for adding default filters, or layout options.

See the documentation.

')).addTextArea(i=>{let s=Q();i.inputEl.rows=4,i.setPlaceholder(`# For example... path does not include _templates/ limit 300 -show urgency`).setValue(s.globalQuery).onChange(a=>F(this,null,function*(){Ge({globalQuery:a}),yield this.plugin.saveSettings()}))})),t.createEl("h4",{text:"Task Statuses"});let{headingOpened:n}=Q();ub.forEach(i=>{this.addOneSettingsBlock(t,i,n)}),t.createEl("h4",{text:"Date Settings"}),new be.Setting(t).setName("Set created date on every added task").setDesc(Ft.createFragmentWithHTML(`Enabling this will add a timestamp \u2795 YYYY-MM-DD before other date values, when a task is created with 'Create or edit task', or by completing a recurring task.

See the documentation.

`)).addToggle(i=>{let s=Q();i.setValue(s.setCreatedDate).onChange(a=>F(this,null,function*(){Ge({setCreatedDate:a}),yield this.plugin.saveSettings()}))}),new be.Setting(t).setName("Set done date on every completed task").setDesc(Ft.createFragmentWithHTML('Enabling this will add a timestamp \u2705 YYYY-MM-DD at the end when a task is toggled to done.

See the documentation.

')).addToggle(i=>{let s=Q();i.setValue(s.setDoneDate).onChange(a=>F(this,null,function*(){Ge({setDoneDate:a}),yield this.plugin.saveSettings()}))}),new be.Setting(t).setName("Use filename as Scheduled date for undated tasks").setDesc(Ft.createFragmentWithHTML('Save time entering Scheduled (\u23F3) dates.
If this option is enabled, any undated tasks will be given a default Scheduled date extracted from their file name.
The date in the file name must be in one of YYYY-MM-DD or YYYYMMDD formats.
Undated tasks have none of Due (\u{1F4C5} ), Scheduled (\u23F3) and Start (\u{1F6EB}) dates.

See the documentation.

')).addToggle(i=>{let s=Q();i.setValue(s.useFilenameAsScheduledDate).onChange(a=>F(this,null,function*(){Ge({useFilenameAsScheduledDate:a}),yield this.plugin.saveSettings()}))}),new be.Setting(t).setName("Folders with default Scheduled dates").setDesc("Leave empty if you want to use default Scheduled dates everywhere, or enter a comma-separated list of folders.").addText(i=>F(this,null,function*(){let s=Q();yield this.plugin.saveSettings(),i.setValue(Ft.renderFolderArray(s.filenameAsDateFolders)).onChange(a=>F(this,null,function*(){let o=Ft.parseCommaSeparatedFolders(a);Ge({filenameAsDateFolders:o}),yield this.plugin.saveSettings()}))})),t.createEl("h4",{text:"Recurring task Settings"}),new be.Setting(t).setName("Next recurrence appears on the line below").setDesc(Ft.createFragmentWithHTML('Enabling this will make the next recurrence of a task appear on the line below the completed task. Otherwise the next recurrence will appear before the completed one.

See the documentation.

')).addToggle(i=>{let{recurrenceOnNextLine:s}=Q();i.setValue(s).onChange(a=>F(this,null,function*(){Ge({recurrenceOnNextLine:a}),yield this.plugin.saveSettings()}))}),t.createEl("h4",{text:"Auto-suggest Settings"}),new be.Setting(t).setName("Auto-suggest task content").setDesc(Ft.createFragmentWithHTML('Enabling this will open an intelligent suggest menu while typing inside a recognized task line.

See the documentation.

')).addToggle(i=>{let s=Q();i.setValue(s.autoSuggestInEditor).onChange(a=>F(this,null,function*(){Ge({autoSuggestInEditor:a}),yield this.plugin.saveSettings()}))}),new be.Setting(t).setName("Minimum match length for auto-suggest").setDesc("If higher than 0, auto-suggest will be triggered only when the beginning of any supported keywords is recognized.").addSlider(i=>{let s=Q();i.setLimits(0,3,1).setValue(s.autoSuggestMinMatch).setDynamicTooltip().onChange(a=>F(this,null,function*(){Ge({autoSuggestMinMatch:a}),yield this.plugin.saveSettings()}))}),new be.Setting(t).setName("Maximum number of auto-suggestions to show").setDesc('How many suggestions should be shown when an auto-suggest menu pops up (including the "\u23CE" option).').addSlider(i=>{let s=Q();i.setLimits(3,12,1).setValue(s.autoSuggestMaxItems).setDynamicTooltip().onChange(a=>F(this,null,function*(){Ge({autoSuggestMaxItems:a}),yield this.plugin.saveSettings()}))}),t.createEl("h4",{text:"Dialog Settings"}),new be.Setting(t).setName("Provide access keys in dialogs").setDesc(Ft.createFragmentWithHTML('If the access keys (keyboard shortcuts) for various controls in dialog boxes conflict with system keyboard shortcuts or assistive technology functionality that is important for you, you may want to deactivate them here.

See the documentation.

')).addToggle(i=>{let s=Q();i.setValue(s.provideAccessKeys).onChange(a=>F(this,null,function*(){Ge({provideAccessKeys:a}),yield this.plugin.saveSettings()}))})}addOneSettingsBlock(t,n,i){let s=t.createEl("details",{cls:"tasks-nested-settings",attr:he({},n.open||i[n.text]?{open:!0}:{})});s.empty(),s.ontoggle=()=>{i[n.text]=s.open,Ge({headingOpened:i}),this.plugin.saveSettings()};let a=s.createEl("summary");if(new be.Setting(a).setHeading().setName(n.text),a.createDiv("collapser").createDiv("handle"),n.notice!==null){let o=s.createEl("div",{cls:n.notice.class,text:n.notice.text});n.notice.html!==null&&o.insertAdjacentHTML("beforeend",n.notice.html)}n.settings.forEach(o=>{if(!(o.featureFlag!==""&&!tT(o.featureFlag))&&(o.type==="checkbox"?new be.Setting(s).setName(o.name).setDesc(o.description).addToggle(u=>{let l=Q();l.generalSettings[o.settingName]||Dn(o.settingName,o.initialValue),u.setValue(l.generalSettings[o.settingName]).onChange(c=>F(this,null,function*(){Dn(o.settingName,c),yield this.plugin.saveSettings()}))}):o.type==="text"?new be.Setting(s).setName(o.name).setDesc(o.description).addText(u=>{let l=Q();l.generalSettings[o.settingName]||Dn(o.settingName,o.initialValue);let c=p=>F(this,null,function*(){Dn(o.settingName,p),yield this.plugin.saveSettings()});u.setPlaceholder(o.placeholder.toString()).setValue(l.generalSettings[o.settingName].toString()).onChange((0,be.debounce)(c,500,!0))}):o.type==="textarea"?new be.Setting(s).setName(o.name).setDesc(o.description).addTextArea(u=>{let l=Q();l.generalSettings[o.settingName]||Dn(o.settingName,o.initialValue);let c=p=>F(this,null,function*(){Dn(o.settingName,p),yield this.plugin.saveSettings()});u.setPlaceholder(o.placeholder.toString()).setValue(l.generalSettings[o.settingName].toString()).onChange((0,be.debounce)(c,500,!0)),u.inputEl.rows=8,u.inputEl.cols=40}):o.type==="function"&&this.customFunctions[o.settingName](s,this),o.notice!==null)){let u=s.createEl("p",{cls:o.notice.class,text:o.notice.text});o.notice.html!==null&&u.insertAdjacentHTML("beforeend",o.notice.html)}})}static parseCommaSeparatedFolders(t){return t.split(",").map(n=>n.trim()).map(n=>n.replace(/^\/|\/$/g,"")).filter(n=>n!=="")}static renderFolderArray(t){return t.join(",")}insertTaskCoreStatusSettings(t,n){let{statusSettings:i}=Q();i.coreStatuses.forEach(s=>{lb(t,s,i.coreStatuses,i,n,n.plugin,!0)})}insertCustomTaskStatusSettings(t,n){let{statusSettings:i}=Q();i.customStatuses.forEach(l=>{lb(t,l,i.customStatuses,i,n,n.plugin,!1)}),t.createEl("div"),new be.Setting(t).addButton(l=>{l.setButtonText("Add New Task Status").setCta().onClick(()=>F(this,null,function*(){He.addStatus(i.customStatuses,new tt("","","",!1,"TODO")),yield xi(i,n)}))}).infoEl.remove();let a=[["AnuPpuccin Theme",tb()],["Aura Theme",rb()],["Ebullientworks Theme",nb()],["ITS Theme & SlRvb Checkboxes",ib()],["Minimal Theme",ab()],["Things Theme",ob()],["LYT Mode Theme (Dark mode only)",sb()]];for(let[l,c]of a)new be.Setting(t).addButton(m=>{let T=`${l}: Add ${c.length} supported Statuses`;m.setButtonText(T).onClick(()=>F(this,null,function*(){yield EA(c,i,n)}))}).infoEl.remove();new be.Setting(t).addButton(l=>{l.setButtonText("Add All Unknown Status Types").setCta().onClick(()=>F(this,null,function*(){let p=this.plugin.getTasks().map(T=>T.status),m=Se.getInstance().findUnknownStatuses(p);m.length!==0&&(m.forEach(T=>{He.addStatus(i.customStatuses,T)}),yield xi(i,n))}))}).infoEl.remove(),new be.Setting(t).addButton(l=>{l.setButtonText("Reset Custom Status Types to Defaults").setWarning().onClick(()=>F(this,null,function*(){He.resetAllCustomStatuses(i),yield xi(i,n)}))}).infoEl.remove()}},la=Ft;la.createFragmentWithHTML=t=>createFragment(n=>n.createDiv().innerHTML=t);function lb(r,e,t,n,i,s,a){let o=r.createEl("pre");o.addClass("row-for-status"),o.textContent=new J(e).previewText();let u=new be.Setting(r);u.infoEl.replaceWith(o),a||u.addExtraButton(l=>{l.setIcon("cross").setTooltip("Delete").onClick(()=>F(this,null,function*(){He.deleteStatus(t,e)&&(yield xi(n,i))}))}),u.addExtraButton(l=>{l.setIcon("pencil").setTooltip("Edit").onClick(()=>F(this,null,function*(){let c=new It(s,e,a);c.onClose=()=>F(this,null,function*(){c.saved&&He.replaceStatus(t,e,c.statusConfiguration())&&(yield xi(n,i))}),c.open()}))}),u.infoEl.remove()}function EA(r,e,t){return F(this,null,function*(){He.bulkAddStatusCollection(e,r).forEach(i=>{new be.Notice(i)}),yield xi(e,t)})}function xi(r,e){return F(this,null,function*(){Ge({statusSettings:r}),He.applyToStatusRegistry(r,Se.getInstance()),yield e.saveSettings(!0)})}function wA(r){let{settingEl:e,infoEl:t,controlEl:n}=r,i=n.querySelector("textarea");i!==null&&(e.style.display="block",t.style.marginRight="0px",i.style.minWidth="-webkit-fill-available")}var cb=require("obsidian");var fu=class extends cb.EditorSuggest{constructor(t,n){super(t);this.settings=n}onTrigger(t,n,i){if(!this.settings.autoSuggestInEditor)return null;let s=n.getLine(t.line);return we.includedIn(s)&&s.match(H.taskRegex)?{start:{line:t.line,ch:0},end:{line:t.line,ch:s.length},query:s}:null}getSuggestions(t){var a,o,u;let n=t.query,i=t.editor.getCursor();return((u=(o=(a=zs()).buildSuggestions)==null?void 0:o.call(a,n,i.ch,this.settings))!=null?u:[]).map(l=>Dt(he({},l),{context:t}))}renderSuggestion(t,n){n.setText(t.displayText)}selectSuggestion(t,n){var u,l,c;let i=t.context.editor;if(t.suggestionType==="empty"){this.close();let p=new KeyboardEvent("keydown",{code:"Enter",key:"Enter"});(l=(u=i==null?void 0:i.cm)==null?void 0:u.contentDOM)==null||l.dispatchEvent(p);return}let s=t.context.editor.getCursor(),a={line:s.line,ch:(c=t.insertAt)!=null?c:s.ch},o=t.insertSkip?{line:s.line,ch:a.ch+t.insertSkip}:void 0;t.context.editor.replaceRange(t.appendText,a,o),t.context.editor.setCursor({line:s.line,ch:a.ch+t.appendText.length})}};var db=(r,e)=>{let t,n=new Promise((a,o)=>{t=a});return e(r,a=>{let o=a.map(u=>u.toFileLineString()).join(` -`);t(o)}).open(),n};var fb=(r,e)=>{let t=Ao({line:"",path:""});return new nn({app:r,task:t,onSubmit:e})};var pb=r=>({createTaskLineModal:()=>db(r,fb)});var pu=class extends mb.Plugin{get apiV1(){return pb(app)}onload(){return F(this,null,function*(){wo.registerConsoleLogger(),console.log('loading plugin "tasks"'),yield this.loadSettings(),this.addSettingTab(new la({plugin:this})),aT({metadataCache:this.app.metadataCache,vault:this.app.vault,workspace:this.app.workspace}),yield this.loadTaskStatuses();let t=new Po({obsidianEvents:this.app.workspace});this.cache=new Sn({metadataCache:this.app.metadataCache,vault:this.app.vault,events:t}),this.inlineRenderer=new No({plugin:this}),this.queryRenderer=new du({plugin:this,events:t}),this.registerEditorExtension(LT()),this.registerEditorSuggest(new fu(this.app,Q())),new Co({plugin:this})})}loadTaskStatuses(){return F(this,null,function*(){let{statusSettings:t}=Q();He.applyToStatusRegistry(t,Se.getInstance())})}onunload(){var t;console.log('unloading plugin "tasks"'),(t=this.cache)==null||t.unload()}loadSettings(){return F(this,null,function*(){let t=yield this.loadData();Ge(t),yield this.loadTaskStatuses()})}saveSettings(){return F(this,null,function*(){yield this.saveData(Q())})}getTasks(){var t;return(t=this.cache)==null?void 0:t.getTasks()}}; +show urgency`).setValue(s.globalQuery).onChange(a=>q(this,null,function*(){et({globalQuery:a}),Jt.getInstance().set(a),yield this.plugin.saveSettings()}))})),t.createEl("h4",{text:"Task Statuses"});let{headingOpened:n}=Q();D_.forEach(i=>{this.addOneSettingsBlock(t,i,n)}),t.createEl("h4",{text:"Date Settings"}),new ve.Setting(t).setName("Set created date on every added task").setDesc(Wt.createFragmentWithHTML(`Enabling this will add a timestamp \u2795 YYYY-MM-DD before other date values, when a task is created with 'Create or edit task', or by completing a recurring task.

See the documentation.

`)).addToggle(i=>{let s=Q();i.setValue(s.setCreatedDate).onChange(a=>q(this,null,function*(){et({setCreatedDate:a}),yield this.plugin.saveSettings()}))}),new ve.Setting(t).setName("Set done date on every completed task").setDesc(Wt.createFragmentWithHTML('Enabling this will add a timestamp \u2705 YYYY-MM-DD at the end when a task is toggled to done.

See the documentation.

')).addToggle(i=>{let s=Q();i.setValue(s.setDoneDate).onChange(a=>q(this,null,function*(){et({setDoneDate:a}),yield this.plugin.saveSettings()}))}),new ve.Setting(t).setName("Use filename as Scheduled date for undated tasks").setDesc(Wt.createFragmentWithHTML('Save time entering Scheduled (\u23F3) dates.
If this option is enabled, any undated tasks will be given a default Scheduled date extracted from their file name.
The date in the file name must be in one of YYYY-MM-DD or YYYYMMDD formats.
Undated tasks have none of Due (\u{1F4C5} ), Scheduled (\u23F3) and Start (\u{1F6EB}) dates.

See the documentation.

')).addToggle(i=>{let s=Q();i.setValue(s.useFilenameAsScheduledDate).onChange(a=>q(this,null,function*(){et({useFilenameAsScheduledDate:a}),yield this.plugin.saveSettings()}))}),new ve.Setting(t).setName("Folders with default Scheduled dates").setDesc("Leave empty if you want to use default Scheduled dates everywhere, or enter a comma-separated list of folders.").addText(i=>q(this,null,function*(){let s=Q();yield this.plugin.saveSettings(),i.setValue(Wt.renderFolderArray(s.filenameAsDateFolders)).onChange(a=>q(this,null,function*(){let o=Wt.parseCommaSeparatedFolders(a);et({filenameAsDateFolders:o}),yield this.plugin.saveSettings()}))})),t.createEl("h4",{text:"Recurring task Settings"}),new ve.Setting(t).setName("Next recurrence appears on the line below").setDesc(Wt.createFragmentWithHTML('Enabling this will make the next recurrence of a task appear on the line below the completed task. Otherwise the next recurrence will appear before the completed one.

See the documentation.

')).addToggle(i=>{let{recurrenceOnNextLine:s}=Q();i.setValue(s).onChange(a=>q(this,null,function*(){et({recurrenceOnNextLine:a}),yield this.plugin.saveSettings()}))}),t.createEl("h4",{text:"Auto-suggest Settings"}),new ve.Setting(t).setName("Auto-suggest task content").setDesc(Wt.createFragmentWithHTML('Enabling this will open an intelligent suggest menu while typing inside a recognized task line.

See the documentation.

')).addToggle(i=>{let s=Q();i.setValue(s.autoSuggestInEditor).onChange(a=>q(this,null,function*(){et({autoSuggestInEditor:a}),yield this.plugin.saveSettings()}))}),new ve.Setting(t).setName("Minimum match length for auto-suggest").setDesc("If higher than 0, auto-suggest will be triggered only when the beginning of any supported keywords is recognized.").addSlider(i=>{let s=Q();i.setLimits(0,3,1).setValue(s.autoSuggestMinMatch).setDynamicTooltip().onChange(a=>q(this,null,function*(){et({autoSuggestMinMatch:a}),yield this.plugin.saveSettings()}))}),new ve.Setting(t).setName("Maximum number of auto-suggestions to show").setDesc('How many suggestions should be shown when an auto-suggest menu pops up (including the "\u23CE" option).').addSlider(i=>{let s=Q();i.setLimits(3,12,1).setValue(s.autoSuggestMaxItems).setDynamicTooltip().onChange(a=>q(this,null,function*(){et({autoSuggestMaxItems:a}),yield this.plugin.saveSettings()}))}),t.createEl("h4",{text:"Dialog Settings"}),new ve.Setting(t).setName("Provide access keys in dialogs").setDesc(Wt.createFragmentWithHTML('If the access keys (keyboard shortcuts) for various controls in dialog boxes conflict with system keyboard shortcuts or assistive technology functionality that is important for you, you may want to deactivate them here.

See the documentation.

')).addToggle(i=>{let s=Q();i.setValue(s.provideAccessKeys).onChange(a=>q(this,null,function*(){et({provideAccessKeys:a}),yield this.plugin.saveSettings()}))})}addOneSettingsBlock(t,n,i){let s=t.createEl("details",{cls:"tasks-nested-settings",attr:pe({},n.open||i[n.text]?{open:!0}:{})});s.empty(),s.ontoggle=()=>{i[n.text]=s.open,et({headingOpened:i}),this.plugin.saveSettings()};let a=s.createEl("summary");if(new ve.Setting(a).setHeading().setName(n.text),a.createDiv("collapser").createDiv("handle"),n.notice!==null){let o=s.createEl("div",{cls:n.notice.class,text:n.notice.text});n.notice.html!==null&&o.insertAdjacentHTML("beforeend",n.notice.html)}n.settings.forEach(o=>{if(!(o.featureFlag!==""&&!ub(o.featureFlag))&&(o.type==="checkbox"?new ve.Setting(s).setName(o.name).setDesc(o.description).addToggle(u=>{let l=Q();l.generalSettings[o.settingName]||Fn(o.settingName,o.initialValue),u.setValue(l.generalSettings[o.settingName]).onChange(c=>q(this,null,function*(){Fn(o.settingName,c),yield this.plugin.saveSettings()}))}):o.type==="text"?new ve.Setting(s).setName(o.name).setDesc(o.description).addText(u=>{let l=Q();l.generalSettings[o.settingName]||Fn(o.settingName,o.initialValue);let c=p=>q(this,null,function*(){Fn(o.settingName,p),yield this.plugin.saveSettings()});u.setPlaceholder(o.placeholder.toString()).setValue(l.generalSettings[o.settingName].toString()).onChange((0,ve.debounce)(c,500,!0))}):o.type==="textarea"?new ve.Setting(s).setName(o.name).setDesc(o.description).addTextArea(u=>{let l=Q();l.generalSettings[o.settingName]||Fn(o.settingName,o.initialValue);let c=p=>q(this,null,function*(){Fn(o.settingName,p),yield this.plugin.saveSettings()});u.setPlaceholder(o.placeholder.toString()).setValue(l.generalSettings[o.settingName].toString()).onChange((0,ve.debounce)(c,500,!0)),u.inputEl.rows=8,u.inputEl.cols=40}):o.type==="function"&&this.customFunctions[o.settingName](s,this),o.notice!==null)){let u=s.createEl("p",{cls:o.notice.class,text:o.notice.text});o.notice.html!==null&&u.insertAdjacentHTML("beforeend",o.notice.html)}})}static parseCommaSeparatedFolders(t){return t.split(",").map(n=>n.trim()).map(n=>n.replace(/^\/|\/$/g,"")).filter(n=>n!=="")}static renderFolderArray(t){return t.join(",")}insertTaskCoreStatusSettings(t,n){let{statusSettings:i}=Q();i.coreStatuses.forEach(s=>{R_(t,s,i.coreStatuses,i,n,n.plugin,!0)})}insertCustomTaskStatusSettings(t,n){let{statusSettings:i}=Q();i.customStatuses.forEach(l=>{R_(t,l,i.customStatuses,i,n,n.plugin,!1)}),t.createEl("div"),new ve.Setting(t).addButton(l=>{l.setButtonText("Add New Task Status").setCta().onClick(()=>q(this,null,function*(){Ge.addStatus(i.customStatuses,new Je("","","",!1,"TODO")),yield Bi(i,n)}))}).infoEl.remove();let a=[["AnuPpuccin Theme",__()],["Aura Theme",v_()],["Ebullientworks Theme",E_()],["ITS Theme & SlRvb Checkboxes",w_()],["Minimal Theme",O_()],["Things Theme",S_()],["LYT Mode Theme (Dark mode only)",k_()]];for(let[l,c]of a)new ve.Setting(t).addButton(h=>{let _=`${l}: Add ${c.length} supported Statuses`;h.setButtonText(_).onClick(()=>q(this,null,function*(){yield LC(c,i,n)}))}).infoEl.remove();new ve.Setting(t).addButton(l=>{l.setButtonText("Add All Unknown Status Types").setCta().onClick(()=>q(this,null,function*(){let p=this.plugin.getTasks().map(_=>_.status),h=De.getInstance().findUnknownStatuses(p);h.length!==0&&(h.forEach(_=>{Ge.addStatus(i.customStatuses,_)}),yield Bi(i,n))}))}).infoEl.remove(),new ve.Setting(t).addButton(l=>{l.setButtonText("Reset Custom Status Types to Defaults").setWarning().onClick(()=>q(this,null,function*(){Ge.resetAllCustomStatuses(i),yield Bi(i,n)}))}).infoEl.remove()}},Oa=Wt;Oa.createFragmentWithHTML=t=>createFragment(n=>n.createDiv().innerHTML=t);function R_(r,e,t,n,i,s,a){let o=r.createEl("pre");o.addClass("row-for-status"),o.textContent=new te(e).previewText();let u=new ve.Setting(r);u.infoEl.replaceWith(o),a||u.addExtraButton(l=>{l.setIcon("cross").setTooltip("Delete").onClick(()=>q(this,null,function*(){Ge.deleteStatus(t,e)&&(yield Bi(n,i))}))}),u.addExtraButton(l=>{l.setIcon("pencil").setTooltip("Edit").onClick(()=>q(this,null,function*(){let c=new Ut(s,e,a);c.onClose=()=>q(this,null,function*(){c.saved&&Ge.replaceStatus(t,e,c.statusConfiguration())&&(yield Bi(n,i))}),c.open()}))}),u.infoEl.remove()}function LC(r,e,t){return q(this,null,function*(){Ge.bulkAddStatusCollection(e,r).forEach(i=>{new ve.Notice(i)}),yield Bi(e,t)})}function Bi(r,e){return q(this,null,function*(){et({statusSettings:r}),Ge.applyToStatusRegistry(r,De.getInstance()),yield e.saveSettings(!0)})}function UC(r){let{settingEl:e,infoEl:t,controlEl:n}=r,i=n.querySelector("textarea");i!==null&&(e.style.display="block",t.style.marginRight="0px",i.style.minWidth="-webkit-fill-available")}var x_=require("obsidian");var Au=class extends x_.EditorSuggest{constructor(t,n){super(t);this.settings=n}onTrigger(t,n,i){if(!this.settings.autoSuggestInEditor)return null;let s=n.getLine(t.line);return ab(s,t.ch)?{start:{line:t.line,ch:0},end:{line:t.line,ch:s.length},query:s}:null}getSuggestions(t){var a,o,u;let n=t.query,i=t.editor.getCursor();return((u=(o=(a=ca()).buildSuggestions)==null?void 0:o.call(a,n,i.ch,this.settings))!=null?u:[]).map(l=>Tt(pe({},l),{context:t}))}renderSuggestion(t,n){n.setText(t.displayText)}selectSuggestion(t,n){var u,l,c;let i=t.context.editor;if(t.suggestionType==="empty"){this.close();let p=new KeyboardEvent("keydown",{code:"Enter",key:"Enter"});(l=(u=i==null?void 0:i.cm)==null?void 0:u.contentDOM)==null||l.dispatchEvent(p);return}let s=t.context.editor.getCursor(),a={line:s.line,ch:(c=t.insertAt)!=null?c:s.ch},o=t.insertSkip?{line:s.line,ch:a.ch+t.insertSkip}:void 0;t.context.editor.replaceRange(t.appendText,a,o),t.context.editor.setCursor({line:s.line,ch:a.ch+t.appendText.length})}};var M_=(r,e)=>{let t,n=new Promise((a,o)=>{t=a});return e(r,a=>{let o=a.map(u=>u.toFileLineString()).join(` +`);t(o)}).open(),n};var A_=(r,e)=>{let t=jo({line:"",path:""});return new dn({app:r,task:t,onSubmit:e})};var C_=r=>({createTaskLineModal:()=>M_(r,A_)});var Cu=class extends P_.Plugin{get apiV1(){return C_(app)}onload(){return q(this,null,function*(){wu.registerConsoleLogger(),console.log('loading plugin "tasks"'),yield this.loadSettings(),this.addSettingTab(new Oa({plugin:this})),l_({metadataCache:this.app.metadataCache,vault:this.app.vault,workspace:this.app.workspace}),yield this.loadTaskStatuses();let t=new Eu({obsidianEvents:this.app.workspace});this.cache=new Ln({metadataCache:this.app.metadataCache,vault:this.app.vault,events:t}),this.inlineRenderer=new Ru({plugin:this}),this.queryRenderer=new Mu({plugin:this,events:t}),this.registerEditorExtension(T_()),this.registerEditorSuggest(new Au(this.app,Q())),new Go({plugin:this})})}loadTaskStatuses(){return q(this,null,function*(){let{statusSettings:t}=Q();Ge.applyToStatusRegistry(t,De.getInstance())})}onunload(){var t;console.log('unloading plugin "tasks"'),(t=this.cache)==null||t.unload()}loadSettings(){return q(this,null,function*(){let t=yield this.loadData();et(t),t=Q(),ge.getInstance().set(t.globalFilter),ge.getInstance().setRemoveGlobalFilter(t.removeGlobalFilter),Jt.getInstance().set(t.globalQuery),yield this.loadTaskStatuses()})}saveSettings(){return q(this,null,function*(){yield this.saveData(Q())})}getTasks(){var t;return(t=this.cache)==null?void 0:t.getTasks()}}; /*! * EventEmitter2 * https://github.com/hij1nx/EventEmitter2 @@ -226,3 +294,7 @@ show urgency`).setValue(s.globalQuery).onChange(a=>F(this,null,function*(){Ge({g * Copyright (c) 2013 hij1nx * Licensed under the MIT license. */ +/*! + * mustache.js - Logic-less {{mustache}} templates with JavaScript + * http://github.com/janl/mustache.js + */ diff --git a/Vault/.obsidian/plugins/obsidian-tasks-plugin/manifest.json b/Vault/.obsidian/plugins/obsidian-tasks-plugin/manifest.json index 2053209..3489baa 100644 --- a/Vault/.obsidian/plugins/obsidian-tasks-plugin/manifest.json +++ b/Vault/.obsidian/plugins/obsidian-tasks-plugin/manifest.json @@ -1,7 +1,7 @@ { "id": "obsidian-tasks-plugin", "name": "Tasks", - "version": "4.2.0", + "version": "5.0.0", "minAppVersion": "1.1.1", "description": "Task management for Obsidian", "author": "Martin Schenck and Clare Macrae", diff --git a/Vault/.obsidian/plugins/omnisearch/data.json b/Vault/.obsidian/plugins/omnisearch/data.json index 9b33c73..2f6bfab 100644 --- a/Vault/.obsidian/plugins/omnisearch/data.json +++ b/Vault/.obsidian/plugins/omnisearch/data.json @@ -1,12 +1,14 @@ { "useCache": true, - "hideExcluded": false, + "hideExcluded": true, "ignoreDiacritics": true, "indexedFileTypes": [], "PDFIndexing": false, "imagesIndexing": false, + "unsupportedFilesIndexing": "no", "splitCamelCase": false, "openInNewPane": false, + "vimLikeNavigationShortcut": false, "ribbonIcon": true, "showExcerpt": true, "renderLineReturnInExcerpts": true, @@ -14,11 +16,15 @@ "highlight": true, "showPreviousQueryResults": true, "simpleSearch": false, + "fuzziness": "1", "weightBasename": 3, "weightDirectory": 2, "weightH1": 1.5, "weightH2": 1.3, "weightH3": 1.1, + "weightUnmarkedTags": 1.1, + "httpApiEnabled": false, + "httpApiPort": "51361", "welcomeMessage": "1.10.1", "verboseLogging": false } \ No newline at end of file diff --git a/Vault/.obsidian/plugins/omnisearch/main.js b/Vault/.obsidian/plugins/omnisearch/main.js index 3a75417..c8ad45b 100644 --- a/Vault/.obsidian/plugins/omnisearch/main.js +++ b/Vault/.obsidian/plugins/omnisearch/main.js @@ -3,43 +3,48 @@ THIS IS A GENERATED/BUNDLED FILE BY ESBUILD if you want to view the source, please visit the github repository of this plugin */ -var Kc=Object.create;var Mr=Object.defineProperty,zc=Object.defineProperties,Vc=Object.getOwnPropertyDescriptor,Hc=Object.getOwnPropertyDescriptors,$c=Object.getOwnPropertyNames,gs=Object.getOwnPropertySymbols,Wc=Object.getPrototypeOf,ys=Object.prototype.hasOwnProperty,Uc=Object.prototype.propertyIsEnumerable;var vs=(t,e,r)=>e in t?Mr(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,ue=(t,e)=>{for(var r in e||(e={}))ys.call(e,r)&&vs(t,r,e[r]);if(gs)for(var r of gs(e))Uc.call(e,r)&&vs(t,r,e[r]);return t},Oe=(t,e)=>zc(t,Hc(e)),_s=t=>Mr(t,"__esModule",{value:!0});var yn=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),Gc=(t,e)=>{_s(t);for(var r in e)Mr(t,r,{get:e[r],enumerable:!0})},Qc=(t,e,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of $c(e))!ys.call(t,n)&&n!=="default"&&Mr(t,n,{get:()=>e[n],enumerable:!(r=Vc(e,n))||r.enumerable});return t},Fe=t=>Qc(_s(Mr(t!=null?Kc(Wc(t)):{},"default",t&&t.__esModule&&"default"in t?{get:()=>t.default,enumerable:!0}:{value:t,enumerable:!0})),t);var Ta=yn((un,Po)=>{(function(t,e){if(typeof un=="object"&&typeof Po=="object")Po.exports=e();else if(typeof define=="function"&&define.amd)define([],e);else{var r=e();for(var n in r)(typeof un=="object"?un:t)[n]=r[n]}})(typeof self!="undefined"?self:un,function(){return function(t){var e={};function r(n){if(e[n])return e[n].exports;var i=e[n]={i:n,l:!1,exports:{}};return t[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return r.m=t,r.c=e,r.d=function(n,i,o){r.o(n,i)||Object.defineProperty(n,i,{enumerable:!0,get:o})},r.r=function(n){typeof Symbol!="undefined"&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},r.t=function(n,i){if(1&i&&(n=r(n)),8&i||4&i&&typeof n=="object"&&n&&n.__esModule)return n;var o=Object.create(null);if(r.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:n}),2&i&&typeof n!="string")for(var s in n)r.d(o,s,function(a){return n[a]}.bind(null,s));return o},r.n=function(n){var i=n&&n.__esModule?function(){return n.default}:function(){return n};return r.d(i,"a",i),i},r.o=function(n,i){return Object.prototype.hasOwnProperty.call(n,i)},r.p="",r(r.s=0)}([function(t,e,r){"use strict";r.r(e),r.d(e,"md5",function(){return x});var n="0123456789abcdef".split(""),i=function(b){for(var h="",_=0;_<4;_++)h+=n[b>>8*_+4&15]+n[b>>8*_&15];return h},o=function(b){for(var h=b.length,_=0;_>>32-C,S)}(h=function(j,C,S,E){return C=s(s(C,j),s(S,E))}(b,h,p,v),m,_)},l=function(b,h,_,p,m,v,g,j){return a(_&p|~_&m,h,_,v,g,j,b)},u=function(b,h,_,p,m,v,g,j){return a(_&m|p&~m,h,_,v,g,j,b)},d=function(b,h,_,p,m,v,g,j){return a(_^p^m,h,_,v,g,j,b)},f=function(b,h,_,p,m,v,g,j){return a(p^(_|~m),h,_,v,g,j,b)},c=function(b,h,_){_===void 0&&(_=s);var p=b[0],m=b[1],v=b[2],g=b[3],j=l.bind(null,_);p=j(p,m,v,g,h[0],7,-680876936),g=j(g,p,m,v,h[1],12,-389564586),v=j(v,g,p,m,h[2],17,606105819),m=j(m,v,g,p,h[3],22,-1044525330),p=j(p,m,v,g,h[4],7,-176418897),g=j(g,p,m,v,h[5],12,1200080426),v=j(v,g,p,m,h[6],17,-1473231341),m=j(m,v,g,p,h[7],22,-45705983),p=j(p,m,v,g,h[8],7,1770035416),g=j(g,p,m,v,h[9],12,-1958414417),v=j(v,g,p,m,h[10],17,-42063),m=j(m,v,g,p,h[11],22,-1990404162),p=j(p,m,v,g,h[12],7,1804603682),g=j(g,p,m,v,h[13],12,-40341101),v=j(v,g,p,m,h[14],17,-1502002290),m=j(m,v,g,p,h[15],22,1236535329);var C=u.bind(null,_);p=C(p,m,v,g,h[1],5,-165796510),g=C(g,p,m,v,h[6],9,-1069501632),v=C(v,g,p,m,h[11],14,643717713),m=C(m,v,g,p,h[0],20,-373897302),p=C(p,m,v,g,h[5],5,-701558691),g=C(g,p,m,v,h[10],9,38016083),v=C(v,g,p,m,h[15],14,-660478335),m=C(m,v,g,p,h[4],20,-405537848),p=C(p,m,v,g,h[9],5,568446438),g=C(g,p,m,v,h[14],9,-1019803690),v=C(v,g,p,m,h[3],14,-187363961),m=C(m,v,g,p,h[8],20,1163531501),p=C(p,m,v,g,h[13],5,-1444681467),g=C(g,p,m,v,h[2],9,-51403784),v=C(v,g,p,m,h[7],14,1735328473),m=C(m,v,g,p,h[12],20,-1926607734);var S=d.bind(null,_);p=S(p,m,v,g,h[5],4,-378558),g=S(g,p,m,v,h[8],11,-2022574463),v=S(v,g,p,m,h[11],16,1839030562),m=S(m,v,g,p,h[14],23,-35309556),p=S(p,m,v,g,h[1],4,-1530992060),g=S(g,p,m,v,h[4],11,1272893353),v=S(v,g,p,m,h[7],16,-155497632),m=S(m,v,g,p,h[10],23,-1094730640),p=S(p,m,v,g,h[13],4,681279174),g=S(g,p,m,v,h[0],11,-358537222),v=S(v,g,p,m,h[3],16,-722521979),m=S(m,v,g,p,h[6],23,76029189),p=S(p,m,v,g,h[9],4,-640364487),g=S(g,p,m,v,h[12],11,-421815835),v=S(v,g,p,m,h[15],16,530742520),m=S(m,v,g,p,h[2],23,-995338651);var E=f.bind(null,_);p=E(p,m,v,g,h[0],6,-198630844),g=E(g,p,m,v,h[7],10,1126891415),v=E(v,g,p,m,h[14],15,-1416354905),m=E(m,v,g,p,h[5],21,-57434055),p=E(p,m,v,g,h[12],6,1700485571),g=E(g,p,m,v,h[3],10,-1894986606),v=E(v,g,p,m,h[10],15,-1051523),m=E(m,v,g,p,h[1],21,-2054922799),p=E(p,m,v,g,h[8],6,1873313359),g=E(g,p,m,v,h[15],10,-30611744),v=E(v,g,p,m,h[6],15,-1560198380),m=E(m,v,g,p,h[13],21,1309151649),p=E(p,m,v,g,h[4],6,-145523070),g=E(g,p,m,v,h[11],10,-1120210379),v=E(v,g,p,m,h[2],15,718787259),m=E(m,v,g,p,h[9],21,-343485551),b[0]=_(p,b[0]),b[1]=_(m,b[1]),b[2]=_(v,b[2]),b[3]=_(g,b[3])},y=function(b){for(var h=[],_=0;_<64;_+=4)h[_>>2]=b.charCodeAt(_)+(b.charCodeAt(_+1)<<8)+(b.charCodeAt(_+2)<<16)+(b.charCodeAt(_+3)<<24);return h},w=function(b,h){var _,p=b.length,m=[1732584193,-271733879,-1732584194,271733878];for(_=64;_<=p;_+=64)c(m,y(b.substring(_-64,_)),h);var v=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],g=(b=b.substring(_-64)).length;for(_=0;_>2]|=b.charCodeAt(_)<<(_%4<<3);if(v[_>>2]|=128<<(_%4<<3),_>55)for(c(m,v,h),_=16;_--;)v[_]=0;return v[14]=8*p,c(m,v,h),m};function x(b){var h;return o(w("hello"))!=="5d41402abc4b2a76b9719d911017c592"&&(h=function(_,p){var m=(65535&_)+(65535&p);return(_>>16)+(p>>16)+(m>>16)<<16|65535&m}),o(w(b,h))}}])})});var nl=yn(ii=>{ii.parse=function(t,e){if(e?e.offsets=typeof e.offsets=="undefined"?!0:e.offsets:e={offsets:!0},t||(t=""),t.indexOf(":")===-1&&!e.tokenize)return t;if(!e.keywords&&!e.ranges&&!e.tokenize)return t;var r={text:[]};e.offsets&&(r.offsets=[]);for(var n={},i=[],o=/(\S+:'(?:[^'\\]|\\.)*')|(\S+:"(?:[^"\\]|\\.)*")|(-?"(?:[^"\\]|\\.)*")|(-?'(?:[^'\\]|\\.)*')|\S+|\S+:\S+/g,s;(s=o.exec(t))!==null;){var c=s[0],a=c.indexOf(":");if(a!==-1){var l=c.split(":"),u=c.slice(0,a),d=c.slice(a+1);d=d.replace(/^\"|\"$|^\'|\'$/g,""),d=(d+"").replace(/\\(.?)/g,function(g,j){switch(j){case"\\":return"\\";case"0":return"\0";case"":return"";default:return j}}),i.push({keyword:u,value:d,offsetStart:s.index,offsetEnd:s.index+c.length})}else{var f=!1;c[0]==="-"&&(f=!0,c=c.slice(1)),c=c.replace(/^\"|\"$|^\'|\'$/g,""),c=(c+"").replace(/\\(.?)/g,function(g,j){switch(j){case"\\":return"\\";case"0":return"\0";case"":return"";default:return j}}),f?n.text?(n.text instanceof Array||(n.text=[n.text]),n.text.push(c)):n.text=c:i.push({text:c,offsetStart:s.index,offsetEnd:s.index+c.length})}}i.reverse();for(var c;c=i.pop();)if(c.text)r.text.push(c.text),e.offsets&&r.offsets.push(c);else{var u=c.keyword;e.keywords=e.keywords||[];var y=!1,w=!1;if(!/^-/.test(u))y=e.keywords.indexOf(u)!==-1;else if(u[0]==="-"){var x=u.slice(1);y=e.keywords.indexOf(x)!==-1,y&&(u=x,w=!0)}e.ranges=e.ranges||[];var b=e.ranges.indexOf(u)!==-1;if(y){e.offsets&&r.offsets.push({keyword:u,value:c.value,offsetStart:w?c.offsetStart+1:c.offsetStart,offsetEnd:c.offsetEnd});var h=c.value;if(h.length){var _=h.split(",");w?n[u]?n[u]instanceof Array?_.length>1?n[u]=n[u].concat(_):n[u].push(h):(n[u]=[n[u]],n[u].push(h)):_.length>1?n[u]=_:e.alwaysArray?n[u]=[h]:n[u]=h:r[u]?r[u]instanceof Array?_.length>1?r[u]=r[u].concat(_):r[u].push(h):(r[u]=[r[u]],r[u].push(h)):_.length>1?r[u]=_:e.alwaysArray?r[u]=[h]:r[u]=h}}else if(b){e.offsets&&r.offsets.push(c);var h=c.value,p=h.split("-");r[u]={},p.length===2?(r[u].from=p[0],r[u].to=p[1]):!p.length%2||(r[u].from=h)}else{var m=c.keyword+":"+c.value;r.text.push(m),e.offsets&&r.offsets.push({text:m,offsetStart:c.offsetStart,offsetEnd:c.offsetEnd})}}return r.text.length?e.tokenize||(r.text=r.text.join(" ").trim()):delete r.text,r.exclude=n,r};ii.stringify=function(t,e,r){if(e||(e={offsets:!0}),!t)return"";if(typeof t=="string")return t;if(Array.isArray(t))return t.join(" ");if(!Object.keys(t).length)return"";if(Object.keys(t).length===3&&!!t.text&&!!t.offsets&&!!t.exclude&&typeof t.text=="string")return t.text;r||(r="");var n=function(a){return a.indexOf(" ")>-1?JSON.stringify(a):a},i=function(a){return r+a},o=[];if(t.text){var s=[];typeof t.text=="string"?s.push(t.text):s.push.apply(s,t.text),s.length>0&&o.push(s.map(n).map(i).join(" "))}return e.keywords&&e.keywords.forEach(function(a){if(!!t[a]){var l=[];typeof t[a]=="string"?l.push(t[a]):l.push.apply(l,t[a]),l.length>0&&o.push(i(a+":"+l.map(n).join(",")))}}),e.ranges&&e.ranges.forEach(function(a){if(!!t[a]){var l=t[a].from,u=t[a].to;u&&(l=l+"-"+u),l&&o.push(i(a+":"+l))}}),t.exclude&&Object.keys(t.exclude).length>0&&o.push(ii.stringify(t.exclude,e,"-")),o.join(" ")}});var ol=yn((n_,il)=>{il.exports=nl()});var xc=yn(Si=>{function fs(t){return fs=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},fs(t)}(function(t,e){if(typeof define=="function"&&define.amd)define(["exports"],e);else if(typeof Si!="undefined")e(Si);else{var r={exports:{}};e(r.exports),t.CancelablePromise=r.exports}})(typeof globalThis!="undefined"?globalThis:typeof self!="undefined"?self:Si,function(t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CancelablePromise=void 0,t.cancelable=L,t.default=void 0,t.isCancelablePromise=k;function e(A,F){if(typeof F!="function"&&F!==null)throw new TypeError("Super expression must either be null or a function");A.prototype=Object.create(F&&F.prototype,{constructor:{value:A,writable:!0,configurable:!0}}),Object.defineProperty(A,"prototype",{writable:!1}),F&&r(A,F)}function r(A,F){return r=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(N,O){return N.__proto__=O,N},r(A,F)}function n(A){var F=s();return function(){var N=a(A),O;if(F){var X=a(this).constructor;O=Reflect.construct(N,arguments,X)}else O=N.apply(this,arguments);return i(this,O)}}function i(A,F){if(F&&(fs(F)==="object"||typeof F=="function"))return F;if(F!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return o(A)}function o(A){if(A===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return A}function s(){if(typeof Reflect=="undefined"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function a(A){return a=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(D){return D.__proto__||Object.getPrototypeOf(D)},a(A)}function l(A,F){var D=typeof Symbol!="undefined"&&A[Symbol.iterator]||A["@@iterator"];if(!D){if(Array.isArray(A)||(D=u(A))||F&&A&&typeof A.length=="number"){D&&(A=D);var N=0,O=function(){};return{s:O,n:function(){return N>=A.length?{done:!0}:{done:!1,value:A[N++]}},e:function(te){throw te},f:O}}throw new TypeError(`Invalid attempt to iterate non-iterable instance. -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var X=!0,le=!1,_e;return{s:function(){D=D.call(A)},n:function(){var te=D.next();return X=te.done,te},e:function(te){le=!0,_e=te},f:function(){try{!X&&D.return!=null&&D.return()}finally{if(le)throw _e}}}}function u(A,F){if(!!A){if(typeof A=="string")return d(A,F);var D=Object.prototype.toString.call(A).slice(8,-1);if(D==="Object"&&A.constructor&&(D=A.constructor.name),D==="Map"||D==="Set")return Array.from(A);if(D==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(D))return d(A,F)}}function d(A,F){(F==null||F>A.length)&&(F=A.length);for(var D=0,N=new Array(F);Dps});var Pr=Fe(require("obsidian"));var Lc=Fe(require("obsidian"));function ce(){}function qc(t,e){for(let r in e)t[r]=e[r];return t}function Di(t){return t()}function bs(){return Object.create(null)}function Ue(t){t.forEach(Di)}function er(t){return typeof t=="function"}function be(t,e){return t!=t?e==e:t!==e||t&&typeof t=="object"||typeof t=="function"}var vn;function Ti(t,e){return vn||(vn=document.createElement("a")),vn.href=e,t===vn.href}function xs(t){return Object.keys(t).length===0}function ws(t,...e){if(t==null)return ce;let r=t.subscribe(...e);return r.unsubscribe?()=>r.unsubscribe():r}function _n(t,e,r){t.$$.on_destroy.push(ws(e,r))}function tr(t,e,r,n){if(t){let i=js(t,e,r,n);return t[0](i)}}function js(t,e,r,n){return t[1]&&n?qc(r.ctx.slice(),t[1](n(e))):r.ctx}function rr(t,e,r,n){if(t[2]&&n){let i=t[2](n(r));if(e.dirty===void 0)return i;if(typeof i=="object"){let o=[],s=Math.max(e.dirty.length,i.length);for(let a=0;a32){let e=[],r=t.ctx.length/32;for(let n=0;nt.removeEventListener(e,r,n)}function B(t,e,r){r==null?t.removeAttribute(e):t.getAttribute(e)!==r&&t.setAttribute(e,r)}function Xc(t){return Array.from(t.childNodes)}function Ge(t,e){e=""+e,t.wholeText!==e&&(t.data=e)}function Ii(t,e){t.value=e??""}function ze(t,e,r,n){r===null?t.style.removeProperty(e):t.style.setProperty(e,r,n?"important":"")}function Oi(t,e,r){t.classList[r?"add":"remove"](e)}function Zc(t,e,{bubbles:r=!1,cancelable:n=!1}={}){let i=document.createEvent("CustomEvent");return i.initCustomEvent(t,r,n,e),i}var Rr;function Lr(t){Rr=t}function ki(){if(!Rr)throw new Error("Function called outside component initialization");return Rr}function Br(t){ki().$$.on_mount.push(t)}function Nr(t){ki().$$.on_destroy.push(t)}function Pi(){let t=ki();return(e,r,{cancelable:n=!1}={})=>{let i=t.$$.callbacks[e];if(i){let o=Zc(e,r,{cancelable:n});return i.slice().forEach(s=>{s.call(t,o)}),!o.defaultPrevented}return!0}}function $e(t,e){let r=t.$$.callbacks[e.type];r&&r.slice().forEach(n=>n.call(this,e))}var Kr=[];var tt=[],xn=[],Ss=[],Fs=Promise.resolve(),Mi=!1;function Es(){Mi||(Mi=!0,Fs.then(Ds))}function mt(){return Es(),Fs}function Ri(t){xn.push(t)}var Li=new Set,wn=0;function Ds(){let t=Rr;do{for(;wn{jn.delete(t),n&&(r&&t.d(1),n())}),t.o(e)}else n&&n()}var qy=typeof window!="undefined"?window:typeof globalThis!="undefined"?globalThis:global;function Le(t){t&&t.c()}function ke(t,e,r,n){let{fragment:i,after_update:o}=t.$$;i&&i.m(e,r),n||Ri(()=>{let s=t.$$.on_mount.map(Di).filter(er);t.$$.on_destroy?t.$$.on_destroy.push(...s):Ue(s),t.$$.on_mount=[]}),o.forEach(Ri)}function Ee(t,e){let r=t.$$;r.fragment!==null&&(Ue(r.on_destroy),r.fragment&&r.fragment.d(e),r.on_destroy=r.fragment=null,r.ctx=[])}function tf(t,e){t.$$.dirty[0]===-1&&(Kr.push(t),Es(),t.$$.dirty.fill(0)),t.$$.dirty[e/31|0]|=1<{let w=y.length?y[0]:c;return u.ctx&&i(u.ctx[f],u.ctx[f]=w)&&(!u.skip_bound&&u.bound[f]&&u.bound[f](w),d&&tf(t,f)),c}):[],u.update(),d=!0,Ue(u.before_update),u.fragment=n?n(u.ctx):!1,e.target){if(e.hydrate){Yc();let f=Xc(e.target);u.fragment&&u.fragment.l(f),f.forEach(H)}else u.fragment&&u.fragment.c();e.intro&&ee(t.$$.fragment),ke(t,e.target,e.anchor,e.customElement),Jc(),Ds()}Lr(l)}var rf;typeof HTMLElement=="function"&&(rf=class extends HTMLElement{constructor(){super();this.attachShadow({mode:"open"})}connectedCallback(){let{on_mount:t}=this.$$;this.$$.on_disconnect=t.map(Di).filter(er);for(let e in this.$$.slotted)this.appendChild(this.$$.slotted[e])}attributeChangedCallback(t,e,r){this[t]=r}disconnectedCallback(){Ue(this.$$.on_disconnect)}$destroy(){Ee(this,1),this.$destroy=ce}$on(t,e){if(!er(e))return ce;let r=this.$$.callbacks[t]||(this.$$.callbacks[t]=[]);return r.push(e),()=>{let n=r.indexOf(e);n!==-1&&r.splice(n,1)}}$set(t){this.$$set&&!xs(t)&&(this.$$.skip_bound=!0,this.$$set(t),this.$$.skip_bound=!1)}});var Ae=class{$destroy(){Ee(this,1),this.$destroy=ce}$on(e,r){if(!er(r))return ce;let n=this.$$.callbacks[e]||(this.$$.callbacks[e]=[]);return n.push(r),()=>{let i=n.indexOf(r);i!==-1&&n.splice(i,1)}}$set(e){this.$$set&&!xs(e)&&(this.$$.skip_bound=!0,this.$$set(e),this.$$.skip_bound=!1)}};var Mt=Fe(require("obsidian"));var Ha=Fe(require("obsidian"));var Bi=class{constructor(){this.handlers=new Map;this.disabled=[]}on(e,r,n){if(e.includes("@")||r.includes("@"))throw new Error("Invalid context/event name - Cannot contain @");this.handlers.set(`${e}@${r}`,n)}off(e,r){if(r)this.handlers.delete(`${e}@${r}`);else for(let[n]of this.handlers.entries())n.startsWith(`${e}@`)&&this.handlers.delete(n)}disable(e){this.enable(e),this.disabled.push(e)}enable(e){this.disabled=this.disabled.filter(r=>r!==e)}emit(e,...r){let n=[...this.handlers.entries()].filter(([i,o])=>!this.disabled.includes(i.split("@")[0]));for(let[i,o]of n)i.endsWith(`@${e}`)&&o(...r)}};var sr=[];function Cn(t,e=ce){let r,n=new Set;function i(a){if(be(t,a)&&(t=a,r)){let l=!sr.length;for(let u of n)u[1](),sr.push(u,t);if(l){for(let u=0;u{n.delete(u),n.size===0&&(r(),r=null)}}return{set:i,update:o,subscribe:s}}var Y=Fe(require("obsidian"));var ie=typeof globalThis!="undefined"?globalThis:typeof self!="undefined"?self:typeof window!="undefined"?window:global,he=Object.keys,Te=Array.isArray;typeof Promise!="undefined"&&!ie.Promise&&(ie.Promise=Promise);function Pe(t,e){return typeof e!="object"||he(e).forEach(function(r){t[r]=e[r]}),t}var zr=Object.getPrototypeOf,nf={}.hasOwnProperty;function Ve(t,e){return nf.call(t,e)}function ar(t,e){typeof e=="function"&&(e=e(zr(t))),(typeof Reflect=="undefined"?he:Reflect.ownKeys)(e).forEach(r=>{rt(t,r,e[r])})}var Ts=Object.defineProperty;function rt(t,e,r,n){Ts(t,e,Pe(r&&Ve(r,"get")&&typeof r.get=="function"?{get:r.get,set:r.set,configurable:!0}:{value:r,configurable:!0,writable:!0},n))}function lr(t){return{from:function(e){return t.prototype=Object.create(e.prototype),rt(t.prototype,"constructor",t),{extend:ar.bind(null,t.prototype)}}}}var of=Object.getOwnPropertyDescriptor;function Ni(t,e){let r=of(t,e),n;return r||(n=zr(t))&&Ni(n,e)}var sf=[].slice;function An(t,e,r){return sf.call(t,e,r)}function Is(t,e){return e(t)}function Vr(t){if(!t)throw new Error("Assertion Failed")}function Os(t){ie.setImmediate?setImmediate(t):setTimeout(t,0)}function ks(t,e){return t.reduce((r,n,i)=>{var o=e(n,i);return o&&(r[o[0]]=o[1]),r},{})}function af(t,e,r){try{t.apply(null,r)}catch(n){e&&e(n)}}function nt(t,e){if(Ve(t,e))return t[e];if(!e)return t;if(typeof e!="string"){for(var r=[],n=0,i=e.length;n["Int","Uint","Float"].map(e=>e+t+"Array")))).filter(t=>ie[t]),cf=Rs.map(t=>ie[t]);ks(Rs,t=>[t,!0]);var gt=null;function Hr(t){gt=typeof WeakMap!="undefined"&&new WeakMap;let e=Ki(t);return gt=null,e}function Ki(t){if(!t||typeof t!="object")return t;let e=gt&>.get(t);if(e)return e;if(Te(t)){e=[],gt&>.set(t,e);for(var r=0,n=t.length;r=0)e=t;else{let o=zr(t);e=o===Object.prototype?{}:Object.create(o),gt&>.set(t,e);for(var i in t)Ve(t,i)&&(e[i]=Ki(t[i]))}return e}var{toString:ff}={};function zi(t){return ff.call(t).slice(8,-1)}var Vi=typeof Symbol!="undefined"?Symbol.iterator:"@@iterator",df=typeof Vi=="symbol"?function(t){var e;return t!=null&&(e=t[Vi])&&e.apply(t)}:function(){return null},ur={};function it(t){var e,r,n,i;if(arguments.length===1){if(Te(t))return t.slice();if(this===ur&&typeof t=="string")return[t];if(i=df(t)){for(r=[];n=i.next(),!n.done;)r.push(n.value);return r}if(t==null)return[t];if(e=t.length,typeof e=="number"){for(r=new Array(e);e--;)r[e]=t[e];return r}return[t]}for(e=arguments.length,r=new Array(e);e--;)r[e]=arguments[e];return r}var Hi=typeof Symbol!="undefined"?t=>t[Symbol.toStringTag]==="AsyncFunction":()=>!1,Je=typeof location!="undefined"&&/^(http|https):\/\/(localhost|127\.0\.0\.1)/.test(location.href);function Ls(t,e){Je=t,Bs=e}var Bs=()=>!0,hf=!new Error("").stack;function Nt(){if(hf)try{throw Nt.arguments,new Error}catch(t){return t}return new Error}function $i(t,e){var r=t.stack;return r?(e=e||0,r.indexOf(t.name)===0&&(e+=(t.name+t.message).split(` +var Cm=Object.create;var vn=Object.defineProperty,Sm=Object.defineProperties,Em=Object.getOwnPropertyDescriptor,Fm=Object.getOwnPropertyDescriptors,Tm=Object.getOwnPropertyNames,ll=Object.getOwnPropertySymbols,Dm=Object.getPrototypeOf,ul=Object.prototype.hasOwnProperty,Om=Object.prototype.propertyIsEnumerable;var cl=(t,e,r)=>e in t?vn(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,he=(t,e)=>{for(var r in e||(e={}))ul.call(e,r)&&cl(t,r,e[r]);if(ll)for(var r of ll(e))Om.call(e,r)&&cl(t,r,e[r]);return t},Re=(t,e)=>Sm(t,Fm(e)),fl=t=>vn(t,"__esModule",{value:!0});var j=(t,e)=>()=>(t&&(e=t(t=0)),e);var pi=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),dl=(t,e)=>{fl(t);for(var r in e)vn(t,r,{get:e[r],enumerable:!0})},Im=(t,e,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of Tm(e))!ul.call(t,n)&&n!=="default"&&vn(t,n,{get:()=>e[n],enumerable:!(r=Em(e,n))||r.enumerable});return t},ge=t=>Im(fl(vn(t!=null?Cm(Dm(t)):{},"default",t&&t.__esModule&&"default"in t?{get:()=>t.default,enumerable:!0}:{value:t,enumerable:!0})),t);function me(){}function Pm(t,e){for(let r in e)t[r]=e[r];return t}function rs(t){return t()}function pl(){return Object.create(null)}function rt(t){t.forEach(rs)}function jr(t){return typeof t=="function"}function Ce(t,e){return t!=t?e==e:t!==e||t&&typeof t=="object"||typeof t=="function"}function ns(t,e){return hi||(hi=document.createElement("a")),hi.href=e,t===hi.href}function hl(t){return Object.keys(t).length===0}function ml(t,...e){if(t==null)return me;let r=t.subscribe(...e);return r.unsubscribe?()=>r.unsubscribe():r}function mi(t,e,r){t.$$.on_destroy.push(ml(e,r))}function Ar(t,e,r,n){if(t){let i=gl(t,e,r,n);return t[0](i)}}function gl(t,e,r,n){return t[1]&&n?Pm(r.ctx.slice(),t[1](n(e))):r.ctx}function Cr(t,e,r,n){if(t[2]&&n){let i=t[2](n(r));if(e.dirty===void 0)return i;if(typeof i=="object"){let o=[],s=Math.max(e.dirty.length,i.length);for(let a=0;a32){let e=[],r=t.ctx.length/32;for(let n=0;nt.removeEventListener(e,r,n)}function B(t,e,r){r==null?t.removeAttribute(e):t.getAttribute(e)!==r&&t.setAttribute(e,r)}function Rm(t){return Array.from(t.childNodes)}function nt(t,e){e=""+e,t.data!==e&&(t.data=e)}function is(t,e){t.value=e??""}function Qe(t,e,r,n){r==null?t.style.removeProperty(e):t.style.setProperty(e,r,n?"important":"")}function os(t,e,r){t.classList[r?"add":"remove"](e)}function Lm(t,e,{bubbles:r=!1,cancelable:n=!1}={}){let i=document.createEvent("CustomEvent");return i.initCustomEvent(t,r,n,e),i}function xn(t){bn=t}function ss(){if(!bn)throw new Error("Function called outside component initialization");return bn}function wn(t){ss().$$.on_mount.push(t)}function jn(t){ss().$$.on_destroy.push(t)}function as(){let t=ss();return(e,r,{cancelable:n=!1}={})=>{let i=t.$$.callbacks[e];if(i){let o=Lm(e,r,{cancelable:n});return i.slice().forEach(s=>{s.call(t,o)}),!o.defaultPrevented}return!0}}function qe(t,e){let r=t.$$.callbacks[e.type];r&&r.slice().forEach(n=>n.call(this,e))}function wl(){ls||(ls=!0,xl.then(jl))}function Dt(){return wl(),xl}function us(t){Dr.push(t)}function jl(){if(Or!==0)return;let t=bn;do{try{for(;Ort.indexOf(n)===-1?e.push(n):r.push(n)),r.forEach(n=>n()),Dr=e}function nr(){rr={r:0,c:[],p:rr}}function ir(){rr.r||rt(rr.c),rr=rr.p}function te(t,e){t&&t.i&&(_i.delete(t),t.i(e))}function ie(t,e,r,n){if(t&&t.o){if(_i.has(t))return;_i.add(t),rr.c.push(()=>{_i.delete(t),n&&(r&&t.d(1),n())}),t.o(e)}else n&&n()}function We(t){t&&t.c()}function Le(t,e,r,n){let{fragment:i,after_update:o}=t.$$;i&&i.m(e,r),n||us(()=>{let s=t.$$.on_mount.map(rs).filter(jr);t.$$.on_destroy?t.$$.on_destroy.push(...s):rt(s),t.$$.on_mount=[]}),o.forEach(us)}function Ie(t,e){let r=t.$$;r.fragment!==null&&(Bm(r.after_update),rt(r.on_destroy),r.fragment&&r.fragment.d(e),r.on_destroy=r.fragment=null,r.ctx=[])}function zm(t,e){t.$$.dirty[0]===-1&&(Tr.push(t),wl(),t.$$.dirty.fill(0)),t.$$.dirty[e/31|0]|=1<{let w=h.length?h[0]:c;return l.ctx&&i(l.ctx[p],l.ctx[p]=w)&&(!l.skip_bound&&l.bound[p]&&l.bound[p](w),f&&zm(t,p)),c}):[],l.update(),f=!0,rt(l.before_update),l.fragment=n?n(l.ctx):!1,e.target){if(e.hydrate){km();let p=Rm(e.target);l.fragment&&l.fragment.l(p),p.forEach(W)}else l.fragment&&l.fragment.c();e.intro&&te(t.$$.fragment),Le(t,e.target,e.anchor,e.customElement),Mm(),jl()}xn(u)}var hi,_l,gi,vl,bn,Tr,ht,Dr,bl,xl,ls,cs,Or,_i,rr,Km,y1,Hm,De,Xe=j(()=>{_l=typeof window!="undefined"?window:typeof globalThis!="undefined"?globalThis:global,gi=class{constructor(e){this.options=e,this._listeners="WeakMap"in _l?new WeakMap:void 0}observe(e,r){return this._listeners.set(e,r),this._getObserver().observe(e,this.options),()=>{this._listeners.delete(e),this._observer.unobserve(e)}}_getObserver(){var e;return(e=this._observer)!==null&&e!==void 0?e:this._observer=new ResizeObserver(r=>{var n;for(let i of r)gi.entries.set(i.target,i),(n=this._listeners.get(i.target))===null||n===void 0||n(i)})}};gi.entries="WeakMap"in _l?new WeakMap:void 0;vl=!1;Tr=[],ht=[],Dr=[],bl=[],xl=Promise.resolve(),ls=!1;cs=new Set,Or=0;_i=new Set;Km=["allowfullscreen","allowpaymentrequest","async","autofocus","autoplay","checked","controls","default","defer","disabled","formnovalidate","hidden","inert","ismap","loop","multiple","muted","nomodule","novalidate","open","playsinline","readonly","required","reversed","selected"],y1=new Set([...Km]);typeof HTMLElement=="function"&&(Hm=class extends HTMLElement{constructor(){super();this.attachShadow({mode:"open"})}connectedCallback(){let{on_mount:t}=this.$$;this.$$.on_disconnect=t.map(rs).filter(jr);for(let e in this.$$.slotted)this.appendChild(this.$$.slotted[e])}attributeChangedCallback(t,e,r){this[t]=r}disconnectedCallback(){rt(this.$$.on_disconnect)}$destroy(){Ie(this,1),this.$destroy=me}$on(t,e){if(!jr(e))return me;let r=this.$$.callbacks[t]||(this.$$.callbacks[t]=[]);return r.push(e),()=>{let n=r.indexOf(e);n!==-1&&r.splice(n,1)}}$set(t){this.$$set&&!hl(t)&&(this.$$.skip_bound=!0,this.$$set(t),this.$$.skip_bound=!1)}});De=class{$destroy(){Ie(this,1),this.$destroy=me}$on(e,r){if(!jr(r))return me;let n=this.$$.callbacks[e]||(this.$$.callbacks[e]=[]);return n.push(r),()=>{let i=n.indexOf(r);i!==-1&&n.splice(i,1)}}$set(e){this.$$set&&!hl(e)&&(this.$$.skip_bound=!0,this.$$set(e),this.$$.skip_bound=!1)}}});var fs,Al=j(()=>{fs=class{constructor(){this.handlers=new Map;this.disabled=[]}on(e,r,n){if(e.includes("@")||r.includes("@"))throw new Error("Invalid context/event name - Cannot contain @");this.handlers.set(`${e}@${r}`,n)}off(e,r){if(r)this.handlers.delete(`${e}@${r}`);else for(let[n]of this.handlers.entries())n.startsWith(`${e}@`)&&this.handlers.delete(n)}disable(e){this.enable(e),this.disabled.push(e)}enable(e){this.disabled=this.disabled.filter(r=>r!==e)}emit(e,...r){let n=[...this.handlers.entries()].filter(([i,o])=>!this.disabled.includes(i.split("@")[0]));for(let[i,o]of n)i.endsWith(`@${e}`)&&o(...r)}}});function vi(t,e=me){let r,n=new Set;function i(a){if(Ce(t,a)&&(t=a,r)){let u=!Ir.length;for(let l of n)l[1](),Ir.push(l,t);if(u){for(let l=0;l{n.delete(l),n.size===0&&r&&(r(),r=null)}}return{set:i,update:o,subscribe:s}}var Ir,ds=j(()=>{Xe();Xe();Ir=[]});function Ne(t,e){return typeof e!="object"||_e(e).forEach(function(r){t[r]=e[r]}),t}function Ye(t,e){return Vm.call(t,e)}function Pr(t,e){typeof e=="function"&&(e=e(An(t))),(typeof Reflect=="undefined"?_e:Reflect.ownKeys)(e).forEach(r=>{mt(t,r,e[r])})}function mt(t,e,r,n){Cl(t,e,Ne(r&&Ye(r,"get")&&typeof r.get=="function"?{get:r.get,set:r.set,configurable:!0}:{value:r,configurable:!0,writable:!0},n))}function kr(t){return{from:function(e){return t.prototype=Object.create(e.prototype),mt(t.prototype,"constructor",t),{extend:Pr.bind(null,t.prototype)}}}}function ps(t,e){let r=$m(t,e),n;return r||(n=An(t))&&ps(n,e)}function bi(t,e,r){return Wm.call(t,e,r)}function Sl(t,e){return e(t)}function Cn(t){if(!t)throw new Error("Assertion Failed")}function El(t){ae.setImmediate?setImmediate(t):setTimeout(t,0)}function Fl(t,e){return t.reduce((r,n,i)=>{var o=e(n,i);return o&&(r[o[0]]=o[1]),r},{})}function Um(t,e,r){try{t.apply(null,r)}catch(n){e&&e(n)}}function gt(t,e){if(Ye(t,e))return t[e];if(!e)return t;if(typeof e!="string"){for(var r=[],n=0,i=e.length;n=0)e=t;else{let o=An(t);e=o===Object.prototype?{}:Object.create(o),Ot&&Ot.set(t,e);for(var i in t)Ye(t,i)&&(e[i]=hs(t[i]))}return e}function ms(t){return Ym.call(t).slice(8,-1)}function yt(t){var e,r,n,i;if(arguments.length===1){if(ke(t))return t.slice();if(this===Mr&&typeof t=="string")return[t];if(i=Jm(t)){for(r=[];n=i.next(),!n.done;)r.push(n.value);return r}if(t==null)return[t];if(e=t.length,typeof e=="number"){for(r=new Array(e);e--;)r[e]=t[e];return r}return[t]}for(e=arguments.length,r=new Array(e);e--;)r[e]=arguments[e];return r}function Il(t,e){lt=t,Pl=e}function or(){if(Xm)try{throw or.arguments,new Error}catch(t){return t}return new Error}function _s(t,e){var r=t.stack;return r?(e=e||0,r.indexOf(t.name)===0&&(e+=(t.name+t.message).split(` `).length),r.split(` -`).slice(e).filter(Bs).map(n=>` -`+n).join("")):""}var pf=["Modify","Bulk","OpenFailed","VersionChange","Schema","Upgrade","InvalidTable","MissingAPI","NoSuchDatabase","InvalidArgument","SubTransaction","Unsupported","Internal","DatabaseClosed","PrematureCommit","ForeignAwait"],Ns=["Unknown","Constraint","Data","TransactionInactive","ReadOnly","Version","NotFound","InvalidState","InvalidAccess","Abort","Timeout","QuotaExceeded","Syntax","DataClone"],Wi=pf.concat(Ns),mf={VersionChanged:"Database version changed by other database connection",DatabaseClosed:"Database has been closed",Abort:"Transaction aborted",TransactionInactive:"Transaction has already completed or failed",MissingAPI:"IndexedDB API missing. Please visit https://tinyurl.com/y2uuvskb"};function cr(t,e){this._e=Nt(),this.name=t,this.message=e}lr(cr).from(Error).extend({stack:{get:function(){return this._stack||(this._stack=this.name+": "+this.message+$i(this._e,2))}},toString:function(){return this.name+": "+this.message}});function Ks(t,e){return t+". Errors: "+Object.keys(e).map(r=>e[r].toString()).filter((r,n,i)=>i.indexOf(r)===n).join(` -`)}function Sn(t,e,r,n){this._e=Nt(),this.failures=e,this.failedKeys=n,this.successCount=r,this.message=Ks(t,e)}lr(Sn).from(cr);function $r(t,e){this._e=Nt(),this.name="BulkError",this.failures=Object.keys(e).map(r=>e[r]),this.failuresByPos=e,this.message=Ks(t,e)}lr($r).from(cr);var Ui=Wi.reduce((t,e)=>(t[e]=e+"Error",t),{}),gf=cr,V=Wi.reduce((t,e)=>{var r=e+"Error";function n(i,o){this._e=Nt(),this.name=r,i?typeof i=="string"?(this.message=`${i}${o?` - `+o:""}`,this.inner=o||null):typeof i=="object"&&(this.message=`${i.name} ${i.message}`,this.inner=i):(this.message=mf[e]||r,this.inner=null)}return lr(n).from(gf),t[e]=n,t},{});V.Syntax=SyntaxError;V.Type=TypeError;V.Range=RangeError;var zs=Ns.reduce((t,e)=>(t[e+"Error"]=V[e],t),{});function yf(t,e){if(!t||t instanceof cr||t instanceof TypeError||t instanceof SyntaxError||!t.name||!zs[t.name])return t;var r=new zs[t.name](e||t.message,t);return"stack"in t&&rt(r,"stack",{get:function(){return this.inner.stack}}),r}var Fn=Wi.reduce((t,e)=>(["Syntax","Type","Range"].indexOf(e)===-1&&(t[e+"Error"]=V[e]),t),{});Fn.ModifyError=Sn;Fn.DexieError=cr;Fn.BulkError=$r;function ne(){}function Wr(t){return t}function vf(t,e){return t==null||t===Wr?e:function(r){return e(t(r))}}function Kt(t,e){return function(){t.apply(this,arguments),e.apply(this,arguments)}}function _f(t,e){return t===ne?e:function(){var r=t.apply(this,arguments);r!==void 0&&(arguments[0]=r);var n=this.onsuccess,i=this.onerror;this.onsuccess=null,this.onerror=null;var o=e.apply(this,arguments);return n&&(this.onsuccess=this.onsuccess?Kt(n,this.onsuccess):n),i&&(this.onerror=this.onerror?Kt(i,this.onerror):i),o!==void 0?o:r}}function bf(t,e){return t===ne?e:function(){t.apply(this,arguments);var r=this.onsuccess,n=this.onerror;this.onsuccess=this.onerror=null,e.apply(this,arguments),r&&(this.onsuccess=this.onsuccess?Kt(r,this.onsuccess):r),n&&(this.onerror=this.onerror?Kt(n,this.onerror):n)}}function xf(t,e){return t===ne?e:function(r){var n=t.apply(this,arguments);Pe(r,n);var i=this.onsuccess,o=this.onerror;this.onsuccess=null,this.onerror=null;var s=e.apply(this,arguments);return i&&(this.onsuccess=this.onsuccess?Kt(i,this.onsuccess):i),o&&(this.onerror=this.onerror?Kt(o,this.onerror):o),n===void 0?s===void 0?void 0:s:Pe(n,s)}}function wf(t,e){return t===ne?e:function(){return e.apply(this,arguments)===!1?!1:t.apply(this,arguments)}}function Gi(t,e){return t===ne?e:function(){var r=t.apply(this,arguments);if(r&&typeof r.then=="function"){for(var n=this,i=arguments.length,o=new Array(i);i--;)o[i]=arguments[i];return r.then(function(){return e.apply(n,o)})}return e.apply(this,arguments)}}var Ur={},jf=100,Cf=20,Vs=100,[Qi,En,qi]=typeof Promise=="undefined"?[]:(()=>{let t=Promise.resolve();if(typeof crypto=="undefined"||!crypto.subtle)return[t,zr(t),t];let e=crypto.subtle.digest("SHA-512",new Uint8Array([0]));return[e,zr(e),t]})(),Hs=En&&En.then,Dn=Qi&&Qi.constructor,Yi=!!qi,Ji=!1,Af=qi?()=>{qi.then(kn)}:ie.setImmediate?setImmediate.bind(null,kn):ie.MutationObserver?()=>{var t=document.createElement("div");new MutationObserver(()=>{kn(),t=null}).observe(t,{attributes:!0}),t.setAttribute("i","1")}:()=>{setTimeout(kn,0)},Gr=function(t,e){Qr.push([t,e]),Tn&&(Af(),Tn=!1)},Xi=!0,Tn=!0,zt=[],In=[],Zi=null,eo=Wr,fr={id:"global",global:!0,ref:0,unhandleds:[],onunhandled:Zs,pgp:!1,env:{},finalize:function(){this.unhandleds.forEach(t=>{try{Zs(t[0],t[1])}catch{}})}},K=fr,Qr=[],Vt=0,On=[];function M(t){if(typeof this!="object")throw new TypeError("Promises must be constructed via new");this._listeners=[],this.onuncatched=ne,this._lib=!1;var e=this._PSD=K;if(Je&&(this._stackHolder=Nt(),this._prev=null,this._numPrev=0),typeof t!="function"){if(t!==Ur)throw new TypeError("Not a function");this._state=arguments[1],this._value=arguments[2],this._state===!1&&ro(this,this._value);return}this._state=null,this._value=null,++e.ref,Ws(this,t)}var to={get:function(){var t=K,e=Rn;function r(n,i){var o=!t.global&&(t!==K||e!==Rn);let s=o&&!ot();var a=new M((l,u)=>{no(this,new $s(Bn(n,t,o,s),Bn(i,t,o,s),l,u,t))});return Je&&Qs(a,this),a}return r.prototype=Ur,r},set:function(t){rt(this,"then",t&&t.prototype===Ur?to:{get:function(){return t},set:to.set})}};ar(M.prototype,{then:to,_then:function(t,e){no(this,new $s(null,null,t,e,K))},catch:function(t){if(arguments.length===1)return this.then(null,t);var e=arguments[0],r=arguments[1];return typeof e=="function"?this.then(null,n=>n instanceof e?r(n):Pn(n)):this.then(null,n=>n&&n.name===e?r(n):Pn(n))},finally:function(t){return this.then(e=>(t(),e),e=>(t(),Pn(e)))},stack:{get:function(){if(this._stack)return this._stack;try{Ji=!0;var t=Gs(this,[],Cf),e=t.join(` -From previous: `);return this._state!==null&&(this._stack=e),e}finally{Ji=!1}}},timeout:function(t,e){return t<1/0?new M((r,n)=>{var i=setTimeout(()=>n(new V.Timeout(e)),t);this.then(r,n).finally(clearTimeout.bind(null,i))}):this}});typeof Symbol!="undefined"&&Symbol.toStringTag&&rt(M.prototype,Symbol.toStringTag,"Dexie.Promise");fr.env=qs();function $s(t,e,r,n,i){this.onFulfilled=typeof t=="function"?t:null,this.onRejected=typeof e=="function"?e:null,this.resolve=r,this.reject=n,this.psd=i}ar(M,{all:function(){var t=it.apply(null,arguments).map(Ln);return new M(function(e,r){t.length===0&&e([]);var n=t.length;t.forEach((i,o)=>M.resolve(i).then(s=>{t[o]=s,--n||e(t)},r))})},resolve:t=>{if(t instanceof M)return t;if(t&&typeof t.then=="function")return new M((r,n)=>{t.then(r,n)});var e=new M(Ur,!0,t);return Qs(e,Zi),e},reject:Pn,race:function(){var t=it.apply(null,arguments).map(Ln);return new M((e,r)=>{t.map(n=>M.resolve(n).then(e,r))})},PSD:{get:()=>K,set:t=>K=t},totalEchoes:{get:()=>Rn},newPSD:yt,usePSD:hr,scheduler:{get:()=>Gr,set:t=>{Gr=t}},rejectionMapper:{get:()=>eo,set:t=>{eo=t}},follow:(t,e)=>new M((r,n)=>yt((i,o)=>{var s=K;s.unhandleds=[],s.onunhandled=o,s.finalize=Kt(function(){Ff(()=>{this.unhandleds.length===0?i():o(this.unhandleds[0])})},s.finalize),t()},e,r,n))});Dn&&(Dn.allSettled&&rt(M,"allSettled",function(){let t=it.apply(null,arguments).map(Ln);return new M(e=>{t.length===0&&e([]);let r=t.length,n=new Array(r);t.forEach((i,o)=>M.resolve(i).then(s=>n[o]={status:"fulfilled",value:s},s=>n[o]={status:"rejected",reason:s}).then(()=>--r||e(n)))})}),Dn.any&&typeof AggregateError!="undefined"&&rt(M,"any",function(){let t=it.apply(null,arguments).map(Ln);return new M((e,r)=>{t.length===0&&r(new AggregateError([]));let n=t.length,i=new Array(n);t.forEach((o,s)=>M.resolve(o).then(a=>e(a),a=>{i[s]=a,--n||r(new AggregateError(i))}))})}));function Ws(t,e){try{e(r=>{if(t._state===null){if(r===t)throw new TypeError("A promise cannot be resolved with itself.");var n=t._lib&&qr();r&&typeof r.then=="function"?Ws(t,(i,o)=>{r instanceof M?r._then(i,o):r.then(i,o)}):(t._state=!0,t._value=r,Us(t)),n&&Yr()}},ro.bind(null,t))}catch(r){ro(t,r)}}function ro(t,e){if(In.push(e),t._state===null){var r=t._lib&&qr();e=eo(e),t._state=!1,t._value=e,Je&&e!==null&&typeof e=="object"&&!e._promise&&af(()=>{var n=Ni(e,"stack");e._promise=t,rt(e,"stack",{get:()=>Ji?n&&(n.get?n.get.apply(e):n.value):t.stack})}),Ef(t),Us(t),r&&Yr()}}function Us(t){var e=t._listeners;t._listeners=[];for(var r=0,n=e.length;r{--Vt==0&&io()},[]))}function no(t,e){if(t._state===null){t._listeners.push(e);return}var r=t._state?e.onFulfilled:e.onRejected;if(r===null)return(t._state?e.resolve:e.reject)(t._value);++e.psd.ref,++Vt,Gr(Sf,[r,t,e])}function Sf(t,e,r){try{Zi=e;var n,i=e._value;e._state?n=t(i):(In.length&&(In=[]),n=t(i),In.indexOf(i)===-1&&Df(e)),r.resolve(n)}catch(o){r.reject(o)}finally{Zi=null,--Vt==0&&io(),--r.psd.ref||r.psd.finalize()}}function Gs(t,e,r){if(e.length===r)return e;var n="";if(t._state===!1){var i=t._value,o,s;i!=null?(o=i.name||"Error",s=i.message||i,n=$i(i,0)):(o=i,s=""),e.push(o+(s?": "+s:"")+n)}return Je&&(n=$i(t._stackHolder,2),n&&e.indexOf(n)===-1&&e.push(n),t._prev&&Gs(t._prev,e,r)),e}function Qs(t,e){var r=e?e._numPrev+1:0;r0;)for(t=Qr,Qr=[],r=t.length,e=0;e0);Xi=!0,Tn=!0}function io(){var t=zt;zt=[],t.forEach(n=>{n._PSD.onunhandled.call(null,n._value,n)});for(var e=On.slice(0),r=e.length;r;)e[--r]()}function Ff(t){function e(){t(),On.splice(On.indexOf(e),1)}On.push(e),++Vt,Gr(()=>{--Vt==0&&io()},[])}function Ef(t){zt.some(e=>e._value===t._value)||zt.push(t)}function Df(t){for(var e=zt.length;e;)if(zt[--e]._value===t._value){zt.splice(e,1);return}}function Pn(t){return new M(Ur,!1,t)}function se(t,e){var r=K;return function(){var n=qr(),i=K;try{return vt(r,!0),t.apply(this,arguments)}catch(o){e&&e(o)}finally{vt(i,!1),n&&Yr()}}}var Ie={awaits:0,echoes:0,id:0},Tf=0,Mn=[],oo=0,Rn=0,If=0;function yt(t,e,r,n){var i=K,o=Object.create(i);o.parent=i,o.ref=0,o.global=!1,o.id=++If;var s=fr.env;o.env=Yi?{Promise:M,PromiseProp:{value:M,configurable:!0,writable:!0},all:M.all,race:M.race,allSettled:M.allSettled,any:M.any,resolve:M.resolve,reject:M.reject,nthen:Js(s.nthen,o),gthen:Js(s.gthen,o)}:{},e&&Pe(o,e),++i.ref,o.finalize=function(){--this.parent.ref||this.parent.finalize()};var a=hr(o,t,r,n);return o.ref===0&&o.finalize(),a}function dr(){return Ie.id||(Ie.id=++Tf),++Ie.awaits,Ie.echoes+=Vs,Ie.id}function ot(){return Ie.awaits?(--Ie.awaits==0&&(Ie.id=0),Ie.echoes=Ie.awaits*Vs,!0):!1}(""+Hs).indexOf("[native code]")===-1&&(dr=ot=ne);function Ln(t){return Ie.echoes&&t&&t.constructor===Dn?(dr(),t.then(e=>(ot(),e),e=>(ot(),ye(e)))):t}function Of(t){++Rn,(!Ie.echoes||--Ie.echoes==0)&&(Ie.echoes=Ie.id=0),Mn.push(K),vt(t,!0)}function kf(){var t=Mn[Mn.length-1];Mn.pop(),vt(t,!1)}function vt(t,e){var r=K;if((e?Ie.echoes&&(!oo++||t!==K):oo&&(!--oo||t!==K))&&Ys(e?Of.bind(null,t):kf),t!==K&&(K=t,r===fr&&(fr.env=qs()),Yi)){var n=fr.env.Promise,i=t.env;En.then=i.nthen,n.prototype.then=i.gthen,(r.global||t.global)&&(Object.defineProperty(ie,"Promise",i.PromiseProp),n.all=i.all,n.race=i.race,n.resolve=i.resolve,n.reject=i.reject,i.allSettled&&(n.allSettled=i.allSettled),i.any&&(n.any=i.any))}}function qs(){var t=ie.Promise;return Yi?{Promise:t,PromiseProp:Object.getOwnPropertyDescriptor(ie,"Promise"),all:t.all,race:t.race,allSettled:t.allSettled,any:t.any,resolve:t.resolve,reject:t.reject,nthen:En.then,gthen:t.prototype.then}:{}}function hr(t,e,r,n,i){var o=K;try{return vt(t,!0),e(r,n,i)}finally{vt(o,!1)}}function Ys(t){Hs.call(Qi,t)}function Bn(t,e,r,n){return typeof t!="function"?t:function(){var i=K;r&&dr(),vt(e,!0);try{return t.apply(this,arguments)}finally{vt(i,!1),n&&Ys(ot)}}}function Js(t,e){return function(r,n){return t.call(this,Bn(r,e),Bn(n,e))}}var Xs="unhandledrejection";function Zs(t,e){var r;try{r=e.onuncatched(t)}catch{}if(r!==!1)try{var n,i={promise:e,reason:t};if(ie.document&&document.createEvent?(n=document.createEvent("Event"),n.initEvent(Xs,!0,!0),Pe(n,i)):ie.CustomEvent&&(n=new CustomEvent(Xs,{detail:i}),Pe(n,i)),n&&ie.dispatchEvent&&(dispatchEvent(n),!ie.PromiseRejectionEvent&&ie.onunhandledrejection))try{ie.onunhandledrejection(n)}catch{}Je&&n&&!n.defaultPrevented&&console.warn(`Unhandled rejection: ${t.stack||t}`)}catch{}}var ye=M.reject;function so(t,e,r,n){if(!t.idbdb||!t._state.openComplete&&!K.letThrough&&!t._vip){if(t._state.openComplete)return ye(new V.DatabaseClosed(t._state.dbOpenError));if(!t._state.isBeingOpened){if(!t._options.autoOpen)return ye(new V.DatabaseClosed);t.open().catch(ne)}return t._state.dbReadyPromise.then(()=>so(t,e,r,n))}else{var i=t._createTransaction(e,r,t._dbSchema);try{i.create(),t._state.PR1398_maxLoop=3}catch(o){return o.name===Ui.InvalidState&&t.isOpen()&&--t._state.PR1398_maxLoop>0?(console.warn("Dexie: Need to reopen db"),t._close(),t.open().then(()=>so(t,e,r,n))):ye(o)}return i._promise(e,(o,s)=>yt(()=>(K.trans=i,n(o,s,i)))).then(o=>i._completion.then(()=>o))}}var ea="3.2.2",Ht=String.fromCharCode(65535),ao=-1/0,st="Invalid key provided. Keys must be of type string, number, Date or Array.",ta="String expected.",Jr=[],Nn=typeof navigator!="undefined"&&/(MSIE|Trident|Edge)/.test(navigator.userAgent),Pf=Nn,Mf=Nn,ra=t=>!/(dexie\.js|dexie\.min\.js)/.test(t),Kn="__dbnames",lo="readonly",uo="readwrite";function $t(t,e){return t?e?function(){return t.apply(this,arguments)&&e.apply(this,arguments)}:t:e}var na={type:3,lower:-1/0,lowerOpen:!1,upper:[[]],upperOpen:!1};function zn(t){return typeof t=="string"&&!/\./.test(t)?e=>(e[t]===void 0&&t in e&&(e=Hr(e),delete e[t]),e):e=>e}var ia=class{_trans(e,r,n){let i=this._tx||K.trans,o=this.name;function s(l,u,d){if(!d.schema[o])throw new V.NotFound("Table "+o+" not part of transaction");return r(d.idbtrans,d)}let a=qr();try{return i&&i.db===this.db?i===K.trans?i._promise(e,s,n):yt(()=>i._promise(e,s,n),{trans:i,transless:K.transless||K}):so(this.db,e,[this.name],s)}finally{a&&Yr()}}get(e,r){return e&&e.constructor===Object?this.where(e).first(r):this._trans("readonly",n=>this.core.get({trans:n,key:e}).then(i=>this.hook.reading.fire(i))).then(r)}where(e){if(typeof e=="string")return new this.db.WhereClause(this,e);if(Te(e))return new this.db.WhereClause(this,`[${e.join("+")}]`);let r=he(e);if(r.length===1)return this.where(r[0]).equals(e[r[0]]);let n=this.schema.indexes.concat(this.schema.primKey).filter(u=>u.compound&&r.every(d=>u.keyPath.indexOf(d)>=0)&&u.keyPath.every(d=>r.indexOf(d)>=0))[0];if(n&&this.db._maxKey!==Ht)return this.where(n.name).equals(n.keyPath.map(u=>e[u]));!n&&Je&&console.warn(`The query ${JSON.stringify(e)} on ${this.name} would benefit of a compound index [${r.join("+")}]`);let{idxByName:i}=this.schema,o=this.db._deps.indexedDB;function s(u,d){try{return o.cmp(u,d)===0}catch{return!1}}let[a,l]=r.reduce(([u,d],f)=>{let c=i[f],y=e[f];return[u||c,u||!c?$t(d,c&&c.multi?w=>{let x=nt(w,f);return Te(x)&&x.some(b=>s(y,b))}:w=>s(y,nt(w,f))):d]},[null,null]);return a?this.where(a.name).equals(e[a.keyPath]).filter(l):n?this.filter(l):this.where(r).equals("")}filter(e){return this.toCollection().and(e)}count(e){return this.toCollection().count(e)}offset(e){return this.toCollection().offset(e)}limit(e){return this.toCollection().limit(e)}each(e){return this.toCollection().each(e)}toArray(e){return this.toCollection().toArray(e)}toCollection(){return new this.db.Collection(new this.db.WhereClause(this))}orderBy(e){return new this.db.Collection(new this.db.WhereClause(this,Te(e)?`[${e.join("+")}]`:e))}reverse(){return this.toCollection().reverse()}mapToClass(e){this.schema.mappedClass=e;let r=n=>{if(!n)return n;let i=Object.create(e.prototype);for(var o in n)if(Ve(n,o))try{i[o]=n[o]}catch{}return i};return this.schema.readHook&&this.hook.reading.unsubscribe(this.schema.readHook),this.schema.readHook=r,this.hook("reading",r),e}defineClass(){function e(r){Pe(this,r)}return this.mapToClass(e)}add(e,r){let{auto:n,keyPath:i}=this.schema.primKey,o=e;return i&&n&&(o=zn(i)(e)),this._trans("readwrite",s=>this.core.mutate({trans:s,type:"add",keys:r!=null?[r]:null,values:[o]})).then(s=>s.numFailures?M.reject(s.failures[0]):s.lastResult).then(s=>{if(i)try{Qe(e,i,s)}catch{}return s})}update(e,r){if(typeof e=="object"&&!Te(e)){let n=nt(e,this.schema.primKey.keyPath);if(n===void 0)return ye(new V.InvalidArgument("Given object does not contain its primary key"));try{typeof r!="function"?he(r).forEach(i=>{Qe(e,i,r[i])}):r(e,{value:e,primKey:n})}catch{}return this.where(":id").equals(n).modify(r)}else return this.where(":id").equals(e).modify(r)}put(e,r){let{auto:n,keyPath:i}=this.schema.primKey,o=e;return i&&n&&(o=zn(i)(e)),this._trans("readwrite",s=>this.core.mutate({trans:s,type:"put",values:[o],keys:r!=null?[r]:null})).then(s=>s.numFailures?M.reject(s.failures[0]):s.lastResult).then(s=>{if(i)try{Qe(e,i,s)}catch{}return s})}delete(e){return this._trans("readwrite",r=>this.core.mutate({trans:r,type:"delete",keys:[e]})).then(r=>r.numFailures?M.reject(r.failures[0]):void 0)}clear(){return this._trans("readwrite",e=>this.core.mutate({trans:e,type:"deleteRange",range:na})).then(e=>e.numFailures?M.reject(e.failures[0]):void 0)}bulkGet(e){return this._trans("readonly",r=>this.core.getMany({keys:e,trans:r}).then(n=>n.map(i=>this.hook.reading.fire(i))))}bulkAdd(e,r,n){let i=Array.isArray(r)?r:void 0;n=n||(i?void 0:r);let o=n?n.allKeys:void 0;return this._trans("readwrite",s=>{let{auto:a,keyPath:l}=this.schema.primKey;if(l&&i)throw new V.InvalidArgument("bulkAdd(): keys argument invalid on tables with inbound keys");if(i&&i.length!==e.length)throw new V.InvalidArgument("Arguments objects and keys must have the same length");let u=e.length,d=l&&a?e.map(zn(l)):e;return this.core.mutate({trans:s,type:"add",keys:i,values:d,wantResults:o}).then(({numFailures:f,results:c,lastResult:y,failures:w})=>{let x=o?c:y;if(f===0)return x;throw new $r(`${this.name}.bulkAdd(): ${f} of ${u} operations failed`,w)})})}bulkPut(e,r,n){let i=Array.isArray(r)?r:void 0;n=n||(i?void 0:r);let o=n?n.allKeys:void 0;return this._trans("readwrite",s=>{let{auto:a,keyPath:l}=this.schema.primKey;if(l&&i)throw new V.InvalidArgument("bulkPut(): keys argument invalid on tables with inbound keys");if(i&&i.length!==e.length)throw new V.InvalidArgument("Arguments objects and keys must have the same length");let u=e.length,d=l&&a?e.map(zn(l)):e;return this.core.mutate({trans:s,type:"put",keys:i,values:d,wantResults:o}).then(({numFailures:f,results:c,lastResult:y,failures:w})=>{let x=o?c:y;if(f===0)return x;throw new $r(`${this.name}.bulkPut(): ${f} of ${u} operations failed`,w)})})}bulkDelete(e){let r=e.length;return this._trans("readwrite",n=>this.core.mutate({trans:n,type:"delete",keys:e})).then(({numFailures:n,lastResult:i,failures:o})=>{if(n===0)return i;throw new $r(`${this.name}.bulkDelete(): ${n} of ${r} operations failed`,o)})}};function Xr(t){var e={},r=function(a,l){if(l){for(var u=arguments.length,d=new Array(u-1);--u;)d[u-1]=arguments[u];return e[a].subscribe.apply(null,d),t}else if(typeof a=="string")return e[a]};r.addEventType=o;for(var n=1,i=arguments.length;n$t(n(),e()):e,t.justLimit=r&&!n}function Lf(t,e){t.isMatch=$t(t.isMatch,e)}function Vn(t,e){if(t.isPrimKey)return e.primaryKey;let r=e.getIndexByKeyPath(t.index);if(!r)throw new V.Schema("KeyPath "+t.index+" on object store "+e.name+" is not indexed");return r}function oa(t,e,r){let n=Vn(t,e.schema);return e.openCursor({trans:r,values:!t.keysOnly,reverse:t.dir==="prev",unique:!!t.unique,query:{index:n,range:t.range}})}function Hn(t,e,r,n){let i=t.replayFilter?$t(t.filter,t.replayFilter()):t.filter;if(t.or){let o={},s=(a,l,u)=>{if(!i||i(l,u,c=>l.stop(c),c=>l.fail(c))){var d=l.primaryKey,f=""+d;f==="[object ArrayBuffer]"&&(f=""+new Uint8Array(d)),Ve(o,f)||(o[f]=!0,e(a,l,u))}};return Promise.all([t.or._iterate(s,r),sa(oa(t,n,r),t.algorithm,s,!t.keysOnly&&t.valueMapper)])}else return sa(oa(t,n,r),$t(t.algorithm,i),e,!t.keysOnly&&t.valueMapper)}function sa(t,e,r,n){var i=n?(s,a,l)=>r(n(s),a,l):r,o=se(i);return t.then(s=>{if(s)return s.start(()=>{var a=()=>s.continue();(!e||e(s,l=>a=l,l=>{s.stop(l),a=ne},l=>{s.fail(l),a=ne}))&&o(s.value,s,l=>a=l),a()})})}function Me(t,e){try{let r=aa(t),n=aa(e);if(r!==n)return r==="Array"?1:n==="Array"?-1:r==="binary"?1:n==="binary"?-1:r==="string"?1:n==="string"?-1:r==="Date"?1:n!=="Date"?NaN:-1;switch(r){case"number":case"Date":case"string":return t>e?1:tHn(r,e,n,r.table.core))}count(e){return this._read(r=>{let n=this._ctx,i=n.table.core;if(pr(n,!0))return i.count({trans:r,query:{index:Vn(n,i.schema),range:n.range}}).then(s=>Math.min(s,n.limit));var o=0;return Hn(n,()=>(++o,!1),r,i).then(()=>o)}).then(e)}sortBy(e,r){let n=e.split(".").reverse(),i=n[0],o=n.length-1;function s(u,d){return d?s(u[n[d]],d-1):u[i]}var a=this._ctx.dir==="next"?1:-1;function l(u,d){var f=s(u,o),c=s(d,o);return fc?a:0}return this.toArray(function(u){return u.sort(l)}).then(r)}toArray(e){return this._read(r=>{var n=this._ctx;if(n.dir==="next"&&pr(n,!0)&&n.limit>0){let{valueMapper:i}=n,o=Vn(n,n.table.core.schema);return n.table.core.query({trans:r,limit:n.limit,values:!0,query:{index:o,range:n.range}}).then(({result:s})=>i?s.map(i):s)}else{let i=[];return Hn(n,o=>i.push(o),r,n.table.core).then(()=>i)}},e)}offset(e){var r=this._ctx;return e<=0?this:(r.offset+=e,pr(r)?fo(r,()=>{var n=e;return(i,o)=>n===0?!0:n===1?(--n,!1):(o(()=>{i.advance(n),n=0}),!1)}):fo(r,()=>{var n=e;return()=>--n<0}),this)}limit(e){return this._ctx.limit=Math.min(this._ctx.limit,e),fo(this._ctx,()=>{var r=e;return function(n,i,o){return--r<=0&&i(o),r>=0}},!0),this}until(e,r){return co(this._ctx,function(n,i,o){return e(n.value)?(i(o),r):!0}),this}first(e){return this.limit(1).toArray(function(r){return r[0]}).then(e)}last(e){return this.reverse().first(e)}filter(e){return co(this._ctx,function(r){return e(r.value)}),Lf(this._ctx,e),this}and(e){return this.filter(e)}or(e){return new this.db.WhereClause(this._ctx.table,e,this)}reverse(){return this._ctx.dir=this._ctx.dir==="prev"?"next":"prev",this._ondirectionchange&&this._ondirectionchange(this._ctx.dir),this}desc(){return this.reverse()}eachKey(e){var r=this._ctx;return r.keysOnly=!r.isMatch,this.each(function(n,i){e(i.key,i)})}eachUniqueKey(e){return this._ctx.unique="unique",this.eachKey(e)}eachPrimaryKey(e){var r=this._ctx;return r.keysOnly=!r.isMatch,this.each(function(n,i){e(i.primaryKey,i)})}keys(e){var r=this._ctx;r.keysOnly=!r.isMatch;var n=[];return this.each(function(i,o){n.push(o.key)}).then(function(){return n}).then(e)}primaryKeys(e){var r=this._ctx;if(r.dir==="next"&&pr(r,!0)&&r.limit>0)return this._read(i=>{var o=Vn(r,r.table.core.schema);return r.table.core.query({trans:i,values:!1,limit:r.limit,query:{index:o,range:r.range}})}).then(({result:i})=>i).then(e);r.keysOnly=!r.isMatch;var n=[];return this.each(function(i,o){n.push(o.primaryKey)}).then(function(){return n}).then(e)}uniqueKeys(e){return this._ctx.unique="unique",this.keys(e)}firstKey(e){return this.limit(1).keys(function(r){return r[0]}).then(e)}lastKey(e){return this.reverse().firstKey(e)}distinct(){var e=this._ctx,r=e.index&&e.table.schema.idxByName[e.index];if(!r||!r.multi)return this;var n={};return co(this._ctx,function(i){var o=i.primaryKey.toString(),s=Ve(n,o);return n[o]=!0,!s}),this}modify(e){var r=this._ctx;return this._write(n=>{var i;if(typeof e=="function")i=e;else{var o=he(e),s=o.length;i=function(x){for(var b=!1,h=0;h{let{failures:h,numFailures:_}=b;c+=x-_;for(let p of he(h))f.push(h[p])};return this.clone().primaryKeys().then(x=>{let b=h=>{let _=Math.min(d,x.length-h);return a.getMany({trans:n,keys:x.slice(h,h+_),cache:"immutable"}).then(p=>{let m=[],v=[],g=l?[]:null,j=[];for(let S=0;S<_;++S){let E=p[S],P={value:Hr(E),primKey:x[h+S]};i.call(P,P.value,P)!==!1&&(P.value==null?j.push(x[h+S]):!l&&Me(u(E),u(P.value))!==0?(j.push(x[h+S]),m.push(P.value)):(v.push(P.value),l&&g.push(x[h+S])))}let C=pr(r)&&r.limit===1/0&&(typeof e!="function"||e===ho)&&{index:r.index,range:r.range};return Promise.resolve(m.length>0&&a.mutate({trans:n,type:"add",values:m}).then(S=>{for(let E in S.failures)j.splice(parseInt(E),1);w(m.length,S)})).then(()=>(v.length>0||C&&typeof e=="object")&&a.mutate({trans:n,type:"put",keys:g,values:v,criteria:C,changeSpec:typeof e!="function"&&e}).then(S=>w(v.length,S))).then(()=>(j.length>0||C&&e===ho)&&a.mutate({trans:n,type:"delete",keys:j,criteria:C}).then(S=>w(j.length,S))).then(()=>x.length>h+_&&b(h+d))})};return b(0).then(()=>{if(f.length>0)throw new Sn("Error modifying one or more objects",f,c,y);return x.length})})})}delete(){var e=this._ctx,r=e.range;return pr(e)&&(e.isPrimKey&&!Mf||r.type===3)?this._write(n=>{let{primaryKey:i}=e.table.core.schema,o=r;return e.table.core.count({trans:n,query:{index:i,range:o}}).then(s=>e.table.core.mutate({trans:n,type:"deleteRange",range:o}).then(({failures:a,lastResult:l,results:u,numFailures:d})=>{if(d)throw new Sn("Could not delete some values",Object.keys(a).map(f=>a[f]),s-d);return s-d}))}):this.modify(ho)}},ho=(t,e)=>e.value=null;function Kf(t){return Zr(ua.prototype,function(r,n){this.db=t;let i=na,o=null;if(n)try{i=n()}catch(u){o=u}let s=r._ctx,a=s.table,l=a.hook.reading.fire;this._ctx={table:a,index:s.index,isPrimKey:!s.index||a.schema.primKey.keyPath&&s.index===a.schema.primKey.name,range:i,keysOnly:!1,dir:"next",unique:"",algorithm:null,filter:null,replayFilter:null,justLimit:!0,isMatch:null,offset:0,limit:1/0,error:o,or:s.or,valueMapper:l!==Wr?l:null}})}function zf(t,e){return te?-1:t===e?0:1}function He(t,e,r){var n=t instanceof po?new t.Collection(t):t;return n._ctx.error=r?new r(e):new TypeError(e),n}function mr(t){return new t.Collection(t,()=>ca("")).limit(0)}function Hf(t){return t==="next"?e=>e.toUpperCase():e=>e.toLowerCase()}function $f(t){return t==="next"?e=>e.toLowerCase():e=>e.toUpperCase()}function Wf(t,e,r,n,i,o){for(var s=Math.min(t.length,n.length),a=-1,l=0;l=0?t.substr(0,a)+e[a]+r.substr(a+1):null;i(t[l],u)<0&&(a=l)}return stypeof x=="string"))return He(t,ta);function c(x){i=Hf(x),o=$f(x),s=x==="next"?zf:Vf;var b=r.map(function(h){return{lower:o(h),upper:i(h)}}).sort(function(h,_){return s(h.lower,_.lower)});a=b.map(function(h){return h.upper}),l=b.map(function(h){return h.lower}),u=x,d=x==="next"?"":n}c("next");var y=new t.Collection(t,()=>_t(a[0],l[f-1]+n));y._ondirectionchange=function(x){c(x)};var w=0;return y._addAlgorithm(function(x,b,h){var _=x.key;if(typeof _!="string")return!1;var p=o(_);if(e(p,l,w))return!0;for(var m=null,v=w;v0)&&(m=g)}return b(m!==null?function(){x.continue(m+d)}:h),!1}),y}function _t(t,e,r,n){return{type:2,lower:t,upper:e,lowerOpen:r,upperOpen:n}}function ca(t){return{type:1,lower:t,upper:t}}var po=class{get Collection(){return this._ctx.table.db.Collection}between(e,r,n,i){n=n!==!1,i=i===!0;try{return this._cmp(e,r)>0||this._cmp(e,r)===0&&(n||i)&&!(n&&i)?mr(this):new this.Collection(this,()=>_t(e,r,!n,!i))}catch{return He(this,st)}}equals(e){return e==null?He(this,st):new this.Collection(this,()=>ca(e))}above(e){return e==null?He(this,st):new this.Collection(this,()=>_t(e,void 0,!0))}aboveOrEqual(e){return e==null?He(this,st):new this.Collection(this,()=>_t(e,void 0,!1))}below(e){return e==null?He(this,st):new this.Collection(this,()=>_t(void 0,e,!1,!0))}belowOrEqual(e){return e==null?He(this,st):new this.Collection(this,()=>_t(void 0,e))}startsWith(e){return typeof e!="string"?He(this,ta):this.between(e,e+Ht,!0,!0)}startsWithIgnoreCase(e){return e===""?this.startsWith(e):$n(this,(r,n)=>r.indexOf(n[0])===0,[e],Ht)}equalsIgnoreCase(e){return $n(this,(r,n)=>r===n[0],[e],"")}anyOfIgnoreCase(){var e=it.apply(ur,arguments);return e.length===0?mr(this):$n(this,(r,n)=>n.indexOf(r)!==-1,e,"")}startsWithAnyOfIgnoreCase(){var e=it.apply(ur,arguments);return e.length===0?mr(this):$n(this,(r,n)=>n.some(i=>r.indexOf(i)===0),e,Ht)}anyOf(){let e=it.apply(ur,arguments),r=this._cmp;try{e.sort(r)}catch{return He(this,st)}if(e.length===0)return mr(this);let n=new this.Collection(this,()=>_t(e[0],e[e.length-1]));n._ondirectionchange=o=>{r=o==="next"?this._ascending:this._descending,e.sort(r)};let i=0;return n._addAlgorithm((o,s,a)=>{let l=o.key;for(;r(l,e[i])>0;)if(++i,i===e.length)return s(a),!1;return r(l,e[i])===0?!0:(s(()=>{o.continue(e[i])}),!1)}),n}notEqual(e){return this.inAnyRange([[ao,e],[e,this.db._maxKey]],{includeLowers:!1,includeUppers:!1})}noneOf(){let e=it.apply(ur,arguments);if(e.length===0)return new this.Collection(this);try{e.sort(this._ascending)}catch{return He(this,st)}let r=e.reduce((n,i)=>n?n.concat([[n[n.length-1][1],i]]):[[ao,i]],null);return r.push([e[e.length-1],this.db._maxKey]),this.inAnyRange(r,{includeLowers:!1,includeUppers:!1})}inAnyRange(e,r){let n=this._cmp,i=this._ascending,o=this._descending,s=this._min,a=this._max;if(e.length===0)return mr(this);if(!e.every(m=>m[0]!==void 0&&m[1]!==void 0&&i(m[0],m[1])<=0))return He(this,"First argument to inAnyRange() must be an Array of two-value Arrays [lower,upper] where upper must not be lower than lower",V.InvalidArgument);let l=!r||r.includeLowers!==!1,u=r&&r.includeUppers===!0;function d(m,v){let g=0,j=m.length;for(;g0){C[0]=s(C[0],v[0]),C[1]=a(C[1],v[1]);break}}return g===j&&m.push(v),m}let f=i;function c(m,v){return f(m[0],v[0])}let y;try{y=e.reduce(d,[]),y.sort(c)}catch{return He(this,st)}let w=0,x=u?m=>i(m,y[w][1])>0:m=>i(m,y[w][1])>=0,b=l?m=>o(m,y[w][0])>0:m=>o(m,y[w][0])>=0;function h(m){return!x(m)&&!b(m)}let _=x,p=new this.Collection(this,()=>_t(y[0][0],y[y.length-1][1],!l,!u));return p._ondirectionchange=m=>{m==="next"?(_=x,f=i):(_=b,f=o),y.sort(c)},p._addAlgorithm((m,v,g)=>{for(var j=m.key;_(j);)if(++w,w===y.length)return v(g),!1;return h(j)?!0:(this._cmp(j,y[w][1])===0||this._cmp(j,y[w][0])===0||v(()=>{f===i?m.continue(y[w][0]):m.continue(y[w][1])}),!1)}),p}startsWithAnyOf(){let e=it.apply(ur,arguments);return e.every(r=>typeof r=="string")?e.length===0?mr(this):this.inAnyRange(e.map(r=>[r,r+Ht])):He(this,"startsWithAnyOf() only works with strings")}};function Uf(t){return Zr(po.prototype,function(r,n,i){this.db=t,this._ctx={table:r,index:n===":id"?null:n,or:i};let o=t._deps.indexedDB;if(!o)throw new V.MissingAPI;this._cmp=this._ascending=o.cmp.bind(o),this._descending=(s,a)=>o.cmp(a,s),this._max=(s,a)=>o.cmp(s,a)>0?s:a,this._min=(s,a)=>o.cmp(s,a)<0?s:a,this._IDBKeyRange=t._deps.IDBKeyRange})}function Xe(t){return se(function(e){return en(e),t(e.target.error),!1})}function en(t){t.stopPropagation&&t.stopPropagation(),t.preventDefault&&t.preventDefault()}var tn="storagemutated",bt="x-storagemutated-1",xt=Xr(null,tn),fa=class{_lock(){return Vr(!K.global),++this._reculock,this._reculock===1&&!K.global&&(K.lockOwnerFor=this),this}_unlock(){if(Vr(!K.global),--this._reculock==0)for(K.global||(K.lockOwnerFor=null);this._blockedFuncs.length>0&&!this._locked();){var e=this._blockedFuncs.shift();try{hr(e[1],e[0])}catch{}}return this}_locked(){return this._reculock&&K.lockOwnerFor!==this}create(e){if(!this.mode)return this;let r=this.db.idbdb,n=this.db._state.dbOpenError;if(Vr(!this.idbtrans),!e&&!r)switch(n&&n.name){case"DatabaseClosedError":throw new V.DatabaseClosed(n);case"MissingAPIError":throw new V.MissingAPI(n.message,n);default:throw new V.OpenFailed(n)}if(!this.active)throw new V.TransactionInactive;return Vr(this._completion._state===null),e=this.idbtrans=e||(this.db.core?this.db.core.transaction(this.storeNames,this.mode,{durability:this.chromeTransactionDurability}):r.transaction(this.storeNames,this.mode,{durability:this.chromeTransactionDurability})),e.onerror=se(i=>{en(i),this._reject(e.error)}),e.onabort=se(i=>{en(i),this.active&&this._reject(new V.Abort(e.error)),this.active=!1,this.on("abort").fire(i)}),e.oncomplete=se(()=>{this.active=!1,this._resolve(),"mutatedParts"in e&&xt.storagemutated.fire(e.mutatedParts)}),this}_promise(e,r,n){if(e==="readwrite"&&this.mode!=="readwrite")return ye(new V.ReadOnly("Transaction is readonly"));if(!this.active)return ye(new V.TransactionInactive);if(this._locked())return new M((o,s)=>{this._blockedFuncs.push([()=>{this._promise(e,r,n).then(o,s)},K])});if(n)return yt(()=>{var o=new M((s,a)=>{this._lock();let l=r(s,a,this);l&&l.then&&l.then(s,a)});return o.finally(()=>this._unlock()),o._lib=!0,o});var i=new M((o,s)=>{var a=r(o,s,this);a&&a.then&&a.then(o,s)});return i._lib=!0,i}_root(){return this.parent?this.parent._root():this}waitFor(e){var r=this._root();let n=M.resolve(e);if(r._waitingFor)r._waitingFor=r._waitingFor.then(()=>n);else{r._waitingFor=n,r._waitingQueue=[];var i=r.idbtrans.objectStore(r.storeNames[0]);(function s(){for(++r._spinCount;r._waitingQueue.length;)r._waitingQueue.shift()();r._waitingFor&&(i.get(-1/0).onsuccess=s)})()}var o=r._waitingFor;return new M((s,a)=>{n.then(l=>r._waitingQueue.push(se(s.bind(null,l))),l=>r._waitingQueue.push(se(a.bind(null,l)))).finally(()=>{r._waitingFor===o&&(r._waitingFor=null)})})}abort(){this.active&&(this.active=!1,this.idbtrans&&this.idbtrans.abort(),this._reject(new V.Abort))}table(e){let r=this._memoizedTables||(this._memoizedTables={});if(Ve(r,e))return r[e];let n=this.schema[e];if(!n)throw new V.NotFound("Table "+e+" not part of transaction");let i=new this.db.Table(e,n,this);return i.core=this.db.core.table(e),r[e]=i,i}};function Gf(t){return Zr(fa.prototype,function(r,n,i,o,s){this.db=t,this.mode=r,this.storeNames=n,this.schema=i,this.chromeTransactionDurability=o,this.idbtrans=null,this.on=Xr(this,"complete","error","abort"),this.parent=s||null,this.active=!0,this._reculock=0,this._blockedFuncs=[],this._resolve=null,this._reject=null,this._waitingFor=null,this._waitingQueue=null,this._spinCount=0,this._completion=new M((a,l)=>{this._resolve=a,this._reject=l}),this._completion.then(()=>{this.active=!1,this.on.complete.fire()},a=>{var l=this.active;return this.active=!1,this.on.error.fire(a),this.parent?this.parent._reject(a):l&&this.idbtrans&&this.idbtrans.abort(),ye(a)})})}function mo(t,e,r,n,i,o,s){return{name:t,keyPath:e,unique:r,multi:n,auto:i,compound:o,src:(r&&!s?"&":"")+(n?"*":"")+(i?"++":"")+da(e)}}function da(t){return typeof t=="string"?t:t?"["+[].join.call(t,"+")+"]":""}function ha(t,e,r){return{name:t,primKey:e,indexes:r,mappedClass:null,idxByName:ks(r,n=>[n.name,n])}}function Qf(t){return t.length===1?t[0]:t}var rn=t=>{try{return t.only([[]]),rn=()=>[[]],[[]]}catch{return rn=()=>Ht,Ht}};function go(t){return t==null?()=>{}:typeof t=="string"?qf(t):e=>nt(e,t)}function qf(t){return t.split(".").length===1?r=>r[t]:r=>nt(r,t)}function pa(t){return[].slice.call(t)}var Yf=0;function nn(t){return t==null?":id":typeof t=="string"?t:`[${t.join("+")}]`}function Jf(t,e,r){function n(d,f){let c=pa(d.objectStoreNames);return{schema:{name:d.name,tables:c.map(y=>f.objectStore(y)).map(y=>{let{keyPath:w,autoIncrement:x}=y,b=Te(w),h=w==null,_={},p={name:y.name,primaryKey:{name:null,isPrimaryKey:!0,outbound:h,compound:b,keyPath:w,autoIncrement:x,unique:!0,extractKey:go(w)},indexes:pa(y.indexNames).map(m=>y.index(m)).map(m=>{let{name:v,unique:g,multiEntry:j,keyPath:C}=m,S=Te(C),E={name:v,compound:S,keyPath:C,unique:g,multiEntry:j,extractKey:go(C)};return _[nn(C)]=E,E}),getIndexByKeyPath:m=>_[nn(m)]};return _[":id"]=p.primaryKey,w!=null&&(_[nn(w)]=p.primaryKey),p})},hasGetAll:c.length>0&&"getAll"in f.objectStore(c[0])&&!(typeof navigator!="undefined"&&/Safari/.test(navigator.userAgent)&&!/(Chrome\/|Edge\/)/.test(navigator.userAgent)&&[].concat(navigator.userAgent.match(/Safari\/(\d*)/))[1]<604)}}function i(d){if(d.type===3)return null;if(d.type===4)throw new Error("Cannot convert never type to IDBKeyRange");let{lower:f,upper:c,lowerOpen:y,upperOpen:w}=d;return f===void 0?c===void 0?null:e.upperBound(c,!!w):c===void 0?e.lowerBound(f,!!y):e.bound(f,c,!!y,!!w)}function o(d){let f=d.name;function c({trans:x,type:b,keys:h,values:_,range:p}){return new Promise((m,v)=>{m=se(m);let g=x.objectStore(f),j=g.keyPath==null,C=b==="put"||b==="add";if(!C&&b!=="delete"&&b!=="deleteRange")throw new Error("Invalid operation type: "+b);let{length:S}=h||_||{length:1};if(h&&_&&h.length!==_.length)throw new Error("Given keys array must have same length as given values array.");if(S===0)return m({numFailures:0,failures:{},results:[],lastResult:void 0});let E,P=[],L=[],k=0,z=Q=>{++k,en(Q)};if(b==="deleteRange"){if(p.type===4)return m({numFailures:k,failures:L,results:[],lastResult:void 0});p.type===3?P.push(E=g.clear()):P.push(E=g.delete(i(p)))}else{let[Q,Z]=C?j?[_,h]:[_,null]:[h,null];if(C)for(let A=0;A{let Z=Q.target.result;P.forEach((A,F)=>A.error!=null&&(L[F]=A.error)),m({numFailures:k,failures:L,results:b==="delete"?h:P.map(A=>A.result),lastResult:Z})};E.onerror=Q=>{z(Q),J(Q)},E.onsuccess=J})}function y({trans:x,values:b,query:h,reverse:_,unique:p}){return new Promise((m,v)=>{m=se(m);let{index:g,range:j}=h,C=x.objectStore(f),S=g.isPrimaryKey?C:C.index(g.name),E=_?p?"prevunique":"prev":p?"nextunique":"next",P=b||!("openKeyCursor"in S)?S.openCursor(i(j),E):S.openKeyCursor(i(j),E);P.onerror=Xe(v),P.onsuccess=se(L=>{let k=P.result;if(!k){m(null);return}k.___id=++Yf,k.done=!1;let z=k.continue.bind(k),J=k.continuePrimaryKey;J&&(J=J.bind(k));let Q=k.advance.bind(k),Z=()=>{throw new Error("Cursor not started")},A=()=>{throw new Error("Cursor not stopped")};k.trans=x,k.stop=k.continue=k.continuePrimaryKey=k.advance=Z,k.fail=se(v),k.next=function(){let F=1;return this.start(()=>F--?this.continue():this.stop()).then(()=>this)},k.start=F=>{let D=new Promise((O,X)=>{O=se(O),P.onerror=Xe(X),k.fail=X,k.stop=le=>{k.stop=k.continue=k.continuePrimaryKey=k.advance=A,O(le)}}),N=()=>{if(P.result)try{F()}catch(O){k.fail(O)}else k.done=!0,k.start=()=>{throw new Error("Cursor behind last entry")},k.stop()};return P.onsuccess=se(O=>{P.onsuccess=N,N()}),k.continue=z,k.continuePrimaryKey=J,k.advance=Q,N(),D},m(k)},v)})}function w(x){return b=>new Promise((h,_)=>{h=se(h);let{trans:p,values:m,limit:v,query:g}=b,j=v===1/0?void 0:v,{index:C,range:S}=g,E=p.objectStore(f),P=C.isPrimaryKey?E:E.index(C.name),L=i(S);if(v===0)return h({result:[]});if(x){let k=m?P.getAll(L,j):P.getAllKeys(L,j);k.onsuccess=z=>h({result:z.target.result}),k.onerror=Xe(_)}else{let k=0,z=m||!("openKeyCursor"in P)?P.openCursor(L):P.openKeyCursor(L),J=[];z.onsuccess=Q=>{let Z=z.result;if(!Z)return h({result:J});if(J.push(m?Z.value:Z.primaryKey),++k===v)return h({result:J});Z.continue()},z.onerror=Xe(_)}})}return{name:f,schema:d,mutate:c,getMany({trans:x,keys:b}){return new Promise((h,_)=>{h=se(h);let p=x.objectStore(f),m=b.length,v=new Array(m),g=0,j=0,C,S=P=>{let L=P.target;(v[L._pos]=L.result)!=null,++j===g&&h(v)},E=Xe(_);for(let P=0;P{h=se(h);let m=x.objectStore(f).get(b);m.onsuccess=v=>h(v.target.result),m.onerror=Xe(_)})},query:w(a),openCursor:y,count({query:x,trans:b}){let{index:h,range:_}=x;return new Promise((p,m)=>{let v=b.objectStore(f),g=h.isPrimaryKey?v:v.index(h.name),j=i(_),C=j?g.count(j):g.count();C.onsuccess=se(S=>p(S.target.result)),C.onerror=Xe(m)})}}}let{schema:s,hasGetAll:a}=n(t,r),l=s.tables.map(d=>o(d)),u={};return l.forEach(d=>u[d.name]=d),{stack:"dbcore",transaction:t.transaction.bind(t),table(d){if(!u[d])throw new Error(`Table '${d}' not found`);return u[d]},MIN_KEY:-1/0,MAX_KEY:rn(e),schema:s}}function Xf(t,e){return e.reduce((r,{create:n})=>ue(ue({},r),n(r)),t)}function Zf(t,e,{IDBKeyRange:r,indexedDB:n},i){return{dbcore:Xf(Jf(e,r,i),t.dbcore)}}function yo({_novip:t},e){let r=e.db,n=Zf(t._middlewares,r,t._deps,e);t.core=n.dbcore,t.tables.forEach(i=>{let o=i.name;t.core.schema.tables.some(s=>s.name===o)&&(i.core=t.core.table(o),t[o]instanceof t.Table&&(t[o].core=i.core))})}function Wn({_novip:t},e,r,n){r.forEach(i=>{let o=n[i];e.forEach(s=>{let a=Ni(s,i);(!a||"value"in a&&a.value===void 0)&&(s===t.Transaction.prototype||s instanceof t.Transaction?rt(s,i,{get(){return this.table(i)},set(l){Ts(this,i,{value:l,writable:!0,configurable:!0,enumerable:!0})}}):s[i]=new t.Table(i,o))})})}function vo({_novip:t},e){e.forEach(r=>{for(let n in r)r[n]instanceof t.Table&&delete r[n]})}function ed(t,e){return t._cfg.version-e._cfg.version}function td(t,e,r,n){let i=t._dbSchema,o=t._createTransaction("readwrite",t._storeNames,i);o.create(r),o._completion.catch(n);let s=o._reject.bind(o),a=K.transless||K;yt(()=>{K.trans=o,K.transless=a,e===0?(he(i).forEach(l=>{_o(r,l,i[l].primKey,i[l].indexes)}),yo(t,r),M.follow(()=>t.on.populate.fire(o)).catch(s)):rd(t,e,o,r).catch(s)})}function rd({_novip:t},e,r,n){let i=[],o=t._versions,s=t._dbSchema=xo(t,t.idbdb,n),a=!1;o.filter(d=>d._cfg.version>=e).forEach(d=>{i.push(()=>{let f=s,c=d._cfg.dbschema;wo(t,f,n),wo(t,c,n),s=t._dbSchema=c;let y=ma(f,c);y.add.forEach(x=>{_o(n,x[0],x[1].primKey,x[1].indexes)}),y.change.forEach(x=>{if(x.recreate)throw new V.Upgrade("Not yet support for changing primary key");{let b=n.objectStore(x.name);x.add.forEach(h=>bo(b,h)),x.change.forEach(h=>{b.deleteIndex(h.name),bo(b,h)}),x.del.forEach(h=>b.deleteIndex(h))}});let w=d._cfg.contentUpgrade;if(w&&d._cfg.version>e){yo(t,n),r._memoizedTables={},a=!0;let x=Ps(c);y.del.forEach(p=>{x[p]=f[p]}),vo(t,[t.Transaction.prototype]),Wn(t,[t.Transaction.prototype],he(x),x),r.schema=x;let b=Hi(w);b&&dr();let h,_=M.follow(()=>{if(h=w(r),h&&b){var p=ot.bind(null,null);h.then(p,p)}});return h&&typeof h.then=="function"?M.resolve(h):_.then(()=>h)}}),i.push(f=>{if(!a||!Pf){let c=d._cfg.dbschema;id(c,f)}vo(t,[t.Transaction.prototype]),Wn(t,[t.Transaction.prototype],t._storeNames,t._dbSchema),r.schema=t._dbSchema})});function u(){return i.length?M.resolve(i.shift()(r.idbtrans)).then(u):M.resolve()}return u().then(()=>{nd(s,n)})}function ma(t,e){let r={del:[],add:[],change:[]},n;for(n in t)e[n]||r.del.push(n);for(n in e){let i=t[n],o=e[n];if(!i)r.add.push([n,o]);else{let s={name:n,def:o,recreate:!1,del:[],add:[],change:[]};if(""+(i.primKey.keyPath||"")!=""+(o.primKey.keyPath||"")||i.primKey.auto!==o.primKey.auto&&!Nn)s.recreate=!0,r.change.push(s);else{let a=i.idxByName,l=o.idxByName,u;for(u in a)l[u]||s.del.push(u);for(u in l){let d=a[u],f=l[u];d?d.src!==f.src&&s.change.push(f):s.add.push(f)}(s.del.length>0||s.add.length>0||s.change.length>0)&&r.change.push(s)}}}return r}function _o(t,e,r,n){let i=t.db.createObjectStore(e,r.keyPath?{keyPath:r.keyPath,autoIncrement:r.auto}:{autoIncrement:r.auto});return n.forEach(o=>bo(i,o)),i}function nd(t,e){he(t).forEach(r=>{e.db.objectStoreNames.contains(r)||_o(e,r,t[r].primKey,t[r].indexes)})}function id(t,e){[].slice.call(e.db.objectStoreNames).forEach(r=>t[r]==null&&e.db.deleteObjectStore(r))}function bo(t,e){t.createIndex(e.name,e.keyPath,{unique:e.unique,multiEntry:e.multi})}function xo(t,e,r){let n={};return An(e.objectStoreNames,0).forEach(o=>{let s=r.objectStore(o),a=s.keyPath,l=mo(da(a),a||"",!1,!1,!!s.autoIncrement,a&&typeof a!="string",!0),u=[];for(let f=0;fi.add.length||i.change.length))}function wo({_novip:t},e,r){let n=r.db.objectStoreNames;for(let i=0;i{e=e.trim();let n=e.replace(/([&*]|\+\+)/g,""),i=/^\[/.test(n)?n.match(/^\[(.*)\]$/)[1].split("+"):n;return mo(n,i||null,/\&/.test(e),/\*/.test(e),/\+\+/.test(e),Te(i),r===0)})}var ga=class{_parseStoresSpec(e,r){he(e).forEach(n=>{if(e[n]!==null){var i=ad(e[n]),o=i.shift();if(o.multi)throw new V.Schema("Primary key cannot be multi-valued");i.forEach(s=>{if(s.auto)throw new V.Schema("Only primary key can be marked as autoIncrement (++)");if(!s.keyPath)throw new V.Schema("Index must have a name and cannot be an empty string")}),r[n]=ha(n,o,i)}})}stores(e){let r=this.db;this._cfg.storesSource=this._cfg.storesSource?Pe(this._cfg.storesSource,e):e;let n=r._versions,i={},o={};return n.forEach(s=>{Pe(i,s._cfg.storesSource),o=s._cfg.dbschema={},s._parseStoresSpec(i,o)}),r._dbSchema=o,vo(r,[r._allTables,r,r.Transaction.prototype]),Wn(r,[r._allTables,r,r.Transaction.prototype,this._cfg.tables],he(o),o),r._storeNames=he(o),this}upgrade(e){return this._cfg.contentUpgrade=Gi(this._cfg.contentUpgrade||ne,e),this}};function ld(t){return Zr(ga.prototype,function(r){this.db=t,this._cfg={version:r,storesSource:null,dbschema:{},tables:{},contentUpgrade:null}})}function jo(t,e){let r=t._dbNamesDB;return r||(r=t._dbNamesDB=new lt(Kn,{addons:[],indexedDB:t,IDBKeyRange:e}),r.version(1).stores({dbnames:"name"})),r.table("dbnames")}function Co(t){return t&&typeof t.databases=="function"}function ud({indexedDB:t,IDBKeyRange:e}){return Co(t)?Promise.resolve(t.databases()).then(r=>r.map(n=>n.name).filter(n=>n!==Kn)):jo(t,e).toCollection().primaryKeys()}function cd({indexedDB:t,IDBKeyRange:e},r){!Co(t)&&r!==Kn&&jo(t,e).put({name:r}).catch(ne)}function fd({indexedDB:t,IDBKeyRange:e},r){!Co(t)&&r!==Kn&&jo(t,e).delete(r).catch(ne)}function Ao(t){return yt(function(){return K.letThrough=!0,t()})}function dd(){var t=!navigator.userAgentData&&/Safari\//.test(navigator.userAgent)&&!/Chrom(e|ium)\//.test(navigator.userAgent);if(!t||!indexedDB.databases)return Promise.resolve();var e;return new Promise(function(r){var n=function(){return indexedDB.databases().finally(r)};e=setInterval(n,100),n()}).finally(function(){return clearInterval(e)})}function hd(t){let e=t._state,{indexedDB:r}=t._deps;if(e.isBeingOpened||t.idbdb)return e.dbReadyPromise.then(()=>e.dbOpenError?ye(e.dbOpenError):t);Je&&(e.openCanceller._stackHolder=Nt()),e.isBeingOpened=!0,e.dbOpenError=null,e.openComplete=!1;let n=e.openCanceller;function i(){if(e.openCanceller!==n)throw new V.DatabaseClosed("db.open() was cancelled")}let o=e.dbReadyResolve,s=null,a=!1;return M.race([n,(typeof navigator=="undefined"?M.resolve():dd()).then(()=>new M((l,u)=>{if(i(),!r)throw new V.MissingAPI;let d=t.name,f=e.autoSchema?r.open(d):r.open(d,Math.round(t.verno*10));if(!f)throw new V.MissingAPI;f.onerror=Xe(u),f.onblocked=se(t._fireOnBlocked),f.onupgradeneeded=se(c=>{if(s=f.transaction,e.autoSchema&&!t._options.allowEmptyDB){f.onerror=en,s.abort(),f.result.close();let w=r.deleteDatabase(d);w.onsuccess=w.onerror=se(()=>{u(new V.NoSuchDatabase(`Database ${d} doesnt exist`))})}else{s.onerror=Xe(u);var y=c.oldVersion>Math.pow(2,62)?0:c.oldVersion;a=y<1,t._novip.idbdb=f.result,td(t,y/10,s,u)}},u),f.onsuccess=se(()=>{s=null;let c=t._novip.idbdb=f.result,y=An(c.objectStoreNames);if(y.length>0)try{let w=c.transaction(Qf(y),"readonly");e.autoSchema?od(t,c,w):(wo(t,t._dbSchema,w),sd(t,w)||console.warn("Dexie SchemaDiff: Schema was extended without increasing the number passed to db.version(). Some queries may fail.")),yo(t,w)}catch{}Jr.push(t),c.onversionchange=se(w=>{e.vcFired=!0,t.on("versionchange").fire(w)}),c.onclose=se(w=>{t.on("close").fire(w)}),a&&cd(t._deps,d),l()},u)}))]).then(()=>(i(),e.onReadyBeingFired=[],M.resolve(Ao(()=>t.on.ready.fire(t.vip))).then(function l(){if(e.onReadyBeingFired.length>0){let u=e.onReadyBeingFired.reduce(Gi,ne);return e.onReadyBeingFired=[],M.resolve(Ao(()=>u(t.vip))).then(l)}}))).finally(()=>{e.onReadyBeingFired=null,e.isBeingOpened=!1}).then(()=>t).catch(l=>{e.dbOpenError=l;try{s&&s.abort()}catch{}return n===e.openCanceller&&t._close(),ye(l)}).finally(()=>{e.openComplete=!0,o()})}function So(t){var e=s=>t.next(s),r=s=>t.throw(s),n=o(e),i=o(r);function o(s){return a=>{var l=s(a),u=l.value;return l.done?u:!u||typeof u.then!="function"?Te(u)?Promise.all(u).then(n,i):n(u):u.then(n,i)}}return o(e)()}function pd(t,e,r){var n=arguments.length;if(n<2)throw new V.InvalidArgument("Too few arguments");for(var i=new Array(n-1);--n;)i[n-1]=arguments[n];r=i.pop();var o=Ms(i);return[t,o,r]}function ya(t,e,r,n,i){return M.resolve().then(()=>{let o=K.transless||K,s=t._createTransaction(e,r,t._dbSchema,n),a={trans:s,transless:o};if(n)s.idbtrans=n.idbtrans;else try{s.create(),t._state.PR1398_maxLoop=3}catch(f){return f.name===Ui.InvalidState&&t.isOpen()&&--t._state.PR1398_maxLoop>0?(console.warn("Dexie: Need to reopen db"),t._close(),t.open().then(()=>ya(t,e,r,null,i))):ye(f)}let l=Hi(i);l&&dr();let u,d=M.follow(()=>{if(u=i.call(s,s),u)if(l){var f=ot.bind(null,null);u.then(f,f)}else typeof u.next=="function"&&typeof u.throw=="function"&&(u=So(u))},a);return(u&&typeof u.then=="function"?M.resolve(u).then(f=>s.active?f:ye(new V.PrematureCommit("Transaction committed too early. See http://bit.ly/2kdckMn"))):d.then(()=>u)).then(f=>(n&&s._resolve(),s._completion.then(()=>f))).catch(f=>(s._reject(f),ye(f)))})}function Un(t,e,r){let n=Te(t)?t.slice():[t];for(let i=0;i0,p=Oe(ue({},w),{isVirtual:_,keyTail:y,keyLength:h,extractKey:go(c),unique:!_&&w.unique});if(b.push(p),p.isPrimaryKey||o.push(p),h>1){let m=h===2?c[0]:c.slice(0,h-1);s(m,y+1,w)}return b.sort((m,v)=>m.keyTail-v.keyTail),p}let a=s(n.primaryKey.keyPath,0,n.primaryKey);i[":id"]=[a];for(let c of n.indexes)s(c.keyPath,0,c);function l(c){let y=i[nn(c)];return y&&y[0]}function u(c,y){return{type:c.type===1?2:c.type,lower:Un(c.lower,c.lowerOpen?t.MAX_KEY:t.MIN_KEY,y),lowerOpen:!0,upper:Un(c.upper,c.upperOpen?t.MIN_KEY:t.MAX_KEY,y),upperOpen:!0}}function d(c){let y=c.query.index;return y.isVirtual?Oe(ue({},c),{query:{index:y,range:u(c.query.range,y.keyTail)}}):c}return Oe(ue({},r),{schema:Oe(ue({},n),{primaryKey:a,indexes:o,getIndexByKeyPath:l}),count(c){return r.count(d(c))},query(c){return r.query(d(c))},openCursor(c){let{keyTail:y,isVirtual:w,keyLength:x}=c.query.index;if(!w)return r.openCursor(c);function b(h){function _(m){m!=null?h.continue(Un(m,c.reverse?t.MAX_KEY:t.MIN_KEY,y)):c.unique?h.continue(h.key.slice(0,x).concat(c.reverse?t.MIN_KEY:t.MAX_KEY,y)):h.continue()}return Object.create(h,{continue:{value:_},continuePrimaryKey:{value(m,v){h.continuePrimaryKey(Un(m,t.MAX_KEY,y),v)}},primaryKey:{get(){return h.primaryKey}},key:{get(){let m=h.key;return x===1?m[0]:m.slice(0,x)}},value:{get(){return h.value}}})}return r.openCursor(d(c)).then(h=>h&&b(h))}})}})}var gd={stack:"dbcore",name:"VirtualIndexMiddleware",level:1,create:md};function Fo(t,e,r,n){return r=r||{},n=n||"",he(t).forEach(i=>{if(!Ve(e,i))r[n+i]=void 0;else{var o=t[i],s=e[i];if(typeof o=="object"&&typeof s=="object"&&o&&s){let a=zi(o),l=zi(s);a!==l?r[n+i]=e[i]:a==="Object"?Fo(o,s,r,n+i+"."):o!==s&&(r[n+i]=e[i])}else o!==s&&(r[n+i]=e[i])}}),he(e).forEach(i=>{Ve(t,i)||(r[n+i]=e[i])}),r}function yd(t,e){return e.type==="delete"?e.keys:e.keys||e.values.map(t.extractKey)}var vd={stack:"dbcore",name:"HooksMiddleware",level:2,create:t=>Oe(ue({},t),{table(e){let r=t.table(e),{primaryKey:n}=r.schema;return Oe(ue({},r),{mutate(o){let s=K.trans,{deleting:a,creating:l,updating:u}=s.table(e).hook;switch(o.type){case"add":if(l.fire===ne)break;return s._promise("readwrite",()=>d(o),!0);case"put":if(l.fire===ne&&u.fire===ne)break;return s._promise("readwrite",()=>d(o),!0);case"delete":if(a.fire===ne)break;return s._promise("readwrite",()=>d(o),!0);case"deleteRange":if(a.fire===ne)break;return s._promise("readwrite",()=>f(o),!0)}return r.mutate(o);function d(y){let w=K.trans,x=y.keys||yd(n,y);if(!x)throw new Error("Keys missing");return y=y.type==="add"||y.type==="put"?Oe(ue({},y),{keys:x}):ue({},y),y.type!=="delete"&&(y.values=[...y.values]),y.keys&&(y.keys=[...y.keys]),_d(r,y,x).then(b=>{let h=x.map((_,p)=>{let m=b[p],v={onerror:null,onsuccess:null};if(y.type==="delete")a.fire.call(v,_,m,w);else if(y.type==="add"||m===void 0){let g=l.fire.call(v,_,y.values[p],w);_==null&&g!=null&&(_=g,y.keys[p]=_,n.outbound||Qe(y.values[p],n.keyPath,_))}else{let g=Fo(m,y.values[p]),j=u.fire.call(v,g,_,m,w);if(j){let C=y.values[p];Object.keys(j).forEach(S=>{Ve(C,S)?C[S]=j[S]:Qe(C,S,j[S])})}}return v});return r.mutate(y).then(({failures:_,results:p,numFailures:m,lastResult:v})=>{for(let g=0;g(h.forEach(p=>p.onerror&&p.onerror(_)),Promise.reject(_)))})}function f(y){return c(y.trans,y.range,1e4)}function c(y,w,x){return r.query({trans:y,values:!1,query:{index:n,range:w},limit:x}).then(({result:b})=>d({type:"delete",keys:b,trans:y}).then(h=>h.numFailures>0?Promise.reject(h.failures[0]):b.length({table:e=>{let r=t.table(e);return Oe(ue({},r),{getMany:n=>{if(!n.cache)return r.getMany(n);let i=va(n.keys,n.trans._cache,n.cache==="clone");return i?M.resolve(i):r.getMany(n).then(o=>(n.trans._cache={keys:n.keys,values:n.cache==="clone"?Hr(o):o},o))},mutate:n=>(n.type!=="add"&&(n.trans._cache=null),r.mutate(n))})}})};function Eo(t){return!("from"in t)}var at=function(t,e){if(this)Pe(this,arguments.length?{d:1,from:t,to:arguments.length>1?e:t}:{d:0});else{let r=new at;return t&&"d"in t&&Pe(r,t),r}};ar(at.prototype,{add(t){return Gn(this,t),this},addKey(t){return on(this,t,t),this},addKeys(t){return t.forEach(e=>on(this,e,e)),this},[Vi](){return Do(this)}});function on(t,e,r){let n=Me(e,r);if(isNaN(n))return;if(n>0)throw RangeError();if(Eo(t))return Pe(t,{from:e,to:r,d:1});let i=t.l,o=t.r;if(Me(r,t.from)<0)return i?on(i,e,r):t.l={from:e,to:r,d:1,l:null,r:null},_a(t);if(Me(e,t.to)>0)return o?on(o,e,r):t.r={from:e,to:r,d:1,l:null,r:null},_a(t);Me(e,t.from)<0&&(t.from=e,t.l=null,t.d=o?o.d+1:1),Me(r,t.to)>0&&(t.to=r,t.r=null,t.d=t.l?t.l.d+1:1);let s=!t.r;i&&!t.l&&Gn(t,i),o&&s&&Gn(t,o)}function Gn(t,e){function r(n,{from:i,to:o,l:s,r:a}){on(n,i,o),s&&r(n,s),a&&r(n,a)}Eo(e)||r(t,e)}function xd(t,e){let r=Do(e),n=r.next();if(n.done)return!1;let i=n.value,o=Do(t),s=o.next(i.from),a=s.value;for(;!n.done&&!s.done;){if(Me(a.from,i.to)<=0&&Me(a.to,i.from)>=0)return!0;Me(i.from,a.from)<0?i=(n=r.next(a.from)).value:a=(s=o.next(i.from)).value}return!1}function Do(t){let e=Eo(t)?null:{s:0,n:t};return{next(r){let n=arguments.length>0;for(;e;)switch(e.s){case 0:if(e.s=1,n)for(;e.n.l&&Me(r,e.n.from)<0;)e={up:e,n:e.n.l,s:1};else for(;e.n.l;)e={up:e,n:e.n.l,s:1};case 1:if(e.s=2,!n||Me(r,e.n.to)<=0)return{value:e.n,done:!1};case 2:if(e.n.r){e.s=3,e={up:e,n:e.n.r,s:0};continue}case 3:e=e.up}return{done:!0}}}}function _a(t){var e,r;let n=(((e=t.r)===null||e===void 0?void 0:e.d)||0)-(((r=t.l)===null||r===void 0?void 0:r.d)||0),i=n>1?"r":n<-1?"l":"";if(i){let o=i==="r"?"l":"r",s=ue({},t),a=t[i];t.from=a.from,t.to=a.to,t[i]=a[i],s[i]=a[o],t[o]=s,s.d=ba(s)}t.d=ba(t)}function ba({r:t,l:e}){return(t?e?Math.max(t.d,e.d):t.d:e?e.d:0)+1}var wd={stack:"dbcore",level:0,create:t=>{let e=t.schema.name,r=new at(t.MIN_KEY,t.MAX_KEY);return Oe(ue({},t),{table:n=>{let i=t.table(n),{schema:o}=i,{primaryKey:s}=o,{extractKey:a,outbound:l}=s,u=Oe(ue({},i),{mutate:c=>{let y=c.trans,w=y.mutatedParts||(y.mutatedParts={}),x=g=>{let j=`idb://${e}/${n}/${g}`;return w[j]||(w[j]=new at)},b=x(""),h=x(":dels"),{type:_}=c,[p,m]=c.type==="deleteRange"?[c.range]:c.type==="delete"?[c.keys]:c.values.length<50?[[],c.values]:[],v=c.trans._cache;return i.mutate(c).then(g=>{if(Te(p)){_!=="delete"&&(p=g.results),b.addKeys(p);let j=va(p,v);!j&&_!=="add"&&h.addKeys(p),(j||m)&&jd(x,o,j,m)}else if(p){let j={from:p.lower,to:p.upper};h.add(j),b.add(j)}else b.add(r),h.add(r),o.indexes.forEach(j=>x(j.name).add(r));return g})}}),d=({query:{index:c,range:y}})=>{var w,x;return[c,new at((w=y.lower)!==null&&w!==void 0?w:t.MIN_KEY,(x=y.upper)!==null&&x!==void 0?x:t.MAX_KEY)]},f={get:c=>[s,new at(c.key)],getMany:c=>[s,new at().addKeys(c.keys)],count:d,query:d,openCursor:d};return he(f).forEach(c=>{u[c]=function(y){let{subscr:w}=K;if(w){let x=m=>{let v=`idb://${e}/${n}/${m}`;return w[v]||(w[v]=new at)},b=x(""),h=x(":dels"),[_,p]=f[c](y);if(x(_.name||"").add(p),!_.isPrimaryKey)if(c==="count")h.add(r);else{let m=c==="query"&&l&&y.values&&i.query(Oe(ue({},y),{values:!1}));return i[c].apply(this,arguments).then(v=>{if(c==="query"){if(l&&y.values)return m.then(({result:j})=>(b.addKeys(j),v));let g=y.values?v.result.map(a):v.result;y.values?b.addKeys(g):h.addKeys(g)}else if(c==="openCursor"){let g=v,j=y.values;return g&&Object.create(g,{key:{get(){return h.addKey(g.primaryKey),g.key}},primaryKey:{get(){let C=g.primaryKey;return h.addKey(C),C}},value:{get(){return j&&b.addKey(g.primaryKey),g.value}}})}return v})}}return i[c].apply(this,arguments)}}),u}})}};function jd(t,e,r,n){function i(o){let s=t(o.name||"");function a(u){return u!=null?o.extractKey(u):null}let l=u=>o.multiEntry&&Te(u)?u.forEach(d=>s.addKey(d)):s.addKey(u);(r||n).forEach((u,d)=>{let f=r&&a(r[d]),c=n&&a(n[d]);Me(f,c)!==0&&(f!=null&&l(f),c!=null&&l(c))})}e.indexes.forEach(i)}var lt=class{constructor(e,r){this._middlewares={},this.verno=0;let n=lt.dependencies;this._options=r=ue({addons:lt.addons,autoOpen:!0,indexedDB:n.indexedDB,IDBKeyRange:n.IDBKeyRange},r),this._deps={indexedDB:r.indexedDB,IDBKeyRange:r.IDBKeyRange};let{addons:i}=r;this._dbSchema={},this._versions=[],this._storeNames=[],this._allTables={},this.idbdb=null,this._novip=this;let o={dbOpenError:null,isBeingOpened:!1,onReadyBeingFired:null,openComplete:!1,dbReadyResolve:ne,dbReadyPromise:null,cancelOpen:ne,openCanceller:null,autoSchema:!0,PR1398_maxLoop:3};o.dbReadyPromise=new M(s=>{o.dbReadyResolve=s}),o.openCanceller=new M((s,a)=>{o.cancelOpen=a}),this._state=o,this.name=e,this.on=Xr(this,"populate","blocked","versionchange","close",{ready:[Gi,ne]}),this.on.ready.subscribe=Is(this.on.ready.subscribe,s=>(a,l)=>{lt.vip(()=>{let u=this._state;if(u.openComplete)u.dbOpenError||M.resolve().then(a),l&&s(a);else if(u.onReadyBeingFired)u.onReadyBeingFired.push(a),l&&s(a);else{s(a);let d=this;l||s(function f(){d.on.ready.unsubscribe(a),d.on.ready.unsubscribe(f)})}})}),this.Collection=Kf(this),this.Table=Rf(this),this.Transaction=Gf(this),this.Version=ld(this),this.WhereClause=Uf(this),this.on("versionchange",s=>{s.newVersion>0?console.warn(`Another connection wants to upgrade database '${this.name}'. Closing db now to resume the upgrade.`):console.warn(`Another connection wants to delete database '${this.name}'. Closing db now to resume the delete request.`),this.close()}),this.on("blocked",s=>{!s.newVersion||s.newVersionnew this.Transaction(s,a,l,this._options.chromeTransactionDurability,u),this._fireOnBlocked=s=>{this.on("blocked").fire(s),Jr.filter(a=>a.name===this.name&&a!==this&&!a._state.vcFired).map(a=>a.on("versionchange").fire(s))},this.use(gd),this.use(vd),this.use(wd),this.use(bd),this.vip=Object.create(this,{_vip:{value:!0}}),i.forEach(s=>s(this))}version(e){if(isNaN(e)||e<.1)throw new V.Type("Given version is not a positive number");if(e=Math.round(e*10)/10,this.idbdb||this._state.isBeingOpened)throw new V.Schema("Cannot add version when database is open");this.verno=Math.max(this.verno,e);let r=this._versions;var n=r.filter(i=>i._cfg.version===e)[0];return n||(n=new this.Version(e),r.push(n),r.sort(ed),n.stores({}),this._state.autoSchema=!1,n)}_whenReady(e){return this.idbdb&&(this._state.openComplete||K.letThrough||this._vip)?e():new M((r,n)=>{if(this._state.openComplete)return n(new V.DatabaseClosed(this._state.dbOpenError));if(!this._state.isBeingOpened){if(!this._options.autoOpen){n(new V.DatabaseClosed);return}this.open().catch(ne)}this._state.dbReadyPromise.then(r,n)}).then(e)}use({stack:e,create:r,level:n,name:i}){i&&this.unuse({stack:e,name:i});let o=this._middlewares[e]||(this._middlewares[e]=[]);return o.push({stack:e,create:r,level:n??10,name:i}),o.sort((s,a)=>s.level-a.level),this}unuse({stack:e,name:r,create:n}){return e&&this._middlewares[e]&&(this._middlewares[e]=this._middlewares[e].filter(i=>n?i.create!==n:r?i.name!==r:!1)),this}open(){return hd(this)}_close(){let e=this._state,r=Jr.indexOf(this);if(r>=0&&Jr.splice(r,1),this.idbdb){try{this.idbdb.close()}catch{}this._novip.idbdb=null}e.dbReadyPromise=new M(n=>{e.dbReadyResolve=n}),e.openCanceller=new M((n,i)=>{e.cancelOpen=i})}close(){this._close();let e=this._state;this._options.autoOpen=!1,e.dbOpenError=new V.DatabaseClosed,e.isBeingOpened&&e.cancelOpen(e.dbOpenError)}delete(){let e=arguments.length>0,r=this._state;return new M((n,i)=>{let o=()=>{this.close();var s=this._deps.indexedDB.deleteDatabase(this.name);s.onsuccess=se(()=>{fd(this._deps,this.name),n()}),s.onerror=Xe(i),s.onblocked=this._fireOnBlocked};if(e)throw new V.InvalidArgument("Arguments not allowed in db.delete()");r.isBeingOpened?r.dbReadyPromise.then(o):o()})}backendDB(){return this.idbdb}isOpen(){return this.idbdb!==null}hasBeenClosed(){let e=this._state.dbOpenError;return e&&e.name==="DatabaseClosed"}hasFailed(){return this._state.dbOpenError!==null}dynamicallyOpened(){return this._state.autoSchema}get tables(){return he(this._allTables).map(e=>this._allTables[e])}transaction(){let e=pd.apply(this,arguments);return this._transaction.apply(this,e)}_transaction(e,r,n){let i=K.trans;(!i||i.db!==this||e.indexOf("!")!==-1)&&(i=null);let o=e.indexOf("?")!==-1;e=e.replace("!","").replace("?","");let s,a;try{if(a=r.map(u=>{var d=u instanceof this.Table?u.name:u;if(typeof d!="string")throw new TypeError("Invalid table argument to Dexie.transaction(). Only Table or String are allowed");return d}),e=="r"||e===lo)s=lo;else if(e=="rw"||e==uo)s=uo;else throw new V.InvalidArgument("Invalid transaction mode: "+e);if(i){if(i.mode===lo&&s===uo)if(o)i=null;else throw new V.SubTransaction("Cannot enter a sub-transaction with READWRITE mode when parent transaction is READONLY");i&&a.forEach(u=>{if(i&&i.storeNames.indexOf(u)===-1)if(o)i=null;else throw new V.SubTransaction("Table "+u+" not included in parent transaction.")}),o&&i&&!i.active&&(i=null)}}catch(u){return i?i._promise(null,(d,f)=>{f(u)}):ye(u)}let l=ya.bind(null,this,s,a,i,n);return i?i._promise(s,l,"lock"):K.trans?hr(K.transless,()=>this._whenReady(l)):this._whenReady(l)}table(e){if(!Ve(this._allTables,e))throw new V.InvalidTable(`Table ${e} does not exist`);return this._allTables[e]}},Cd=typeof Symbol!="undefined"&&"observable"in Symbol?Symbol.observable:"@@observable",xa=class{constructor(e){this._subscribe=e}subscribe(e,r,n){return this._subscribe(!e||typeof e=="function"?{next:e,error:r,complete:n}:e)}[Cd](){return this}};function wa(t,e){return he(e).forEach(r=>{let n=t[r]||(t[r]=new at);Gn(n,e[r])}),t}function Ad(t){return new xa(e=>{let r=Hi(t);function n(y){r&&dr();let w=()=>yt(t,{subscr:y,trans:null}),x=K.trans?hr(K.transless,w):w();return r&&x.then(ot,ot),x}let i=!1,o={},s={},a={get closed(){return i},unsubscribe:()=>{i=!0,xt.storagemutated.unsubscribe(f)}};e.start&&e.start(a);let l=!1,u=!1;function d(){return he(s).some(y=>o[y]&&xd(o[y],s[y]))}let f=y=>{wa(o,y),d()&&c()},c=()=>{if(l||i)return;o={};let y={},w=n(y);u||(xt(tn,f),u=!0),l=!0,Promise.resolve(w).then(x=>{l=!1,!i&&(d()?c():(o={},s=y,e.next&&e.next(x)))},x=>{l=!1,e.error&&e.error(x),a.unsubscribe()})};return c(),a})}var To;try{To={indexedDB:ie.indexedDB||ie.mozIndexedDB||ie.webkitIndexedDB||ie.msIndexedDB,IDBKeyRange:ie.IDBKeyRange||ie.webkitIDBKeyRange}}catch{To={indexedDB:null,IDBKeyRange:null}}var Wt=lt;ar(Wt,Oe(ue({},Fn),{delete(t){return new Wt(t,{addons:[]}).delete()},exists(t){return new Wt(t,{addons:[]}).open().then(e=>(e.close(),!0)).catch("NoSuchDatabaseError",()=>!1)},getDatabaseNames(t){try{return ud(Wt.dependencies).then(t)}catch{return ye(new V.MissingAPI)}},defineClass(){function t(e){Pe(this,e)}return t},ignoreTransaction(t){return K.trans?hr(K.transless,t):t()},vip:Ao,async:function(t){return function(){try{var e=So(t.apply(this,arguments));return!e||typeof e.then!="function"?M.resolve(e):e}catch(r){return ye(r)}}},spawn:function(t,e,r){try{var n=So(t.apply(r,e||[]));return!n||typeof n.then!="function"?M.resolve(n):n}catch(i){return ye(i)}},currentTransaction:{get:()=>K.trans||null},waitFor:function(t,e){let r=M.resolve(typeof t=="function"?Wt.ignoreTransaction(t):t).timeout(e||6e4);return K.trans?K.trans.waitFor(r):r},Promise:M,debug:{get:()=>Je,set:t=>{Ls(t,t==="dexie"?()=>!0:ra)}},derive:lr,extend:Pe,props:ar,override:Is,Events:Xr,on:xt,liveQuery:Ad,extendObservabilitySet:wa,getByKeyPath:nt,setByKeyPath:Qe,delByKeyPath:lf,shallowClone:Ps,deepClone:Hr,getObjectDiff:Fo,cmp:Me,asap:Os,minKey:ao,addons:[],connections:Jr,errnames:Ui,dependencies:To,semVer:ea,version:ea.split(".").map(t=>parseInt(t)).reduce((t,e,r)=>t+e/Math.pow(10,r*2))}));Wt.maxKey=rn(Wt.dependencies.IDBKeyRange);typeof dispatchEvent!="undefined"&&typeof addEventListener!="undefined"&&(xt(tn,t=>{if(!ut){let e;Nn?(e=document.createEvent("CustomEvent"),e.initCustomEvent(bt,!0,!0,t)):e=new CustomEvent(bt,{detail:t}),ut=!0,dispatchEvent(e),ut=!1}}),addEventListener(bt,({detail:t})=>{ut||Qn(t)}));function Qn(t){let e=ut;try{ut=!0,xt.storagemutated.fire(t)}finally{ut=e}}var ut=!1;if(typeof BroadcastChannel!="undefined"){let t=new BroadcastChannel(bt);xt(tn,e=>{ut||t.postMessage(e)}),t.onmessage=e=>{e.data&&Qn(e.data)}}else if(typeof self!="undefined"&&typeof navigator!="undefined"){xt(tn,e=>{try{ut||(typeof localStorage!="undefined"&&localStorage.setItem(bt,JSON.stringify({trig:Math.random(),changedParts:e})),typeof self.clients=="object"&&[...self.clients.matchAll({includeUncontrolled:!0})].forEach(r=>r.postMessage({type:bt,changedParts:e})))}catch{}}),typeof addEventListener!="undefined"&&addEventListener("storage",e=>{if(e.key===bt){let r=JSON.parse(e.newValue);r&&Qn(r.changedParts)}});let t=self.document&&navigator.serviceWorker;t&&t.addEventListener("message",Sd)}function Sd({data:t}){t&&t.type===bt&&Qn(t.changedParts)}M.rejectionMapper=yf;Ls(Je,ra);var Ze=class extends lt{constructor(){super(Ze.dbName);this.version(Ze.dbVersion).stores({searchHistory:"++id",minisearch:"date"})}static async clearOldDatabases(){let e=(await indexedDB.databases()).filter(r=>r.name===Ze.dbName&&r.version!==Ze.dbVersion*10);if(e.length){console.log("Omnisearch - Those IndexedDb databases will be deleted:");for(let r of e)r.name&&indexedDB.deleteDatabase(r.name)}}static getInstance(){return Ze.instance||(Ze.instance=new Ze),Ze.instance}async clearCache(){await this.minisearch.clear()}},gr=Ze;gr.dbVersion=8,gr.dbName="omnisearch/cache/"+app.appId;var Be=gr.getInstance();var Ut=Cn(!1),sn='Needs a restart to fully take effect.',Io=class extends Y.PluginSettingTab{constructor(e){super(app,e);this.plugin=e,Ut.subscribe(async r=>{I.showExcerpt=r,await pe(this.plugin)})}display(){let{containerEl:e}=this;if(e.empty(),app.loadLocalStorage(an)=="1"){let f=e.createEl("span");f.innerHTML='\u26A0\uFE0F OMNISEARCH IS DISABLED \u26A0\uFE0F'}e.createEl("h2",{text:"Omnisearch"});let r=e.createDiv();r.innerHTML=` +`).slice(e).filter(Pl).map(n=>` +`+n).join("")):""}function Rr(t,e){this._e=or(),this.name=t,this.message=e}function Ml(t,e){return t+". Errors: "+Object.keys(e).map(r=>e[r].toString()).filter((r,n,i)=>i.indexOf(r)===n).join(` +`)}function xi(t,e,r,n){this._e=or(),this.failures=e,this.failedKeys=n,this.successCount=r,this.message=Ml(t,e)}function En(t,e){this._e=or(),this.name="BulkError",this.failures=Object.keys(e).map(r=>e[r]),this.failuresByPos=e,this.message=Ml(t,e)}function rg(t,e){if(!t||t instanceof Rr||t instanceof TypeError||t instanceof SyntaxError||!t.name||!Rl[t.name])return t;var r=new Rl[t.name](e||t.message,t);return"stack"in t&&mt(r,"stack",{get:function(){return this.inner.stack}}),r}function oe(){}function Fn(t){return t}function ng(t,e){return t==null||t===Fn?e:function(r){return e(t(r))}}function sr(t,e){return function(){t.apply(this,arguments),e.apply(this,arguments)}}function ig(t,e){return t===oe?e:function(){var r=t.apply(this,arguments);r!==void 0&&(arguments[0]=r);var n=this.onsuccess,i=this.onerror;this.onsuccess=null,this.onerror=null;var o=e.apply(this,arguments);return n&&(this.onsuccess=this.onsuccess?sr(n,this.onsuccess):n),i&&(this.onerror=this.onerror?sr(i,this.onerror):i),o!==void 0?o:r}}function og(t,e){return t===oe?e:function(){t.apply(this,arguments);var r=this.onsuccess,n=this.onerror;this.onsuccess=this.onerror=null,e.apply(this,arguments),r&&(this.onsuccess=this.onsuccess?sr(r,this.onsuccess):r),n&&(this.onerror=this.onerror?sr(n,this.onerror):n)}}function sg(t,e){return t===oe?e:function(r){var n=t.apply(this,arguments);Ne(r,n);var i=this.onsuccess,o=this.onerror;this.onsuccess=null,this.onerror=null;var s=e.apply(this,arguments);return i&&(this.onsuccess=this.onsuccess?sr(i,this.onsuccess):i),o&&(this.onerror=this.onerror?sr(o,this.onerror):o),n===void 0?s===void 0?void 0:s:Ne(n,s)}}function ag(t,e){return t===oe?e:function(){return e.apply(this,arguments)===!1?!1:t.apply(this,arguments)}}function xs(t,e){return t===oe?e:function(){var r=t.apply(this,arguments);if(r&&typeof r.then=="function"){for(var n=this,i=arguments.length,o=new Array(i);i--;)o[i]=arguments[i];return r.then(function(){return e.apply(n,o)})}return e.apply(this,arguments)}}function L(t){if(typeof this!="object")throw new TypeError("Promises must be constructed via new");this._listeners=[],this.onuncatched=oe,this._lib=!1;var e=this._PSD=z;if(lt&&(this._stackHolder=or(),this._prev=null,this._numPrev=0),typeof t!="function"){if(t!==Tn)throw new TypeError("Not a function");this._state=arguments[1],this._value=arguments[2],this._state===!1&&Ds(this,this._value);return}this._state=null,this._value=null,++e.ref,Kl(this,t)}function Bl(t,e,r,n,i){this.onFulfilled=typeof t=="function"?t:null,this.onRejected=typeof e=="function"?e:null,this.resolve=r,this.reject=n,this.psd=i}function Kl(t,e){try{e(r=>{if(t._state===null){if(r===t)throw new TypeError("A promise cannot be resolved with itself.");var n=t._lib&&In();r&&typeof r.then=="function"?Kl(t,(i,o)=>{r instanceof L?r._then(i,o):r.then(i,o)}):(t._state=!0,t._value=r,zl(t)),n&&Pn()}},Ds.bind(null,t))}catch(r){Ds(t,r)}}function Ds(t,e){if(Si.push(e),t._state===null){var r=t._lib&&In();e=Fs(e),t._state=!1,t._value=e,lt&&e!==null&&typeof e=="object"&&!e._promise&&Um(()=>{var n=ps(e,"stack");e._promise=t,mt(e,"stack",{get:()=>Cs?n&&(n.get?n.get.apply(e):n.value):t.stack})}),pg(t),zl(t),r&&Pn()}}function zl(t){var e=t._listeners;t._listeners=[];for(var r=0,n=e.length;r{--lr==0&&Is()},[]))}function Os(t,e){if(t._state===null){t._listeners.push(e);return}var r=t._state?e.onFulfilled:e.onRejected;if(r===null)return(t._state?e.resolve:e.reject)(t._value);++e.psd.ref,++lr,Dn(fg,[r,t,e])}function fg(t,e,r){try{Es=e;var n,i=e._value;e._state?n=t(i):(Si.length&&(Si=[]),n=t(i),Si.indexOf(i)===-1&&hg(e)),r.resolve(n)}catch(o){r.reject(o)}finally{Es=null,--lr==0&&Is(),--r.psd.ref||r.psd.finalize()}}function Hl(t,e,r){if(e.length===r)return e;var n="";if(t._state===!1){var i=t._value,o,s;i!=null?(o=i.name||"Error",s=i.message||i,n=_s(i,0)):(o=i,s=""),e.push(o+(s?": "+s:"")+n)}return lt&&(n=_s(t._stackHolder,2),n&&e.indexOf(n)===-1&&e.push(n),t._prev&&Hl(t._prev,e,r)),e}function Vl(t,e){var r=e?e._numPrev+1:0;r0;)for(t=On,On=[],r=t.length,e=0;e0);Ss=!0,Ci=!0}function Is(){var t=ar;ar=[],t.forEach(n=>{n._PSD.onunhandled.call(null,n._value,n)});for(var e=Ei.slice(0),r=e.length;r;)e[--r]()}function dg(t){function e(){t(),Ei.splice(Ei.indexOf(e),1)}Ei.push(e),++lr,Dn(()=>{--lr==0&&Is()},[])}function pg(t){ar.some(e=>e._value===t._value)||ar.push(t)}function hg(t){for(var e=ar.length;e;)if(ar[--e]._value===t._value){ar.splice(e,1);return}}function Ti(t){return new L(Tn,!1,t)}function ce(t,e){var r=z;return function(){var n=In(),i=z;try{return Pt(r,!0),t.apply(this,arguments)}catch(o){e&&e(o)}finally{Pt(i,!1),n&&Pn()}}}function It(t,e,r,n){var i=z,o=Object.create(i);o.parent=i,o.ref=0,o.global=!1,o.id=++gg;var s=Lr.env;o.env=As?{Promise:L,PromiseProp:{value:L,configurable:!0,writable:!0},all:L.all,race:L.race,allSettled:L.allSettled,any:L.any,resolve:L.resolve,reject:L.reject,nthen:Ul(s.nthen,o),gthen:Ul(s.gthen,o)}:{},e&&Ne(o,e),++i.ref,o.finalize=function(){--this.parent.ref||this.parent.finalize()};var a=Br(o,t,r,n);return o.ref===0&&o.finalize(),a}function Nr(){return Me.id||(Me.id=++mg),++Me.awaits,Me.echoes+=Ll,Me.id}function _t(){return Me.awaits?(--Me.awaits==0&&(Me.id=0),Me.echoes=Me.awaits*Ll,!0):!1}function Ii(t){return Me.echoes&&t&&t.constructor===Ai?(Nr(),t.then(e=>(_t(),e),e=>(_t(),we(e)))):t}function yg(t){++Oi,(!Me.echoes||--Me.echoes==0)&&(Me.echoes=Me.id=0),Di.push(z),Pt(t,!0)}function _g(){var t=Di[Di.length-1];Di.pop(),Pt(t,!1)}function Pt(t,e){var r=z;if((e?Me.echoes&&(!Ps++||t!==z):Ps&&(!--Ps||t!==z))&&Wl(e?yg.bind(null,t):_g),t!==z&&(z=t,r===Lr&&(Lr.env=$l()),As)){var n=Lr.env.Promise,i=t.env;ji.then=i.nthen,n.prototype.then=i.gthen,(r.global||t.global)&&(Object.defineProperty(ae,"Promise",i.PromiseProp),n.all=i.all,n.race=i.race,n.resolve=i.resolve,n.reject=i.reject,i.allSettled&&(n.allSettled=i.allSettled),i.any&&(n.any=i.any))}}function $l(){var t=ae.Promise;return As?{Promise:t,PromiseProp:Object.getOwnPropertyDescriptor(ae,"Promise"),all:t.all,race:t.race,allSettled:t.allSettled,any:t.any,resolve:t.resolve,reject:t.reject,nthen:ji.then,gthen:t.prototype.then}:{}}function Br(t,e,r,n,i){var o=z;try{return Pt(t,!0),e(r,n,i)}finally{Pt(o,!1)}}function Wl(t){Nl.call(ws,t)}function Pi(t,e,r,n){return typeof t!="function"?t:function(){var i=z;r&&Nr(),Pt(e,!0);try{return t.apply(this,arguments)}finally{Pt(i,!1),n&&Wl(_t)}}}function Ul(t,e){return function(r,n){return t.call(this,Pi(r,e),Pi(n,e))}}function Ql(t,e){var r;try{r=e.onuncatched(t)}catch{}if(r!==!1)try{var n,i={promise:e,reason:t};if(ae.document&&document.createEvent?(n=document.createEvent("Event"),n.initEvent(Gl,!0,!0),Ne(n,i)):ae.CustomEvent&&(n=new CustomEvent(Gl,{detail:i}),Ne(n,i)),n&&ae.dispatchEvent&&(dispatchEvent(n),!ae.PromiseRejectionEvent&&ae.onunhandledrejection))try{ae.onunhandledrejection(n)}catch{}lt&&n&&!n.defaultPrevented&&console.warn(`Unhandled rejection: ${t.stack||t}`)}catch{}}function ks(t,e,r,n){if(!t.idbdb||!t._state.openComplete&&!z.letThrough&&!t._vip){if(t._state.openComplete)return we(new V.DatabaseClosed(t._state.dbOpenError));if(!t._state.isBeingOpened){if(!t._options.autoOpen)return we(new V.DatabaseClosed);t.open().catch(oe)}return t._state.dbReadyPromise.then(()=>ks(t,e,r,n))}else{var i=t._createTransaction(e,r,t._dbSchema);try{i.create(),t._state.PR1398_maxLoop=3}catch(o){return o.name===bs.InvalidState&&t.isOpen()&&--t._state.PR1398_maxLoop>0?(console.warn("Dexie: Need to reopen db"),t._close(),t.open().then(()=>ks(t,e,r,n))):we(o)}return i._promise(e,(o,s)=>It(()=>(z.trans=i,n(o,s,i)))).then(o=>i._completion.then(()=>o))}}function cr(t,e){return t?e?function(){return t.apply(this,arguments)&&e.apply(this,arguments)}:t:e}function Ri(t){return typeof t=="string"&&!/\./.test(t)?e=>(e[t]===void 0&&t in e&&(e=Sn(e),delete e[t]),e):e=>e}function Mn(t){var e={},r=function(a,u){if(u){for(var l=arguments.length,f=new Array(l-1);--l;)f[l-1]=arguments[l];return e[a].subscribe.apply(null,f),t}else if(typeof a=="string")return e[a]};r.addEventType=o;for(var n=1,i=arguments.length;ncr(n(),e()):e,t.justLimit=r&&!n}function wg(t,e){t.isMatch=cr(t.isMatch,e)}function Li(t,e){if(t.isPrimKey)return e.primaryKey;let r=e.getIndexByKeyPath(t.index);if(!r)throw new V.Schema("KeyPath "+t.index+" on object store "+e.name+" is not indexed");return r}function eu(t,e,r){let n=Li(t,e.schema);return e.openCursor({trans:r,values:!t.keysOnly,reverse:t.dir==="prev",unique:!!t.unique,query:{index:n,range:t.range}})}function Ni(t,e,r,n){let i=t.replayFilter?cr(t.filter,t.replayFilter()):t.filter;if(t.or){let o={},s=(a,u,l)=>{if(!i||i(u,l,c=>u.stop(c),c=>u.fail(c))){var f=u.primaryKey,p=""+f;p==="[object ArrayBuffer]"&&(p=""+new Uint8Array(f)),Ye(o,p)||(o[p]=!0,e(a,u,l))}};return Promise.all([t.or._iterate(s,r),tu(eu(t,n,r),t.algorithm,s,!t.keysOnly&&t.valueMapper)])}else return tu(eu(t,n,r),cr(t.algorithm,i),e,!t.keysOnly&&t.valueMapper)}function tu(t,e,r,n){var i=n?(s,a,u)=>r(n(s),a,u):r,o=ce(i);return t.then(s=>{if(s)return s.start(()=>{var a=()=>s.continue();(!e||e(s,u=>a=u,u=>{s.stop(u),a=oe},u=>{s.fail(u),a=oe}))&&o(s.value,s,u=>a=u),a()})})}function Be(t,e){try{let r=ru(t),n=ru(e);if(r!==n)return r==="Array"?1:n==="Array"?-1:r==="binary"?1:n==="binary"?-1:r==="string"?1:n==="string"?-1:r==="Date"?1:n!=="Date"?NaN:-1;switch(r){case"number":case"Date":case"string":return t>e?1:te?-1:t===e?0:1}function Je(t,e,r){var n=t instanceof zs?new t.Collection(t):t;return n._ctx.error=r?new r(e):new TypeError(e),n}function zr(t){return new t.Collection(t,()=>ou("")).limit(0)}function Fg(t){return t==="next"?e=>e.toUpperCase():e=>e.toLowerCase()}function Tg(t){return t==="next"?e=>e.toLowerCase():e=>e.toUpperCase()}function Dg(t,e,r,n,i,o){for(var s=Math.min(t.length,n.length),a=-1,u=0;u=0?t.substr(0,a)+e[a]+r.substr(a+1):null;i(t[u],l)<0&&(a=u)}return stypeof x=="string"))return Je(t,Yl);function c(x){i=Fg(x),o=Tg(x),s=x==="next"?Sg:Eg;var v=r.map(function(d){return{lower:o(d),upper:i(d)}}).sort(function(d,b){return s(d.lower,b.lower)});a=v.map(function(d){return d.upper}),u=v.map(function(d){return d.lower}),l=x,f=x==="next"?"":n}c("next");var h=new t.Collection(t,()=>kt(a[0],u[p-1]+n));h._ondirectionchange=function(x){c(x)};var w=0;return h._addAlgorithm(function(x,v,d){var b=x.key;if(typeof b!="string")return!1;var m=o(b);if(e(m,u,w))return!0;for(var g=null,y=w;y0)&&(g=_)}return v(g!==null?function(){x.continue(g+f)}:d),!1}),h}function kt(t,e,r,n){return{type:2,lower:t,upper:e,lowerOpen:r,upperOpen:n}}function ou(t){return{type:1,lower:t,upper:t}}function Og(t){return Rn(zs.prototype,function(r,n,i){this.db=t,this._ctx={table:r,index:n===":id"?null:n,or:i};let o=t._deps.indexedDB;if(!o)throw new V.MissingAPI;this._cmp=this._ascending=o.cmp.bind(o),this._descending=(s,a)=>o.cmp(a,s),this._max=(s,a)=>o.cmp(s,a)>0?s:a,this._min=(s,a)=>o.cmp(s,a)<0?s:a,this._IDBKeyRange=t._deps.IDBKeyRange})}function ut(t){return ce(function(e){return Ln(e),t(e.target.error),!1})}function Ln(t){t.stopPropagation&&t.stopPropagation(),t.preventDefault&&t.preventDefault()}function Ig(t){return Rn(su.prototype,function(r,n,i,o,s){this.db=t,this.mode=r,this.storeNames=n,this.schema=i,this.chromeTransactionDurability=o,this.idbtrans=null,this.on=Mn(this,"complete","error","abort"),this.parent=s||null,this.active=!0,this._reculock=0,this._blockedFuncs=[],this._resolve=null,this._reject=null,this._waitingFor=null,this._waitingQueue=null,this._spinCount=0,this._completion=new L((a,u)=>{this._resolve=a,this._reject=u}),this._completion.then(()=>{this.active=!1,this.on.complete.fire()},a=>{var u=this.active;return this.active=!1,this.on.error.fire(a),this.parent?this.parent._reject(a):u&&this.idbtrans&&this.idbtrans.abort(),we(a)})})}function Hs(t,e,r,n,i,o,s){return{name:t,keyPath:e,unique:r,multi:n,auto:i,compound:o,src:(r&&!s?"&":"")+(n?"*":"")+(i?"++":"")+au(e)}}function au(t){return typeof t=="string"?t:t?"["+[].join.call(t,"+")+"]":""}function lu(t,e,r){return{name:t,primKey:e,indexes:r,mappedClass:null,idxByName:Fl(r,n=>[n.name,n])}}function Pg(t){return t.length===1?t[0]:t}function Vs(t){return t==null?()=>{}:typeof t=="string"?kg(t):e=>gt(e,t)}function kg(t){return t.split(".").length===1?r=>r[t]:r=>gt(r,t)}function uu(t){return[].slice.call(t)}function Kn(t){return t==null?":id":typeof t=="string"?t:`[${t.join("+")}]`}function Rg(t,e,r){function n(f,p){let c=uu(f.objectStoreNames);return{schema:{name:f.name,tables:c.map(h=>p.objectStore(h)).map(h=>{let{keyPath:w,autoIncrement:x}=h,v=ke(w),d=w==null,b={},m={name:h.name,primaryKey:{name:null,isPrimaryKey:!0,outbound:d,compound:v,keyPath:w,autoIncrement:x,unique:!0,extractKey:Vs(w)},indexes:uu(h.indexNames).map(g=>h.index(g)).map(g=>{let{name:y,unique:_,multiEntry:A,keyPath:C}=g,F=ke(C),D={name:y,compound:F,keyPath:C,unique:_,multiEntry:A,extractKey:Vs(C)};return b[Kn(C)]=D,D}),getIndexByKeyPath:g=>b[Kn(g)]};return b[":id"]=m.primaryKey,w!=null&&(b[Kn(w)]=m.primaryKey),m})},hasGetAll:c.length>0&&"getAll"in p.objectStore(c[0])&&!(typeof navigator!="undefined"&&/Safari/.test(navigator.userAgent)&&!/(Chrome\/|Edge\/)/.test(navigator.userAgent)&&[].concat(navigator.userAgent.match(/Safari\/(\d*)/))[1]<604)}}function i(f){if(f.type===3)return null;if(f.type===4)throw new Error("Cannot convert never type to IDBKeyRange");let{lower:p,upper:c,lowerOpen:h,upperOpen:w}=f;return p===void 0?c===void 0?null:e.upperBound(c,!!w):c===void 0?e.lowerBound(p,!!h):e.bound(p,c,!!h,!!w)}function o(f){let p=f.name;function c({trans:x,type:v,keys:d,values:b,range:m}){return new Promise((g,y)=>{g=ce(g);let _=x.objectStore(p),A=_.keyPath==null,C=v==="put"||v==="add";if(!C&&v!=="delete"&&v!=="deleteRange")throw new Error("Invalid operation type: "+v);let{length:F}=d||b||{length:1};if(d&&b&&d.length!==b.length)throw new Error("Given keys array must have same length as given values array.");if(F===0)return g({numFailures:0,failures:{},results:[],lastResult:void 0});let D,P=[],N=[],k=0,H=J=>{++k,Ln(J)};if(v==="deleteRange"){if(m.type===4)return g({numFailures:k,failures:N,results:[],lastResult:void 0});m.type===3?P.push(D=_.clear()):P.push(D=_.delete(i(m)))}else{let[J,Y]=C?A?[b,d]:[b,null]:[d,null];if(C)for(let S=0;S{let Y=J.target.result;P.forEach((S,E)=>S.error!=null&&(N[E]=S.error)),g({numFailures:k,failures:N,results:v==="delete"?d:P.map(S=>S.result),lastResult:Y})};D.onerror=J=>{H(J),X(J)},D.onsuccess=X})}function h({trans:x,values:v,query:d,reverse:b,unique:m}){return new Promise((g,y)=>{g=ce(g);let{index:_,range:A}=d,C=x.objectStore(p),F=_.isPrimaryKey?C:C.index(_.name),D=b?m?"prevunique":"prev":m?"nextunique":"next",P=v||!("openKeyCursor"in F)?F.openCursor(i(A),D):F.openKeyCursor(i(A),D);P.onerror=ut(y),P.onsuccess=ce(N=>{let k=P.result;if(!k){g(null);return}k.___id=++Mg,k.done=!1;let H=k.continue.bind(k),X=k.continuePrimaryKey;X&&(X=X.bind(k));let J=k.advance.bind(k),Y=()=>{throw new Error("Cursor not started")},S=()=>{throw new Error("Cursor not stopped")};k.trans=x,k.stop=k.continue=k.continuePrimaryKey=k.advance=Y,k.fail=ce(y),k.next=function(){let E=1;return this.start(()=>E--?this.continue():this.stop()).then(()=>this)},k.start=E=>{let I=new Promise((Z,M)=>{Z=ce(Z),P.onerror=ut(M),k.fail=M,k.stop=ne=>{k.stop=k.continue=k.continuePrimaryKey=k.advance=S,Z(ne)}}),K=()=>{if(P.result)try{E()}catch(Z){k.fail(Z)}else k.done=!0,k.start=()=>{throw new Error("Cursor behind last entry")},k.stop()};return P.onsuccess=ce(Z=>{P.onsuccess=K,K()}),k.continue=H,k.continuePrimaryKey=X,k.advance=J,K(),I},g(k)},y)})}function w(x){return v=>new Promise((d,b)=>{d=ce(d);let{trans:m,values:g,limit:y,query:_}=v,A=y===1/0?void 0:y,{index:C,range:F}=_,D=m.objectStore(p),P=C.isPrimaryKey?D:D.index(C.name),N=i(F);if(y===0)return d({result:[]});if(x){let k=g?P.getAll(N,A):P.getAllKeys(N,A);k.onsuccess=H=>d({result:H.target.result}),k.onerror=ut(b)}else{let k=0,H=g||!("openKeyCursor"in P)?P.openCursor(N):P.openKeyCursor(N),X=[];H.onsuccess=J=>{let Y=H.result;if(!Y)return d({result:X});if(X.push(g?Y.value:Y.primaryKey),++k===y)return d({result:X});Y.continue()},H.onerror=ut(b)}})}return{name:p,schema:f,mutate:c,getMany({trans:x,keys:v}){return new Promise((d,b)=>{d=ce(d);let m=x.objectStore(p),g=v.length,y=new Array(g),_=0,A=0,C,F=P=>{let N=P.target;(y[N._pos]=N.result)!=null,++A===_&&d(y)},D=ut(b);for(let P=0;P{d=ce(d);let g=x.objectStore(p).get(v);g.onsuccess=y=>d(y.target.result),g.onerror=ut(b)})},query:w(a),openCursor:h,count({query:x,trans:v}){let{index:d,range:b}=x;return new Promise((m,g)=>{let y=v.objectStore(p),_=d.isPrimaryKey?y:y.index(d.name),A=i(b),C=A?_.count(A):_.count();C.onsuccess=ce(F=>m(F.target.result)),C.onerror=ut(g)})}}}let{schema:s,hasGetAll:a}=n(t,r),u=s.tables.map(f=>o(f)),l={};return u.forEach(f=>l[f.name]=f),{stack:"dbcore",transaction:t.transaction.bind(t),table(f){if(!l[f])throw new Error(`Table '${f}' not found`);return l[f]},MIN_KEY:-1/0,MAX_KEY:Bn(e),schema:s}}function Lg(t,e){return e.reduce((r,{create:n})=>he(he({},r),n(r)),t)}function Ng(t,e,{IDBKeyRange:r,indexedDB:n},i){return{dbcore:Lg(Rg(e,r,i),t.dbcore)}}function $s({_novip:t},e){let r=e.db,n=Ng(t._middlewares,r,t._deps,e);t.core=n.dbcore,t.tables.forEach(i=>{let o=i.name;t.core.schema.tables.some(s=>s.name===o)&&(i.core=t.core.table(o),t[o]instanceof t.Table&&(t[o].core=i.core))})}function Ki({_novip:t},e,r,n){r.forEach(i=>{let o=n[i];e.forEach(s=>{let a=ps(s,i);(!a||"value"in a&&a.value===void 0)&&(s===t.Transaction.prototype||s instanceof t.Transaction?mt(s,i,{get(){return this.table(i)},set(u){Cl(this,i,{value:u,writable:!0,configurable:!0,enumerable:!0})}}):s[i]=new t.Table(i,o))})})}function Ws({_novip:t},e){e.forEach(r=>{for(let n in r)r[n]instanceof t.Table&&delete r[n]})}function Bg(t,e){return t._cfg.version-e._cfg.version}function Kg(t,e,r,n){let i=t._dbSchema,o=t._createTransaction("readwrite",t._storeNames,i);o.create(r),o._completion.catch(n);let s=o._reject.bind(o),a=z.transless||z;It(()=>{z.trans=o,z.transless=a,e===0?(_e(i).forEach(u=>{Us(r,u,i[u].primKey,i[u].indexes)}),$s(t,r),L.follow(()=>t.on.populate.fire(o)).catch(s)):zg(t,e,o,r).catch(s)})}function zg({_novip:t},e,r,n){let i=[],o=t._versions,s=t._dbSchema=Qs(t,t.idbdb,n),a=!1;o.filter(f=>f._cfg.version>=e).forEach(f=>{i.push(()=>{let p=s,c=f._cfg.dbschema;qs(t,p,n),qs(t,c,n),s=t._dbSchema=c;let h=cu(p,c);h.add.forEach(x=>{Us(n,x[0],x[1].primKey,x[1].indexes)}),h.change.forEach(x=>{if(x.recreate)throw new V.Upgrade("Not yet support for changing primary key");{let v=n.objectStore(x.name);x.add.forEach(d=>Gs(v,d)),x.change.forEach(d=>{v.deleteIndex(d.name),Gs(v,d)}),x.del.forEach(d=>v.deleteIndex(d))}});let w=f._cfg.contentUpgrade;if(w&&f._cfg.version>e){$s(t,n),r._memoizedTables={},a=!0;let x=Tl(c);h.del.forEach(m=>{x[m]=p[m]}),Ws(t,[t.Transaction.prototype]),Ki(t,[t.Transaction.prototype],_e(x),x),r.schema=x;let v=ys(w);v&&Nr();let d,b=L.follow(()=>{if(d=w(r),d&&v){var m=_t.bind(null,null);d.then(m,m)}});return d&&typeof d.then=="function"?L.resolve(d):b.then(()=>d)}}),i.push(p=>{if(!a||!vg){let c=f._cfg.dbschema;Vg(c,p)}Ws(t,[t.Transaction.prototype]),Ki(t,[t.Transaction.prototype],t._storeNames,t._dbSchema),r.schema=t._dbSchema})});function l(){return i.length?L.resolve(i.shift()(r.idbtrans)).then(l):L.resolve()}return l().then(()=>{Hg(s,n)})}function cu(t,e){let r={del:[],add:[],change:[]},n;for(n in t)e[n]||r.del.push(n);for(n in e){let i=t[n],o=e[n];if(!i)r.add.push([n,o]);else{let s={name:n,def:o,recreate:!1,del:[],add:[],change:[]};if(""+(i.primKey.keyPath||"")!=""+(o.primKey.keyPath||"")||i.primKey.auto!==o.primKey.auto&&!ki)s.recreate=!0,r.change.push(s);else{let a=i.idxByName,u=o.idxByName,l;for(l in a)u[l]||s.del.push(l);for(l in u){let f=a[l],p=u[l];f?f.src!==p.src&&s.change.push(p):s.add.push(p)}(s.del.length>0||s.add.length>0||s.change.length>0)&&r.change.push(s)}}}return r}function Us(t,e,r,n){let i=t.db.createObjectStore(e,r.keyPath?{keyPath:r.keyPath,autoIncrement:r.auto}:{autoIncrement:r.auto});return n.forEach(o=>Gs(i,o)),i}function Hg(t,e){_e(t).forEach(r=>{e.db.objectStoreNames.contains(r)||Us(e,r,t[r].primKey,t[r].indexes)})}function Vg(t,e){[].slice.call(e.db.objectStoreNames).forEach(r=>t[r]==null&&e.db.deleteObjectStore(r))}function Gs(t,e){t.createIndex(e.name,e.keyPath,{unique:e.unique,multiEntry:e.multi})}function Qs(t,e,r){let n={};return bi(e.objectStoreNames,0).forEach(o=>{let s=r.objectStore(o),a=s.keyPath,u=Hs(au(a),a||"",!1,!1,!!s.autoIncrement,a&&typeof a!="string",!0),l=[];for(let p=0;pi.add.length||i.change.length))}function qs({_novip:t},e,r){let n=r.db.objectStoreNames;for(let i=0;i{e=e.trim();let n=e.replace(/([&*]|\+\+)/g,""),i=/^\[/.test(n)?n.match(/^\[(.*)\]$/)[1].split("+"):n;return Hs(n,i||null,/\&/.test(e),/\*/.test(e),/\+\+/.test(e),ke(i),r===0)})}function Gg(t){return Rn(fu.prototype,function(r){this.db=t,this._cfg={version:r,storesSource:null,dbschema:{},tables:{},contentUpgrade:null}})}function Ys(t,e){let r=t._dbNamesDB;return r||(r=t._dbNamesDB=new xt(Mi,{addons:[],indexedDB:t,IDBKeyRange:e}),r.version(1).stores({dbnames:"name"})),r.table("dbnames")}function Js(t){return t&&typeof t.databases=="function"}function Qg({indexedDB:t,IDBKeyRange:e}){return Js(t)?Promise.resolve(t.databases()).then(r=>r.map(n=>n.name).filter(n=>n!==Mi)):Ys(t,e).toCollection().primaryKeys()}function qg({indexedDB:t,IDBKeyRange:e},r){!Js(t)&&r!==Mi&&Ys(t,e).put({name:r}).catch(oe)}function Yg({indexedDB:t,IDBKeyRange:e},r){!Js(t)&&r!==Mi&&Ys(t,e).delete(r).catch(oe)}function Xs(t){return It(function(){return z.letThrough=!0,t()})}function Jg(){var t=!navigator.userAgentData&&/Safari\//.test(navigator.userAgent)&&!/Chrom(e|ium)\//.test(navigator.userAgent);if(!t||!indexedDB.databases)return Promise.resolve();var e;return new Promise(function(r){var n=function(){return indexedDB.databases().finally(r)};e=setInterval(n,100),n()}).finally(function(){return clearInterval(e)})}function Xg(t){let e=t._state,{indexedDB:r}=t._deps;if(e.isBeingOpened||t.idbdb)return e.dbReadyPromise.then(()=>e.dbOpenError?we(e.dbOpenError):t);lt&&(e.openCanceller._stackHolder=or()),e.isBeingOpened=!0,e.dbOpenError=null,e.openComplete=!1;let n=e.openCanceller;function i(){if(e.openCanceller!==n)throw new V.DatabaseClosed("db.open() was cancelled")}let o=e.dbReadyResolve,s=null,a=!1;return L.race([n,(typeof navigator=="undefined"?L.resolve():Jg()).then(()=>new L((u,l)=>{if(i(),!r)throw new V.MissingAPI;let f=t.name,p=e.autoSchema?r.open(f):r.open(f,Math.round(t.verno*10));if(!p)throw new V.MissingAPI;p.onerror=ut(l),p.onblocked=ce(t._fireOnBlocked),p.onupgradeneeded=ce(c=>{if(s=p.transaction,e.autoSchema&&!t._options.allowEmptyDB){p.onerror=Ln,s.abort(),p.result.close();let w=r.deleteDatabase(f);w.onsuccess=w.onerror=ce(()=>{l(new V.NoSuchDatabase(`Database ${f} doesnt exist`))})}else{s.onerror=ut(l);var h=c.oldVersion>Math.pow(2,62)?0:c.oldVersion;a=h<1,t._novip.idbdb=p.result,Kg(t,h/10,s,l)}},l),p.onsuccess=ce(()=>{s=null;let c=t._novip.idbdb=p.result,h=bi(c.objectStoreNames);if(h.length>0)try{let w=c.transaction(Pg(h),"readonly");e.autoSchema?$g(t,c,w):(qs(t,t._dbSchema,w),Wg(t,w)||console.warn("Dexie SchemaDiff: Schema was extended without increasing the number passed to db.version(). Some queries may fail.")),$s(t,w)}catch{}kn.push(t),c.onversionchange=ce(w=>{e.vcFired=!0,t.on("versionchange").fire(w)}),c.onclose=ce(w=>{t.on("close").fire(w)}),a&&qg(t._deps,f),u()},l)}))]).then(()=>(i(),e.onReadyBeingFired=[],L.resolve(Xs(()=>t.on.ready.fire(t.vip))).then(function u(){if(e.onReadyBeingFired.length>0){let l=e.onReadyBeingFired.reduce(xs,oe);return e.onReadyBeingFired=[],L.resolve(Xs(()=>l(t.vip))).then(u)}}))).finally(()=>{e.onReadyBeingFired=null,e.isBeingOpened=!1}).then(()=>t).catch(u=>{e.dbOpenError=u;try{s&&s.abort()}catch{}return n===e.openCanceller&&t._close(),we(u)}).finally(()=>{e.openComplete=!0,o()})}function Zs(t){var e=s=>t.next(s),r=s=>t.throw(s),n=o(e),i=o(r);function o(s){return a=>{var u=s(a),l=u.value;return u.done?l:!l||typeof l.then!="function"?ke(l)?Promise.all(l).then(n,i):n(l):l.then(n,i)}}return o(e)()}function Zg(t,e,r){var n=arguments.length;if(n<2)throw new V.InvalidArgument("Too few arguments");for(var i=new Array(n-1);--n;)i[n-1]=arguments[n];r=i.pop();var o=Dl(i);return[t,o,r]}function du(t,e,r,n,i){return L.resolve().then(()=>{let o=z.transless||z,s=t._createTransaction(e,r,t._dbSchema,n),a={trans:s,transless:o};if(n)s.idbtrans=n.idbtrans;else try{s.create(),t._state.PR1398_maxLoop=3}catch(p){return p.name===bs.InvalidState&&t.isOpen()&&--t._state.PR1398_maxLoop>0?(console.warn("Dexie: Need to reopen db"),t._close(),t.open().then(()=>du(t,e,r,null,i))):we(p)}let u=ys(i);u&&Nr();let l,f=L.follow(()=>{if(l=i.call(s,s),l)if(u){var p=_t.bind(null,null);l.then(p,p)}else typeof l.next=="function"&&typeof l.throw=="function"&&(l=Zs(l))},a);return(l&&typeof l.then=="function"?L.resolve(l).then(p=>s.active?p:we(new V.PrematureCommit("Transaction committed too early. See http://bit.ly/2kdckMn"))):f.then(()=>l)).then(p=>(n&&s._resolve(),s._completion.then(()=>p))).catch(p=>(s._reject(p),we(p)))})}function zi(t,e,r){let n=ke(t)?t.slice():[t];for(let i=0;i0,m=Re(he({},w),{isVirtual:b,keyTail:h,keyLength:d,extractKey:Vs(c),unique:!b&&w.unique});if(v.push(m),m.isPrimaryKey||o.push(m),d>1){let g=d===2?c[0]:c.slice(0,d-1);s(g,h+1,w)}return v.sort((g,y)=>g.keyTail-y.keyTail),m}let a=s(n.primaryKey.keyPath,0,n.primaryKey);i[":id"]=[a];for(let c of n.indexes)s(c.keyPath,0,c);function u(c){let h=i[Kn(c)];return h&&h[0]}function l(c,h){return{type:c.type===1?2:c.type,lower:zi(c.lower,c.lowerOpen?t.MAX_KEY:t.MIN_KEY,h),lowerOpen:!0,upper:zi(c.upper,c.upperOpen?t.MIN_KEY:t.MAX_KEY,h),upperOpen:!0}}function f(c){let h=c.query.index;return h.isVirtual?Re(he({},c),{query:{index:h,range:l(c.query.range,h.keyTail)}}):c}return Re(he({},r),{schema:Re(he({},n),{primaryKey:a,indexes:o,getIndexByKeyPath:u}),count(c){return r.count(f(c))},query(c){return r.query(f(c))},openCursor(c){let{keyTail:h,isVirtual:w,keyLength:x}=c.query.index;if(!w)return r.openCursor(c);function v(d){function b(g){g!=null?d.continue(zi(g,c.reverse?t.MAX_KEY:t.MIN_KEY,h)):c.unique?d.continue(d.key.slice(0,x).concat(c.reverse?t.MIN_KEY:t.MAX_KEY,h)):d.continue()}return Object.create(d,{continue:{value:b},continuePrimaryKey:{value(g,y){d.continuePrimaryKey(zi(g,t.MAX_KEY,h),y)}},primaryKey:{get(){return d.primaryKey}},key:{get(){let g=d.key;return x===1?g[0]:g.slice(0,x)}},value:{get(){return d.value}}})}return r.openCursor(f(c)).then(d=>d&&v(d))}})}})}function ea(t,e,r,n){return r=r||{},n=n||"",_e(t).forEach(i=>{if(!Ye(e,i))r[n+i]=void 0;else{var o=t[i],s=e[i];if(typeof o=="object"&&typeof s=="object"&&o&&s){let a=ms(o),u=ms(s);a!==u?r[n+i]=e[i]:a==="Object"?ea(o,s,r,n+i+"."):o!==s&&(r[n+i]=e[i])}else o!==s&&(r[n+i]=e[i])}}),_e(e).forEach(i=>{Ye(t,i)||(r[n+i]=e[i])}),r}function ry(t,e){return e.type==="delete"?e.keys:e.keys||e.values.map(t.extractKey)}function iy(t,e,r){return e.type==="add"?Promise.resolve([]):t.getMany({trans:e.trans,keys:r,cache:"immutable"})}function pu(t,e,r){try{if(!e||e.keys.length0)throw RangeError();if(ta(t))return Ne(t,{from:e,to:r,d:1});let i=t.l,o=t.r;if(Be(r,t.from)<0)return i?zn(i,e,r):t.l={from:e,to:r,d:1,l:null,r:null},hu(t);if(Be(e,t.to)>0)return o?zn(o,e,r):t.r={from:e,to:r,d:1,l:null,r:null},hu(t);Be(e,t.from)<0&&(t.from=e,t.l=null,t.d=o?o.d+1:1),Be(r,t.to)>0&&(t.to=r,t.r=null,t.d=t.l?t.l.d+1:1);let s=!t.r;i&&!t.l&&Hi(t,i),o&&s&&Hi(t,o)}function Hi(t,e){function r(n,{from:i,to:o,l:s,r:a}){zn(n,i,o),s&&r(n,s),a&&r(n,a)}ta(e)||r(t,e)}function sy(t,e){let r=ra(e),n=r.next();if(n.done)return!1;let i=n.value,o=ra(t),s=o.next(i.from),a=s.value;for(;!n.done&&!s.done;){if(Be(a.from,i.to)<=0&&Be(a.to,i.from)>=0)return!0;Be(i.from,a.from)<0?i=(n=r.next(a.from)).value:a=(s=o.next(i.from)).value}return!1}function ra(t){let e=ta(t)?null:{s:0,n:t};return{next(r){let n=arguments.length>0;for(;e;)switch(e.s){case 0:if(e.s=1,n)for(;e.n.l&&Be(r,e.n.from)<0;)e={up:e,n:e.n.l,s:1};else for(;e.n.l;)e={up:e,n:e.n.l,s:1};case 1:if(e.s=2,!n||Be(r,e.n.to)<=0)return{value:e.n,done:!1};case 2:if(e.n.r){e.s=3,e={up:e,n:e.n.r,s:0};continue}case 3:e=e.up}return{done:!0}}}}function hu(t){var e,r;let n=(((e=t.r)===null||e===void 0?void 0:e.d)||0)-(((r=t.l)===null||r===void 0?void 0:r.d)||0),i=n>1?"r":n<-1?"l":"";if(i){let o=i==="r"?"l":"r",s=he({},t),a=t[i];t.from=a.from,t.to=a.to,t[i]=a[i],s[i]=a[o],t[o]=s,s.d=mu(s)}t.d=mu(t)}function mu({r:t,l:e}){return(t?e?Math.max(t.d,e.d):t.d:e?e.d:0)+1}function ly(t,e,r,n){function i(o){let s=t(o.name||"");function a(l){return l!=null?o.extractKey(l):null}let u=l=>o.multiEntry&&ke(l)?l.forEach(f=>s.addKey(f)):s.addKey(l);(r||n).forEach((l,f)=>{let p=r&&a(r[f]),c=n&&a(n[f]);Be(p,c)!==0&&(p!=null&&u(p),c!=null&&u(c))})}e.indexes.forEach(i)}function yu(t,e){return _e(e).forEach(r=>{let n=t[r]||(t[r]=new bt);Hi(n,e[r])}),t}function cy(t){let e=!1,r,n=new gu(i=>{let o=ys(t);function s(v){o&&Nr();let d=()=>It(t,{subscr:v,trans:null}),b=z.trans?Br(z.transless,d):d();return o&&b.then(_t,_t),b}let a=!1,u={},l={},f={get closed(){return a},unsubscribe:()=>{a=!0,Rt.storagemutated.unsubscribe(w)}};i.start&&i.start(f);let p=!1,c=!1;function h(){return _e(l).some(v=>u[v]&&sy(u[v],l[v]))}let w=v=>{yu(u,v),h()&&x()},x=()=>{if(p||a)return;u={};let v={},d=s(v);c||(Rt(Nn,w),c=!0),p=!0,Promise.resolve(d).then(b=>{e=!0,r=b,p=!1,!a&&(h()?x():(u={},l=v,i.next&&i.next(b)))},b=>{p=!1,e=!1,i.error&&i.error(b),f.unsubscribe()})};return x(),f});return n.hasValue=()=>e,n.getValue=()=>r,n}function Vi(t){let e=wt;try{wt=!0,Rt.storagemutated.fire(t)}finally{wt=e}}function fy({data:t}){t&&t.type===Mt&&Vi(t.changedParts)}var ae,_e,ke,An,Vm,Cl,$m,Wm,Qm,Ol,qm,Ot,Ym,gs,Jm,Mr,ys,lt,Pl,Xm,Zm,kl,vs,eg,bs,tg,V,Rl,wi,Tn,lg,ug,Ll,ws,ji,js,Nl,Ai,As,Cs,cg,Dn,Ss,Ci,ar,Si,Es,Fs,Lr,z,On,lr,Ei,Ts,Me,mg,Di,Ps,Oi,gg,Gl,we,ql,ur,Ms,vt,Yl,kn,ki,vg,bg,Jl,Mi,Rs,Ls,Xl,Zl,iu,Ks,zs,Nn,Mt,Rt,su,Bn,Mg,fu,ty,ny,oy,bt,ay,xt,uy,gu,na,fr,wt,_u=j(()=>{ae=typeof globalThis!="undefined"?globalThis:typeof self!="undefined"?self:typeof window!="undefined"?window:global,_e=Object.keys,ke=Array.isArray;typeof Promise!="undefined"&&!ae.Promise&&(ae.Promise=Promise);An=Object.getPrototypeOf,Vm={}.hasOwnProperty;Cl=Object.defineProperty;$m=Object.getOwnPropertyDescriptor;Wm=[].slice;Qm=[].concat;Ol="Boolean,String,Date,RegExp,Blob,File,FileList,FileSystemFileHandle,ArrayBuffer,DataView,Uint8ClampedArray,ImageBitmap,ImageData,Map,Set,CryptoKey".split(",").concat(Dl([8,16,32,64].map(t=>["Int","Uint","Float"].map(e=>e+t+"Array")))).filter(t=>ae[t]),qm=Ol.map(t=>ae[t]);Fl(Ol,t=>[t,!0]);Ot=null;({toString:Ym}={});gs=typeof Symbol!="undefined"?Symbol.iterator:"@@iterator",Jm=typeof gs=="symbol"?function(t){var e;return t!=null&&(e=t[gs])&&e.apply(t)}:function(){return null},Mr={};ys=typeof Symbol!="undefined"?t=>t[Symbol.toStringTag]==="AsyncFunction":()=>!1,lt=typeof location!="undefined"&&/^(http|https):\/\/(localhost|127\.0\.0\.1)/.test(location.href);Pl=()=>!0,Xm=!new Error("").stack;Zm=["Modify","Bulk","OpenFailed","VersionChange","Schema","Upgrade","InvalidTable","MissingAPI","NoSuchDatabase","InvalidArgument","SubTransaction","Unsupported","Internal","DatabaseClosed","PrematureCommit","ForeignAwait"],kl=["Unknown","Constraint","Data","TransactionInactive","ReadOnly","Version","NotFound","InvalidState","InvalidAccess","Abort","Timeout","QuotaExceeded","Syntax","DataClone"],vs=Zm.concat(kl),eg={VersionChanged:"Database version changed by other database connection",DatabaseClosed:"Database has been closed",Abort:"Transaction aborted",TransactionInactive:"Transaction has already completed or failed",MissingAPI:"IndexedDB API missing. Please visit https://tinyurl.com/y2uuvskb"};kr(Rr).from(Error).extend({stack:{get:function(){return this._stack||(this._stack=this.name+": "+this.message+_s(this._e,2))}},toString:function(){return this.name+": "+this.message}});kr(xi).from(Rr);kr(En).from(Rr);bs=vs.reduce((t,e)=>(t[e]=e+"Error",t),{}),tg=Rr,V=vs.reduce((t,e)=>{var r=e+"Error";function n(i,o){this._e=or(),this.name=r,i?typeof i=="string"?(this.message=`${i}${o?` + `+o:""}`,this.inner=o||null):typeof i=="object"&&(this.message=`${i.name} ${i.message}`,this.inner=i):(this.message=eg[e]||r,this.inner=null)}return kr(n).from(tg),t[e]=n,t},{});V.Syntax=SyntaxError;V.Type=TypeError;V.Range=RangeError;Rl=kl.reduce((t,e)=>(t[e+"Error"]=V[e],t),{});wi=vs.reduce((t,e)=>(["Syntax","Type","Range"].indexOf(e)===-1&&(t[e+"Error"]=V[e]),t),{});wi.ModifyError=xi;wi.DexieError=Rr;wi.BulkError=En;Tn={},lg=100,ug=20,Ll=100,[ws,ji,js]=typeof Promise=="undefined"?[]:(()=>{let t=Promise.resolve();if(typeof crypto=="undefined"||!crypto.subtle)return[t,An(t),t];let e=crypto.subtle.digest("SHA-512",new Uint8Array([0]));return[e,An(e),t]})(),Nl=ji&&ji.then,Ai=ws&&ws.constructor,As=!!js,Cs=!1,cg=js?()=>{js.then(Fi)}:ae.setImmediate?setImmediate.bind(null,Fi):ae.MutationObserver?()=>{var t=document.createElement("div");new MutationObserver(()=>{Fi(),t=null}).observe(t,{attributes:!0}),t.setAttribute("i","1")}:()=>{setTimeout(Fi,0)},Dn=function(t,e){On.push([t,e]),Ci&&(cg(),Ci=!1)},Ss=!0,Ci=!0,ar=[],Si=[],Es=null,Fs=Fn,Lr={id:"global",global:!0,ref:0,unhandleds:[],onunhandled:Ql,pgp:!1,env:{},finalize:function(){this.unhandleds.forEach(t=>{try{Ql(t[0],t[1])}catch{}})}},z=Lr,On=[],lr=0,Ei=[];Ts={get:function(){var t=z,e=Oi;function r(n,i){var o=!t.global&&(t!==z||e!==Oi);let s=o&&!_t();var a=new L((u,l)=>{Os(this,new Bl(Pi(n,t,o,s),Pi(i,t,o,s),u,l,t))});return lt&&Vl(a,this),a}return r.prototype=Tn,r},set:function(t){mt(this,"then",t&&t.prototype===Tn?Ts:{get:function(){return t},set:Ts.set})}};Pr(L.prototype,{then:Ts,_then:function(t,e){Os(this,new Bl(null,null,t,e,z))},catch:function(t){if(arguments.length===1)return this.then(null,t);var e=arguments[0],r=arguments[1];return typeof e=="function"?this.then(null,n=>n instanceof e?r(n):Ti(n)):this.then(null,n=>n&&n.name===e?r(n):Ti(n))},finally:function(t){return this.then(e=>(t(),e),e=>(t(),Ti(e)))},stack:{get:function(){if(this._stack)return this._stack;try{Cs=!0;var t=Hl(this,[],ug),e=t.join(` +From previous: `);return this._state!==null&&(this._stack=e),e}finally{Cs=!1}}},timeout:function(t,e){return t<1/0?new L((r,n)=>{var i=setTimeout(()=>n(new V.Timeout(e)),t);this.then(r,n).finally(clearTimeout.bind(null,i))}):this}});typeof Symbol!="undefined"&&Symbol.toStringTag&&mt(L.prototype,Symbol.toStringTag,"Dexie.Promise");Lr.env=$l();Pr(L,{all:function(){var t=yt.apply(null,arguments).map(Ii);return new L(function(e,r){t.length===0&&e([]);var n=t.length;t.forEach((i,o)=>L.resolve(i).then(s=>{t[o]=s,--n||e(t)},r))})},resolve:t=>{if(t instanceof L)return t;if(t&&typeof t.then=="function")return new L((r,n)=>{t.then(r,n)});var e=new L(Tn,!0,t);return Vl(e,Es),e},reject:Ti,race:function(){var t=yt.apply(null,arguments).map(Ii);return new L((e,r)=>{t.map(n=>L.resolve(n).then(e,r))})},PSD:{get:()=>z,set:t=>z=t},totalEchoes:{get:()=>Oi},newPSD:It,usePSD:Br,scheduler:{get:()=>Dn,set:t=>{Dn=t}},rejectionMapper:{get:()=>Fs,set:t=>{Fs=t}},follow:(t,e)=>new L((r,n)=>It((i,o)=>{var s=z;s.unhandleds=[],s.onunhandled=o,s.finalize=sr(function(){dg(()=>{this.unhandleds.length===0?i():o(this.unhandleds[0])})},s.finalize),t()},e,r,n))});Ai&&(Ai.allSettled&&mt(L,"allSettled",function(){let t=yt.apply(null,arguments).map(Ii);return new L(e=>{t.length===0&&e([]);let r=t.length,n=new Array(r);t.forEach((i,o)=>L.resolve(i).then(s=>n[o]={status:"fulfilled",value:s},s=>n[o]={status:"rejected",reason:s}).then(()=>--r||e(n)))})}),Ai.any&&typeof AggregateError!="undefined"&&mt(L,"any",function(){let t=yt.apply(null,arguments).map(Ii);return new L((e,r)=>{t.length===0&&r(new AggregateError([]));let n=t.length,i=new Array(n);t.forEach((o,s)=>L.resolve(o).then(a=>e(a),a=>{i[s]=a,--n||r(new AggregateError(i))}))})}));Me={awaits:0,echoes:0,id:0},mg=0,Di=[],Ps=0,Oi=0,gg=0;(""+Nl).indexOf("[native code]")===-1&&(Nr=_t=oe);Gl="unhandledrejection";we=L.reject;ql="3.2.4",ur=String.fromCharCode(65535),Ms=-1/0,vt="Invalid key provided. Keys must be of type string, number, Date or Array.",Yl="String expected.",kn=[],ki=typeof navigator!="undefined"&&/(MSIE|Trident|Edge)/.test(navigator.userAgent),vg=ki,bg=ki,Jl=t=>!/(dexie\.js|dexie\.min\.js)/.test(t),Mi="__dbnames",Rs="readonly",Ls="readwrite";Xl={type:3,lower:-1/0,lowerOpen:!1,upper:[[]],upperOpen:!1};Zl=class{_trans(e,r,n){let i=this._tx||z.trans,o=this.name;function s(u,l,f){if(!f.schema[o])throw new V.NotFound("Table "+o+" not part of transaction");return r(f.idbtrans,f)}let a=In();try{return i&&i.db===this.db?i===z.trans?i._promise(e,s,n):It(()=>i._promise(e,s,n),{trans:i,transless:z.transless||z}):ks(this.db,e,[this.name],s)}finally{a&&Pn()}}get(e,r){return e&&e.constructor===Object?this.where(e).first(r):this._trans("readonly",n=>this.core.get({trans:n,key:e}).then(i=>this.hook.reading.fire(i))).then(r)}where(e){if(typeof e=="string")return new this.db.WhereClause(this,e);if(ke(e))return new this.db.WhereClause(this,`[${e.join("+")}]`);let r=_e(e);if(r.length===1)return this.where(r[0]).equals(e[r[0]]);let n=this.schema.indexes.concat(this.schema.primKey).filter(l=>l.compound&&r.every(f=>l.keyPath.indexOf(f)>=0)&&l.keyPath.every(f=>r.indexOf(f)>=0))[0];if(n&&this.db._maxKey!==ur)return this.where(n.name).equals(n.keyPath.map(l=>e[l]));!n&<&&console.warn(`The query ${JSON.stringify(e)} on ${this.name} would benefit of a compound index [${r.join("+")}]`);let{idxByName:i}=this.schema,o=this.db._deps.indexedDB;function s(l,f){try{return o.cmp(l,f)===0}catch{return!1}}let[a,u]=r.reduce(([l,f],p)=>{let c=i[p],h=e[p];return[l||c,l||!c?cr(f,c&&c.multi?w=>{let x=gt(w,p);return ke(x)&&x.some(v=>s(h,v))}:w=>s(h,gt(w,p))):f]},[null,null]);return a?this.where(a.name).equals(e[a.keyPath]).filter(u):n?this.filter(u):this.where(r).equals("")}filter(e){return this.toCollection().and(e)}count(e){return this.toCollection().count(e)}offset(e){return this.toCollection().offset(e)}limit(e){return this.toCollection().limit(e)}each(e){return this.toCollection().each(e)}toArray(e){return this.toCollection().toArray(e)}toCollection(){return new this.db.Collection(new this.db.WhereClause(this))}orderBy(e){return new this.db.Collection(new this.db.WhereClause(this,ke(e)?`[${e.join("+")}]`:e))}reverse(){return this.toCollection().reverse()}mapToClass(e){this.schema.mappedClass=e;let r=n=>{if(!n)return n;let i=Object.create(e.prototype);for(var o in n)if(Ye(n,o))try{i[o]=n[o]}catch{}return i};return this.schema.readHook&&this.hook.reading.unsubscribe(this.schema.readHook),this.schema.readHook=r,this.hook("reading",r),e}defineClass(){function e(r){Ne(this,r)}return this.mapToClass(e)}add(e,r){let{auto:n,keyPath:i}=this.schema.primKey,o=e;return i&&n&&(o=Ri(i)(e)),this._trans("readwrite",s=>this.core.mutate({trans:s,type:"add",keys:r!=null?[r]:null,values:[o]})).then(s=>s.numFailures?L.reject(s.failures[0]):s.lastResult).then(s=>{if(i)try{it(e,i,s)}catch{}return s})}update(e,r){if(typeof e=="object"&&!ke(e)){let n=gt(e,this.schema.primKey.keyPath);if(n===void 0)return we(new V.InvalidArgument("Given object does not contain its primary key"));try{typeof r!="function"?_e(r).forEach(i=>{it(e,i,r[i])}):r(e,{value:e,primKey:n})}catch{}return this.where(":id").equals(n).modify(r)}else return this.where(":id").equals(e).modify(r)}put(e,r){let{auto:n,keyPath:i}=this.schema.primKey,o=e;return i&&n&&(o=Ri(i)(e)),this._trans("readwrite",s=>this.core.mutate({trans:s,type:"put",values:[o],keys:r!=null?[r]:null})).then(s=>s.numFailures?L.reject(s.failures[0]):s.lastResult).then(s=>{if(i)try{it(e,i,s)}catch{}return s})}delete(e){return this._trans("readwrite",r=>this.core.mutate({trans:r,type:"delete",keys:[e]})).then(r=>r.numFailures?L.reject(r.failures[0]):void 0)}clear(){return this._trans("readwrite",e=>this.core.mutate({trans:e,type:"deleteRange",range:Xl})).then(e=>e.numFailures?L.reject(e.failures[0]):void 0)}bulkGet(e){return this._trans("readonly",r=>this.core.getMany({keys:e,trans:r}).then(n=>n.map(i=>this.hook.reading.fire(i))))}bulkAdd(e,r,n){let i=Array.isArray(r)?r:void 0;n=n||(i?void 0:r);let o=n?n.allKeys:void 0;return this._trans("readwrite",s=>{let{auto:a,keyPath:u}=this.schema.primKey;if(u&&i)throw new V.InvalidArgument("bulkAdd(): keys argument invalid on tables with inbound keys");if(i&&i.length!==e.length)throw new V.InvalidArgument("Arguments objects and keys must have the same length");let l=e.length,f=u&&a?e.map(Ri(u)):e;return this.core.mutate({trans:s,type:"add",keys:i,values:f,wantResults:o}).then(({numFailures:p,results:c,lastResult:h,failures:w})=>{let x=o?c:h;if(p===0)return x;throw new En(`${this.name}.bulkAdd(): ${p} of ${l} operations failed`,w)})})}bulkPut(e,r,n){let i=Array.isArray(r)?r:void 0;n=n||(i?void 0:r);let o=n?n.allKeys:void 0;return this._trans("readwrite",s=>{let{auto:a,keyPath:u}=this.schema.primKey;if(u&&i)throw new V.InvalidArgument("bulkPut(): keys argument invalid on tables with inbound keys");if(i&&i.length!==e.length)throw new V.InvalidArgument("Arguments objects and keys must have the same length");let l=e.length,f=u&&a?e.map(Ri(u)):e;return this.core.mutate({trans:s,type:"put",keys:i,values:f,wantResults:o}).then(({numFailures:p,results:c,lastResult:h,failures:w})=>{let x=o?c:h;if(p===0)return x;throw new En(`${this.name}.bulkPut(): ${p} of ${l} operations failed`,w)})})}bulkDelete(e){let r=e.length;return this._trans("readwrite",n=>this.core.mutate({trans:n,type:"delete",keys:e})).then(({numFailures:n,lastResult:i,failures:o})=>{if(n===0)return i;throw new En(`${this.name}.bulkDelete(): ${n} of ${r} operations failed`,o)})}};iu=class{_read(e,r){var n=this._ctx;return n.error?n.table._trans(null,we.bind(null,n.error)):n.table._trans("readonly",e).then(r)}_write(e){var r=this._ctx;return r.error?r.table._trans(null,we.bind(null,r.error)):r.table._trans("readwrite",e,"locked")}_addAlgorithm(e){var r=this._ctx;r.algorithm=cr(r.algorithm,e)}_iterate(e,r){return Ni(this._ctx,e,r,this._ctx.table.core)}clone(e){var r=Object.create(this.constructor.prototype),n=Object.create(this._ctx);return e&&Ne(n,e),r._ctx=n,r}raw(){return this._ctx.valueMapper=null,this}each(e){var r=this._ctx;return this._read(n=>Ni(r,e,n,r.table.core))}count(e){return this._read(r=>{let n=this._ctx,i=n.table.core;if(Kr(n,!0))return i.count({trans:r,query:{index:Li(n,i.schema),range:n.range}}).then(s=>Math.min(s,n.limit));var o=0;return Ni(n,()=>(++o,!1),r,i).then(()=>o)}).then(e)}sortBy(e,r){let n=e.split(".").reverse(),i=n[0],o=n.length-1;function s(l,f){return f?s(l[n[f]],f-1):l[i]}var a=this._ctx.dir==="next"?1:-1;function u(l,f){var p=s(l,o),c=s(f,o);return pc?a:0}return this.toArray(function(l){return l.sort(u)}).then(r)}toArray(e){return this._read(r=>{var n=this._ctx;if(n.dir==="next"&&Kr(n,!0)&&n.limit>0){let{valueMapper:i}=n,o=Li(n,n.table.core.schema);return n.table.core.query({trans:r,limit:n.limit,values:!0,query:{index:o,range:n.range}}).then(({result:s})=>i?s.map(i):s)}else{let i=[];return Ni(n,o=>i.push(o),r,n.table.core).then(()=>i)}},e)}offset(e){var r=this._ctx;return e<=0?this:(r.offset+=e,Kr(r)?Bs(r,()=>{var n=e;return(i,o)=>n===0?!0:n===1?(--n,!1):(o(()=>{i.advance(n),n=0}),!1)}):Bs(r,()=>{var n=e;return()=>--n<0}),this)}limit(e){return this._ctx.limit=Math.min(this._ctx.limit,e),Bs(this._ctx,()=>{var r=e;return function(n,i,o){return--r<=0&&i(o),r>=0}},!0),this}until(e,r){return Ns(this._ctx,function(n,i,o){return e(n.value)?(i(o),r):!0}),this}first(e){return this.limit(1).toArray(function(r){return r[0]}).then(e)}last(e){return this.reverse().first(e)}filter(e){return Ns(this._ctx,function(r){return e(r.value)}),wg(this._ctx,e),this}and(e){return this.filter(e)}or(e){return new this.db.WhereClause(this._ctx.table,e,this)}reverse(){return this._ctx.dir=this._ctx.dir==="prev"?"next":"prev",this._ondirectionchange&&this._ondirectionchange(this._ctx.dir),this}desc(){return this.reverse()}eachKey(e){var r=this._ctx;return r.keysOnly=!r.isMatch,this.each(function(n,i){e(i.key,i)})}eachUniqueKey(e){return this._ctx.unique="unique",this.eachKey(e)}eachPrimaryKey(e){var r=this._ctx;return r.keysOnly=!r.isMatch,this.each(function(n,i){e(i.primaryKey,i)})}keys(e){var r=this._ctx;r.keysOnly=!r.isMatch;var n=[];return this.each(function(i,o){n.push(o.key)}).then(function(){return n}).then(e)}primaryKeys(e){var r=this._ctx;if(r.dir==="next"&&Kr(r,!0)&&r.limit>0)return this._read(i=>{var o=Li(r,r.table.core.schema);return r.table.core.query({trans:i,values:!1,limit:r.limit,query:{index:o,range:r.range}})}).then(({result:i})=>i).then(e);r.keysOnly=!r.isMatch;var n=[];return this.each(function(i,o){n.push(o.primaryKey)}).then(function(){return n}).then(e)}uniqueKeys(e){return this._ctx.unique="unique",this.keys(e)}firstKey(e){return this.limit(1).keys(function(r){return r[0]}).then(e)}lastKey(e){return this.reverse().firstKey(e)}distinct(){var e=this._ctx,r=e.index&&e.table.schema.idxByName[e.index];if(!r||!r.multi)return this;var n={};return Ns(this._ctx,function(i){var o=i.primaryKey.toString(),s=Ye(n,o);return n[o]=!0,!s}),this}modify(e){var r=this._ctx;return this._write(n=>{var i;if(typeof e=="function")i=e;else{var o=_e(e),s=o.length;i=function(x){for(var v=!1,d=0;d{let{failures:d,numFailures:b}=v;c+=x-b;for(let m of _e(d))p.push(d[m])};return this.clone().primaryKeys().then(x=>{let v=d=>{let b=Math.min(f,x.length-d);return a.getMany({trans:n,keys:x.slice(d,d+b),cache:"immutable"}).then(m=>{let g=[],y=[],_=u?[]:null,A=[];for(let F=0;F0&&a.mutate({trans:n,type:"add",values:g}).then(F=>{for(let D in F.failures)A.splice(parseInt(D),1);w(g.length,F)})).then(()=>(y.length>0||C&&typeof e=="object")&&a.mutate({trans:n,type:"put",keys:_,values:y,criteria:C,changeSpec:typeof e!="function"&&e}).then(F=>w(y.length,F))).then(()=>(A.length>0||C&&e===Ks)&&a.mutate({trans:n,type:"delete",keys:A,criteria:C}).then(F=>w(A.length,F))).then(()=>x.length>d+b&&v(d+f))})};return v(0).then(()=>{if(p.length>0)throw new xi("Error modifying one or more objects",p,c,h);return x.length})})})}delete(){var e=this._ctx,r=e.range;return Kr(e)&&(e.isPrimKey&&!bg||r.type===3)?this._write(n=>{let{primaryKey:i}=e.table.core.schema,o=r;return e.table.core.count({trans:n,query:{index:i,range:o}}).then(s=>e.table.core.mutate({trans:n,type:"deleteRange",range:o}).then(({failures:a,lastResult:u,results:l,numFailures:f})=>{if(f)throw new xi("Could not delete some values",Object.keys(a).map(p=>a[p]),s-f);return s-f}))}):this.modify(Ks)}},Ks=(t,e)=>e.value=null;zs=class{get Collection(){return this._ctx.table.db.Collection}between(e,r,n,i){n=n!==!1,i=i===!0;try{return this._cmp(e,r)>0||this._cmp(e,r)===0&&(n||i)&&!(n&&i)?zr(this):new this.Collection(this,()=>kt(e,r,!n,!i))}catch{return Je(this,vt)}}equals(e){return e==null?Je(this,vt):new this.Collection(this,()=>ou(e))}above(e){return e==null?Je(this,vt):new this.Collection(this,()=>kt(e,void 0,!0))}aboveOrEqual(e){return e==null?Je(this,vt):new this.Collection(this,()=>kt(e,void 0,!1))}below(e){return e==null?Je(this,vt):new this.Collection(this,()=>kt(void 0,e,!1,!0))}belowOrEqual(e){return e==null?Je(this,vt):new this.Collection(this,()=>kt(void 0,e))}startsWith(e){return typeof e!="string"?Je(this,Yl):this.between(e,e+ur,!0,!0)}startsWithIgnoreCase(e){return e===""?this.startsWith(e):Bi(this,(r,n)=>r.indexOf(n[0])===0,[e],ur)}equalsIgnoreCase(e){return Bi(this,(r,n)=>r===n[0],[e],"")}anyOfIgnoreCase(){var e=yt.apply(Mr,arguments);return e.length===0?zr(this):Bi(this,(r,n)=>n.indexOf(r)!==-1,e,"")}startsWithAnyOfIgnoreCase(){var e=yt.apply(Mr,arguments);return e.length===0?zr(this):Bi(this,(r,n)=>n.some(i=>r.indexOf(i)===0),e,ur)}anyOf(){let e=yt.apply(Mr,arguments),r=this._cmp;try{e.sort(r)}catch{return Je(this,vt)}if(e.length===0)return zr(this);let n=new this.Collection(this,()=>kt(e[0],e[e.length-1]));n._ondirectionchange=o=>{r=o==="next"?this._ascending:this._descending,e.sort(r)};let i=0;return n._addAlgorithm((o,s,a)=>{let u=o.key;for(;r(u,e[i])>0;)if(++i,i===e.length)return s(a),!1;return r(u,e[i])===0?!0:(s(()=>{o.continue(e[i])}),!1)}),n}notEqual(e){return this.inAnyRange([[Ms,e],[e,this.db._maxKey]],{includeLowers:!1,includeUppers:!1})}noneOf(){let e=yt.apply(Mr,arguments);if(e.length===0)return new this.Collection(this);try{e.sort(this._ascending)}catch{return Je(this,vt)}let r=e.reduce((n,i)=>n?n.concat([[n[n.length-1][1],i]]):[[Ms,i]],null);return r.push([e[e.length-1],this.db._maxKey]),this.inAnyRange(r,{includeLowers:!1,includeUppers:!1})}inAnyRange(e,r){let n=this._cmp,i=this._ascending,o=this._descending,s=this._min,a=this._max;if(e.length===0)return zr(this);if(!e.every(g=>g[0]!==void 0&&g[1]!==void 0&&i(g[0],g[1])<=0))return Je(this,"First argument to inAnyRange() must be an Array of two-value Arrays [lower,upper] where upper must not be lower than lower",V.InvalidArgument);let u=!r||r.includeLowers!==!1,l=r&&r.includeUppers===!0;function f(g,y){let _=0,A=g.length;for(;_0){C[0]=s(C[0],y[0]),C[1]=a(C[1],y[1]);break}}return _===A&&g.push(y),g}let p=i;function c(g,y){return p(g[0],y[0])}let h;try{h=e.reduce(f,[]),h.sort(c)}catch{return Je(this,vt)}let w=0,x=l?g=>i(g,h[w][1])>0:g=>i(g,h[w][1])>=0,v=u?g=>o(g,h[w][0])>0:g=>o(g,h[w][0])>=0;function d(g){return!x(g)&&!v(g)}let b=x,m=new this.Collection(this,()=>kt(h[0][0],h[h.length-1][1],!u,!l));return m._ondirectionchange=g=>{g==="next"?(b=x,p=i):(b=v,p=o),h.sort(c)},m._addAlgorithm((g,y,_)=>{for(var A=g.key;b(A);)if(++w,w===h.length)return y(_),!1;return d(A)?!0:(this._cmp(A,h[w][1])===0||this._cmp(A,h[w][0])===0||y(()=>{p===i?g.continue(h[w][0]):g.continue(h[w][1])}),!1)}),m}startsWithAnyOf(){let e=yt.apply(Mr,arguments);return e.every(r=>typeof r=="string")?e.length===0?zr(this):this.inAnyRange(e.map(r=>[r,r+ur])):Je(this,"startsWithAnyOf() only works with strings")}};Nn="storagemutated",Mt="x-storagemutated-1",Rt=Mn(null,Nn),su=class{_lock(){return Cn(!z.global),++this._reculock,this._reculock===1&&!z.global&&(z.lockOwnerFor=this),this}_unlock(){if(Cn(!z.global),--this._reculock==0)for(z.global||(z.lockOwnerFor=null);this._blockedFuncs.length>0&&!this._locked();){var e=this._blockedFuncs.shift();try{Br(e[1],e[0])}catch{}}return this}_locked(){return this._reculock&&z.lockOwnerFor!==this}create(e){if(!this.mode)return this;let r=this.db.idbdb,n=this.db._state.dbOpenError;if(Cn(!this.idbtrans),!e&&!r)switch(n&&n.name){case"DatabaseClosedError":throw new V.DatabaseClosed(n);case"MissingAPIError":throw new V.MissingAPI(n.message,n);default:throw new V.OpenFailed(n)}if(!this.active)throw new V.TransactionInactive;return Cn(this._completion._state===null),e=this.idbtrans=e||(this.db.core?this.db.core.transaction(this.storeNames,this.mode,{durability:this.chromeTransactionDurability}):r.transaction(this.storeNames,this.mode,{durability:this.chromeTransactionDurability})),e.onerror=ce(i=>{Ln(i),this._reject(e.error)}),e.onabort=ce(i=>{Ln(i),this.active&&this._reject(new V.Abort(e.error)),this.active=!1,this.on("abort").fire(i)}),e.oncomplete=ce(()=>{this.active=!1,this._resolve(),"mutatedParts"in e&&Rt.storagemutated.fire(e.mutatedParts)}),this}_promise(e,r,n){if(e==="readwrite"&&this.mode!=="readwrite")return we(new V.ReadOnly("Transaction is readonly"));if(!this.active)return we(new V.TransactionInactive);if(this._locked())return new L((o,s)=>{this._blockedFuncs.push([()=>{this._promise(e,r,n).then(o,s)},z])});if(n)return It(()=>{var o=new L((s,a)=>{this._lock();let u=r(s,a,this);u&&u.then&&u.then(s,a)});return o.finally(()=>this._unlock()),o._lib=!0,o});var i=new L((o,s)=>{var a=r(o,s,this);a&&a.then&&a.then(o,s)});return i._lib=!0,i}_root(){return this.parent?this.parent._root():this}waitFor(e){var r=this._root();let n=L.resolve(e);if(r._waitingFor)r._waitingFor=r._waitingFor.then(()=>n);else{r._waitingFor=n,r._waitingQueue=[];var i=r.idbtrans.objectStore(r.storeNames[0]);(function s(){for(++r._spinCount;r._waitingQueue.length;)r._waitingQueue.shift()();r._waitingFor&&(i.get(-1/0).onsuccess=s)})()}var o=r._waitingFor;return new L((s,a)=>{n.then(u=>r._waitingQueue.push(ce(s.bind(null,u))),u=>r._waitingQueue.push(ce(a.bind(null,u)))).finally(()=>{r._waitingFor===o&&(r._waitingFor=null)})})}abort(){this.active&&(this.active=!1,this.idbtrans&&this.idbtrans.abort(),this._reject(new V.Abort))}table(e){let r=this._memoizedTables||(this._memoizedTables={});if(Ye(r,e))return r[e];let n=this.schema[e];if(!n)throw new V.NotFound("Table "+e+" not part of transaction");let i=new this.db.Table(e,n,this);return i.core=this.db.core.table(e),r[e]=i,i}};Bn=t=>{try{return t.only([[]]),Bn=()=>[[]],[[]]}catch{return Bn=()=>ur,ur}};Mg=0;fu=class{_parseStoresSpec(e,r){_e(e).forEach(n=>{if(e[n]!==null){var i=Ug(e[n]),o=i.shift();if(o.multi)throw new V.Schema("Primary key cannot be multi-valued");i.forEach(s=>{if(s.auto)throw new V.Schema("Only primary key can be marked as autoIncrement (++)");if(!s.keyPath)throw new V.Schema("Index must have a name and cannot be an empty string")}),r[n]=lu(n,o,i)}})}stores(e){let r=this.db;this._cfg.storesSource=this._cfg.storesSource?Ne(this._cfg.storesSource,e):e;let n=r._versions,i={},o={};return n.forEach(s=>{Ne(i,s._cfg.storesSource),o=s._cfg.dbschema={},s._parseStoresSpec(i,o)}),r._dbSchema=o,Ws(r,[r._allTables,r,r.Transaction.prototype]),Ki(r,[r._allTables,r,r.Transaction.prototype,this._cfg.tables],_e(o),o),r._storeNames=_e(o),this}upgrade(e){return this._cfg.contentUpgrade=xs(this._cfg.contentUpgrade||oe,e),this}};ty={stack:"dbcore",name:"VirtualIndexMiddleware",level:1,create:ey};ny={stack:"dbcore",name:"HooksMiddleware",level:2,create:t=>Re(he({},t),{table(e){let r=t.table(e),{primaryKey:n}=r.schema;return Re(he({},r),{mutate(o){let s=z.trans,{deleting:a,creating:u,updating:l}=s.table(e).hook;switch(o.type){case"add":if(u.fire===oe)break;return s._promise("readwrite",()=>f(o),!0);case"put":if(u.fire===oe&&l.fire===oe)break;return s._promise("readwrite",()=>f(o),!0);case"delete":if(a.fire===oe)break;return s._promise("readwrite",()=>f(o),!0);case"deleteRange":if(a.fire===oe)break;return s._promise("readwrite",()=>p(o),!0)}return r.mutate(o);function f(h){let w=z.trans,x=h.keys||ry(n,h);if(!x)throw new Error("Keys missing");return h=h.type==="add"||h.type==="put"?Re(he({},h),{keys:x}):he({},h),h.type!=="delete"&&(h.values=[...h.values]),h.keys&&(h.keys=[...h.keys]),iy(r,h,x).then(v=>{let d=x.map((b,m)=>{let g=v[m],y={onerror:null,onsuccess:null};if(h.type==="delete")a.fire.call(y,b,g,w);else if(h.type==="add"||g===void 0){let _=u.fire.call(y,b,h.values[m],w);b==null&&_!=null&&(b=_,h.keys[m]=b,n.outbound||it(h.values[m],n.keyPath,b))}else{let _=ea(g,h.values[m]),A=l.fire.call(y,_,b,g,w);if(A){let C=h.values[m];Object.keys(A).forEach(F=>{Ye(C,F)?C[F]=A[F]:it(C,F,A[F])})}}return y});return r.mutate(h).then(({failures:b,results:m,numFailures:g,lastResult:y})=>{for(let _=0;_(d.forEach(m=>m.onerror&&m.onerror(b)),Promise.reject(b)))})}function p(h){return c(h.trans,h.range,1e4)}function c(h,w,x){return r.query({trans:h,values:!1,query:{index:n,range:w},limit:x}).then(({result:v})=>f({type:"delete",keys:v,trans:h}).then(d=>d.numFailures>0?Promise.reject(d.failures[0]):v.length({table:e=>{let r=t.table(e);return Re(he({},r),{getMany:n=>{if(!n.cache)return r.getMany(n);let i=pu(n.keys,n.trans._cache,n.cache==="clone");return i?L.resolve(i):r.getMany(n).then(o=>(n.trans._cache={keys:n.keys,values:n.cache==="clone"?Sn(o):o},o))},mutate:n=>(n.type!=="add"&&(n.trans._cache=null),r.mutate(n))})}})};bt=function(t,e){if(this)Ne(this,arguments.length?{d:1,from:t,to:arguments.length>1?e:t}:{d:0});else{let r=new bt;return t&&"d"in t&&Ne(r,t),r}};Pr(bt.prototype,{add(t){return Hi(this,t),this},addKey(t){return zn(this,t,t),this},addKeys(t){return t.forEach(e=>zn(this,e,e)),this},[gs](){return ra(this)}});ay={stack:"dbcore",level:0,create:t=>{let e=t.schema.name,r=new bt(t.MIN_KEY,t.MAX_KEY);return Re(he({},t),{table:n=>{let i=t.table(n),{schema:o}=i,{primaryKey:s}=o,{extractKey:a,outbound:u}=s,l=Re(he({},i),{mutate:c=>{let h=c.trans,w=h.mutatedParts||(h.mutatedParts={}),x=_=>{let A=`idb://${e}/${n}/${_}`;return w[A]||(w[A]=new bt)},v=x(""),d=x(":dels"),{type:b}=c,[m,g]=c.type==="deleteRange"?[c.range]:c.type==="delete"?[c.keys]:c.values.length<50?[[],c.values]:[],y=c.trans._cache;return i.mutate(c).then(_=>{if(ke(m)){b!=="delete"&&(m=_.results),v.addKeys(m);let A=pu(m,y);!A&&b!=="add"&&d.addKeys(m),(A||g)&&ly(x,o,A,g)}else if(m){let A={from:m.lower,to:m.upper};d.add(A),v.add(A)}else v.add(r),d.add(r),o.indexes.forEach(A=>x(A.name).add(r));return _})}}),f=({query:{index:c,range:h}})=>{var w,x;return[c,new bt((w=h.lower)!==null&&w!==void 0?w:t.MIN_KEY,(x=h.upper)!==null&&x!==void 0?x:t.MAX_KEY)]},p={get:c=>[s,new bt(c.key)],getMany:c=>[s,new bt().addKeys(c.keys)],count:f,query:f,openCursor:f};return _e(p).forEach(c=>{l[c]=function(h){let{subscr:w}=z;if(w){let x=g=>{let y=`idb://${e}/${n}/${g}`;return w[y]||(w[y]=new bt)},v=x(""),d=x(":dels"),[b,m]=p[c](h);if(x(b.name||"").add(m),!b.isPrimaryKey)if(c==="count")d.add(r);else{let g=c==="query"&&u&&h.values&&i.query(Re(he({},h),{values:!1}));return i[c].apply(this,arguments).then(y=>{if(c==="query"){if(u&&h.values)return g.then(({result:A})=>(v.addKeys(A),y));let _=h.values?y.result.map(a):y.result;h.values?v.addKeys(_):d.addKeys(_)}else if(c==="openCursor"){let _=y,A=h.values;return _&&Object.create(_,{key:{get(){return d.addKey(_.primaryKey),_.key}},primaryKey:{get(){let C=_.primaryKey;return d.addKey(C),C}},value:{get(){return A&&v.addKey(_.primaryKey),_.value}}})}return y})}}return i[c].apply(this,arguments)}}),l}})}};xt=class{constructor(e,r){this._middlewares={},this.verno=0;let n=xt.dependencies;this._options=r=he({addons:xt.addons,autoOpen:!0,indexedDB:n.indexedDB,IDBKeyRange:n.IDBKeyRange},r),this._deps={indexedDB:r.indexedDB,IDBKeyRange:r.IDBKeyRange};let{addons:i}=r;this._dbSchema={},this._versions=[],this._storeNames=[],this._allTables={},this.idbdb=null,this._novip=this;let o={dbOpenError:null,isBeingOpened:!1,onReadyBeingFired:null,openComplete:!1,dbReadyResolve:oe,dbReadyPromise:null,cancelOpen:oe,openCanceller:null,autoSchema:!0,PR1398_maxLoop:3};o.dbReadyPromise=new L(s=>{o.dbReadyResolve=s}),o.openCanceller=new L((s,a)=>{o.cancelOpen=a}),this._state=o,this.name=e,this.on=Mn(this,"populate","blocked","versionchange","close",{ready:[xs,oe]}),this.on.ready.subscribe=Sl(this.on.ready.subscribe,s=>(a,u)=>{xt.vip(()=>{let l=this._state;if(l.openComplete)l.dbOpenError||L.resolve().then(a),u&&s(a);else if(l.onReadyBeingFired)l.onReadyBeingFired.push(a),u&&s(a);else{s(a);let f=this;u||s(function p(){f.on.ready.unsubscribe(a),f.on.ready.unsubscribe(p)})}})}),this.Collection=Cg(this),this.Table=xg(this),this.Transaction=Ig(this),this.Version=Gg(this),this.WhereClause=Og(this),this.on("versionchange",s=>{s.newVersion>0?console.warn(`Another connection wants to upgrade database '${this.name}'. Closing db now to resume the upgrade.`):console.warn(`Another connection wants to delete database '${this.name}'. Closing db now to resume the delete request.`),this.close()}),this.on("blocked",s=>{!s.newVersion||s.newVersionnew this.Transaction(s,a,u,this._options.chromeTransactionDurability,l),this._fireOnBlocked=s=>{this.on("blocked").fire(s),kn.filter(a=>a.name===this.name&&a!==this&&!a._state.vcFired).map(a=>a.on("versionchange").fire(s))},this.use(ty),this.use(ny),this.use(ay),this.use(oy),this.vip=Object.create(this,{_vip:{value:!0}}),i.forEach(s=>s(this))}version(e){if(isNaN(e)||e<.1)throw new V.Type("Given version is not a positive number");if(e=Math.round(e*10)/10,this.idbdb||this._state.isBeingOpened)throw new V.Schema("Cannot add version when database is open");this.verno=Math.max(this.verno,e);let r=this._versions;var n=r.filter(i=>i._cfg.version===e)[0];return n||(n=new this.Version(e),r.push(n),r.sort(Bg),n.stores({}),this._state.autoSchema=!1,n)}_whenReady(e){return this.idbdb&&(this._state.openComplete||z.letThrough||this._vip)?e():new L((r,n)=>{if(this._state.openComplete)return n(new V.DatabaseClosed(this._state.dbOpenError));if(!this._state.isBeingOpened){if(!this._options.autoOpen){n(new V.DatabaseClosed);return}this.open().catch(oe)}this._state.dbReadyPromise.then(r,n)}).then(e)}use({stack:e,create:r,level:n,name:i}){i&&this.unuse({stack:e,name:i});let o=this._middlewares[e]||(this._middlewares[e]=[]);return o.push({stack:e,create:r,level:n??10,name:i}),o.sort((s,a)=>s.level-a.level),this}unuse({stack:e,name:r,create:n}){return e&&this._middlewares[e]&&(this._middlewares[e]=this._middlewares[e].filter(i=>n?i.create!==n:r?i.name!==r:!1)),this}open(){return Xg(this)}_close(){let e=this._state,r=kn.indexOf(this);if(r>=0&&kn.splice(r,1),this.idbdb){try{this.idbdb.close()}catch{}this._novip.idbdb=null}e.dbReadyPromise=new L(n=>{e.dbReadyResolve=n}),e.openCanceller=new L((n,i)=>{e.cancelOpen=i})}close(){this._close();let e=this._state;this._options.autoOpen=!1,e.dbOpenError=new V.DatabaseClosed,e.isBeingOpened&&e.cancelOpen(e.dbOpenError)}delete(){let e=arguments.length>0,r=this._state;return new L((n,i)=>{let o=()=>{this.close();var s=this._deps.indexedDB.deleteDatabase(this.name);s.onsuccess=ce(()=>{Yg(this._deps,this.name),n()}),s.onerror=ut(i),s.onblocked=this._fireOnBlocked};if(e)throw new V.InvalidArgument("Arguments not allowed in db.delete()");r.isBeingOpened?r.dbReadyPromise.then(o):o()})}backendDB(){return this.idbdb}isOpen(){return this.idbdb!==null}hasBeenClosed(){let e=this._state.dbOpenError;return e&&e.name==="DatabaseClosed"}hasFailed(){return this._state.dbOpenError!==null}dynamicallyOpened(){return this._state.autoSchema}get tables(){return _e(this._allTables).map(e=>this._allTables[e])}transaction(){let e=Zg.apply(this,arguments);return this._transaction.apply(this,e)}_transaction(e,r,n){let i=z.trans;(!i||i.db!==this||e.indexOf("!")!==-1)&&(i=null);let o=e.indexOf("?")!==-1;e=e.replace("!","").replace("?","");let s,a;try{if(a=r.map(l=>{var f=l instanceof this.Table?l.name:l;if(typeof f!="string")throw new TypeError("Invalid table argument to Dexie.transaction(). Only Table or String are allowed");return f}),e=="r"||e===Rs)s=Rs;else if(e=="rw"||e==Ls)s=Ls;else throw new V.InvalidArgument("Invalid transaction mode: "+e);if(i){if(i.mode===Rs&&s===Ls)if(o)i=null;else throw new V.SubTransaction("Cannot enter a sub-transaction with READWRITE mode when parent transaction is READONLY");i&&a.forEach(l=>{if(i&&i.storeNames.indexOf(l)===-1)if(o)i=null;else throw new V.SubTransaction("Table "+l+" not included in parent transaction.")}),o&&i&&!i.active&&(i=null)}}catch(l){return i?i._promise(null,(f,p)=>{p(l)}):we(l)}let u=du.bind(null,this,s,a,i,n);return i?i._promise(s,u,"lock"):z.trans?Br(z.transless,()=>this._whenReady(u)):this._whenReady(u)}table(e){if(!Ye(this._allTables,e))throw new V.InvalidTable(`Table ${e} does not exist`);return this._allTables[e]}},uy=typeof Symbol!="undefined"&&"observable"in Symbol?Symbol.observable:"@@observable",gu=class{constructor(e){this._subscribe=e}subscribe(e,r,n){return this._subscribe(!e||typeof e=="function"?{next:e,error:r,complete:n}:e)}[uy](){return this}};try{na={indexedDB:ae.indexedDB||ae.mozIndexedDB||ae.webkitIndexedDB||ae.msIndexedDB,IDBKeyRange:ae.IDBKeyRange||ae.webkitIDBKeyRange}}catch{na={indexedDB:null,IDBKeyRange:null}}fr=xt;Pr(fr,Re(he({},wi),{delete(t){return new fr(t,{addons:[]}).delete()},exists(t){return new fr(t,{addons:[]}).open().then(e=>(e.close(),!0)).catch("NoSuchDatabaseError",()=>!1)},getDatabaseNames(t){try{return Qg(fr.dependencies).then(t)}catch{return we(new V.MissingAPI)}},defineClass(){function t(e){Ne(this,e)}return t},ignoreTransaction(t){return z.trans?Br(z.transless,t):t()},vip:Xs,async:function(t){return function(){try{var e=Zs(t.apply(this,arguments));return!e||typeof e.then!="function"?L.resolve(e):e}catch(r){return we(r)}}},spawn:function(t,e,r){try{var n=Zs(t.apply(r,e||[]));return!n||typeof n.then!="function"?L.resolve(n):n}catch(i){return we(i)}},currentTransaction:{get:()=>z.trans||null},waitFor:function(t,e){let r=L.resolve(typeof t=="function"?fr.ignoreTransaction(t):t).timeout(e||6e4);return z.trans?z.trans.waitFor(r):r},Promise:L,debug:{get:()=>lt,set:t=>{Il(t,t==="dexie"?()=>!0:Jl)}},derive:kr,extend:Ne,props:Pr,override:Sl,Events:Mn,on:Rt,liveQuery:cy,extendObservabilitySet:yu,getByKeyPath:gt,setByKeyPath:it,delByKeyPath:Gm,shallowClone:Tl,deepClone:Sn,getObjectDiff:ea,cmp:Be,asap:El,minKey:Ms,addons:[],connections:kn,errnames:bs,dependencies:na,semVer:ql,version:ql.split(".").map(t=>parseInt(t)).reduce((t,e,r)=>t+e/Math.pow(10,r*2))}));fr.maxKey=Bn(fr.dependencies.IDBKeyRange);typeof dispatchEvent!="undefined"&&typeof addEventListener!="undefined"&&(Rt(Nn,t=>{if(!wt){let e;ki?(e=document.createEvent("CustomEvent"),e.initCustomEvent(Mt,!0,!0,t)):e=new CustomEvent(Mt,{detail:t}),wt=!0,dispatchEvent(e),wt=!1}}),addEventListener(Mt,({detail:t})=>{wt||Vi(t)}));wt=!1;if(typeof BroadcastChannel!="undefined"){let t=new BroadcastChannel(Mt);typeof t.unref=="function"&&t.unref(),Rt(Nn,e=>{wt||t.postMessage(e)}),t.onmessage=e=>{e.data&&Vi(e.data)}}else if(typeof self!="undefined"&&typeof navigator!="undefined"){Rt(Nn,e=>{try{wt||(typeof localStorage!="undefined"&&localStorage.setItem(Mt,JSON.stringify({trig:Math.random(),changedParts:e})),typeof self.clients=="object"&&[...self.clients.matchAll({includeUncontrolled:!0})].forEach(r=>r.postMessage({type:Mt,changedParts:e})))}catch{}}),typeof addEventListener!="undefined"&&addEventListener("storage",e=>{if(e.key===Mt){let r=JSON.parse(e.newValue);r&&Vi(r.changedParts)}});let t=self.document&&navigator.serviceWorker;t&&t.addEventListener("message",fy)}L.rejectionMapper=rg;Il(lt,Jl)});var vu,ct,Hr,Ee,$i=j(()=>{_u();vu=ge(require("obsidian")),ct=class extends xt{constructor(){super(ct.dbName);this.version(ct.dbVersion).stores({searchHistory:"++id",minisearch:"date"})}static async clearOldDatabases(){let e=(await indexedDB.databases()).filter(r=>r.name===ct.dbName&&r.version!==ct.dbVersion*10);if(e.length){console.log("Omnisearch - Those IndexedDb databases will be deleted:");for(let r of e)r.name&&indexedDB.deleteDatabase(r.name)}}static getInstance(){return ct.instance||(ct.instance=new ct),ct.instance}async clearCache(){new vu.Notice("Omnisearch - Cache cleared. Please restart Obsidian."),await this.minisearch.clear()}},Hr=ct;Hr.dbVersion=8,Hr.dbName="omnisearch/cache/"+app.appId;Ee=Hr.getInstance()});async function bu(t){T=Object.assign({},Lt,await t.loadData()),dr.set(T.showExcerpt)}async function le(t){await t.saveData(T)}function oa(){return app.loadLocalStorage(Hn)==="1"}function xu(){return T.unsupportedFilesIndexing==="yes"||T.unsupportedFilesIndexing==="default"&&!!app.vault.getConfig("showUnsupportedFiles")}var $,dr,Wi,ia,Lt,T,Ze=j(()=>{$=ge(require("obsidian"));ds();$i();ot();dr=vi(!1),Wi='Needs a restart to fully take effect.',ia=class extends $.PluginSettingTab{constructor(e){super(app,e);this.plugin=e,dr.subscribe(async r=>{T.showExcerpt=r,await le(this.plugin)})}display(){let{containerEl:e}=this;if(e.empty(),app.loadLocalStorage(Hn)=="1"){let c=e.createEl("span");c.innerHTML='\u26A0\uFE0F OMNISEARCH IS DISABLED \u26A0\uFE0F'}e.createEl("h2",{text:"Omnisearch"});let r=e.createDiv();r.innerHTML=` Buy Me a Coffee at ko-fi.com - `,new Y.Setting(e).setName("Indexing").setHeading();let n=new DocumentFragment;et()?n.createSpan({},f=>{f.innerHTML=`\u{1F44D} You have installed Text Extractor, Omnisearch will use it to index PDFs and images. -
Text extraction only works on desktop, but the cache can be synchronized with your mobile device.`}):n.createSpan({},f=>{f.innerHTML='\u26A0\uFE0F Omnisearch requires Text Extractor to index PDFs and images.'}),new Y.Setting(e).setDesc(n);let i=new DocumentFragment;i.createSpan({},f=>{f.innerHTML="Include PDFs in search results"}),new Y.Setting(e).setName(`PDFs Indexing ${et()?"":"\u26A0\uFE0F Disabled"}`).setDesc(i).addToggle(f=>f.setValue(I.PDFIndexing).onChange(async c=>{I.PDFIndexing=c,await pe(this.plugin)})).setDisabled(!et());let o=new DocumentFragment;o.createSpan({},f=>{f.innerHTML="Include images in search results"}),new Y.Setting(e).setName(`Images Indexing ${et()?"":"\u26A0\uFE0F Disabled"}`).setDesc(o).addToggle(f=>f.setValue(I.imagesIndexing).onChange(async c=>{I.imagesIndexing=c,await pe(this.plugin)})).setDisabled(!et());let s=new DocumentFragment;s.createSpan({},f=>{f.innerHTML=`In addition to standard md files, Omnisearch can also index other plaintext files.
- Add extensions separated by a space, without the dot. Example: "txt org".
+ `;let n=new DocumentFragment;n.createSpan({},c=>{c.innerHTML='\u26A0\uFE0F Changing indexing settings will clear the cache, and requires a restart of Obsidian.

',ft()?c.innerHTML+=` + \u{1F44D} You have installed Text Extractor, Omnisearch can use it to index PDFs and images contents. +
Text extraction only works on desktop, but the cache can be synchronized with your mobile device.`:c.innerHTML+='\u26A0\uFE0F Omnisearch requires Text Extractor to index PDFs and images.'}),new $.Setting(e).setName("Indexing").setHeading().setDesc(n);let i=new DocumentFragment;i.createSpan({},c=>{c.innerHTML="Omnisearch will use Text Extractor to index the content of your PDFs"}),new $.Setting(e).setName(`PDFs content indexing ${ft()?"":"\u26A0\uFE0F Disabled"}`).setDesc(i).addToggle(c=>c.setValue(T.PDFIndexing).onChange(async h=>{await Ee.clearCache(),T.PDFIndexing=h,await le(this.plugin)})).setDisabled(!ft());let o=new DocumentFragment;o.createSpan({},c=>{c.innerHTML="Omnisearch will use Text Extractor to OCR your images and index their content"}),new $.Setting(e).setName(`Images OCR indexing ${ft()?"":"\u26A0\uFE0F Disabled"}`).setDesc(o).addToggle(c=>c.setValue(T.imagesIndexing).onChange(async h=>{await Ee.clearCache(),T.imagesIndexing=h,await le(this.plugin)})).setDisabled(!ft());let s=new DocumentFragment;s.createSpan({},c=>{c.innerHTML=` + Omnisearch can index filenames of "unsupported" files, such as e.g.
.mp4
,
.xlsx
, + or non-extracted PDFs & images.
+ "Obsidian setting" will respect the value of "Files & Links > Detect all file extensions"`}),new $.Setting(e).setName("Index paths of unsupported files").setDesc(s).addDropdown(c=>{c.addOptions({yes:"Yes",no:"No",default:"Obsidian setting"}).setValue(T.unsupportedFilesIndexing).onChange(async h=>{await Ee.clearCache(),T.unsupportedFilesIndexing=h,await le(this.plugin)})});let a=new DocumentFragment;a.createSpan({},c=>{c.innerHTML=`In addition to standard md files, Omnisearch can also index other PLAINTEXT files.
+ Add extensions separated by a space, without the dot. Example: "txt org csv".
\u26A0\uFE0F Using extensions of non-plaintext files (like .docx or .pptx) WILL cause crashes, - because Omnisearch will try to index their content.
- ${sn}`}),new Y.Setting(e).setName("Additional files to index").setDesc(s).addText(f=>{f.setValue(I.indexedFileTypes.join(" ")).setPlaceholder("Example: txt org").onChange(async c=>{I.indexedFileTypes=c.split(" "),await pe(this.plugin)})}),new Y.Setting(e).setName("Behavior").setHeading(),new Y.Setting(e).setName("Save index to cache").setDesc("Enable caching to speed up indexing time. In rare cases, the cache write may cause a freeze in Obsidian. This option will disable itself if it happens.").addToggle(f=>f.setValue(I.useCache).onChange(async c=>{I.useCache=c,await pe(this.plugin)})),new Y.Setting(e).setName(`Respect Obsidian's "Excluded Files"`).setDesc(`By default, files that are in Obsidian's "Options > Files & Links > Excluded Files" list are downranked in results. - Enable this option to completely hide them`).addToggle(f=>f.setValue(I.hideExcluded).onChange(async c=>{I.hideExcluded=c,await pe(this.plugin)}));let a=new DocumentFragment;a.createSpan({},f=>{f.innerHTML=`Normalize diacritics in search terms. Words like "br\xFBl\xE9e" or "\u017Elu\u0165ou\u010Dk\xFD" will be indexed as "brulee" and "zlutoucky".
- \u26A0\uFE0F You probably should NOT disable this.
+ because Omnisearch will try to index their content.`}),new $.Setting(e).setName("Additional TEXT files to index").setDesc(a).addText(c=>{c.setValue(T.indexedFileTypes.join(" ")).setPlaceholder("Example: txt org csv").onChange(async h=>{await Ee.clearCache(),T.indexedFileTypes=h.split(" "),await le(this.plugin)})}),new $.Setting(e).setName("Behavior").setHeading(),new $.Setting(e).setName("Save index to cache").setDesc("Enable caching to speed up indexing time. In rare cases, the cache write may cause a crash in Obsidian. This option will disable itself if it happens.").addToggle(c=>c.setValue(T.useCache).onChange(async h=>{T.useCache=h,await le(this.plugin)})),new $.Setting(e).setName(`Respect Obsidian's "Excluded Files"`).setDesc(`By default, files that are in Obsidian's "Options > Files & Links > Excluded Files" list are downranked in results. + Enable this option to completely hide them`).addToggle(c=>c.setValue(T.hideExcluded).onChange(async h=>{T.hideExcluded=h,await le(this.plugin)}));let u=new DocumentFragment;u.createSpan({},c=>{c.innerHTML=`Enable this if you want to be able to search for CamelCaseWords as separate words.
\u26A0\uFE0F Changing this setting will clear the cache.
- ${sn} - `}),new Y.Setting(e).setName("Ignore diacritics").setDesc(a).addToggle(f=>f.setValue(I.ignoreDiacritics).onChange(async c=>{await Be.clearCache(),I.ignoreDiacritics=c,await pe(this.plugin)}));let l=new DocumentFragment;l.createSpan({},f=>{f.innerHTML=`Enable this if you want to be able to search for CamelCaseWords as separate words.
+ ${Wi} + `}),new $.Setting(e).setName("Split CamelCaseWords").setDesc(u).addToggle(c=>c.setValue(T.splitCamelCase).onChange(async h=>{await Ee.clearCache(),T.splitCamelCase=h,await le(this.plugin)})),new $.Setting(e).setName("Simpler search").setDesc(`Enable this if Obsidian often freezes while making searches. + Words shorter than 3 characters won't be used as prefixes; this can reduce search delay but will return fewer results.`).addToggle(c=>c.setValue(T.simpleSearch).onChange(async h=>{T.simpleSearch=h,await le(this.plugin)})),new $.Setting(e).setName("Open in new pane").setDesc("Open and create files in a new pane instead of the current pane.").addToggle(c=>c.setValue(T.openInNewPane).onChange(async h=>{T.openInNewPane=h,await le(this.plugin)})),new $.Setting(e).setName("Set Vim like navigation keys").setDesc("Navigate down the results with Ctrl/\u2318 + J/N, or navigate up with Ctrl/\u2318 + K/P").addToggle(c=>c.setValue(T.vimLikeNavigationShortcut).onChange(async h=>{T.vimLikeNavigationShortcut=h,await le(this.plugin)})),new $.Setting(e).setName("Fuzziness").setDesc("Define the level of fuzziness for the search. The higher the fuzziness, the more results you'll get.").addDropdown(c=>c.addOptions({0:"Exact match",1:"Not too fuzzy",2:"Fuzzy enough"}).setValue(T.fuzziness).onChange(async h=>{["0","1","2"].includes(h)||(h="2"),T.fuzziness=h,await le(this.plugin)})),new $.Setting(e).setName("User Interface").setHeading(),new $.Setting(e).setName("Show ribbon button").setDesc("Add a button on the sidebar to open the Vault search modal.").addToggle(c=>c.setValue(T.ribbonIcon).onChange(async h=>{T.ribbonIcon=h,await le(this.plugin),h?this.plugin.addRibbonButton():this.plugin.removeRibbonButton()})),new $.Setting(e).setName("Show excerpts").setDesc("Shows the contextual part of the note that matches the search. Disable this to only show filenames in results.").addToggle(c=>c.setValue(T.showExcerpt).onChange(async h=>{dr.set(h)})),new $.Setting(e).setName("Render line return in excerpts").setDesc("Activate this option to render line returns in result excerpts.").addToggle(c=>c.setValue(T.renderLineReturnInExcerpts).onChange(async h=>{T.renderLineReturnInExcerpts=h,await le(this.plugin)})),new $.Setting(e).setName("Show previous query results").setDesc("Re-executes the previous query when opening Omnisearch.").addToggle(c=>c.setValue(T.showPreviousQueryResults).onChange(async h=>{T.showPreviousQueryResults=h,await le(this.plugin)}));let l=new DocumentFragment;if(l.createSpan({},c=>{c.innerHTML=`Shows a button next to the search input, to create a note. + Acts the same as the shift \u21B5 shortcut, can be useful for mobile device users.`}),new $.Setting(e).setName('Show "Create note" button').setDesc(l).addToggle(c=>c.setValue(T.showCreateButton).onChange(async h=>{T.showCreateButton=h,await le(this.plugin)})),new $.Setting(e).setName("Highlight matching words in results").setDesc("Will highlight matching results when enabled. See README for more customization options.").addToggle(c=>c.setValue(T.highlight).onChange(async h=>{T.highlight=h,await le(this.plugin)})),new $.Setting(e).setName("Results weighting").setHeading(),new $.Setting(e).setName(`File name & declared aliases (default: ${Lt.weightBasename})`).addSlider(c=>this.weightSlider(c,"weightBasename")),new $.Setting(e).setName(`File directory (default: ${Lt.weightDirectory})`).addSlider(c=>this.weightSlider(c,"weightDirectory")),new $.Setting(e).setName(`Headings level 1 (default: ${Lt.weightH1})`).addSlider(c=>this.weightSlider(c,"weightH1")),new $.Setting(e).setName(`Headings level 2 (default: ${Lt.weightH2})`).addSlider(c=>this.weightSlider(c,"weightH2")),new $.Setting(e).setName(`Headings level 3 (default: ${Lt.weightH3})`).addSlider(c=>this.weightSlider(c,"weightH3")),new $.Setting(e).setName(`Tags without the # (default: ${Lt.weightUnmarkedTags})`).addSlider(c=>this.weightSlider(c,"weightUnmarkedTags")),new $.Setting(e).setName("Debugging").setHeading(),new $.Setting(e).setName("Enable verbose logging").setDesc("Adds a LOT of logs for debugging purposes. Don't forget to disable it.").addToggle(c=>c.setValue(T.verboseLogging).onChange(async h=>{T.verboseLogging=h,await le(this.plugin)})),!$.Platform.isMobile){let c=new DocumentFragment;c.createSpan({},h=>{h.innerHTML='Omnisearch can be used through a simple HTTP server (more information).'}),new $.Setting(e).setName("API Access Through HTTP").setHeading().setDesc(c),new $.Setting(e).setName("Enable the HTTP server").addToggle(h=>h.setValue(T.httpApiEnabled).onChange(async w=>{T.httpApiEnabled=w,w?this.plugin.apiHttpServer.listen(T.httpApiPort):this.plugin.apiHttpServer.close(),await le(this.plugin)})),new $.Setting(e).setName("HTTP Port").addText(h=>{h.setValue(T.httpApiPort).setPlaceholder("51361").onChange(async w=>{parseInt(w)>65535&&(w=T.httpApiPort,h.setValue(T.httpApiPort)),T.httpApiPort=w,T.httpApiEnabled&&(this.plugin.apiHttpServer.close(),this.plugin.apiHttpServer.listen(T.httpApiPort)),await le(this.plugin)})})}new $.Setting(e).setName("Danger Zone").setHeading();let f=new DocumentFragment;f.createSpan({},c=>{c.innerHTML=`Normalize diacritics in search terms. Words like "br\xFBl\xE9e" or "\u017Elu\u0165ou\u010Dk\xFD" will be indexed as "brulee" and "zlutoucky".
+ \u26A0\uFE0F You probably should NOT disable this.
\u26A0\uFE0F Changing this setting will clear the cache.
- ${sn} - `}),new Y.Setting(e).setName("Split CamelCaseWords").setDesc(l).addToggle(f=>f.setValue(I.splitCamelCase).onChange(async c=>{await Be.clearCache(),I.splitCamelCase=c,await pe(this.plugin)})),new Y.Setting(e).setName("Simpler search").setDesc(`Enable this if Obsidian often freezes while making searches. - Words shorter than 3 characters won't be used as prefixes; this can reduce search delay but will return fewer results.`).addToggle(f=>f.setValue(I.simpleSearch).onChange(async c=>{I.simpleSearch=c,await pe(this.plugin)})),new Y.Setting(e).setName("Open in new pane").setDesc("Open and create files in a new pane instead of the current pane.").addToggle(f=>f.setValue(I.openInNewPane).onChange(async c=>{I.openInNewPane=c,await pe(this.plugin)})),new Y.Setting(e).setName("User Interface").setHeading(),new Y.Setting(e).setName("Show ribbon button").setDesc("Add a button on the sidebar to open the Vault search modal.").addToggle(f=>f.setValue(I.ribbonIcon).onChange(async c=>{I.ribbonIcon=c,await pe(this.plugin),c?this.plugin.addRibbonButton():this.plugin.removeRibbonButton()})),new Y.Setting(e).setName("Show excerpts").setDesc("Shows the contextual part of the note that matches the search. Disable this to only show filenames in results.").addToggle(f=>f.setValue(I.showExcerpt).onChange(async c=>{Ut.set(c)})),new Y.Setting(e).setName("Render line return in excerpts").setDesc("Activate this option to render line returns in result excerpts.").addToggle(f=>f.setValue(I.renderLineReturnInExcerpts).onChange(async c=>{I.renderLineReturnInExcerpts=c,await pe(this.plugin)})),new Y.Setting(e).setName("Show previous query results").setDesc("Re-executes the previous query when opening Omnisearch.").addToggle(f=>f.setValue(I.showPreviousQueryResults).onChange(async c=>{I.showPreviousQueryResults=c,await pe(this.plugin)}));let u=new DocumentFragment;u.createSpan({},f=>{f.innerHTML=`Shows a button next to the search input, to create a note. - Acts the same as the shift \u21B5 shortcut, can be useful for mobile device users.`}),new Y.Setting(e).setName('Show "Create note" button').setDesc(u).addToggle(f=>f.setValue(I.showCreateButton).onChange(async c=>{I.showCreateButton=c,await pe(this.plugin)})),new Y.Setting(e).setName("Highlight matching words in results").setDesc("Will highlight matching results when enabled. See README for more customization options.").addToggle(f=>f.setValue(I.highlight).onChange(async c=>{I.highlight=c,await pe(this.plugin)})),new Y.Setting(e).setName("Results weighting").setHeading(),new Y.Setting(e).setName(`File name & declared aliases (default: ${Gt.weightBasename})`).addSlider(f=>this.weightSlider(f,"weightBasename")),new Y.Setting(e).setName(`File directory (default: ${Gt.weightDirectory})`).addSlider(f=>this.weightSlider(f,"weightDirectory")),new Y.Setting(e).setName(`Headings level 1 (default: ${Gt.weightH1})`).addSlider(f=>this.weightSlider(f,"weightH1")),new Y.Setting(e).setName(`Headings level 2 (default: ${Gt.weightH2})`).addSlider(f=>this.weightSlider(f,"weightH2")),new Y.Setting(e).setName(`Headings level 3 (default: ${Gt.weightH3})`).addSlider(f=>this.weightSlider(f,"weightH3")),new Y.Setting(e).setName("Debugging").setHeading(),new Y.Setting(e).setName("Enable verbose logging").setDesc("Adds a LOT of logs for debugging purposes. Don't forget to disable it.").addToggle(f=>f.setValue(I.verboseLogging).onChange(async c=>{I.verboseLogging=c,await pe(this.plugin)})),new Y.Setting(e).setName("Danger Zone").setHeading();let d=new DocumentFragment;if(d.createSpan({},f=>{f.innerHTML=`Disable Omnisearch on this device only.
- ${sn}`}),new Y.Setting(e).setName("Disable on this device").setDesc(d).addToggle(f=>f.setValue(Oo()).onChange(async c=>{c?app.saveLocalStorage(an,"1"):app.saveLocalStorage(an),new Y.Notice("Omnisearch - Disabled. Please restart Obsidian.")})),wt()){let f=new DocumentFragment;f.createSpan({},c=>{c.innerHTML=`Erase all Omnisearch cache data. + ${Wi} + `}),new $.Setting(e).setName("Ignore diacritics").setDesc(f).addToggle(c=>c.setValue(T.ignoreDiacritics).onChange(async h=>{await Ee.clearCache(),T.ignoreDiacritics=h,await le(this.plugin)}));let p=new DocumentFragment;if(p.createSpan({},c=>{c.innerHTML=`Disable Omnisearch on this device only.
+ ${Wi}`}),new $.Setting(e).setName("Disable on this device").setDesc(p).addToggle(c=>c.setValue(oa()).onChange(async h=>{h?app.saveLocalStorage(Hn,"1"):app.saveLocalStorage(Hn),new $.Notice("Omnisearch - Disabled. Please restart Obsidian.")})),Nt()){let c=new DocumentFragment;c.createSpan({},h=>{h.innerHTML=`Erase all Omnisearch cache data. Use this if Omnisearch results are inconsistent, missing, or appear outdated.
- ${sn}`}),new Y.Setting(e).setName("Clear cache data").setDesc(f).addButton(c=>{c.setButtonText("Clear cache"),c.onClick(async()=>{await Be.clearCache(),new Y.Notice("Omnisearch - Cache cleared. Please restart Obsidian.")})})}}weightSlider(e,r){e.setLimits(1,5,.1).setValue(I[r]).setDynamicTooltip().onChange(n=>{I[r]=n,pe(this.plugin)})}},Gt={useCache:!0,hideExcluded:!1,ignoreDiacritics:!0,indexedFileTypes:[],PDFIndexing:!1,imagesIndexing:!1,splitCamelCase:!1,openInNewPane:!1,ribbonIcon:!0,showExcerpt:!0,renderLineReturnInExcerpts:!0,showCreateButton:!1,highlight:!0,showPreviousQueryResults:!0,simpleSearch:!1,weightBasename:3,weightDirectory:2,weightH1:1.5,weightH2:1.3,weightH3:1.1,welcomeMessage:"",verboseLogging:!1},I=Object.assign({},Gt);async function ja(t){I=Object.assign({},Gt,await t.loadData()),Ut.set(I.showExcerpt)}async function pe(t){await t.saveData(I)}function Oo(){return app.loadLocalStorage(an)=="1"}var Ca=Fe(require("obsidian"));var Aa=/[\u4e00-\u9fa5]/;var Sa=100,ln=300,Fa=`suggestion-highlight omnisearch-highlight ${I.highlight?"omnisearch-default-highlight":""}`,an="omnisearch-disabled",U=new Bi,qn={ToggleExcerpts:"toggle-excerpts"},We=(o=>(o[o.Done=0]="Done",o[o.LoadingCache=1]="LoadingCache",o[o.ReadingFiles=2]="ReadingFiles",o[o.IndexingFiles=3]="IndexingFiles",o[o.WritingCache=4]="WritingCache",o))(We||{});var jt=Cn(0),Ea=!1;function ko(t){Ea=t}function Da(){return Ea}function Yn(){return app.plugins.plugins["cm-chs-patch"]}function et(){return app.plugins?.plugins?.["text-extractor"]?.api}function wt(){return!Ca.Platform.isIosApp&&I.useCache}var Ct=/[|\n\r -#%-*,-/:;?@[-\]_{}\u00A0\u00A1\u00A7\u00AB\u00B6\u00B7\u00BB\u00BF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u09FD\u0A76\u0AF0\u0C77\u0C84\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166E\u1680\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2000-\u200A\u2010-\u2029\u202F-\u2043\u2045-\u2051\u2053-\u205F\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E4F\u3000-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]+/u;var za=Fe(require("obsidian"));var ct=Fe(require("obsidian"));var Ia=Fe(require("crypto")),Oa=Fe(Ta());function At(...t){return t[1]!==null&&t[1]!==void 0&&t[2]!==null&&t[2]!==void 0?`${t[1]}${t[2]}`:"<no content>"}function Fd(t){return t.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll('"',""").replaceAll("'","'")}function ka(t){let e=t.split("/");return e.pop(),e.join("/")}function Ed(t){return t.replace(/[-/\\^$*+?.()|[\]{}]/g,"[$&]")}function St(t){if(!t.length)return/^$/g;let e="("+(Yn()?"":I.splitCamelCase?`^|${Ct.source}|[A-Z]`:`^|${Ct.source}`)+`)(${t.map(n=>Ed(n)).join("|")})`;return new RegExp(`${e}`,"giu")}function Jn(t,e){return t.headings?.filter(r=>r.level===e).map(r=>r.heading)??[]}function Xn(t,e){return(t+e)%e}function yr(t,e){try{let r=e??-1,n=Math.max(0,r-Sa),i=Math.min(t.length,r+ln);if(r>-1?t=(n>0?"\u2026":"")+t.slice(n,i).trim()+(ia).join(` + ${Wi}`}),new $.Setting(e).setName("Clear cache data").setDesc(c).addButton(h=>{h.setButtonText("Clear cache"),h.onClick(async()=>{await Ee.clearCache()})})}}weightSlider(e,r){e.setLimits(1,5,.1).setValue(T[r]).setDynamicTooltip().onChange(async n=>{T[r]=n,await le(this.plugin)})}},Lt={useCache:!0,hideExcluded:!1,ignoreDiacritics:!0,indexedFileTypes:[],PDFIndexing:!1,imagesIndexing:!1,unsupportedFilesIndexing:"no",splitCamelCase:!1,openInNewPane:!1,vimLikeNavigationShortcut:app.vault.getConfig("vimMode"),ribbonIcon:!0,showExcerpt:!0,renderLineReturnInExcerpts:!0,showCreateButton:!1,highlight:!0,showPreviousQueryResults:!0,simpleSearch:!1,fuzziness:"1",weightBasename:3,weightDirectory:2,weightH1:1.5,weightH2:1.3,weightH3:1.1,weightUnmarkedTags:1.1,httpApiEnabled:!1,httpApiPort:"51361",welcomeMessage:"",verboseLogging:!1},T=Object.assign({},Lt)});function sa(t){Su=t}function aa(){return Su}function Gi(){return app.plugins.plugins["cm-chs-patch"]}function ft(){return app.plugins?.plugins?.["text-extractor"]?.api}function Nt(){return!wu.Platform.isIosApp&&T.useCache}var wu,ju,Au,Vn,Cu,Hn,Q,Ui,et,re,Bt,Su,Eu,la,$n,ot=j(()=>{Al();ds();Ze();wu=ge(require("obsidian")),ju=/[\u4e00-\u9fa5]/,Au=100,Vn=300,Cu=`suggestion-highlight omnisearch-highlight ${T.highlight?"omnisearch-default-highlight":""}`,Hn="omnisearch-disabled",Q=new fs,Ui={ToggleExcerpts:"toggle-excerpts"},et=(o=>(o[o.Done=0]="Done",o[o.LoadingCache=1]="LoadingCache",o[o.ReadingFiles=2]="ReadingFiles",o[o.IndexingFiles=3]="IndexingFiles",o[o.WritingCache=4]="WritingCache",o))(et||{}),re=(f=>(f.Enter="enter",f.OpenInBackground="open-in-background",f.CreateNote="create-note",f.OpenInNewPane="open-in-new-pane",f.InsertLink="insert-link",f.Tab="tab",f.ArrowUp="arrow-up",f.ArrowDown="arrow-down",f.PrevSearchHistory="prev-search-history",f.NextSearchHistory="next-search-history",f))(re||{}),Bt=vi(0),Su=!1;Eu=/[|\t\n\r= -#%-*,.`\/<>:;?@[-\]_{}\u00A0\u00A1\u00A7\u00AB\u00B6\u00B7\u00BB\u00BF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u09FD\u0A76\u0AF0\u0C77\u0C84\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166E\u1680\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2000-\u200A\u2010-\u2029\u202F-\u2043\u2045-\u2051\u2053-\u205F\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E4F\u3000-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]/.toString().slice(1,-1),la=new RegExp(`${Eu}`,"u"),$n=new RegExp(`${Eu}+`,"u")});var Fu=pi((Wn,ua)=>{(function(t,e){if(typeof Wn=="object"&&typeof ua=="object")ua.exports=e();else if(typeof define=="function"&&define.amd)define([],e);else{var r=e();for(var n in r)(typeof Wn=="object"?Wn:t)[n]=r[n]}})(typeof self!="undefined"?self:Wn,function(){return function(t){var e={};function r(n){if(e[n])return e[n].exports;var i=e[n]={i:n,l:!1,exports:{}};return t[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return r.m=t,r.c=e,r.d=function(n,i,o){r.o(n,i)||Object.defineProperty(n,i,{enumerable:!0,get:o})},r.r=function(n){typeof Symbol!="undefined"&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},r.t=function(n,i){if(1&i&&(n=r(n)),8&i||4&i&&typeof n=="object"&&n&&n.__esModule)return n;var o=Object.create(null);if(r.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:n}),2&i&&typeof n!="string")for(var s in n)r.d(o,s,function(a){return n[a]}.bind(null,s));return o},r.n=function(n){var i=n&&n.__esModule?function(){return n.default}:function(){return n};return r.d(i,"a",i),i},r.o=function(n,i){return Object.prototype.hasOwnProperty.call(n,i)},r.p="",r(r.s=0)}([function(t,e,r){"use strict";r.r(e),r.d(e,"md5",function(){return x});var n="0123456789abcdef".split(""),i=function(v){for(var d="",b=0;b<4;b++)d+=n[v>>8*b+4&15]+n[v>>8*b&15];return d},o=function(v){for(var d=v.length,b=0;b>>32-C,F)}(d=function(A,C,F,D){return C=s(s(C,A),s(F,D))}(v,d,m,y),g,b)},u=function(v,d,b,m,g,y,_,A){return a(b&m|~b&g,d,b,y,_,A,v)},l=function(v,d,b,m,g,y,_,A){return a(b&g|m&~g,d,b,y,_,A,v)},f=function(v,d,b,m,g,y,_,A){return a(b^m^g,d,b,y,_,A,v)},p=function(v,d,b,m,g,y,_,A){return a(m^(b|~g),d,b,y,_,A,v)},c=function(v,d,b){b===void 0&&(b=s);var m=v[0],g=v[1],y=v[2],_=v[3],A=u.bind(null,b);m=A(m,g,y,_,d[0],7,-680876936),_=A(_,m,g,y,d[1],12,-389564586),y=A(y,_,m,g,d[2],17,606105819),g=A(g,y,_,m,d[3],22,-1044525330),m=A(m,g,y,_,d[4],7,-176418897),_=A(_,m,g,y,d[5],12,1200080426),y=A(y,_,m,g,d[6],17,-1473231341),g=A(g,y,_,m,d[7],22,-45705983),m=A(m,g,y,_,d[8],7,1770035416),_=A(_,m,g,y,d[9],12,-1958414417),y=A(y,_,m,g,d[10],17,-42063),g=A(g,y,_,m,d[11],22,-1990404162),m=A(m,g,y,_,d[12],7,1804603682),_=A(_,m,g,y,d[13],12,-40341101),y=A(y,_,m,g,d[14],17,-1502002290),g=A(g,y,_,m,d[15],22,1236535329);var C=l.bind(null,b);m=C(m,g,y,_,d[1],5,-165796510),_=C(_,m,g,y,d[6],9,-1069501632),y=C(y,_,m,g,d[11],14,643717713),g=C(g,y,_,m,d[0],20,-373897302),m=C(m,g,y,_,d[5],5,-701558691),_=C(_,m,g,y,d[10],9,38016083),y=C(y,_,m,g,d[15],14,-660478335),g=C(g,y,_,m,d[4],20,-405537848),m=C(m,g,y,_,d[9],5,568446438),_=C(_,m,g,y,d[14],9,-1019803690),y=C(y,_,m,g,d[3],14,-187363961),g=C(g,y,_,m,d[8],20,1163531501),m=C(m,g,y,_,d[13],5,-1444681467),_=C(_,m,g,y,d[2],9,-51403784),y=C(y,_,m,g,d[7],14,1735328473),g=C(g,y,_,m,d[12],20,-1926607734);var F=f.bind(null,b);m=F(m,g,y,_,d[5],4,-378558),_=F(_,m,g,y,d[8],11,-2022574463),y=F(y,_,m,g,d[11],16,1839030562),g=F(g,y,_,m,d[14],23,-35309556),m=F(m,g,y,_,d[1],4,-1530992060),_=F(_,m,g,y,d[4],11,1272893353),y=F(y,_,m,g,d[7],16,-155497632),g=F(g,y,_,m,d[10],23,-1094730640),m=F(m,g,y,_,d[13],4,681279174),_=F(_,m,g,y,d[0],11,-358537222),y=F(y,_,m,g,d[3],16,-722521979),g=F(g,y,_,m,d[6],23,76029189),m=F(m,g,y,_,d[9],4,-640364487),_=F(_,m,g,y,d[12],11,-421815835),y=F(y,_,m,g,d[15],16,530742520),g=F(g,y,_,m,d[2],23,-995338651);var D=p.bind(null,b);m=D(m,g,y,_,d[0],6,-198630844),_=D(_,m,g,y,d[7],10,1126891415),y=D(y,_,m,g,d[14],15,-1416354905),g=D(g,y,_,m,d[5],21,-57434055),m=D(m,g,y,_,d[12],6,1700485571),_=D(_,m,g,y,d[3],10,-1894986606),y=D(y,_,m,g,d[10],15,-1051523),g=D(g,y,_,m,d[1],21,-2054922799),m=D(m,g,y,_,d[8],6,1873313359),_=D(_,m,g,y,d[15],10,-30611744),y=D(y,_,m,g,d[6],15,-1560198380),g=D(g,y,_,m,d[13],21,1309151649),m=D(m,g,y,_,d[4],6,-145523070),_=D(_,m,g,y,d[11],10,-1120210379),y=D(y,_,m,g,d[2],15,718787259),g=D(g,y,_,m,d[9],21,-343485551),v[0]=b(m,v[0]),v[1]=b(g,v[1]),v[2]=b(y,v[2]),v[3]=b(_,v[3])},h=function(v){for(var d=[],b=0;b<64;b+=4)d[b>>2]=v.charCodeAt(b)+(v.charCodeAt(b+1)<<8)+(v.charCodeAt(b+2)<<16)+(v.charCodeAt(b+3)<<24);return d},w=function(v,d){var b,m=v.length,g=[1732584193,-271733879,-1732584194,271733878];for(b=64;b<=m;b+=64)c(g,h(v.substring(b-64,b)),d);var y=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],_=(v=v.substring(b-64)).length;for(b=0;b<_;b++)y[b>>2]|=v.charCodeAt(b)<<(b%4<<3);if(y[b>>2]|=128<<(b%4<<3),b>55)for(c(g,y,d),b=16;b--;)y[b]=0;return y[14]=8*m,c(g,y,d),g};function x(v){var d;return o(w("hello"))!=="5d41402abc4b2a76b9719d911017c592"&&(d=function(b,m){var g=(65535&b)+(65535&m);return(b>>16)+(m>>16)+(g>>16)<<16|65535&g}),o(w(v,d))}}])})});function Ou(t){let e=t.split("/");return e.pop(),e.join("/")}function Qi(t,e){return t.headings?.filter(r=>r.level===e).map(r=>r.heading)??[]}function qi(t,e){return(t+e)%e}function ca(t){return t.replace(/(\*|_)+(.+?)(\*|_)+/g,(e,r,n)=>n)}function Iu(t){return t?.frontmatter?(0,pr.parseFrontMatterAliases)(t.frontmatter)??[]:[]}function Pu(t){let e=t?(0,pr.getAllTags)(t)??[]:[];return e=[...new Set(e.reduce((r,n)=>[...r,...n.split("/").filter(i=>i).map(i=>i.startsWith("#")?i:`#${i}`),n],[]))],e}function jt(t){return t==null?"":(t=t.replaceAll("`","[__omnisearch__backtick__]"),t=t.normalize("NFD").replace(/\p{Diacritic}/gu,""),t=t.replaceAll("[__omnisearch__backtick__]","`"),t)}function hr(){return pr.Platform.isMacOS?"\u2318":"ctrl"}function dy(t){let e=!!ft(),r=e&&T.PDFIndexing,n=e&&T.imagesIndexing;return Yi(t)||$r(t)||Ji(t)||r&&mr(t)||n&&Vr(t)}function fa(t){return xu()||Yi(t)||$r(t)||Ji(t)}function Un(t){return fa(t)||dy(t)}function Vr(t){let e=gr(t);return e==="png"||e==="jpg"||e==="jpeg"||e==="webp"}function mr(t){return gr(t)==="pdf"}function Yi(t){return[...T.indexedFileTypes,"md"].some(e=>t.endsWith(`.${e}`))}function $r(t){return t.endsWith(".canvas")}function Ji(t){return t.endsWith(".loom")}function gr(t){let e=t.split(".");return e[e.length-1]??""}function ku(t){return pr.Platform.isMobileApp?(0,Du.md5)(t.toString()):(0,Tu.createHash)("md5").update(t).digest("hex")}function Mu(t,e){let r=[],n=0,i=t.length;for(;nr):[]}function Lu(t){return t.includes("-")?t.split("-").filter(e=>e):[]}function de(...t){Bu(console.log,...t)}function Nu(...t){Bu(console.warn,...t)}function Bu(t,...e){if(T.verboseLogging){let r=new Date,n=`${r.getMinutes()}:${r.getSeconds()}:${r.getMilliseconds()}`;t("Omnisearch -",n+" -",...e)}}var pr,Tu,Du,At=j(()=>{pr=ge(require("obsidian"));ot();Ze();Tu=ge(require("crypto")),Du=ge(Fu())});async function py(t){let e=app.vault.getFiles().find(s=>s.path===t);if(!e)throw new Error(`Invalid file path: "${t}"`);let r=null,n=ft();if(Yi(t))r=await app.vault.cachedRead(e);else if($r(t)){let s=JSON.parse(await app.vault.cachedRead(e)),a=[];for(let u of s.nodes)u.type==="text"?a.push(u.text):u.type==="file"&&a.push(u.file);for(let u of s.edges.filter(l=>!!l.label))a.push(u.label);r=a.join(`\r +`)}else if(Ji(t))try{let s=JSON.parse(await app.vault.cachedRead(e)),a=[],u=l=>{for(let f in l)typeof l[f]=="object"?u(l[f]):f==="content"&&a.push(l[f])};u(s),r=a.join(`\r +`)}catch(s){console.error("Omnisearch: Error while parsing Dataloom file",t),console.error(s)}else Vr(t)&&T.imagesIndexing&&n?.canFileBeExtracted(t)?r=await n.extractText(e):mr(t)&&T.PDFIndexing&&n?.canFileBeExtracted(t)?r=await n.extractText(e):fa(t)&&(r=e.path);r==null&&(console.warn(`Omnisearch: ${r} content for file`,e.path),r=""),r=jt(r);let i=app.metadataCache.getFileCache(e);if(i&&i.frontmatter?.["excalidraw-plugin"]){let s=i.sections?.filter(a=>a.type==="comment")??[];for(let{start:a,end:u}of s.map(l=>l.position))r=r.substring(0,a.offset-1)+r.substring(u.offset)}let o=Pu(i);return{basename:jt(e.basename),content:r,path:e.path,mtime:e.stat.mtime,tags:o,unmarkedTags:o.map(s=>s.replace("#","")),aliases:Iu(i).join(""),headings1:i?Qi(i,1).join(" "):"",headings2:i?Qi(i,2).join(" "):"",headings3:i?Qi(i,3).join(" "):""}}var Ku,zu,Fe,Gn=j(()=>{Ku=ge(require("obsidian"));ot();$i();At();Ze();zu=class{constructor(){this.nextQueryIsEmpty=!1;this.documents=new Map}async addToLiveCache(e){try{let r=await py(e);if(!r.path){console.error(`Missing .path field in IndexedDocument "${r.basename}", skipping`);return}this.documents.set(e,r)}catch(r){console.warn(`Omnisearch: Error while adding "${e}" to live cache`,r),this.removeFromLiveCache(e)}}removeFromLiveCache(e){this.documents.delete(e)}async getDocument(e){return this.documents.has(e)?this.documents.get(e):(de("Generating IndexedDocument from",e),await this.addToLiveCache(e),this.documents.get(e))}async addToSearchHistory(e){if(!e){this.nextQueryIsEmpty=!0;return}this.nextQueryIsEmpty=!1;let r=await Ee.searchHistory.toArray();r=r.filter(n=>n.query!==e).reverse(),r.unshift({query:e}),r=r.slice(0,10),await Ee.searchHistory.clear(),await Ee.searchHistory.bulkAdd(r)}async getSearchHistory(){let e=(await Ee.searchHistory.toArray()).reverse().map(r=>r.query);return this.nextQueryIsEmpty&&e.unshift(""),e}getDocumentsChecksum(e){return ku(JSON.stringify(e.sort((r,n)=>r.pathn.path?1:0)))}async getMinisearchCache(){try{return(await Ee.minisearch.toArray())[0]}catch(e){return new Ku.Notice("Omnisearch - Cache missing or invalid. Some freezes may occur while Omnisearch indexes your vault."),console.error("Omnisearch - Error while loading Minisearch cache"),console.error(e),null}}async writeMinisearchCache(e,r){let n=Array.from(r).map(([i,o])=>({path:i,mtime:o}));await Ee.minisearch.clear(),await Ee.minisearch.add({date:new Date().toISOString(),paths:n,data:e.toJSON()}),console.log("Omnisearch - Search cache written")}},Fe=new zu});var vy,eo,da=j(()=>{vy=typeof global=="object"&&global&&global.Object===Object&&global,eo=vy});var by,xy,ve,st=j(()=>{da();by=typeof self=="object"&&self&&self.Object===Object&&self,xy=eo||by||Function("return this")(),ve=xy});var wy,Te,yr=j(()=>{st();wy=ve.Symbol,Te=wy});function Cy(t){var e=jy.call(t,Qn),r=t[Qn];try{t[Qn]=void 0;var n=!0}catch{}var i=Ay.call(t);return n&&(e?t[Qn]=r:delete t[Qn]),i}var Wu,jy,Ay,Qn,Uu,Gu=j(()=>{yr();Wu=Object.prototype,jy=Wu.hasOwnProperty,Ay=Wu.toString,Qn=Te?Te.toStringTag:void 0;Uu=Cy});function Fy(t){return Ey.call(t)}var Sy,Ey,Qu,qu=j(()=>{Sy=Object.prototype,Ey=Sy.toString;Qu=Fy});function Oy(t){return t==null?t===void 0?Dy:Ty:Yu&&Yu in Object(t)?Uu(t):Qu(t)}var Ty,Dy,Yu,at,Wr=j(()=>{yr();Gu();qu();Ty="[object Null]",Dy="[object Undefined]",Yu=Te?Te.toStringTag:void 0;at=Oy});function Iy(t){return t!=null&&typeof t=="object"}var Ke,Kt=j(()=>{Ke=Iy});function ky(t){return typeof t=="symbol"||Ke(t)&&at(t)==Py}var Py,Ct,qn=j(()=>{Wr();Kt();Py="[object Symbol]";Ct=ky});function My(t,e){for(var r=-1,n=t==null?0:t.length,i=Array(n);++r{Ur=My});var Ry,pe,tt=j(()=>{Ry=Array.isArray,pe=Ry});function Zu(t){if(typeof t=="string")return t;if(pe(t))return Ur(t,Zu)+"";if(Ct(t))return Xu?Xu.call(t):"";var e=t+"";return e=="0"&&1/t==-Ly?"-0":e}var Ly,Ju,Xu,ec,tc=j(()=>{yr();pa();tt();qn();Ly=1/0,Ju=Te?Te.prototype:void 0,Xu=Ju?Ju.toString:void 0;ec=Zu});function Ny(t){var e=typeof t;return t!=null&&(e=="object"||e=="function")}var Ue,zt=j(()=>{Ue=Ny});function By(t){return t}var Ht,Yn=j(()=>{Ht=By});function $y(t){if(!Ue(t))return!1;var e=at(t);return e==zy||e==Hy||e==Ky||e==Vy}var Ky,zy,Hy,Vy,to,ha=j(()=>{Wr();zt();Ky="[object AsyncFunction]",zy="[object Function]",Hy="[object GeneratorFunction]",Vy="[object Proxy]";to=$y});var Wy,ro,rc=j(()=>{st();Wy=ve["__core-js_shared__"],ro=Wy});function Uy(t){return!!nc&&nc in t}var nc,ic,oc=j(()=>{rc();nc=function(){var t=/[^.]+$/.exec(ro&&ro.keys&&ro.keys.IE_PROTO||"");return t?"Symbol(src)_1."+t:""}();ic=Uy});function qy(t){if(t!=null){try{return Qy.call(t)}catch{}try{return t+""}catch{}}return""}var Gy,Qy,St,ma=j(()=>{Gy=Function.prototype,Qy=Gy.toString;St=qy});function n_(t){if(!Ue(t)||ic(t))return!1;var e=to(t)?r_:Jy;return e.test(St(t))}var Yy,Jy,Xy,Zy,e_,t_,r_,sc,ac=j(()=>{ha();oc();zt();ma();Yy=/[\\^$.*+?()[\]{}|]/g,Jy=/^\[object .+?Constructor\]$/,Xy=Function.prototype,Zy=Object.prototype,e_=Xy.toString,t_=Zy.hasOwnProperty,r_=RegExp("^"+e_.call(t_).replace(Yy,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");sc=n_});function i_(t,e){return t==null?void 0:t[e]}var lc,uc=j(()=>{lc=i_});function o_(t,e){var r=lc(t,e);return sc(r)?r:void 0}var Ge,Vt=j(()=>{ac();uc();Ge=o_});var s_,no,cc=j(()=>{Vt();st();s_=Ge(ve,"WeakMap"),no=s_});var fc,a_,dc,pc=j(()=>{zt();fc=Object.create,a_=function(){function t(){}return function(e){if(!Ue(e))return{};if(fc)return fc(e);t.prototype=e;var r=new t;return t.prototype=void 0,r}}(),dc=a_});function l_(t,e,r){switch(r.length){case 0:return t.call(e);case 1:return t.call(e,r[0]);case 2:return t.call(e,r[0],r[1]);case 3:return t.call(e,r[0],r[1],r[2])}return t.apply(e,r)}var hc,mc=j(()=>{hc=l_});function u_(t,e){var r=-1,n=t.length;for(e||(e=Array(n));++r{gc=u_});function p_(t){var e=0,r=0;return function(){var n=d_(),i=f_-(n-r);if(r=n,i>0){if(++e>=c_)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}var c_,f_,d_,_c,vc=j(()=>{c_=800,f_=16,d_=Date.now;_c=p_});function h_(t){return function(){return t}}var bc,xc=j(()=>{bc=h_});var m_,Gr,ga=j(()=>{Vt();m_=function(){try{var t=Ge(Object,"defineProperty");return t({},"",{}),t}catch{}}(),Gr=m_});var g_,wc,jc=j(()=>{xc();ga();Yn();g_=Gr?function(t,e){return Gr(t,"toString",{configurable:!0,enumerable:!1,value:bc(e),writable:!0})}:Ht,wc=g_});var y_,Ac,Cc=j(()=>{jc();vc();y_=_c(wc),Ac=y_});function __(t,e){for(var r=-1,n=t==null?0:t.length;++r{Sc=__});function x_(t,e){var r=typeof t;return e=e??v_,!!e&&(r=="number"||r!="symbol"&&b_.test(t))&&t>-1&&t%1==0&&t{v_=9007199254740991,b_=/^(?:0|[1-9]\d*)$/;Qr=x_});function w_(t,e,r){e=="__proto__"&&Gr?Gr(t,e,{configurable:!0,enumerable:!0,value:r,writable:!0}):t[e]=r}var oo,ya=j(()=>{ga();oo=w_});function j_(t,e){return t===e||t!==t&&e!==e}var $t,Jn=j(()=>{$t=j_});function S_(t,e,r){var n=t[e];(!(C_.call(t,e)&&$t(n,r))||r===void 0&&!(e in t))&&oo(t,e,r)}var A_,C_,so,_a=j(()=>{ya();Jn();A_=Object.prototype,C_=A_.hasOwnProperty;so=S_});function E_(t,e,r,n){var i=!r;r||(r={});for(var o=-1,s=e.length;++o{_a();ya();Wt=E_});function F_(t,e,r){return e=Fc(e===void 0?t.length-1:e,0),function(){for(var n=arguments,i=-1,o=Fc(n.length-e,0),s=Array(o);++i{mc();Fc=Math.max;Tc=F_});function T_(t,e){return Ac(Tc(t,e,Ht),t+"")}var Oc,Ic=j(()=>{Yn();Dc();Cc();Oc=T_});function O_(t){return typeof t=="number"&&t>-1&&t%1==0&&t<=D_}var D_,qr,ao=j(()=>{D_=9007199254740991;qr=O_});function I_(t){return t!=null&&qr(t.length)&&!to(t)}var dt,Yr=j(()=>{ha();ao();dt=I_});function P_(t,e,r){if(!Ue(r))return!1;var n=typeof e;return(n=="number"?dt(r)&&Qr(e,r.length):n=="string"&&e in r)?$t(r[e],t):!1}var va,Pc=j(()=>{Jn();Yr();io();zt();va=P_});function M_(t){var e=t&&t.constructor,r=typeof e=="function"&&e.prototype||k_;return t===r}var k_,Jr,lo=j(()=>{k_=Object.prototype;Jr=M_});function R_(t,e){for(var r=-1,n=Array(t);++r{kc=R_});function N_(t){return Ke(t)&&at(t)==L_}var L_,ba,Rc=j(()=>{Wr();Kt();L_="[object Arguments]";ba=N_});var Lc,B_,K_,z_,Xr,uo=j(()=>{Rc();Kt();Lc=Object.prototype,B_=Lc.hasOwnProperty,K_=Lc.propertyIsEnumerable,z_=ba(function(){return arguments}())?ba:function(t){return Ke(t)&&B_.call(t,"callee")&&!K_.call(t,"callee")},Xr=z_});function H_(){return!1}var Nc,Bc=j(()=>{Nc=H_});var Kc,zc,V_,Hc,$_,W_,_r,co=j(()=>{st();Bc();Kc=typeof exports=="object"&&exports&&!exports.nodeType&&exports,zc=Kc&&typeof module=="object"&&module&&!module.nodeType&&module,V_=zc&&zc.exports===Kc,Hc=V_?ve.Buffer:void 0,$_=Hc?Hc.isBuffer:void 0,W_=$_||Nc,_r=W_});function gv(t){return Ke(t)&&qr(t.length)&&!!ue[at(t)]}var U_,G_,Q_,q_,Y_,J_,X_,Z_,ev,tv,rv,nv,iv,ov,sv,av,lv,uv,cv,fv,dv,pv,hv,mv,ue,Vc,$c=j(()=>{Wr();ao();Kt();U_="[object Arguments]",G_="[object Array]",Q_="[object Boolean]",q_="[object Date]",Y_="[object Error]",J_="[object Function]",X_="[object Map]",Z_="[object Number]",ev="[object Object]",tv="[object RegExp]",rv="[object Set]",nv="[object String]",iv="[object WeakMap]",ov="[object ArrayBuffer]",sv="[object DataView]",av="[object Float32Array]",lv="[object Float64Array]",uv="[object Int8Array]",cv="[object Int16Array]",fv="[object Int32Array]",dv="[object Uint8Array]",pv="[object Uint8ClampedArray]",hv="[object Uint16Array]",mv="[object Uint32Array]",ue={};ue[av]=ue[lv]=ue[uv]=ue[cv]=ue[fv]=ue[dv]=ue[pv]=ue[hv]=ue[mv]=!0;ue[U_]=ue[G_]=ue[ov]=ue[Q_]=ue[sv]=ue[q_]=ue[Y_]=ue[J_]=ue[X_]=ue[Z_]=ue[ev]=ue[tv]=ue[rv]=ue[nv]=ue[iv]=!1;Vc=gv});function yv(t){return function(e){return t(e)}}var Ut,Zn=j(()=>{Ut=yv});var Wc,ei,_v,xa,vv,Et,fo=j(()=>{da();Wc=typeof exports=="object"&&exports&&!exports.nodeType&&exports,ei=Wc&&typeof module=="object"&&module&&!module.nodeType&&module,_v=ei&&ei.exports===Wc,xa=_v&&eo.process,vv=function(){try{var t=ei&&ei.require&&ei.require("util").types;return t||xa&&xa.binding&&xa.binding("util")}catch{}}(),Et=vv});var Uc,bv,po,wa=j(()=>{$c();Zn();fo();Uc=Et&&Et.isTypedArray,bv=Uc?Ut(Uc):Vc,po=bv});function jv(t,e){var r=pe(t),n=!r&&Xr(t),i=!r&&!n&&_r(t),o=!r&&!n&&!i&&po(t),s=r||n||i||o,a=s?kc(t.length,String):[],u=a.length;for(var l in t)(e||wv.call(t,l))&&!(s&&(l=="length"||i&&(l=="offset"||l=="parent")||o&&(l=="buffer"||l=="byteLength"||l=="byteOffset")||Qr(l,u)))&&a.push(l);return a}var xv,wv,ho,ja=j(()=>{Mc();uo();tt();co();io();wa();xv=Object.prototype,wv=xv.hasOwnProperty;ho=jv});function Av(t,e){return function(r){return t(e(r))}}var mo,Aa=j(()=>{mo=Av});var Cv,Gc,Qc=j(()=>{Aa();Cv=mo(Object.keys,Object),Gc=Cv});function Fv(t){if(!Jr(t))return Gc(t);var e=[];for(var r in Object(t))Ev.call(t,r)&&r!="constructor"&&e.push(r);return e}var Sv,Ev,qc,Yc=j(()=>{lo();Qc();Sv=Object.prototype,Ev=Sv.hasOwnProperty;qc=Fv});function Tv(t){return dt(t)?ho(t):qc(t)}var pt,Zr=j(()=>{ja();Yc();Yr();pt=Tv});function Dv(t){var e=[];if(t!=null)for(var r in Object(t))e.push(r);return e}var Jc,Xc=j(()=>{Jc=Dv});function Pv(t){if(!Ue(t))return Jc(t);var e=Jr(t),r=[];for(var n in t)n=="constructor"&&(e||!Iv.call(t,n))||r.push(n);return r}var Ov,Iv,Zc,ef=j(()=>{zt();lo();Xc();Ov=Object.prototype,Iv=Ov.hasOwnProperty;Zc=Pv});function kv(t){return dt(t)?ho(t,!0):Zc(t)}var en,go=j(()=>{ja();ef();Yr();en=kv});function Lv(t,e){if(pe(t))return!1;var r=typeof t;return r=="number"||r=="symbol"||r=="boolean"||t==null||Ct(t)?!0:Rv.test(t)||!Mv.test(t)||e!=null&&t in Object(e)}var Mv,Rv,tn,yo=j(()=>{tt();qn();Mv=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Rv=/^\w*$/;tn=Lv});var Nv,Ft,ti=j(()=>{Vt();Nv=Ge(Object,"create"),Ft=Nv});function Bv(){this.__data__=Ft?Ft(null):{},this.size=0}var tf,rf=j(()=>{ti();tf=Bv});function Kv(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e}var nf,of=j(()=>{nf=Kv});function $v(t){var e=this.__data__;if(Ft){var r=e[t];return r===zv?void 0:r}return Vv.call(e,t)?e[t]:void 0}var zv,Hv,Vv,sf,af=j(()=>{ti();zv="__lodash_hash_undefined__",Hv=Object.prototype,Vv=Hv.hasOwnProperty;sf=$v});function Gv(t){var e=this.__data__;return Ft?e[t]!==void 0:Uv.call(e,t)}var Wv,Uv,lf,uf=j(()=>{ti();Wv=Object.prototype,Uv=Wv.hasOwnProperty;lf=Gv});function qv(t,e){var r=this.__data__;return this.size+=this.has(t)?0:1,r[t]=Ft&&e===void 0?Qv:e,this}var Qv,cf,ff=j(()=>{ti();Qv="__lodash_hash_undefined__";cf=qv});function rn(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e{rf();of();af();uf();ff();rn.prototype.clear=tf;rn.prototype.delete=nf;rn.prototype.get=sf;rn.prototype.has=lf;rn.prototype.set=cf;Ca=rn});function Yv(){this.__data__=[],this.size=0}var pf,hf=j(()=>{pf=Yv});function Jv(t,e){for(var r=t.length;r--;)if($t(t[r][0],e))return r;return-1}var Gt,ri=j(()=>{Jn();Gt=Jv});function eb(t){var e=this.__data__,r=Gt(e,t);if(r<0)return!1;var n=e.length-1;return r==n?e.pop():Zv.call(e,r,1),--this.size,!0}var Xv,Zv,mf,gf=j(()=>{ri();Xv=Array.prototype,Zv=Xv.splice;mf=eb});function tb(t){var e=this.__data__,r=Gt(e,t);return r<0?void 0:e[r][1]}var yf,_f=j(()=>{ri();yf=tb});function rb(t){return Gt(this.__data__,t)>-1}var vf,bf=j(()=>{ri();vf=rb});function nb(t,e){var r=this.__data__,n=Gt(r,t);return n<0?(++this.size,r.push([t,e])):r[n][1]=e,this}var xf,wf=j(()=>{ri();xf=nb});function nn(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e{hf();gf();_f();bf();wf();nn.prototype.clear=pf;nn.prototype.delete=mf;nn.prototype.get=yf;nn.prototype.has=vf;nn.prototype.set=xf;Qt=nn});var ib,qt,_o=j(()=>{Vt();st();ib=Ge(ve,"Map"),qt=ib});function ob(){this.size=0,this.__data__={hash:new Ca,map:new(qt||Qt),string:new Ca}}var jf,Af=j(()=>{df();ni();_o();jf=ob});function sb(t){var e=typeof t;return e=="string"||e=="number"||e=="symbol"||e=="boolean"?t!=="__proto__":t===null}var Cf,Sf=j(()=>{Cf=sb});function ab(t,e){var r=t.__data__;return Cf(e)?r[typeof e=="string"?"string":"hash"]:r.map}var Yt,ii=j(()=>{Sf();Yt=ab});function lb(t){var e=Yt(this,t).delete(t);return this.size-=e?1:0,e}var Ef,Ff=j(()=>{ii();Ef=lb});function ub(t){return Yt(this,t).get(t)}var Tf,Df=j(()=>{ii();Tf=ub});function cb(t){return Yt(this,t).has(t)}var Of,If=j(()=>{ii();Of=cb});function fb(t,e){var r=Yt(this,t),n=r.size;return r.set(t,e),this.size+=r.size==n?0:1,this}var Pf,kf=j(()=>{ii();Pf=fb});function on(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e{Af();Ff();Df();If();kf();on.prototype.clear=jf;on.prototype.delete=Ef;on.prototype.get=Tf;on.prototype.has=Of;on.prototype.set=Pf;vr=on});function Sa(t,e){if(typeof t!="function"||e!=null&&typeof e!="function")throw new TypeError(db);var r=function(){var n=arguments,i=e?e.apply(this,n):n[0],o=r.cache;if(o.has(i))return o.get(i);var s=t.apply(this,n);return r.cache=o.set(i,s)||o,s};return r.cache=new(Sa.Cache||vr),r}var db,Mf,Rf=j(()=>{vo();db="Expected a function";Sa.Cache=vr;Mf=Sa});function hb(t){var e=Mf(t,function(n){return r.size===pb&&r.clear(),n}),r=e.cache;return e}var pb,Lf,Nf=j(()=>{Rf();pb=500;Lf=hb});var mb,gb,yb,Bf,Kf=j(()=>{Nf();mb=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,gb=/\\(\\)?/g,yb=Lf(function(t){var e=[];return t.charCodeAt(0)===46&&e.push(""),t.replace(mb,function(r,n,i,o){e.push(i?o.replace(gb,"$1"):n||r)}),e}),Bf=yb});function _b(t){return t==null?"":ec(t)}var bo,Ea=j(()=>{tc();bo=_b});function vb(t,e){return pe(t)?t:tn(t,e)?[t]:Bf(bo(t))}var xo,Fa=j(()=>{tt();yo();Kf();Ea();xo=vb});function xb(t){if(typeof t=="string"||Ct(t))return t;var e=t+"";return e=="0"&&1/t==-bb?"-0":e}var bb,Jt,oi=j(()=>{qn();bb=1/0;Jt=xb});function wb(t,e){e=xo(e,t);for(var r=0,n=e.length;t!=null&&r{Fa();oi();sn=wb});function jb(t,e,r){var n=t==null?void 0:sn(t,e);return n===void 0?r:n}var zf,Hf=j(()=>{wo();zf=jb});function Ab(t,e){for(var r=-1,n=e.length,i=t.length;++r{an=Ab});function Cb(t){return pe(t)||Xr(t)||!!(Vf&&t&&t[Vf])}var Vf,$f,Wf=j(()=>{yr();uo();tt();Vf=Te?Te.isConcatSpreadable:void 0;$f=Cb});function Uf(t,e,r,n,i){var o=-1,s=t.length;for(r||(r=$f),i||(i=[]);++o0&&r(a)?e>1?Uf(a,e-1,r,n,i):an(i,a):n||(i[i.length]=a)}return i}var Gf,Qf=j(()=>{jo();Wf();Gf=Uf});var Sb,Ao,Ta=j(()=>{Aa();Sb=mo(Object.getPrototypeOf,Object),Ao=Sb});function Eb(){this.__data__=new Qt,this.size=0}var qf,Yf=j(()=>{ni();qf=Eb});function Fb(t){var e=this.__data__,r=e.delete(t);return this.size=e.size,r}var Jf,Xf=j(()=>{Jf=Fb});function Tb(t){return this.__data__.get(t)}var Zf,ed=j(()=>{Zf=Tb});function Db(t){return this.__data__.has(t)}var td,rd=j(()=>{td=Db});function Ib(t,e){var r=this.__data__;if(r instanceof Qt){var n=r.__data__;if(!qt||n.length{ni();_o();vo();Ob=200;nd=Ib});function ln(t){var e=this.__data__=new Qt(t);this.size=e.size}var Xt,Co=j(()=>{ni();Yf();Xf();ed();rd();id();ln.prototype.clear=qf;ln.prototype.delete=Jf;ln.prototype.get=Zf;ln.prototype.has=td;ln.prototype.set=nd;Xt=ln});function Pb(t,e){return t&&Wt(e,pt(e),t)}var od,sd=j(()=>{Xn();Zr();od=Pb});function kb(t,e){return t&&Wt(e,en(e),t)}var ad,ld=j(()=>{Xn();go();ad=kb});function Rb(t,e){if(e)return t.slice();var r=t.length,n=dd?dd(r):new t.constructor(r);return t.copy(n),n}var ud,cd,Mb,fd,dd,pd,hd=j(()=>{st();ud=typeof exports=="object"&&exports&&!exports.nodeType&&exports,cd=ud&&typeof module=="object"&&module&&!module.nodeType&&module,Mb=cd&&cd.exports===ud,fd=Mb?ve.Buffer:void 0,dd=fd?fd.allocUnsafe:void 0;pd=Rb});function Lb(t,e){for(var r=-1,n=t==null?0:t.length,i=0,o=[];++r{md=Lb});function Nb(){return[]}var So,Da=j(()=>{So=Nb});var Bb,Kb,yd,zb,un,Eo=j(()=>{gd();Da();Bb=Object.prototype,Kb=Bb.propertyIsEnumerable,yd=Object.getOwnPropertySymbols,zb=yd?function(t){return t==null?[]:(t=Object(t),md(yd(t),function(e){return Kb.call(t,e)}))}:So,un=zb});function Hb(t,e){return Wt(t,un(t),e)}var _d,vd=j(()=>{Xn();Eo();_d=Hb});var Vb,$b,Fo,Oa=j(()=>{jo();Ta();Eo();Da();Vb=Object.getOwnPropertySymbols,$b=Vb?function(t){for(var e=[];t;)an(e,un(t)),t=Ao(t);return e}:So,Fo=$b});function Wb(t,e){return Wt(t,Fo(t),e)}var bd,xd=j(()=>{Xn();Oa();bd=Wb});function Ub(t,e,r){var n=e(t);return pe(t)?n:an(n,r(t))}var To,Ia=j(()=>{jo();tt();To=Ub});function Gb(t){return To(t,pt,un)}var si,Pa=j(()=>{Ia();Eo();Zr();si=Gb});function Qb(t){return To(t,en,Fo)}var wd,jd=j(()=>{Ia();Oa();go();wd=Qb});var qb,Do,Ad=j(()=>{Vt();st();qb=Ge(ve,"DataView"),Do=qb});var Yb,Oo,Cd=j(()=>{Vt();st();Yb=Ge(ve,"Promise"),Oo=Yb});var Jb,Io,Sd=j(()=>{Vt();st();Jb=Ge(ve,"Set"),Io=Jb});var Ed,Xb,Fd,Td,Dd,Od,Zb,ex,tx,rx,nx,br,Tt,ai=j(()=>{Ad();_o();Cd();Sd();cc();Wr();ma();Ed="[object Map]",Xb="[object Object]",Fd="[object Promise]",Td="[object Set]",Dd="[object WeakMap]",Od="[object DataView]",Zb=St(Do),ex=St(qt),tx=St(Oo),rx=St(Io),nx=St(no),br=at;(Do&&br(new Do(new ArrayBuffer(1)))!=Od||qt&&br(new qt)!=Ed||Oo&&br(Oo.resolve())!=Fd||Io&&br(new Io)!=Td||no&&br(new no)!=Dd)&&(br=function(t){var e=at(t),r=e==Xb?t.constructor:void 0,n=r?St(r):"";if(n)switch(n){case Zb:return Od;case ex:return Ed;case tx:return Fd;case rx:return Td;case nx:return Dd}return e});Tt=br});function sx(t){var e=t.length,r=new t.constructor(e);return e&&typeof t[0]=="string"&&ox.call(t,"index")&&(r.index=t.index,r.input=t.input),r}var ix,ox,Id,Pd=j(()=>{ix=Object.prototype,ox=ix.hasOwnProperty;Id=sx});var ax,cn,ka=j(()=>{st();ax=ve.Uint8Array,cn=ax});function lx(t){var e=new t.constructor(t.byteLength);return new cn(e).set(new cn(t)),e}var fn,Po=j(()=>{ka();fn=lx});function ux(t,e){var r=e?fn(t.buffer):t.buffer;return new t.constructor(r,t.byteOffset,t.byteLength)}var kd,Md=j(()=>{Po();kd=ux});function fx(t){var e=new t.constructor(t.source,cx.exec(t));return e.lastIndex=t.lastIndex,e}var cx,Rd,Ld=j(()=>{cx=/\w*$/;Rd=fx});function dx(t){return Bd?Object(Bd.call(t)):{}}var Nd,Bd,Kd,zd=j(()=>{yr();Nd=Te?Te.prototype:void 0,Bd=Nd?Nd.valueOf:void 0;Kd=dx});function px(t,e){var r=e?fn(t.buffer):t.buffer;return new t.constructor(r,t.byteOffset,t.length)}var Hd,Vd=j(()=>{Po();Hd=px});function Px(t,e,r){var n=t.constructor;switch(e){case wx:return fn(t);case hx:case mx:return new n(+t);case jx:return kd(t,r);case Ax:case Cx:case Sx:case Ex:case Fx:case Tx:case Dx:case Ox:case Ix:return Hd(t,r);case gx:return new n;case yx:case bx:return new n(t);case _x:return Rd(t);case vx:return new n;case xx:return Kd(t)}}var hx,mx,gx,yx,_x,vx,bx,xx,wx,jx,Ax,Cx,Sx,Ex,Fx,Tx,Dx,Ox,Ix,$d,Wd=j(()=>{Po();Md();Ld();zd();Vd();hx="[object Boolean]",mx="[object Date]",gx="[object Map]",yx="[object Number]",_x="[object RegExp]",vx="[object Set]",bx="[object String]",xx="[object Symbol]",wx="[object ArrayBuffer]",jx="[object DataView]",Ax="[object Float32Array]",Cx="[object Float64Array]",Sx="[object Int8Array]",Ex="[object Int16Array]",Fx="[object Int32Array]",Tx="[object Uint8Array]",Dx="[object Uint8ClampedArray]",Ox="[object Uint16Array]",Ix="[object Uint32Array]";$d=Px});function kx(t){return typeof t.constructor=="function"&&!Jr(t)?dc(Ao(t)):{}}var Ud,Gd=j(()=>{pc();Ta();lo();Ud=kx});function Rx(t){return Ke(t)&&Tt(t)==Mx}var Mx,Qd,qd=j(()=>{ai();Kt();Mx="[object Map]";Qd=Rx});var Yd,Lx,Jd,Xd=j(()=>{qd();Zn();fo();Yd=Et&&Et.isMap,Lx=Yd?Ut(Yd):Qd,Jd=Lx});function Bx(t){return Ke(t)&&Tt(t)==Nx}var Nx,Zd,ep=j(()=>{ai();Kt();Nx="[object Set]";Zd=Bx});var tp,Kx,rp,np=j(()=>{ep();Zn();fo();tp=Et&&Et.isSet,Kx=tp?Ut(tp):Zd,rp=Kx});function ko(t,e,r,n,i,o){var s,a=e&zx,u=e&Hx,l=e&Vx;if(r&&(s=i?r(t,n,i,o):r(t)),s!==void 0)return s;if(!Ue(t))return t;var f=pe(t);if(f){if(s=Id(t),!a)return gc(t,s)}else{var p=Tt(t),c=p==op||p==Qx;if(_r(t))return pd(t,a);if(p==sp||p==ip||c&&!i){if(s=u||c?{}:Ud(t),!a)return u?bd(t,ad(s,t)):_d(t,od(s,t))}else{if(!se[p])return i?t:{};s=$d(t,p,a)}}o||(o=new Xt);var h=o.get(t);if(h)return h;o.set(t,s),rp(t)?t.forEach(function(v){s.add(ko(v,e,r,v,t,o))}):Jd(t)&&t.forEach(function(v,d){s.set(d,ko(v,e,r,d,t,o))});var w=l?u?wd:si:u?en:pt,x=f?void 0:w(t);return Sc(x||t,function(v,d){x&&(d=v,v=t[d]),so(s,d,ko(v,e,r,d,t,o))}),s}var zx,Hx,Vx,ip,$x,Wx,Ux,Gx,op,Qx,qx,Yx,sp,Jx,Xx,Zx,ew,tw,rw,nw,iw,ow,sw,aw,lw,uw,cw,fw,dw,se,ap,lp=j(()=>{Co();Ec();_a();sd();ld();hd();yc();vd();xd();Pa();jd();ai();Pd();Wd();Gd();tt();co();Xd();zt();np();Zr();go();zx=1,Hx=2,Vx=4,ip="[object Arguments]",$x="[object Array]",Wx="[object Boolean]",Ux="[object Date]",Gx="[object Error]",op="[object Function]",Qx="[object GeneratorFunction]",qx="[object Map]",Yx="[object Number]",sp="[object Object]",Jx="[object RegExp]",Xx="[object Set]",Zx="[object String]",ew="[object Symbol]",tw="[object WeakMap]",rw="[object ArrayBuffer]",nw="[object DataView]",iw="[object Float32Array]",ow="[object Float64Array]",sw="[object Int8Array]",aw="[object Int16Array]",lw="[object Int32Array]",uw="[object Uint8Array]",cw="[object Uint8ClampedArray]",fw="[object Uint16Array]",dw="[object Uint32Array]",se={};se[ip]=se[$x]=se[rw]=se[nw]=se[Wx]=se[Ux]=se[iw]=se[ow]=se[sw]=se[aw]=se[lw]=se[qx]=se[Yx]=se[sp]=se[Jx]=se[Xx]=se[Zx]=se[ew]=se[uw]=se[cw]=se[fw]=se[dw]=!0;se[Gx]=se[op]=se[tw]=!1;ap=ko});function mw(t){return ap(t,pw|hw)}var pw,hw,li,up=j(()=>{lp();pw=1,hw=4;li=mw});function yw(t){return this.__data__.set(t,gw),this}var gw,cp,fp=j(()=>{gw="__lodash_hash_undefined__";cp=yw});function _w(t){return this.__data__.has(t)}var dp,pp=j(()=>{dp=_w});function Mo(t){var e=-1,r=t==null?0:t.length;for(this.__data__=new vr;++e{vo();fp();pp();Mo.prototype.add=Mo.prototype.push=cp;Mo.prototype.has=dp;hp=Mo});function vw(t,e){for(var r=-1,n=t==null?0:t.length;++r{gp=vw});function bw(t,e){return t.has(e)}var _p,vp=j(()=>{_p=bw});function jw(t,e,r,n,i,o){var s=r&xw,a=t.length,u=e.length;if(a!=u&&!(s&&u>a))return!1;var l=o.get(t),f=o.get(e);if(l&&f)return l==e&&f==t;var p=-1,c=!0,h=r&ww?new hp:void 0;for(o.set(t,e),o.set(e,t);++p{mp();yp();vp();xw=1,ww=2;Ro=jw});function Aw(t){var e=-1,r=Array(t.size);return t.forEach(function(n,i){r[++e]=[i,n]}),r}var bp,xp=j(()=>{bp=Aw});function Cw(t){var e=-1,r=Array(t.size);return t.forEach(function(n){r[++e]=n}),r}var wp,jp=j(()=>{wp=Cw});function Bw(t,e,r,n,i,o,s){switch(r){case Nw:if(t.byteLength!=e.byteLength||t.byteOffset!=e.byteOffset)return!1;t=t.buffer,e=e.buffer;case Lw:return!(t.byteLength!=e.byteLength||!o(new cn(t),new cn(e)));case Fw:case Tw:case Iw:return $t(+t,+e);case Dw:return t.name==e.name&&t.message==e.message;case Pw:case Mw:return t==e+"";case Ow:var a=bp;case kw:var u=n&Sw;if(a||(a=wp),t.size!=e.size&&!u)return!1;var l=s.get(t);if(l)return l==e;n|=Ew,s.set(t,e);var f=Ro(a(t),a(e),n,i,o,s);return s.delete(t),f;case Rw:if(Ra)return Ra.call(t)==Ra.call(e)}return!1}var Sw,Ew,Fw,Tw,Dw,Ow,Iw,Pw,kw,Mw,Rw,Lw,Nw,Ap,Ra,Cp,Sp=j(()=>{yr();ka();Jn();Ma();xp();jp();Sw=1,Ew=2,Fw="[object Boolean]",Tw="[object Date]",Dw="[object Error]",Ow="[object Map]",Iw="[object Number]",Pw="[object RegExp]",kw="[object Set]",Mw="[object String]",Rw="[object Symbol]",Lw="[object ArrayBuffer]",Nw="[object DataView]",Ap=Te?Te.prototype:void 0,Ra=Ap?Ap.valueOf:void 0;Cp=Bw});function Vw(t,e,r,n,i,o){var s=r&Kw,a=si(t),u=a.length,l=si(e),f=l.length;if(u!=f&&!s)return!1;for(var p=u;p--;){var c=a[p];if(!(s?c in e:Hw.call(e,c)))return!1}var h=o.get(t),w=o.get(e);if(h&&w)return h==e&&w==t;var x=!0;o.set(t,e),o.set(e,t);for(var v=s;++p{Pa();Kw=1,zw=Object.prototype,Hw=zw.hasOwnProperty;Ep=Vw});function Uw(t,e,r,n,i,o){var s=pe(t),a=pe(e),u=s?Dp:Tt(t),l=a?Dp:Tt(e);u=u==Tp?Lo:u,l=l==Tp?Lo:l;var f=u==Lo,p=l==Lo,c=u==l;if(c&&_r(t)){if(!_r(e))return!1;s=!0,f=!1}if(c&&!f)return o||(o=new Xt),s||po(t)?Ro(t,e,r,n,i,o):Cp(t,e,u,r,n,i,o);if(!(r&$w)){var h=f&&Op.call(t,"__wrapped__"),w=p&&Op.call(e,"__wrapped__");if(h||w){var x=h?t.value():t,v=w?e.value():e;return o||(o=new Xt),i(x,v,r,n,o)}}return c?(o||(o=new Xt),Ep(t,e,r,n,i,o)):!1}var $w,Tp,Dp,Lo,Ww,Op,Ip,Pp=j(()=>{Co();Ma();Sp();Fp();ai();tt();co();wa();$w=1,Tp="[object Arguments]",Dp="[object Array]",Lo="[object Object]",Ww=Object.prototype,Op=Ww.hasOwnProperty;Ip=Uw});function kp(t,e,r,n,i){return t===e?!0:t==null||e==null||!Ke(t)&&!Ke(e)?t!==t&&e!==e:Ip(t,e,r,n,kp,i)}var No,La=j(()=>{Pp();Kt();No=kp});function qw(t,e,r,n){var i=r.length,o=i,s=!n;if(t==null)return!o;for(t=Object(t);i--;){var a=r[i];if(s&&a[2]?a[1]!==t[a[0]]:!(a[0]in t))return!1}for(;++i{Co();La();Gw=1,Qw=2;Mp=qw});function Yw(t){return t===t&&!Ue(t)}var Bo,Na=j(()=>{zt();Bo=Yw});function Jw(t){for(var e=pt(t),r=e.length;r--;){var n=e[r],i=t[n];e[r]=[n,i,Bo(i)]}return e}var Lp,Np=j(()=>{Na();Zr();Lp=Jw});function Xw(t,e){return function(r){return r==null?!1:r[t]===e&&(e!==void 0||t in Object(r))}}var Ko,Ba=j(()=>{Ko=Xw});function Zw(t){var e=Lp(t);return e.length==1&&e[0][2]?Ko(e[0][0],e[0][1]):function(r){return r===t||Mp(r,t,e)}}var Bp,Kp=j(()=>{Rp();Np();Ba();Bp=Zw});function e0(t,e){return t!=null&&e in Object(t)}var zp,Hp=j(()=>{zp=e0});function t0(t,e,r){e=xo(e,t);for(var n=-1,i=e.length,o=!1;++n{Fa();uo();tt();io();ao();oi();Vp=t0});function r0(t,e){return t!=null&&Vp(t,e,zp)}var Wp,Up=j(()=>{Hp();$p();Wp=r0});function o0(t,e){return tn(t)&&Bo(e)?Ko(Jt(t),e):function(r){var n=zf(r,t);return n===void 0&&n===e?Wp(r,t):No(e,n,n0|i0)}}var n0,i0,Gp,Qp=j(()=>{La();Hf();Up();yo();Na();Ba();oi();n0=1,i0=2;Gp=o0});function s0(t){return function(e){return e==null?void 0:e[t]}}var qp,Yp=j(()=>{qp=s0});function a0(t){return function(e){return sn(e,t)}}var Jp,Xp=j(()=>{wo();Jp=a0});function l0(t){return tn(t)?qp(Jt(t)):Jp(t)}var Zp,eh=j(()=>{Yp();Xp();yo();oi();Zp=l0});function u0(t){return typeof t=="function"?t:t==null?Ht:typeof t=="object"?pe(t)?Gp(t[0],t[1]):Bp(t):Zp(t)}var th,rh=j(()=>{Kp();Qp();Yn();tt();eh();th=u0});function c0(t){return function(e,r,n){for(var i=-1,o=Object(e),s=n(e),a=s.length;a--;){var u=s[t?a:++i];if(r(o[u],u,o)===!1)break}return e}}var nh,ih=j(()=>{nh=c0});var f0,oh,sh=j(()=>{ih();f0=nh(),oh=f0});function d0(t,e){return t&&oh(t,e,pt)}var ah,lh=j(()=>{sh();Zr();ah=d0});function p0(t,e){return function(r,n){if(r==null)return r;if(!dt(r))return t(r,n);for(var i=r.length,o=e?i:-1,s=Object(r);(e?o--:++o{Yr();uh=p0});var h0,fh,dh=j(()=>{lh();ch();h0=uh(ah),fh=h0});function g0(t){return t=bo(t),t&&m0.test(t)?t.replace(ph,"\\$&"):t}var ph,m0,ui,hh=j(()=>{Ea();ph=/[\\^$.*+?()[\]{}|]/g,m0=RegExp(ph.source);ui=g0});function y0(t,e){var r=-1,n=dt(t)?Array(t.length):[];return fh(t,function(i,o,s){n[++r]=e(i,o,s)}),n}var mh,gh=j(()=>{dh();Yr();mh=y0});function _0(t,e){var r=t.length;for(t.sort(e);r--;)t[r]=t[r].value;return t}var yh,_h=j(()=>{yh=_0});function v0(t,e){if(t!==e){var r=t!==void 0,n=t===null,i=t===t,o=Ct(t),s=e!==void 0,a=e===null,u=e===e,l=Ct(e);if(!a&&!l&&!o&&t>e||o&&s&&u&&!a&&!l||n&&s&&u||!r&&u||!i)return 1;if(!n&&!o&&!l&&t{qn();vh=v0});function b0(t,e,r){for(var n=-1,i=t.criteria,o=e.criteria,s=i.length,a=r.length;++n=a)return u;var l=r[n];return u*(l=="desc"?-1:1)}}return t.index-e.index}var xh,wh=j(()=>{bh();xh=b0});function x0(t,e,r){e.length?e=Ur(e,function(o){return pe(o)?function(s){return sn(s,o.length===1?o[0]:o)}:o}):e=[Ht];var n=-1;e=Ur(e,Ut(th));var i=mh(t,function(o,s,a){var u=Ur(e,function(l){return l(o)});return{criteria:u,index:++n,value:o}});return yh(i,function(o,s){return xh(o,s,r)})}var jh,Ah=j(()=>{pa();wo();rh();gh();_h();Zn();wh();Yn();tt();jh=x0});var w0,Ka,Ch=j(()=>{Qf();Ah();Ic();Pc();w0=Oc(function(t,e){if(t==null)return[];var r=e.length;return r>1&&va(t,e[0],e[1])?e=[]:r>2&&va(e[0],e[1],e[2])&&(e=[e[0]]),jh(t,Gf(e,1),[])}),Ka=w0});var ci=j(()=>{up();hh();Ch();});function Zt(t,e){try{return t.replace(new RegExp(e.map(r=>`\\b${ui(r.match)}\\b`).join("|"),"giu"),r=>e.find(i=>r.match(new RegExp(`\\b${ui(i.match)}\\b`,"giu")))?`${r}`:r)}catch(r){return console.error("Omnisearch - Error in highlightText()",r),t}}function j0(t){return t.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll('"',""").replaceAll("'","'")}function dn(t){if(!t.length)return/^$/g;t.sort((r,n)=>n.length-r.length);let e="("+(Gi()?"":T.splitCamelCase?`^|${la.source}|-|[A-Z]`:`^|${la.source}|-`)+`)(${t.map(r=>ui(r)).join("|")})`;return new RegExp(`${e}`,"gu")}function zo(t,e,r){t=t.toLowerCase();let n=new Date().getTime(),i=null,o=[],s=0;for(;(i=e.exec(t))!==null;){if(++s>=100||new Date().getTime()-n>50){Nu("Stopped getMatches at",s,"results");break}let a=i[2];a&&i.index>=0&&o.push({match:a,offset:i.index+1})}if(r&&r.query.text.length>1){let a=t.indexOf(r.segmentsToStr());a>-1&&o.find(u=>u.offset===a)&&(o=o.filter(u=>u.offset!==a),o.unshift({offset:a,match:r.segmentsToStr()}))}return o}function pn(t,e){try{let r=e??-1,n=Math.max(0,r-Au),i=Math.min(t.length,r+Vn);if(r>-1?t=(n>0?"\u2026":"")+t.slice(n,i).trim()+(ia).join(` `);let s=t.lastIndexOf(` -`,r-n);s>0&&(t=t.slice(s))}return t=Fd(t),I.renderLineReturnInExcerpts&&(t=t.trim().replaceAll(` -`,"
")),t}catch(r){return new ct.Notice("Omnisearch - Error while creating excerpt, see developer console"),console.error("Omnisearch - Error while creating excerpt"),console.error(r),""}}function Mo(t){return t.replace(/(\*|_)+(.+?)(\*|_)+/g,(e,r,n)=>n)}function Pa(t){return t?.frontmatter?(0,ct.parseFrontMatterAliases)(t.frontmatter)??[]:[]}function Ma(t){let e=t?(0,ct.getAllTags)(t)??[]:[];return e=[...new Set(e.reduce((r,n)=>[...r,...n.split("/").filter(i=>i).map(i=>i.startsWith("#")?i:`#${i}`),n],[]))],e}function ft(t){return t==null?"":(t=t.replaceAll("`","[__omnisearch__backtick__]"),t=t.normalize("NFD").replace(/\p{Diacritic}/gu,""),t=t.replaceAll("[__omnisearch__backtick__]","`"),t)}function Qt(){return ct.Platform.isMacOS?"\u2318":"ctrl"}function cn(t){let e=!!et(),r=e&&I.PDFIndexing,n=e&&I.imagesIndexing;return Ro(t)||dn(t)||r&&fn(t)||n&&Zn(t)}function Zn(t){let e=qt(t);return e==="png"||e==="jpg"||e==="jpeg"}function fn(t){return qt(t)==="pdf"}function Ro(t){return[...I.indexedFileTypes,"md"].some(e=>t.endsWith(`.${e}`))}function dn(t){return t.endsWith(".canvas")}function qt(t){let e=t.split(".");return e[e.length-1]??""}function Ra(t){return ct.Platform.isMobileApp?(0,Oa.md5)(t.toString()):(0,Ia.createHash)("md5").update(t).digest("hex")}function La(t,e){let r=[],n=0,i=t.length;for(;no.path===t);if(!e)throw new Error(`Invalid file path: "${t}"`);let r=null,n=et();if(Ro(t))r=await app.vault.cachedRead(e);else if(dn(t)){let o=JSON.parse(await app.vault.cachedRead(e)),s=[];for(let a of o.nodes)a.type==="text"?s.push(a.text):a.type==="file"&&s.push(a.file);for(let a of o.edges.filter(l=>!!l.label))s.push(a.label);r=s.join(`\r -`)}else if(n?.canFileBeExtracted(t))r=await n.extractText(e);else throw new Error(`Unsupported file type: "${t}"`);r==null&&(console.warn(`Omnisearch: ${r} content for file`,e.path),r=""),r=ft(r);let i=app.metadataCache.getFileCache(e);if(i&&i.frontmatter?.["excalidraw-plugin"]){let o=i.sections?.filter(s=>s.type==="comment")??[];for(let{start:s,end:a}of o.map(l=>l.position))r=r.substring(0,s.offset-1)+r.substring(a.offset)}return{basename:ft(e.basename),content:r,path:e.path,mtime:e.stat.mtime,tags:Ma(i),aliases:Pa(i).join(""),headings1:i?Jn(i,1).join(" "):"",headings2:i?Jn(i,2).join(" "):"",headings3:i?Jn(i,3).join(" "):""}}var Va=class{constructor(){this.nextQueryIsEmpty=!1;this.documents=new Map}async addToLiveCache(e){try{let r=await Dd(e);if(!r.path){console.error(`Missing .path field in IndexedDocument "${r.basename}", skipping`);return}this.documents.set(e,r)}catch(r){console.warn(`Omnisearch: Error while adding "${e}" to live cache`,r),this.removeFromLiveCache(e)}}removeFromLiveCache(e){this.documents.delete(e)}async getDocument(e){return this.documents.has(e)?this.documents.get(e):(fe("Generating IndexedDocument from",e),await this.addToLiveCache(e),this.documents.get(e))}async addToSearchHistory(e){if(!e){this.nextQueryIsEmpty=!0;return}this.nextQueryIsEmpty=!1;let r=await Be.searchHistory.toArray();r=r.filter(n=>n.query!==e).reverse(),r.unshift({query:e}),r=r.slice(0,10),await Be.searchHistory.clear(),await Be.searchHistory.bulkAdd(r)}async getSearchHistory(){let e=(await Be.searchHistory.toArray()).reverse().map(r=>r.query);return this.nextQueryIsEmpty&&e.unshift(""),e}getDocumentsChecksum(e){return Ra(JSON.stringify(e.sort((r,n)=>r.pathn.path?1:0)))}async getMinisearchCache(){try{return(await Be.minisearch.toArray())[0]}catch(e){return new za.Notice("Omnisearch - Cache missing or invalid. Some freezes may occur while Omnisearch indexes your vault."),console.error("Omnisearch - Error while loading Minisearch cache"),console.error(e),null}}async writeMinisearchCache(e,r){let n=Array.from(r).map(([i,o])=>({path:i,mtime:o}));await Be.minisearch.clear(),await Be.minisearch.add({date:new Date().toISOString(),paths:n,data:e.toJSON()}),console.log("Omnisearch - Search cache written")}},we=new Va;function Td(t){let e,r,n,i,o,s,a,l,u=t[8].default,d=tr(u,t,t[7],null);return{c(){e=R("div"),r=R("div"),n=R("input"),o=W(),d&&d.c(),B(n,"class","prompt-input"),B(n,"placeholder",t[0]),B(n,"spellcheck","false"),B(n,"type","text"),B(r,"class","omnisearch-input-field"),B(e,"class","omnisearch-input-container")},m(f,c){$(f,e,c),T(e,r),T(r,n),t[9](n),Ii(n,t[1]),T(e,o),d&&d.m(e,null),s=!0,a||(l=[Ke(n,"input",t[10]),Cs(i=t[3].call(null,n)),Ke(n,"compositionend",t[11]),Ke(n,"compositionstart",t[12]),Ke(n,"input",t[4])],a=!0)},p(f,[c]){(!s||c&1)&&B(n,"placeholder",f[0]),c&2&&n.value!==f[1]&&Ii(n,f[1]),d&&d.p&&(!s||c&128)&&nr(d,u,f,f[7],s?rr(u,f[7],c,null):ir(f[7]),null)},i(f){s||(ee(d,f),s=!0)},o(f){re(d,f),s=!1},d(f){f&&H(e),t[9](null),d&&d.d(f),a=!1,Ue(l)}}}function Id(t,e,r){let{$$slots:n={},$$scope:i}=e,{initialValue:o=""}=e,{placeholder:s=""}=e,a=!1,l="",u,d=Pi();function f(p){r(1,l=p)}function c(p){p&&!a&&!l&&(a=!0,r(1,l=p),y())}function y(p){mt().then(()=>(u.focus(),mt())).then(()=>{u.select()})}let w=(0,Ha.debounce)(()=>{we.addToSearchHistory(""),d("input",l)},300);function x(p){tt[p?"unshift":"push"](()=>{u=p,r(2,u)})}function b(){l=this.value,r(1,l)}let h=p=>ko(!1),_=p=>ko(!0);return t.$$set=p=>{"initialValue"in p&&r(5,o=p.initialValue),"placeholder"in p&&r(0,s=p.placeholder),"$$scope"in p&&r(7,i=p.$$scope)},t.$$.update=()=>{if(t.$$.dirty&32){e:c(o)}},[s,l,u,y,w,o,f,i,n,x,b,h,_]}var $a=class extends Ae{constructor(e){super();De(this,e,Id,Td,be,{initialValue:5,placeholder:0,setInputValue:6})}get setInputValue(){return this.$$.ctx[6]}},ei=$a;function Od(t){let e,r,n,i,o=t[1].default,s=tr(o,t,t[0],null);return{c(){e=R("div"),s&&s.c(),B(e,"class","prompt-results")},m(a,l){$(a,e,l),s&&s.m(e,null),r=!0,n||(i=Ke(e,"mousedown",kd),n=!0)},p(a,[l]){s&&s.p&&(!r||l&1)&&nr(s,o,a,a[0],r?rr(o,a[0],l,null):ir(a[0]),null)},i(a){r||(ee(s,a),r=!0)},o(a){re(s,a),r=!1},d(a){a&&H(e),s&&s.d(a),n=!1,i()}}}var kd=t=>t.preventDefault();function Pd(t,e,r){let{$$slots:n={},$$scope:i}=e;return t.$$set=o=>{"$$scope"in o&&r(0,i=o.$$scope)},[i,n]}var Wa=class extends Ae{constructor(e){super();De(this,e,Pd,Od,be,{})}},ti=Wa;var Lo=Fe(require("obsidian"));async function ri(t,e=!1){let r=St(t.foundWords);r.exec(t.content);let n=r.lastIndex,i=!1;app.workspace.iterateAllLeaves(a=>{a.view instanceof Lo.MarkdownView&&!e&&a.getViewState().state?.file===t.path&&a.getViewState()?.pinned&&(app.workspace.setActiveLeaf(a,{focus:!0}),i=!0)}),i||await app.workspace.openLinkText(t.path,"",e);let o=app.workspace.getActiveViewOfType(Lo.MarkdownView);if(!o)return;let s=o.editor.offsetToPos(n);s.ch=0,o.editor.setCursor(s),o.editor.scrollIntoView({from:{line:s.line-10,ch:0},to:{line:s.line+10,ch:0}})}async function Ua(t,e=!1){try{let r;switch(app.vault.getConfig("newFileLocation")){case"current":r=(app.workspace.getActiveFile()?.parent?.path??"")+"/";break;case"folder":r=app.vault.getConfig("newFileFolderPath")+"/";break;default:r="";break}await app.workspace.openLinkText(`${r}${t}.md`,"",e)}catch(r){throw r.message="OmniSearch - Could not create note: "+r.message,console.error(r),r}}function Md(t){let e;return{c(){e=R("span"),e.innerHTML='',B(e,"class","suggestion-flair"),B(e,"aria-label","Not created yet, select to create")},m(r,n){$(r,e,n)},p:ce,i:ce,o:ce,d(r){r&&H(e)}}}function Rd(t){"use strict";return[]}var Ga=class extends Ae{constructor(e){super();De(this,e,Rd,Md,be,{})}},Qa=Ga;function qa(t){let e,r;return e=new Qa({}),{c(){Le(e.$$.fragment)},m(n,i){ke(e,n,i),r=!0},i(n){r||(ee(e.$$.fragment,n),r=!0)},o(n){re(e.$$.fragment,n),r=!1},d(n){Ee(e,n)}}}function Ld(t){let e,r,n,i,o,s=t[2]&&qa(t),a=t[4].default,l=tr(a,t,t[3],null);return{c(){e=R("div"),s&&s.c(),r=W(),l&&l.c(),B(e,"data-result-id",t[0]),B(e,"class","suggestion-item omnisearch-result"),Oi(e,"is-selected",t[1])},m(u,d){$(u,e,d),s&&s.m(e,null),T(e,r),l&&l.m(e,null),n=!0,i||(o=[Ke(e,"mousemove",t[5]),Ke(e,"click",t[6]),Ke(e,"auxclick",t[7])],i=!0)},p(u,[d]){u[2]?s?d&4&&ee(s,1):(s=qa(u),s.c(),ee(s,1),s.m(e,r)):s&&(Lt(),re(s,1,1,()=>{s=null}),Bt()),l&&l.p&&(!n||d&8)&&nr(l,a,u,u[3],n?rr(a,u[3],d,null):ir(u[3]),null),(!n||d&1)&&B(e,"data-result-id",u[0]),(!n||d&2)&&Oi(e,"is-selected",u[1])},i(u){n||(ee(s),ee(l,u),n=!0)},o(u){re(s),re(l,u),n=!1},d(u){u&&H(e),s&&s.d(),l&&l.d(u),i=!1,Ue(o)}}}function Bd(t,e,r){let{$$slots:n={},$$scope:i}=e,{id:o}=e,{selected:s=!1}=e,{glyph:a=!1}=e;function l(f){$e.call(this,t,f)}function u(f){$e.call(this,t,f)}function d(f){$e.call(this,t,f)}return t.$$set=f=>{"id"in f&&r(0,o=f.id),"selected"in f&&r(1,s=f.selected),"glyph"in f&&r(2,a=f.glyph),"$$scope"in f&&r(3,i=f.$$scope)},[o,s,a,i,n,l,u,d]}var Ya=class extends Ae{constructor(e){super();De(this,e,Bd,Ld,be,{id:0,selected:1,glyph:2})}},ni=Ya;var vr=Fe(require("obsidian"));function Ja(t){let e,r=t[1].matches.length+"",n,i,o=(t[1].matches.length>1?"matches":"match")+"",s;return{c(){e=R("span"),n=xe(r),i=xe("\xA0"),s=xe(o),B(e,"class","omnisearch-result__counter")},m(a,l){$(a,e,l),T(e,n),T(e,i),T(e,s)},p(a,l){l&2&&r!==(r=a[1].matches.length+"")&&Ge(n,r),l&2&&o!==(o=(a[1].matches.length>1?"matches":"match")+"")&&Ge(s,o)},d(a){a&&H(e)}}}function Xa(t){let e,r,n,i,o;return{c(){e=R("div"),r=R("span"),n=W(),i=R("span"),o=xe(t[6]),B(e,"class","omnisearch-result__folder-path")},m(s,a){$(s,e,a),T(e,r),t[12](r),T(e,n),T(e,i),T(i,o)},p(s,a){a&64&&Ge(o,s[6])},d(s){s&&H(e),t[12](null)}}}function Za(t){let e,r=t[8].replace(t[9],At)+"";return{c(){e=R("div"),B(e,"class","omnisearch-result__body")},m(n,i){$(n,e,i),e.innerHTML=r},p(n,i){i&768&&r!==(r=n[8].replace(n[9],At)+"")&&(e.innerHTML=r)},d(n){n&&H(e)}}}function el(t){let e,r,n;return{c(){e=R("div"),r=R("img"),ze(r,"width","100px"),Ti(r.src,n=t[5])||B(r,"src",n),B(r,"alt",""),B(e,"class","omnisearch-result__image-container")},m(i,o){$(i,e,o),T(e,r)},p(i,o){o&32&&!Ti(r.src,n=i[5])&&B(r,"src",n)},d(i){i&&H(e)}}}function Nd(t){let e,r,n,i,o,s,a=t[2].replace(t[9],At)+"",l,u,d,f=qt(t[1].path)+"",c,y,w,x,b,h,_=t[1].matches.length>0&&Ja(t),p=t[6]&&Xa(t),m=t[10]&&Za(t),v=t[5]&&el(t);return{c(){e=R("div"),r=R("div"),n=R("span"),i=R("span"),o=W(),s=R("span"),l=W(),u=R("span"),d=xe("."),c=xe(f),y=W(),_&&_.c(),w=W(),p&&p.c(),x=W(),b=R("div"),m&&m.c(),h=W(),v&&v.c(),B(u,"class","omnisearch-result__extension"),B(n,"class","omnisearch-result__title"),B(r,"class","omnisearch-result__title-container"),ze(b,"display","flex"),ze(b,"flex-direction","row")},m(g,j){$(g,e,j),T(e,r),T(r,n),T(n,i),t[11](i),T(n,o),T(n,s),s.innerHTML=a,T(n,l),T(n,u),T(u,d),T(u,c),T(n,y),_&&_.m(n,null),T(e,w),p&&p.m(e,null),T(e,x),T(e,b),m&&m.m(b,null),T(b,h),v&&v.m(b,null)},p(g,j){j&516&&a!==(a=g[2].replace(g[9],At)+"")&&(s.innerHTML=a),j&2&&f!==(f=qt(g[1].path)+"")&&Ge(c,f),g[1].matches.length>0?_?_.p(g,j):(_=Ja(g),_.c(),_.m(n,null)):_&&(_.d(1),_=null),g[6]?p?p.p(g,j):(p=Xa(g),p.c(),p.m(e,x)):p&&(p.d(1),p=null),g[10]?m?m.p(g,j):(m=Za(g),m.c(),m.m(b,h)):m&&(m.d(1),m=null),g[5]?v?v.p(g,j):(v=el(g),v.c(),v.m(b,null)):v&&(v.d(1),v=null)},d(g){g&&H(e),t[11](null),_&&_.d(),p&&p.d(),m&&m.d(),v&&v.d()}}}function Kd(t){let e,r;return e=new ni({props:{glyph:t[7],id:t[1].path,selected:t[0],$$slots:{default:[Nd]},$$scope:{ctx:t}}}),e.$on("click",t[13]),e.$on("auxclick",t[14]),e.$on("mousemove",t[15]),{c(){Le(e.$$.fragment)},m(n,i){ke(e,n,i),r=!0},p(n,[i]){let o={};i&128&&(o.glyph=n[7]),i&2&&(o.id=n[1].path),i&1&&(o.selected=n[0]),i&67454&&(o.$$scope={dirty:i,ctx:n}),e.$set(o)},i(n){r||(ee(e.$$.fragment,n),r=!0)},o(n){re(e.$$.fragment,n),r=!1},d(n){Ee(e,n)}}}function zd(t,e,r){let n,i,o,s;_n(t,Ut,p=>r(10,s=p));let{selected:a=!1}=e,{note:l}=e,u=null,d="",f="",c,y;function w(p){tt[p?"unshift":"push"](()=>{y=p,r(4,y)})}function x(p){tt[p?"unshift":"push"](()=>{c=p,r(3,c)})}function b(p){$e.call(this,t,p)}function h(p){$e.call(this,t,p)}function _(p){$e.call(this,t,p)}t.$$set=p=>{"selected"in p&&r(0,a=p.selected),"note"in p&&r(1,l=p.note)},t.$$.update=()=>{if(t.$$.dirty&2){e:if(r(5,u=null),Zn(l.path)){let p=app.vault.getFiles().find(m=>m.path===l.path);p&&r(5,u=app.vault.getResourcePath(p))}}if(t.$$.dirty&2){e:r(9,n=St(l.foundWords))}if(t.$$.dirty&2){e:r(8,i=yr(l.content,l.matches[0]?.offset??-1))}if(t.$$.dirty&30){e:r(2,d=l.basename),r(6,f=ka(l.path)),I.ignoreDiacritics&&r(2,d=ft(d)),c&&(0,vr.setIcon)(c,"folder-open"),y&&(Zn(l.path)?(0,vr.setIcon)(y,"image"):fn(l.path)?(0,vr.setIcon)(y,"file-text"):dn(l.path)?(0,vr.setIcon)(y,"layout-dashboard"):(0,vr.setIcon)(y,"file"))}};e:r(7,o=!1);return[a,l,d,c,y,u,f,o,i,n,s,w,x,b,h,_]}var tl=class extends Ae{constructor(e){super();De(this,e,zd,Kd,be,{selected:0,note:1})}},rl=tl;var sl=Fe(ol()),Bo=["ext","path"],Yt=class{constructor(e=""){this.extensions=[];I.ignoreDiacritics&&(e=ft(e));let r=(0,sl.parse)(e.toLowerCase(),{tokenize:!0,keywords:Bo});r.text=r.text??[],r.exclude=r.exclude??{},r.exclude.text=r.exclude.text??[],Array.isArray(r.exclude.text)||(r.exclude.text=[r.exclude.text]);for(let n of Bo){let i=r[n];i&&(r[n]=Array.isArray(i)?i:[i]);let o=r.exclude[n];o&&(r.exclude[n]=Array.isArray(o)?o:[o])}this.query=r,this.extensions=this.query.ext??[]}isEmpty(){for(let e of Bo)if(this.query[e]?.length||this.query.text.length)return!1;return!0}segmentsToStr(){return this.query.text.join(" ")}getTags(){return this.query.text.filter(e=>e.startsWith("#"))}getTagsWithoutHashtag(){return this.getTags().map(e=>e.replace(/^#/,""))}getExactTerms(){return this.query.text.filter(e=>e.split(" ").length>1)}};var ae=function(){return ae=Object.assign||function(e){for(var r,n=1,i=arguments.length;n0&&o[o.length-1])&&(u[0]===6||u[0]===2)){r=0;continue}if(u[0]===3&&(!o||u[1]>o[0]&&u[1]=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function me(t,e){var r=typeof Symbol=="function"&&t[Symbol.iterator];if(!r)return t;var n=r.call(t),i,o=[],s;try{for(;(e===void 0||e-- >0)&&!(i=n.next()).done;)o.push(i.value)}catch(a){s={error:a}}finally{try{i&&!i.done&&(r=n.return)&&r.call(n)}finally{if(s)throw s.error}}return o}var $d="ENTRIES",al="KEYS",ll="VALUES",Se="",No=function(){function t(e,r){var n=e._tree,i=Array.from(n.keys());this.set=e,this._type=r,this._path=i.length>0?[{node:n,keys:i}]:[]}return t.prototype.next=function(){var e=this.dive();return this.backtrack(),e},t.prototype.dive=function(){if(this._path.length===0)return{done:!0,value:void 0};var e=_r(this._path),r=e.node,n=e.keys;if(_r(n)===Se)return{done:!1,value:this.result()};var i=r.get(_r(n));return this._path.push({node:i,keys:Array.from(i.keys())}),this.dive()},t.prototype.backtrack=function(){if(this._path.length!==0){var e=_r(this._path).keys;e.pop(),!(e.length>0)&&(this._path.pop(),this.backtrack())}},t.prototype.key=function(){return this.set._prefix+this._path.map(function(e){var r=e.keys;return _r(r)}).filter(function(e){return e!==Se}).join("")},t.prototype.value=function(){return _r(this._path).node.get(Se)},t.prototype.result=function(){switch(this._type){case ll:return this.value();case al:return this.key();default:return[this.key(),this.value()]}},t.prototype[Symbol.iterator]=function(){return this},t}(),_r=function(t){return t[t.length-1]},Wd=function(t,e,r){var n=new Map;if(e===void 0)return n;for(var i=e.length+1,o=i+r,s=new Uint8Array(o*i).fill(r+1),a=0;ar)continue e}ul(t.get(y),e,r,n,i,x,s,a+y)}}}catch(k){l={error:k}}finally{try{c&&!c.done&&(u=f.return)&&u.call(f)}finally{if(l)throw l.error}}},Ko=function(){function t(e,r){e===void 0&&(e=new Map),r===void 0&&(r=""),this._size=void 0,this._tree=e,this._prefix=r}return t.prototype.atPrefix=function(e){var r,n;if(!e.startsWith(this._prefix))throw new Error("Mismatched prefix");var i=me(oi(this._tree,e.slice(this._prefix.length)),2),o=i[0],s=i[1];if(o===void 0){var a=me(Ho(s),2),l=a[0],u=a[1];try{for(var d=G(l.keys()),f=d.next();!f.done;f=d.next()){var c=f.value;if(c!==Se&&c.startsWith(u)){var y=new Map;return y.set(c.slice(u.length),l.get(c)),new t(y,e)}}}catch(w){r={error:w}}finally{try{f&&!f.done&&(n=d.return)&&n.call(d)}finally{if(r)throw r.error}}}return new t(o,e)},t.prototype.clear=function(){this._size=void 0,this._tree.clear()},t.prototype.delete=function(e){return this._size=void 0,Ud(this._tree,e)},t.prototype.entries=function(){return new No(this,$d)},t.prototype.forEach=function(e){var r,n;try{for(var i=G(this),o=i.next();!o.done;o=i.next()){var s=me(o.value,2),a=s[0],l=s[1];e(a,l,this)}}catch(u){r={error:u}}finally{try{o&&!o.done&&(n=i.return)&&n.call(i)}finally{if(r)throw r.error}}},t.prototype.fuzzyGet=function(e,r){return Wd(this._tree,e,r)},t.prototype.get=function(e){var r=zo(this._tree,e);return r!==void 0?r.get(Se):void 0},t.prototype.has=function(e){var r=zo(this._tree,e);return r!==void 0&&r.has(Se)},t.prototype.keys=function(){return new No(this,al)},t.prototype.set=function(e,r){if(typeof e!="string")throw new Error("key must be a string");this._size=void 0;var n=Vo(this._tree,e);return n.set(Se,r),this},Object.defineProperty(t.prototype,"size",{get:function(){if(this._size)return this._size;this._size=0;for(var e=this.entries();!e.next().done;)this._size+=1;return this._size},enumerable:!1,configurable:!0}),t.prototype.update=function(e,r){if(typeof e!="string")throw new Error("key must be a string");this._size=void 0;var n=Vo(this._tree,e);return n.set(Se,r(n.get(Se))),this},t.prototype.fetch=function(e,r){if(typeof e!="string")throw new Error("key must be a string");this._size=void 0;var n=Vo(this._tree,e),i=n.get(Se);return i===void 0&&n.set(Se,i=r()),i},t.prototype.values=function(){return new No(this,ll)},t.prototype[Symbol.iterator]=function(){return this.entries()},t.from=function(e){var r,n,i=new t;try{for(var o=G(e),s=o.next();!s.done;s=o.next()){var a=me(s.value,2),l=a[0],u=a[1];i.set(l,u)}}catch(d){r={error:d}}finally{try{s&&!s.done&&(n=o.return)&&n.call(o)}finally{if(r)throw r.error}}return i},t.fromObject=function(e){return t.from(Object.entries(e))},t}(),oi=function(t,e,r){var n,i;if(r===void 0&&(r=[]),e.length===0||t==null)return[t,r];try{for(var o=G(t.keys()),s=o.next();!s.done;s=o.next()){var a=s.value;if(a!==Se&&e.startsWith(a))return r.push([t,a]),oi(t.get(a),e.slice(a.length),r)}}catch(l){n={error:l}}finally{try{s&&!s.done&&(i=o.return)&&i.call(o)}finally{if(n)throw n.error}}return r.push([t,e]),oi(void 0,"",r)},zo=function(t,e){var r,n;if(e.length===0||t==null)return t;try{for(var i=G(t.keys()),o=i.next();!o.done;o=i.next()){var s=o.value;if(s!==Se&&e.startsWith(s))return zo(t.get(s),e.slice(s.length))}}catch(a){r={error:a}}finally{try{o&&!o.done&&(n=i.return)&&n.call(i)}finally{if(r)throw r.error}}},Vo=function(t,e){var r,n,i=e.length;e:for(var o=0;t&&o0)throw new Error("Expected documents to be present. Omit the argument to remove all documents.");this._index=new Ko,this._documentCount=0,this._documentIds=new Map,this._idToShortId=new Map,this._fieldLength=new Map,this._avgFieldLength=[],this._storedFields=new Map,this._nextId=0}},t.prototype.discard=function(e){var r=this,n=this._idToShortId.get(e);if(n==null)throw new Error("MiniSearch: cannot discard document with ID ".concat(e,": it is not in the index"));this._idToShortId.delete(e),this._documentIds.delete(n),this._storedFields.delete(n),(this._fieldLength.get(n)||[]).forEach(function(i,o){r.removeFieldLength(n,o,r._documentCount,i)}),this._fieldLength.delete(n),this._documentCount-=1,this._dirtCount+=1,this.maybeAutoVacuum()},t.prototype.maybeAutoVacuum=function(){if(this._options.autoVacuum!==!1){var e=this._options.autoVacuum,r=e.minDirtFactor,n=e.minDirtCount,i=e.batchSize,o=e.batchWait;this.conditionalVacuum({batchSize:i,batchWait:o},{minDirtCount:n,minDirtFactor:r})}},t.prototype.discardAll=function(e){var r,n,i=this._options.autoVacuum;try{this._options.autoVacuum=!1;try{for(var o=G(e),s=o.next();!s.done;s=o.next()){var a=s.value;this.discard(a)}}catch(l){r={error:l}}finally{try{s&&!s.done&&(n=o.return)&&n.call(o)}finally{if(r)throw r.error}}}finally{this._options.autoVacuum=i}this.maybeAutoVacuum()},t.prototype.replace=function(e){var r=this._options,n=r.idField,i=r.extractField,o=i(e,n);this.discard(o),this.add(e)},t.prototype.vacuum=function(e){return e===void 0&&(e={}),this.conditionalVacuum(e)},t.prototype.conditionalVacuum=function(e,r){var n=this;return this._currentVacuum?(this._enqueuedVacuumConditions=this._enqueuedVacuumConditions&&r,this._enqueuedVacuum!=null?this._enqueuedVacuum:(this._enqueuedVacuum=this._currentVacuum.then(function(){var i=n._enqueuedVacuumConditions;return n._enqueuedVacuumConditions=qo,n.performVacuuming(e,i)}),this._enqueuedVacuum)):this.vacuumConditionsMet(r)===!1?Promise.resolve():(this._currentVacuum=this.performVacuuming(e),this._currentVacuum)},t.prototype.performVacuuming=function(e,r){return Vd(this,void 0,void 0,function(){var n,i,o,s,a,l,u,d,f,c,y,w,x,b,h,_,p,m,v,g,j,C,S,E,P;return Hd(this,function(L){switch(L.label){case 0:if(n=this._dirtCount,!this.vacuumConditionsMet(r))return[3,10];i=e.batchSize||Qo.batchSize,o=e.batchWait||Qo.batchWait,s=1,L.label=1;case 1:L.trys.push([1,7,8,9]),a=G(this._index),l=a.next(),L.label=2;case 2:if(l.done)return[3,6];u=me(l.value,2),d=u[0],f=u[1];try{for(c=(C=void 0,G(f)),y=c.next();!y.done;y=c.next()){w=me(y.value,2),x=w[0],b=w[1];try{for(h=(E=void 0,G(b)),_=h.next();!_.done;_=h.next())p=me(_.value,1),m=p[0],!this._documentIds.has(m)&&(b.size<=1?f.delete(x):b.delete(m))}catch(k){E={error:k}}finally{try{_&&!_.done&&(P=h.return)&&P.call(h)}finally{if(E)throw E.error}}}}catch(k){C={error:k}}finally{try{y&&!y.done&&(S=c.return)&&S.call(c)}finally{if(C)throw C.error}}return this._index.get(d).size===0&&this._index.delete(d),s%i!=0?[3,4]:[4,new Promise(function(k){return setTimeout(k,o)})];case 3:L.sent(),L.label=4;case 4:s+=1,L.label=5;case 5:return l=a.next(),[3,2];case 6:return[3,9];case 7:return v=L.sent(),g={error:v},[3,9];case 8:try{l&&!l.done&&(j=a.return)&&j.call(a)}finally{if(g)throw g.error}return[7];case 9:this._dirtCount-=n,L.label=10;case 10:return[4,null];case 11:return L.sent(),this._currentVacuum=this._enqueuedVacuum,this._enqueuedVacuum=null,[2]}})})},t.prototype.vacuumConditionsMet=function(e){if(e==null)return!0;var r=e.minDirtCount,n=e.minDirtFactor;return r=r||Yo.minDirtCount,n=n||Yo.minDirtFactor,this.dirtCount>=r&&this.dirtFactor>=n},Object.defineProperty(t.prototype,"isVacuuming",{get:function(){return this._currentVacuum!=null},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"dirtCount",{get:function(){return this._dirtCount},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"dirtFactor",{get:function(){return this._dirtCount/(1+this._documentCount+this._dirtCount)},enumerable:!1,configurable:!0}),t.prototype.has=function(e){return this._idToShortId.has(e)},t.prototype.search=function(e,r){var n,i;r===void 0&&(r={});var o=this.executeQuery(e,r),s=[];try{for(var a=G(o),l=a.next();!l.done;l=a.next()){var u=me(l.value,2),d=u[0],f=u[1],c=f.score,y=f.terms,w=f.match,x=y.length,b={id:this._documentIds.get(d),score:c*x,terms:Object.keys(w),match:w};Object.assign(b,this._storedFields.get(d)),(r.filter==null||r.filter(b))&&s.push(b)}}catch(h){n={error:h}}finally{try{l&&!l.done&&(i=a.return)&&i.call(a)}finally{if(n)throw n.error}}return s.sort(ml),s},t.prototype.autoSuggest=function(e,r){var n,i,o,s;r===void 0&&(r={}),r=ae(ae({},this._options.autoSuggestOptions),r);var a=new Map;try{for(var l=G(this.search(e,r)),u=l.next();!u.done;u=l.next()){var d=u.value,f=d.score,c=d.terms,y=c.join(" "),w=a.get(y);w!=null?(w.score+=f,w.count+=1):a.set(y,{score:f,terms:c,count:1})}}catch(v){n={error:v}}finally{try{u&&!u.done&&(i=l.return)&&i.call(l)}finally{if(n)throw n.error}}var x=[];try{for(var b=G(a),h=b.next();!h.done;h=b.next()){var _=me(h.value,2),w=_[0],p=_[1],f=p.score,c=p.terms,m=p.count;x.push({suggestion:w,terms:c,score:f/m})}}catch(v){o={error:v}}finally{try{h&&!h.done&&(s=b.return)&&s.call(b)}finally{if(o)throw o.error}}return x.sort(ml),x},Object.defineProperty(t.prototype,"documentCount",{get:function(){return this._documentCount},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"termCount",{get:function(){return this._index.size},enumerable:!1,configurable:!0}),t.loadJSON=function(e,r){if(r==null)throw new Error("MiniSearch: loadJSON should be given the same options used when serializing the index");return this.loadJS(JSON.parse(e),r)},t.getDefault=function(e){if(Go.hasOwnProperty(e))return Uo(Go,e);throw new Error('MiniSearch: unknown option "'.concat(e,'"'))},t.loadJS=function(e,r){var n,i,o,s,a,l,u=e.index,d=e.documentCount,f=e.nextId,c=e.documentIds,y=e.fieldIds,w=e.fieldLength,x=e.averageFieldLength,b=e.storedFields,h=e.dirtCount,_=e.serializationVersion;if(_!==1&&_!==2)throw new Error("MiniSearch: cannot deserialize an index created with an incompatible version");var p=new t(r);p._documentCount=d,p._nextId=f,p._documentIds=si(c),p._idToShortId=new Map,p._fieldIds=y,p._fieldLength=si(w),p._avgFieldLength=x,p._storedFields=si(b),p._dirtCount=h||0,p._index=new Ko;try{for(var m=G(p._documentIds),v=m.next();!v.done;v=m.next()){var g=me(v.value,2),j=g[0],C=g[1];p._idToShortId.set(C,j)}}catch(F){n={error:F}}finally{try{v&&!v.done&&(i=m.return)&&i.call(m)}finally{if(n)throw n.error}}try{for(var S=G(u),E=S.next();!E.done;E=S.next()){var P=me(E.value,2),L=P[0],k=P[1],z=new Map;try{for(var J=(a=void 0,G(Object.keys(k))),Q=J.next();!Q.done;Q=J.next()){var Z=Q.value,A=k[Z];_===1&&(A=A.ds),z.set(parseInt(Z,10),si(A))}}catch(F){a={error:F}}finally{try{Q&&!Q.done&&(l=J.return)&&l.call(J)}finally{if(a)throw a.error}}p._index.set(L,z)}}catch(F){o={error:F}}finally{try{E&&!E.done&&(s=S.return)&&s.call(S)}finally{if(o)throw o.error}}return p},t.prototype.executeQuery=function(e,r){var n=this;if(r===void 0&&(r={}),typeof e!="string"){var i=ae(ae(ae({},r),e),{queries:void 0}),o=e.queries.map(function(b){return n.executeQuery(b,i)});return this.combineResults(o,e.combineWith)}var s=this._options,a=s.tokenize,l=s.processTerm,u=s.searchOptions,d=ae(ae({tokenize:a,processTerm:l},u),r),f=d.tokenize,c=d.processTerm,y=f(e).flatMap(function(b){return c(b)}).filter(function(b){return!!b}),w=y.map(Jd(d)),x=w.map(function(b){return n.executeQuerySpec(b,d)});return this.combineResults(x,d.combineWith)},t.prototype.executeQuerySpec=function(e,r){var n,i,o,s,a=ae(ae({},this._options.searchOptions),r),l=(a.fields||this._options.fields).reduce(function(Z,A){var F;return ae(ae({},Z),(F={},F[A]=Uo(Z,A)||1,F))},a.boost||{}),u=a.boostDocument,d=a.weights,f=a.maxFuzzy,c=a.bm25,y=ae(ae({},hl.weights),d),w=y.fuzzy,x=y.prefix,b=this._index.get(e.term),h=this.termResults(e.term,e.term,1,b,l,u,c),_,p;if(e.prefix&&(_=this._index.atPrefix(e.term)),e.fuzzy){var m=e.fuzzy===!0?.2:e.fuzzy,v=m<1?Math.min(f,Math.round(e.term.length*m)):m;v&&(p=this._index.fuzzyGet(e.term,v))}if(_)try{for(var g=G(_),j=g.next();!j.done;j=g.next()){var C=me(j.value,2),S=C[0],E=C[1],P=S.length-e.term.length;if(!!P){p==null||p.delete(S);var L=x*S.length/(S.length+.3*P);this.termResults(e.term,S,L,E,l,u,c,h)}}}catch(Z){n={error:Z}}finally{try{j&&!j.done&&(i=g.return)&&i.call(g)}finally{if(n)throw n.error}}if(p)try{for(var k=G(p.keys()),z=k.next();!z.done;z=k.next()){var S=z.value,J=me(p.get(S),2),Q=J[0],P=J[1];if(!!P){var L=w*S.length/(S.length+P);this.termResults(e.term,S,L,Q,l,u,c,h)}}}catch(Z){o={error:Z}}finally{try{z&&!z.done&&(s=k.return)&&s.call(k)}finally{if(o)throw o.error}}return h},t.prototype.combineResults=function(e,r){if(r===void 0&&(r=$o),e.length===0)return new Map;var n=r.toLowerCase();return e.reduce(Qd[n])||new Map},t.prototype.toJSON=function(){var e,r,n,i,o=[];try{for(var s=G(this._index),a=s.next();!a.done;a=s.next()){var l=me(a.value,2),u=l[0],d=l[1],f={};try{for(var c=(n=void 0,G(d)),y=c.next();!y.done;y=c.next()){var w=me(y.value,2),x=w[0],b=w[1];f[x]=Object.fromEntries(b)}}catch(h){n={error:h}}finally{try{y&&!y.done&&(i=c.return)&&i.call(c)}finally{if(n)throw n.error}}o.push([u,f])}}catch(h){e={error:h}}finally{try{a&&!a.done&&(r=s.return)&&r.call(s)}finally{if(e)throw e.error}}return{documentCount:this._documentCount,nextId:this._nextId,documentIds:Object.fromEntries(this._documentIds),fieldIds:this._fieldIds,fieldLength:Object.fromEntries(this._fieldLength),averageFieldLength:this._avgFieldLength,storedFields:Object.fromEntries(this._storedFields),dirtCount:this._dirtCount,index:o,serializationVersion:2}},t.prototype.termResults=function(e,r,n,i,o,s,a,l){var u,d,f,c,y;if(l===void 0&&(l=new Map),i==null)return l;try{for(var w=G(Object.keys(o)),x=w.next();!x.done;x=w.next()){var b=x.value,h=o[b],_=this._fieldIds[b],p=i.get(_);if(p!=null){var m=p.size,v=this._avgFieldLength[_];try{for(var g=(f=void 0,G(p.keys())),j=g.next();!j.done;j=g.next()){var C=j.value;if(!this._documentIds.has(C)){this.removeTerm(_,C,r),m-=1;continue}var S=s?s(this._documentIds.get(C),r):1;if(!!S){var E=p.get(C),P=this._fieldLength.get(C)[_],L=Yd(E,m,this._documentCount,P,v,a),k=n*h*S*L,z=l.get(C);if(z){z.score+=k,Zd(z.terms,e);var J=Uo(z.match,r);J?J.push(b):z.match[r]=[b]}else l.set(C,{score:k,terms:[e],match:(y={},y[r]=[b],y)})}}}catch(Q){f={error:Q}}finally{try{j&&!j.done&&(c=g.return)&&c.call(g)}finally{if(f)throw f.error}}}}}catch(Q){u={error:Q}}finally{try{x&&!x.done&&(d=w.return)&&d.call(w)}finally{if(u)throw u.error}}return l},t.prototype.addTerm=function(e,r,n){var i=this._index.fetch(n,gl),o=i.get(e);if(o==null)o=new Map,o.set(r,1),i.set(e,o);else{var s=o.get(r);o.set(r,(s||0)+1)}},t.prototype.removeTerm=function(e,r,n){if(!this._index.has(n)){this.warnDocumentChanged(r,e,n);return}var i=this._index.fetch(n,gl),o=i.get(e);o==null||o.get(r)==null?this.warnDocumentChanged(r,e,n):o.get(r)<=1?o.size<=1?i.delete(e):o.delete(r):o.set(r,o.get(r)-1),this._index.get(n).size===0&&this._index.delete(n)},t.prototype.warnDocumentChanged=function(e,r,n){var i,o;try{for(var s=G(Object.keys(this._fieldIds)),a=s.next();!a.done;a=s.next()){var l=a.value;if(this._fieldIds[l]===r){this._options.logger("warn","MiniSearch: document with ID ".concat(this._documentIds.get(e),' has changed before removal: term "').concat(n,'" was not present in field "').concat(l,'". Removing a document after it has changed can corrupt the index!'),"version_conflict");return}}}catch(u){i={error:u}}finally{try{a&&!a.done&&(o=s.return)&&o.call(s)}finally{if(i)throw i.error}}},t.prototype.addDocumentId=function(e){var r=this._nextId;return this._idToShortId.set(e,r),this._documentIds.set(r,e),this._documentCount+=1,this._nextId+=1,r},t.prototype.addFields=function(e){for(var r=0;r0){if(++e>=$h)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}var Tl=Gh;function Qh(t){return function(){return t}}var Il=Qh;var qh=function(){try{var t=Ne(Object,"defineProperty");return t({},"",{}),t}catch{}}(),Jo=qh;var Yh=Jo?function(t,e){return Jo(t,"toString",{configurable:!0,enumerable:!1,value:Il(e),writable:!0})}:Et,Ol=Yh;var Jh=Tl(Ol),kl=Jh;var Xh=9007199254740991,Zh=/^(?:0|[1-9]\d*)$/;function ep(t,e){var r=typeof t;return e=e??Xh,!!e&&(r=="number"||r!="symbol"&&Zh.test(t))&&t>-1&&t%1==0&&t-1&&t%1==0&&t<=ip}var jr=op;function sp(t){return t!=null&&jr(t.length)&&!li(t)}var Dt=sp;function ap(t,e,r){if(!Ft(r))return!1;var n=typeof e;return(n=="number"?Dt(r)&&xr(e,r.length):n=="string"&&e in r)?wr(r[e],t):!1}var Xo=ap;var lp=Object.prototype;function up(t){var e=t&&t.constructor,r=typeof e=="function"&&e.prototype||lp;return t===r}var Ll=up;function cp(t,e){for(var r=-1,n=Array(t);++r-1}var ou=Am;function Sm(t,e){var r=this.__data__,n=Tt(r,t);return n<0?(++this.size,r.push([t,e])):r[n][1]=e,this}var su=Sm;function Er(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e0&&r(a)?e>1?bu(a,e-1,r,n,i):pi(i,a):n||(i[i.length]=a)}return i}var xu=bu;function qm(){this.__data__=new It,this.size=0}var wu=qm;function Ym(t){var e=this.__data__,r=e.delete(t);return this.size=e.size,r}var ju=Ym;function Jm(t){return this.__data__.get(t)}var Cu=Jm;function Xm(t){return this.__data__.has(t)}var Au=Xm;var Zm=200;function eg(t,e){var r=this.__data__;if(r instanceof It){var n=r.__data__;if(!Ot||n.lengtha))return!1;var u=o.get(t),d=o.get(e);if(u&&d)return u==e&&d==t;var f=-1,c=!0,y=r&Cg?new Nu:void 0;for(o.set(t,e),o.set(e,t);++fe||o&&s&&l&&!a&&!u||n&&s&&l||!r&&l||!i)return 1;if(!n&&!o&&!u&&t=a)return l;var u=r[n];return l*(u=="desc"?-1:1)}}return t.index-e.index}var yc=by;function xy(t,e,r){e.length?e=br(e,function(o){return de(o)?function(s){return Tr(s,o.length===1?o[0]:o)}:o}):e=[Et];var n=-1;e=br(e,fi(lc));var i=pc(t,function(o,s,a){var l=br(e,function(u){return u(o)});return{criteria:l,index:++n,value:o}});return mc(i,function(o,s){return yc(o,s,r)})}var vc=xy;var wy=Rl(function(t,e){if(t==null)return[];var r=e.length;return r>1&&Xo(t,e[0],e[1])?e=[]:r>2&&Xo(e[0],e[1],e[2])&&(e=[e[0]]),vc(t,xu(e,1),[])}),ls=wy;var jy=t=>{let e=t.split(Ct),r=Yn();return r?e.flatMap(n=>Aa.test(n)?r.cut(n):[n]):I.splitCamelCase?[...e,...e.flatMap(Ba)]:e},Ci=class{constructor(){this.indexedDocuments=new Map;this.minisearch=new Wo(Ci.options)}async loadCache(){let e=await we.getMinisearchCache();return e?(this.minisearch=Wo.loadJS(e.data,Ci.options),this.indexedDocuments=new Map(e.paths.map(r=>[r.path,r.mtime])),!0):(console.log("Omnisearch - No cache found"),!1)}getDiff(e){let r=new Map(e.map(o=>[o.path,o.mtime])),n=e.filter(o=>!this.indexedDocuments.has(o.path)||this.indexedDocuments.get(o.path)!==o.mtime),i=[...this.indexedDocuments].filter(([o,s])=>!r.has(o)||r.get(o)!==s).map(o=>({path:o[0],mtime:o[1]}));return{toAdd:n,toRemove:i}}async addFromPaths(e){fe("Adding files",e);let r=(await Promise.all(e.map(async i=>await we.getDocument(i)))).filter(i=>!!i?.path);fe("Sorting documents to first index markdown"),r=ls(r,i=>i.path.endsWith(".md")?0:1),this.removeFromPaths(r.filter(i=>this.indexedDocuments.has(i.path)).map(i=>i.path));let n=La(r,500);for(let i of n){fe("Indexing into search engine",i),i.forEach(s=>this.indexedDocuments.set(s.path,s.mtime));let o=i.filter(s=>this.minisearch.has(s.path));this.removeFromPaths(o.map(s=>s.path)),await this.minisearch.addAllAsync(i)}}removeFromPaths(e){e.forEach(n=>this.indexedDocuments.delete(n));let r=e.filter(n=>this.minisearch.has(n));this.minisearch.discardAll(r)}async search(e,r){if(e.isEmpty())return[];fe("Starting search for",e);let n=this.minisearch.search(e.segmentsToStr(),{prefix:l=>l.length>=r.prefixLength,fuzzy:l=>l.length<=3?0:l.length<=5?.1:.2,combineWith:"AND",boost:{basename:I.weightBasename,directory:I.weightDirectory,aliases:I.weightBasename,headings1:I.weightH1,headings2:I.weightH2,headings3:I.weightH3}});if(fe("Found",n.length,"results"),e.query.ext?.length&&(n=n.filter(l=>{let u="."+l.id.split(".").pop();return e.query.ext?.some(d=>u.startsWith(d.startsWith(".")?d:"."+d))}),console.log(e.query.ext,n.length)),e.query.path&&(n=n.filter(l=>e.query.path?.some(u=>l.id.toLowerCase().includes(u.toLowerCase())))),e.query.exclude.path&&(n=n.filter(l=>!e.query.exclude.path?.some(u=>l.id.toLowerCase().includes(u.toLowerCase())))),!n.length)return[];if(r.singleFilePath)return n.filter(l=>l.id===r.singleFilePath);I.hideExcluded?n=n.filter(l=>!(app.metadataCache.isUserIgnored&&app.metadataCache.isUserIgnored(l.id))):n.forEach(l=>{app.metadataCache.isUserIgnored&&app.metadataCache.isUserIgnored(l.id)&&(l.score/=10)});let i=e.getTags();for(let l of i)for(let u of n)(u.tags??[]).includes(l)&&(u.score*=100);fe("Sorting and limiting results"),n=n.sort((l,u)=>u.score-l.score).slice(0,50);let o=await Promise.all(n.map(async l=>await we.getDocument(l.id))),s=e.getExactTerms();s.length&&(fe("Filtering with quoted terms"),n=n.filter(l=>{let u=o.find(c=>c.path===l.id),d=u?.path.toLowerCase()??"",f=Mo(u?.content??"").toLowerCase();return s.every(c=>f.includes(c)||d.includes(c))}));let a=e.query.exclude.text;return a.length&&(fe("Filtering with exclusions"),n=n.filter(l=>{let u=Mo(o.find(d=>d.path===l.id)?.content??"").toLowerCase();return a.every(d=>!u.includes(d))})),fe("Deduping"),n=n.filter((l,u,d)=>d.findIndex(f=>f.id===l.id)===u),n}getMatches(e,r,n){let i=new Date().getTime(),o=null,s=[],a=0;for(;(o=r.exec(e))!==null;){if(++a>=100||new Date().getTime()-i>50){Na("Stopped getMatches at",a,"results");break}let u=o[0];u&&s.push({match:u,offset:o.index})}let l=e.toLowerCase().indexOf(n.segmentsToStr());return l>-1&&s.unshift({offset:l,match:n.segmentsToStr()}),s}async getSuggestions(e,r){let n;I.simpleSearch?n=await this.search(e,{prefixLength:3,singleFilePath:r?.singleFilePath}):n=await this.search(e,{prefixLength:1,singleFilePath:r?.singleFilePath});let i=await Promise.all(n.map(async s=>await we.getDocument(s.id)));return n.map(s=>{fe("Locating matches for",s.id);let a=i.find(f=>f.path===s.id);a||(console.warn(`Omnisearch - Note "${s.id}" not in the live cache`),a={content:"",basename:s.id,path:s.id});let l=[...Object.keys(s.match),...e.getExactTerms(),...e.getTags()].filter(f=>f.length>1||/\p{Emoji}/u.test(f));fe("Matching tokens:",l),fe("Getting matches locations...");let u=this.getMatches(a.content,St(l),e);return fe("Matches:",u),ue({score:s.score,foundWords:l,matches:u},a)})}async writeToCache(){await we.writeMinisearchCache(this.minisearch,this.indexedDocuments)}},us=Ci;us.options={tokenize:jy,extractField:(e,r)=>{if(r==="directory"){let n=e.path.split("/");return n.pop(),n.join("/")}return e[r]},processTerm:e=>(I.ignoreDiacritics?ft(e):e).toLowerCase(),idField:"path",fields:["basename","directory","aliases","content","headings1","headings2","headings3"],storeFields:["tags"],logger(e,r,n){n==="version_conflict"&&new _c.Notice("Omnisearch - Your index cache may be incorrect or corrupted. If this message keeps appearing, go to Settings to clear the cache.",5e3)}};var ve=new us;var cs=new Set;function bc(t){cs.add(t)}async function Ai(){let t=[...cs].map(e=>e.path);t.length&&(ve.removeFromPaths(t),ve.addFromPaths(t),cs.clear())}var wc=Fe(xc());function jc(t,e,r){let n=t.slice();return n[35]=e[r],n[37]=r,n}function Cy(t){let e,r,n;return{c(){e=R("button"),e.textContent="Create note"},m(i,o){$(i,e,o),r||(n=Ke(e,"click",t[12]),r=!0)},p:ce,d(i){i&&H(e),r=!1,n()}}}function Ay(t){let e,r=I.showCreateButton&&Cy(t);return{c(){r&&r.c(),e=or()},m(n,i){r&&r.m(n,i),$(n,e,i)},p(n,i){I.showCreateButton&&r.p(n,i)},d(n){r&&r.d(n),n&&H(e)}}}function Cc(t){let e,r,n;return{c(){e=R("div"),r=xe("\u23F3 Work in progress: "),n=xe(t[3]),ze(e,"text-align","center"),ze(e,"color","var(--text-accent)"),ze(e,"margin-top","10px")},m(i,o){$(i,e,o),T(e,r),T(e,n)},p(i,o){o[0]&8&&Ge(n,i[3])},d(i){i&&H(e)}}}function Ac(t){let e,r;function n(...i){return t[18](t[37],...i)}return e=new rl({props:{selected:t[37]===t[0],note:t[35]}}),e.$on("mousemove",n),e.$on("click",t[10]),e.$on("auxclick",t[19]),{c(){Le(e.$$.fragment)},m(i,o){ke(e,i,o),r=!0},p(i,o){t=i;let s={};o[0]&1&&(s.selected=t[37]===t[0]),o[0]&4&&(s.note=t[35]),e.$set(s)},i(i){r||(ee(e.$$.fragment,i),r=!0)},o(i){re(e.$$.fragment,i),r=!1},d(i){Ee(e,i)}}}function Sy(t){let e;return{c(){e=xe("Searching...")},m(r,n){$(r,e,n)},p:ce,d(r){r&&H(e)}}}function Fy(t){let e,r=I.simpleSearch&&t[1].split(Ct).some(Fc),n,i=r&&Sc(t);return{c(){e=xe(`We found 0 result for your search here. - `),i&&i.c(),n=or()},m(o,s){$(o,e,s),i&&i.m(o,s),$(o,n,s)},p(o,s){s[0]&2&&(r=I.simpleSearch&&o[1].split(Ct).some(Fc)),r?i||(i=Sc(o),i.c(),i.m(n.parentNode,n)):i&&(i.d(1),i=null)},d(o){o&&H(e),i&&i.d(o),o&&H(n)}}}function Sc(t){let e,r,n;return{c(){e=R("br"),r=W(),n=R("span"),n.textContent=`You have enabled "Simpler Search" in the settings, try to type more - characters.`,ze(n,"color","var(--text-accent)"),ze(n,"font-size","small")},m(i,o){$(i,e,o),$(i,r,o),$(i,n,o)},d(i){i&&H(e),i&&H(r),i&&H(n)}}}function Ey(t){let e,r,n,i=t[2],o=[];for(let d=0;dre(o[d],1,1,()=>{o[d]=null});function a(d,f){if(!d[2].length&&d[1]&&!d[4])return Fy;if(d[4])return Sy}let l=a(t,[-1,-1]),u=l&&l(t);return{c(){for(let d=0;d\u2191\u2193to navigate',l=W(),u=R("div"),u.innerHTML=`alt \u2191\u2193 - to cycle history`,d=W(),f=R("div"),c=R("span"),y=xe(t[7]),w=R("span"),w.textContent="to open",x=W(),b=R("div"),b.innerHTML=`tab - to switch to In-File Search`,h=W(),_=R("div"),p=R("span"),m=xe(t[6]),v=W(),g=R("span"),g.textContent="to open in a new pane",j=W(),C=R("div"),S=R("span"),E=xe(t[9]),P=W(),L=R("span"),L.textContent="to create",k=W(),z=R("div"),J=R("span"),Q=xe(t[8]),Z=W(),A=R("span"),A.textContent="to create in a new pane",F=W(),D=R("div"),D.innerHTML=`alt \u21B5 - to insert a link`,N=W(),O=R("div"),O.innerHTML=`ctrl+h - to toggle excerpts`,X=W(),le=R("div"),le.innerHTML='escto close',B(a,"class","prompt-instruction"),B(u,"class","prompt-instruction"),B(c,"class","prompt-instruction-command"),B(f,"class","prompt-instruction"),B(b,"class","prompt-instruction"),B(p,"class","prompt-instruction-command"),B(_,"class","prompt-instruction"),B(S,"class","prompt-instruction-command"),B(C,"class","prompt-instruction"),B(J,"class","prompt-instruction-command"),B(z,"class","prompt-instruction"),B(D,"class","prompt-instruction"),B(O,"class","prompt-instruction"),B(le,"class","prompt-instruction"),B(s,"class","prompt-instructions")},m(q,ge){ke(e,q,ge),$(q,r,ge),te&&te.m(q,ge),$(q,n,ge),ke(i,q,ge),$(q,o,ge),$(q,s,ge),T(s,a),T(s,l),T(s,u),T(s,d),T(s,f),T(f,c),T(c,y),T(f,w),T(s,x),T(s,b),T(s,h),T(s,_),T(_,p),T(p,m),T(_,v),T(_,g),T(s,j),T(s,C),T(C,S),T(S,E),T(C,P),T(C,L),T(s,k),T(s,z),T(z,J),T(J,Q),T(z,Z),T(z,A),T(s,F),T(s,D),T(s,N),T(s,O),T(s,X),T(s,le),_e=!0},p(q,ge){let Ei={};ge[0]&2&&(Ei.initialValue=q[1]),ge[1]&128&&(Ei.$$scope={dirty:ge,ctx:q}),e.$set(Ei),q[3]?te?te.p(q,ge):(te=Cc(q),te.c(),te.m(n.parentNode,n)):te&&(te.d(1),te=null);let ms={};ge[0]&23|ge[1]&128&&(ms.$$scope={dirty:ge,ctx:q}),i.$set(ms),(!_e||ge[0]&128)&&Ge(y,q[7]),(!_e||ge[0]&64)&&Ge(m,q[6]),(!_e||ge[0]&512)&&Ge(E,q[9]),(!_e||ge[0]&256)&&Ge(Q,q[8])},i(q){_e||(ee(e.$$.fragment,q),ee(i.$$.fragment,q),_e=!0)},o(q){re(e.$$.fragment,q),re(i.$$.fragment,q),_e=!1},d(q){t[16](null),Ee(e,q),q&&H(r),te&&te.d(q),q&&H(n),Ee(i,q),q&&H(o),q&&H(s)}}}var Fc=t=>t.length<3;function Ty(t,e,r){let n,i;_n(t,jt,O=>r(15,i=O));let{modal:o}=e,{previousQuery:s}=e,a=0,l=0,u,d=[],f,c="",y=!0,w,x,b,h,_;Br(async()=>{U.enable("vault"),U.on("vault","enter",C),U.on("vault","create-note",k),U.on("vault","open-in-new-pane",S),U.on("vault","insert-link",z),U.on("vault","tab",J),U.on("vault","arrow-up",()=>Q(-1)),U.on("vault","arrow-down",()=>Q(1)),U.on("vault","prev-search-history",p),U.on("vault","next-search-history",m),await Ai(),I.showPreviousQueryResults&&r(13,s=(await we.getSearchHistory())[0])}),Nr(()=>{U.disable("vault")});async function p(){let O=(await we.getSearchHistory()).filter(X=>X);++l>=O.length&&(l=0),r(1,u=O[l]),w?.setInputValue(u)}async function m(){let O=(await we.getSearchHistory()).filter(X=>X);--l<0&&(l=O.length?O.length-1:0),r(1,u=O[l]),w?.setInputValue(u)}let v=null;async function g(){v&&(v.cancel(),v=null),f=new Yt(u),v=(0,wc.cancelable)(new Promise(O=>{O(ve.getSuggestions(f))})),r(2,d=await v),r(0,a=0),await Z()}function j(O){!n||(O?.ctrlKey?S():C(),o.close())}function C(){!n||(P(n),o.close())}function S(){!n||(P(n,!0),o.close())}function E(){u&&we.addToSearchHistory(u)}function P(O,X=!1){E(),ri(O,X)}async function L(O){await k()}async function k(O){if(u){try{await Ua(u,O?.newLeaf)}catch(X){new Mt.Notice(X.message);return}o.close()}}function z(){if(!n)return;let O=app.vault.getMarkdownFiles().find(te=>te.path===n.path),X=app.workspace.getActiveFile(),le=app.workspace.getActiveViewOfType(Mt.MarkdownView);if(!le?.editor){new Mt.Notice("Omnisearch - Error - No active editor",3e3);return}let _e;O&&X?_e=app.fileManager.generateMarkdownLink(O,X.path):_e=`[[${n.basename}.${qt(n.path)}]]`;let Ce=le.editor.getCursor();le.editor.replaceRange(_e,Ce,Ce),Ce.ch+=_e.length,le.editor.setCursor(Ce),o.close()}function J(){if(!(n&&(fn(n?.path)||!n?.matches.length)))if(E(),o.close(),n){let O=app.vault.getAbstractFileByPath(n.path);O&&O instanceof Mt.TFile&&new kr(app,O,u).open()}else{let O=app.workspace.getActiveViewOfType(Mt.MarkdownView);O&&new kr(app,O.file,u).open()}}function Q(O){r(0,a=Xn(a+O,d.length)),Z()}async function Z(){await mt(),n&&activeWindow.document.querySelector(`[data-result-id="${n.path}"]`)?.scrollIntoView({behavior:"auto",block:"nearest"})}function A(O){tt[O?"unshift":"push"](()=>{w=O,r(5,w)})}let F=O=>r(1,u=O.detail),D=(O,X)=>r(0,a=O),N=O=>{O.button==1&&S()};t.$$set=O=>{"modal"in O&&r(14,o=O.modal),"previousQuery"in O&&r(13,s=O.previousQuery)},t.$$.update=()=>{if(t.$$.dirty[0]&8194){e:r(1,u=u??s)}if(t.$$.dirty[0]&2){e:u?(r(4,y=!0),g().then(()=>{r(4,y=!1)})):(r(4,y=!1),r(2,d=[]))}if(t.$$.dirty[0]&5){e:n=d[a]}if(t.$$.dirty[0]&32768){e:switch(i){case We.LoadingCache:r(3,c="Loading cache...");break;case We.ReadingFiles:r(3,c="Reading files...");break;case We.IndexingFiles:r(3,c="Indexing files...");break;case We.WritingCache:g(),r(3,c="Updating cache...");break;default:g(),r(3,c="");break}}};e:I.openInNewPane?(r(6,x="\u21B5"),r(7,b=Qt()+" \u21B5"),r(8,h="shift \u21B5"),r(9,_=Qt()+" shift \u21B5")):(r(6,x=Qt()+" \u21B5"),r(7,b="\u21B5"),r(8,h=Qt()+" shift \u21B5"),r(9,_="shift \u21B5"));return[a,u,d,c,y,w,x,b,h,_,j,S,L,s,o,i,A,F,D,N]}var Ec=class extends Ae{constructor(e){super();De(this,e,Ty,Dy,be,{modal:14,previousQuery:13},null,[-1,-1])}},Dc=Ec;var Oc=Fe(require("obsidian"));function Iy(t){let e,r=t[2].replace(t[3],At)+"";return{c(){e=R("div"),B(e,"class","omnisearch-result__body")},m(n,i){$(n,e,i),e.innerHTML=r},p(n,i){i&12&&r!==(r=n[2].replace(n[3],At)+"")&&(e.innerHTML=r)},d(n){n&&H(e)}}}function Oy(t){let e,r;return e=new ni({props:{id:t[0].toString(),selected:t[1],$$slots:{default:[Iy]},$$scope:{ctx:t}}}),e.$on("mousemove",t[6]),e.$on("click",t[7]),e.$on("auxclick",t[8]),{c(){Le(e.$$.fragment)},m(n,i){ke(e,n,i),r=!0},p(n,[i]){let o={};i&1&&(o.id=n[0].toString()),i&2&&(o.selected=n[1]),i&524&&(o.$$scope={dirty:i,ctx:n}),e.$set(o)},i(n){r||(ee(e.$$.fragment,n),r=!0)},o(n){re(e.$$.fragment,n),r=!1},d(n){Ee(e,n)}}}function ky(t,e,r){let n,i,{offset:o}=e,{note:s}=e,{index:a=0}=e,{selected:l=!1}=e;function u(c){$e.call(this,t,c)}function d(c){$e.call(this,t,c)}function f(c){$e.call(this,t,c)}return t.$$set=c=>{"offset"in c&&r(4,o=c.offset),"note"in c&&r(5,s=c.note),"index"in c&&r(0,a=c.index),"selected"in c&&r(1,l=c.selected)},t.$$.update=()=>{if(t.$$.dirty&32){e:r(3,n=St(s.foundWords))}if(t.$$.dirty&48){e:r(2,i=yr(s?.content??"",o))}},[a,l,i,n,o,s,u,d,f]}var Tc=class extends Ae{constructor(e){super();De(this,e,ky,Oy,be,{offset:4,note:5,index:0,selected:1})}},Ic=Tc;function kc(t,e,r){let n=t.slice();return n[19]=e[r],n[21]=r,n}function Py(t){let e;return{c(){e=R("div"),e.textContent="We found 0 result for your search here.",ze(e,"text-align","center")},m(r,n){$(r,e,n)},p:ce,i:ce,o:ce,d(r){r&&H(e)}}}function My(t){let e,r,n=t[4],i=[];for(let s=0;sre(i[s],1,1,()=>{i[s]=null});return{c(){for(let s=0;s{s[d]=null}),Bt(),r=s[e],r?r.p(l,u):(r=s[e]=o[e](l),r.c()),ee(r,1),r.m(n.parentNode,n))},i(l){i||(ee(r),i=!0)},o(l){re(r),i=!1},d(l){s[e].d(l),l&&H(n)}}}function Ly(t){let e;return{c(){e=R("span"),e.textContent="to close"},m(r,n){$(r,e,n)},d(r){r&&H(e)}}}function By(t){let e;return{c(){e=R("span"),e.textContent="to go back to Vault Search"},m(r,n){$(r,e,n)},d(r){r&&H(e)}}}function Ny(t){let e,r,n,i,o,s,a,l,u,d,f,c,y,w,x,b,h,_,p,m;e=new ei({props:{placeholder:"Omnisearch - File",initialValue:t[1]}}),e.$on("input",t[10]),n=new ti({props:{$$slots:{default:[Ry]},$$scope:{ctx:t}}});function v(C,S){return C[0]?By:Ly}let g=v(t,-1),j=g(t);return{c(){Le(e.$$.fragment),r=W(),Le(n.$$.fragment),i=W(),o=R("div"),s=R("div"),s.innerHTML='\u2191\u2193to navigate',a=W(),l=R("div"),l.innerHTML='\u21B5to open',u=W(),d=R("div"),d.innerHTML=`tab - to switch to Vault Search`,f=W(),c=R("div"),y=R("span"),y.textContent="esc",w=W(),j.c(),x=W(),b=R("div"),h=R("span"),h.textContent=`${Qt()} \u21B5`,_=W(),p=R("span"),p.textContent="to open in a new pane",B(s,"class","prompt-instruction"),B(l,"class","prompt-instruction"),B(d,"class","prompt-instruction"),B(y,"class","prompt-instruction-command"),B(c,"class","prompt-instruction"),B(h,"class","prompt-instruction-command"),B(b,"class","prompt-instruction"),B(o,"class","prompt-instructions")},m(C,S){ke(e,C,S),$(C,r,S),ke(n,C,S),$(C,i,S),$(C,o,S),T(o,s),T(o,a),T(o,l),T(o,u),T(o,d),T(o,f),T(o,c),T(c,y),T(c,w),j.m(c,null),T(o,x),T(o,b),T(b,h),T(b,_),T(b,p),m=!0},p(C,[S]){let E={};S&2&&(E.initialValue=C[1]),e.$set(E);let P={};S&4194360&&(P.$$scope={dirty:S,ctx:C}),n.$set(P),g!==(g=v(C,S))&&(j.d(1),j=g(C),j&&(j.c(),j.m(c,null)))},i(C){m||(ee(e.$$.fragment,C),ee(n.$$.fragment,C),m=!0)},o(C){re(e.$$.fragment,C),re(n.$$.fragment,C),m=!1},d(C){Ee(e,C),C&&H(r),Ee(n,C),C&&H(i),C&&H(o),j.d()}}}function Ky(t,e,r){let n=t.find(i=>i.offset>e);return n?t.filter(i=>i.offset>e&&i.offset<=n.offset+r):[]}function zy(t,e,r){let{modal:n}=e,{parent:i=null}=e,{singleFilePath:o=""}=e,{previousQuery:s}=e,a,l=[],u=0,d,f;Br(()=>{U.enable("infile"),U.on("infile","enter",b),U.on("infile","open-in-new-pane",x),U.on("infile","arrow-up",()=>y(-1)),U.on("infile","arrow-down",()=>y(1)),U.on("infile","tab",h)}),Nr(()=>{U.disable("infile")});function c(g){let j=[],C=-1,S=0;for(;;){let E=Ky(g,C,ln);if(!E.length||(C=E.last().offset,j.push(E),++S>100))break}return j}function y(g){r(5,u=Xn(u+g,l.length)),w()}async function w(){await mt(),document.querySelector(`[data-result-id="${u}"]`)?.scrollIntoView({behavior:"auto",block:"nearest"})}async function x(){return b(!0)}async function b(g=!1){if(d){n.close(),i&&i.close(),await ri(d,g);let j=app.workspace.getActiveViewOfType(Oc.MarkdownView);if(!j)return;let C=l[u]??0,S=j.editor.offsetToPos(C);S.ch=0,j.editor.setCursor(S),j.editor.scrollIntoView({from:{line:S.line-10,ch:0},to:{line:S.line+10,ch:0}})}}function h(){new Zt(app,a??s).open(),n.close()}let _=g=>r(2,a=g.detail),p=(g,j)=>r(5,u=g),m=g=>b(g.ctrlKey),v=g=>{g.button==1&&b(!0)};return t.$$set=g=>{"modal"in g&&r(7,n=g.modal),"parent"in g&&r(0,i=g.parent),"singleFilePath"in g&&r(8,o=g.singleFilePath),"previousQuery"in g&&r(1,s=g.previousQuery)},t.$$.update=()=>{if(t.$$.dirty&2){e:r(2,a=s??"")}if(t.$$.dirty&772){e:(async()=>{a&&(r(9,f=new Yt(a)),r(3,d=(await ve.getSuggestions(f,{singleFilePath:o}))[0]??null)),r(5,u=0),await w()})()}if(t.$$.dirty&8){e:if(d){let g=c(d.matches);r(4,l=g.map(j=>Math.round((j.first().offset+j.last().offset)/2)))}}},[i,s,a,d,l,u,b,n,o,f,_,p,m,v]}var Mc=class extends Ae{constructor(e){super();De(this,e,zy,Ny,be,{modal:7,parent:0,singleFilePath:8,previousQuery:1})}},Rc=Mc;var ds=class extends Lc.Modal{constructor(e){super(e);this.modalEl.replaceChildren(),this.modalEl.addClass("omnisearch-modal","prompt"),this.modalEl.removeClass("modal"),this.modalEl.tabIndex=-1,this.scope.register([],"ArrowDown",s=>{s.preventDefault(),U.emit("arrow-down")}),this.scope.register([],"ArrowUp",s=>{s.preventDefault(),U.emit("arrow-up")});for(let s of[{k:"J",dir:"down"},{k:"K",dir:"up"}])for(let a of["Ctrl","Mod"])this.scope.register([a],s.k,l=>{this.app.vault.getConfig("vimMode")&&U.emit("arrow-"+s.dir)});for(let s of[{k:"N",dir:"down"},{k:"P",dir:"up"}])for(let a of["Ctrl","Mod"])this.scope.register([a],s.k,l=>{this.app.vault.getConfig("vimMode")&&U.emit("arrow-"+s.dir)});let r,n,i,o;I.openInNewPane?(r=["Mod"],n=[],i=["Mod","Shift"],o=["Shift"]):(r=[],n=["Mod"],i=["Shift"],o=["Mod","Shift"]),this.scope.register(n,"Enter",s=>{s.preventDefault(),U.emit("open-in-new-pane")}),this.scope.register(["Alt"],"Enter",s=>{s.preventDefault(),U.emit("insert-link")}),this.scope.register(i,"Enter",s=>{s.preventDefault(),U.emit("create-note")}),this.scope.register(o,"Enter",s=>{s.preventDefault(),U.emit("create-note",{newLeaf:!0})}),this.scope.register(r,"Enter",s=>{Da()||(s.preventDefault(),U.emit("enter"))}),this.scope.register([],"Tab",s=>{s.preventDefault(),U.emit("tab")}),this.scope.register(["Alt"],"ArrowDown",s=>{s.preventDefault(),U.emit("next-search-history")}),this.scope.register(["Alt"],"ArrowUp",s=>{s.preventDefault(),U.emit("prev-search-history")}),this.scope.register(["Ctrl"],"H",s=>{U.emit(qn.ToggleExcerpts)})}},Zt=class extends ds{constructor(e,r){super(e);let n=new Dc({target:this.modalEl,props:{modal:this,previousQuery:r}});this.onClose=()=>{n.$destroy()}}},kr=class extends ds{constructor(e,r,n="",i){super(e);let o=new Rc({target:this.modalEl,props:{modal:this,singleFilePath:r.path,parent:i,previousQuery:n}});i&&i.containerEl.toggleVisibility(!1),this.onClose=()=>{i&&i.containerEl.toggleVisibility(!0),o.$destroy()}}};var Bc=!1,Fi=[];function Vy(t){return t.map(e=>{let{score:r,path:n,basename:i,foundWords:o,matches:s,content:a}=e,l=yr(a,s[0]?.offset??-1);return{score:r,path:n,basename:i,foundWords:o,matches:s.map(u=>({match:u.match,offset:u.offset})),excerpt:l}})}async function Hy(t){let e=new Yt(t),r=await ve.getSuggestions(e);return Vy(r)}function $y(t){Fi.push(t),Bc&&t()}function Wy(t){Fi=Fi.filter(e=>e!==t)}function Nc(){Bc=!0,Fi.forEach(t=>t())}var hs={search:Hy,registerOnIndexed:$y,unregisterOnIndexed:Wy,refreshIndex:Ai};var ps=class extends Pr.Plugin{async onload(){if(await ja(this),this.addSettingTab(new Io(this)),Oo()){console.log("Omnisearch - Plugin disabled");return}await Uy(),await gr.clearOldDatabases(),Gy(this),I.ribbonIcon&&this.addRibbonButton(),U.disable("vault"),U.disable("infile"),U.on("global",qn.ToggleExcerpts,()=>{Ut.set(!I.showExcerpt)}),this.addCommand({id:"show-modal",name:"Vault search",callback:()=>{new Zt(app).open()}}),this.addCommand({id:"show-modal-infile",name:"In-file search",editorCallback:(e,r)=>{r.file&&new kr(app,r.file).open()}}),app.workspace.onLayoutReady(async()=>{this.registerEvent(this.app.vault.on("create",e=>{cn(e.path)&&(fe("Indexing new file",e.path),ve.addFromPaths([e.path]))})),this.registerEvent(this.app.vault.on("delete",e=>{fe("Removing file",e.path),we.removeFromLiveCache(e.path),ve.removeFromPaths([e.path])})),this.registerEvent(this.app.vault.on("modify",async e=>{cn(e.path)&&(fe("Updating file",e.path),await we.addToLiveCache(e.path),bc(e))})),this.registerEvent(this.app.vault.on("rename",async(e,r)=>{cn(e.path)&&(fe("Renaming file",e.path),we.removeFromLiveCache(r),we.addToLiveCache(e.path),ve.removeFromPaths([r]),await ve.addFromPaths([e.path]))})),this.executeFirstLaunchTasks(),await this.populateIndex()})}executeFirstLaunchTasks(){let e="1.10.1";if(I.welcomeMessage!==e){let r=new DocumentFragment;r.createSpan({},n=>{n.innerHTML="\u{1F50E} Omnisearch now requires the Text Extractor plugin to index PDF and images. See Omnisearch settings for more information."}),new Pr.Notice(r,2e4)}I.welcomeMessage=e,this.saveData(I)}async onunload(){delete globalThis.omnisearch,await Be.clearCache()}addRibbonButton(){this.ribbonButton=this.addRibbonIcon("search","Omnisearch",e=>{new Zt(app).open()})}removeRibbonButton(){this.ribbonButton&&this.ribbonButton.parentNode?.removeChild(this.ribbonButton)}async populateIndex(){console.time("Omnisearch - Indexing total time"),jt.set(We.ReadingFiles);let e=app.vault.getFiles().filter(n=>cn(n.path));console.log(`Omnisearch - ${e.length} files total`),console.log(`Omnisearch - Cache is ${wt()?"enabled":"disabled"}`),wt()&&(console.time("Omnisearch - Loading index from cache"),jt.set(We.LoadingCache),await ve.loadCache()&&console.timeEnd("Omnisearch - Loading index from cache"));let r=ve.getDiff(e.map(n=>({path:n.path,mtime:n.stat.mtime})));wt()&&(r.toAdd.length&&console.log("Omnisearch - Total number of files to add/update: "+r.toAdd.length),r.toRemove.length&&console.log("Omnisearch - Total number of files to remove: "+r.toRemove.length)),r.toAdd.length>=1e3&&wt()&&new Pr.Notice(`Omnisearch - ${r.toAdd.length} files need to be indexed. Obsidian may experience stutters and freezes during the process`,1e4),jt.set(We.IndexingFiles),ve.removeFromPaths(r.toRemove.map(n=>n.path)),await ve.addFromPaths(r.toAdd.map(n=>n.path)),(r.toRemove.length||r.toAdd.length)&&wt()&&(jt.set(We.WritingCache),I.useCache=!1,pe(this),await ve.writeToCache(),I.useCache=!0,pe(this)),console.timeEnd("Omnisearch - Indexing total time"),r.toAdd.length>=1e3&&new Pr.Notice("Omnisearch - Your files have been indexed."),jt.set(We.Done),Nc()}};async function Uy(){let t=[`${app.vault.configDir}/plugins/omnisearch/searchIndex.json`,`${app.vault.configDir}/plugins/omnisearch/notesCache.json`,`${app.vault.configDir}/plugins/omnisearch/notesCache.data`,`${app.vault.configDir}/plugins/omnisearch/searchIndex.data`,`${app.vault.configDir}/plugins/omnisearch/historyCache.json`,`${app.vault.configDir}/plugins/omnisearch/pdfCache.data`];for(let e of t)if(await app.vault.adapter.exists(e))try{await app.vault.adapter.remove(e)}catch{}}function Gy(t){t.registerObsidianProtocolHandler("omnisearch",e=>{new Zt(app,e.query).open()}),globalThis.omnisearch=hs,app.plugins.plugins.omnisearch.api=hs} +`,r-n);s>0&&(t=t.slice(s))}return t=j0(t),T.renderLineReturnInExcerpts&&(t=t.trim().replaceAll(` +`,"
")),{content:t,offset:r}}catch(r){return new Sh.Notice("Omnisearch - Error while creating excerpt, see developer console"),console.error("Omnisearch - Error while creating excerpt"),console.error(r),{content:"",offset:-1}}}var Sh,hn=j(()=>{ot();Ze();At();Sh=ge(require("obsidian"));ci()});var Nh=pi($o=>{$o.parse=function(t,e){if(e?e.offsets=typeof e.offsets=="undefined"?!0:e.offsets:e={offsets:!0},t||(t=""),t.indexOf(":")===-1&&!e.tokenize)return t;if(!e.keywords&&!e.ranges&&!e.tokenize)return t;var r={text:[]};e.offsets&&(r.offsets=[]);for(var n={},i=[],o=/(\S+:'(?:[^'\\]|\\.)*')|(\S+:"(?:[^"\\]|\\.)*")|(-?"(?:[^"\\]|\\.)*")|(-?'(?:[^'\\]|\\.)*')|\S+|\S+:\S+/g,s;(s=o.exec(t))!==null;){var c=s[0],a=c.indexOf(":");if(a!==-1){var u=c.split(":"),l=c.slice(0,a),f=c.slice(a+1);f=f.replace(/^\"|\"$|^\'|\'$/g,""),f=(f+"").replace(/\\(.?)/g,function(_,A){switch(A){case"\\":return"\\";case"0":return"\0";case"":return"";default:return A}}),i.push({keyword:l,value:f,offsetStart:s.index,offsetEnd:s.index+c.length})}else{var p=!1;c[0]==="-"&&(p=!0,c=c.slice(1)),c=c.replace(/^\"|\"$|^\'|\'$/g,""),c=(c+"").replace(/\\(.?)/g,function(_,A){switch(A){case"\\":return"\\";case"0":return"\0";case"":return"";default:return A}}),p?n.text?(n.text instanceof Array||(n.text=[n.text]),n.text.push(c)):n.text=c:i.push({text:c,offsetStart:s.index,offsetEnd:s.index+c.length})}}i.reverse();for(var c;c=i.pop();)if(c.text)r.text.push(c.text),e.offsets&&r.offsets.push(c);else{var l=c.keyword;e.keywords=e.keywords||[];var h=!1,w=!1;if(!/^-/.test(l))h=e.keywords.indexOf(l)!==-1;else if(l[0]==="-"){var x=l.slice(1);h=e.keywords.indexOf(x)!==-1,h&&(l=x,w=!0)}e.ranges=e.ranges||[];var v=e.ranges.indexOf(l)!==-1;if(h){e.offsets&&r.offsets.push({keyword:l,value:c.value,offsetStart:w?c.offsetStart+1:c.offsetStart,offsetEnd:c.offsetEnd});var d=c.value;if(d.length){var b=d.split(",");w?n[l]?n[l]instanceof Array?b.length>1?n[l]=n[l].concat(b):n[l].push(d):(n[l]=[n[l]],n[l].push(d)):b.length>1?n[l]=b:e.alwaysArray?n[l]=[d]:n[l]=d:r[l]?r[l]instanceof Array?b.length>1?r[l]=r[l].concat(b):r[l].push(d):(r[l]=[r[l]],r[l].push(d)):b.length>1?r[l]=b:e.alwaysArray?r[l]=[d]:r[l]=d}}else if(v){e.offsets&&r.offsets.push(c);var d=c.value,m=d.split("-");r[l]={},m.length===2?(r[l].from=m[0],r[l].to=m[1]):!m.length%2||(r[l].from=d)}else{var g=c.keyword+":"+c.value;r.text.push(g),e.offsets&&r.offsets.push({text:g,offsetStart:c.offsetStart,offsetEnd:c.offsetEnd})}}return r.text.length?e.tokenize||(r.text=r.text.join(" ").trim()):delete r.text,r.exclude=n,r};$o.stringify=function(t,e,r){if(e||(e={offsets:!0}),!t)return"";if(typeof t=="string")return t;if(Array.isArray(t))return t.join(" ");if(!Object.keys(t).length)return"";if(Object.keys(t).length===3&&!!t.text&&!!t.offsets&&!!t.exclude&&typeof t.text=="string")return t.text;r||(r="");var n=function(a){return a.indexOf(" ")>-1?JSON.stringify(a):a},i=function(a){return r+a},o=[];if(t.text){var s=[];typeof t.text=="string"?s.push(t.text):s.push.apply(s,t.text),s.length>0&&o.push(s.map(n).map(i).join(" "))}return e.keywords&&e.keywords.forEach(function(a){if(!!t[a]){var u=[];typeof t[a]=="string"?u.push(t[a]):u.push.apply(u,t[a]),u.length>0&&o.push(i(a+":"+u.map(n).join(",")))}}),e.ranges&&e.ranges.forEach(function(a){if(!!t[a]){var u=t[a].from,l=t[a].to;l&&(u=u+"-"+l),u&&o.push(i(a+":"+u))}}),t.exclude&&Object.keys(t.exclude).length>0&&o.push($o.stringify(t.exclude,e,"-")),o.join(" ")}});var Kh=pi((jI,Bh)=>{Bh.exports=Nh()});var zh,Ha,xr,Wo=j(()=>{Ze();At();zh=ge(Kh()),Ha=["ext","path"],xr=class{#e;constructor(e=""){T.ignoreDiacritics&&(e=jt(e));let r=(0,zh.parse)(e.toLowerCase(),{tokenize:!0,keywords:Ha});r.text=r.text??[],r.exclude=r.exclude??{},r.exclude.text=r.exclude.text??[],Array.isArray(r.exclude.text)||(r.exclude.text=[r.exclude.text]),r.exclude.text=r.exclude.text.filter(n=>n.length);for(let n of Ha){let i=r[n];i&&(r[n]=Array.isArray(i)?i:[i]);let o=r.exclude[n];o&&(r.exclude[n]=Array.isArray(o)?o:[o])}this.query=r,this.#e=e.match(/"([^"]+)"/g)?.map(n=>n.replace(/"/g,""))??[]}isEmpty(){for(let e of Ha)if(this.query[e]?.length||this.query.text.length)return!1;return!0}segmentsToStr(){return this.query.text.join(" ")}getTags(){return this.query.text.filter(e=>e.startsWith("#"))}getTagsWithoutHashtag(){return this.getTags().map(e=>e.replace(/^#/,""))}getExactTerms(){return[...new Set([...this.query.text.filter(e=>e.split(" ").length>1),...this.#e].map(e=>e.toLowerCase()))]}}});function O0(t,e,r,n){function i(o){return o instanceof r?o:new r(function(s){s(o)})}return new(r||(r=Promise))(function(o,s){function a(f){try{l(n.next(f))}catch(p){s(p)}}function u(f){try{l(n.throw(f))}catch(p){s(p)}}function l(f){f.done?o(f.value):i(f.value).then(a,u)}l((n=n.apply(t,e||[])).next())})}function I0(t,e){var r={label:0,sent:function(){if(o[0]&1)throw o[1];return o[1]},trys:[],ops:[]},n,i,o,s;return s={next:a(0),throw:a(1),return:a(2)},typeof Symbol=="function"&&(s[Symbol.iterator]=function(){return this}),s;function a(l){return function(f){return u([l,f])}}function u(l){if(n)throw new TypeError("Generator is already executing.");for(;s&&(s=0,l[0]&&(r=0)),r;)try{if(n=1,i&&(o=l[0]&2?i.return:l[0]?i.throw||((o=i.return)&&o.call(i),0):i.next)&&!(o=o.call(i,l[1])).done)return o;switch(i=0,o&&(l=[l[0]&2,o.value]),l[0]){case 0:case 1:o=l;break;case 4:return r.label++,{value:l[1],done:!1};case 5:r.label++,i=l[1],l=[0];continue;case 7:l=r.ops.pop(),r.trys.pop();continue;default:if(o=r.trys,!(o=o.length>0&&o[o.length-1])&&(l[0]===6||l[0]===2)){r=0;continue}if(l[0]===3&&(!o||l[1]>o[0]&&l[1]=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function be(t,e){var r=typeof Symbol=="function"&&t[Symbol.iterator];if(!r)return t;var n=r.call(t),i,o=[],s;try{for(;(e===void 0||e-- >0)&&!(i=n.next()).done;)o.push(i.value)}catch(a){s={error:a}}finally{try{i&&!i.done&&(r=n.return)&&r.call(n)}finally{if(s)throw s.error}}return o}var fe,P0,Hh,Vh,Oe,Va,gn,k0,$h,$a,Uo,Wa,Ua,M0,Wh,Uh,Ga,fi,Qa,Gh,R0,qa,Ya,L0,N0,B0,K0,Ja,Qh,z0,Xa,Za,el,H0,qh,Yh,Jh,Go,V0,Xh=j(()=>{fe=function(){return fe=Object.assign||function(e){for(var r,n=1,i=arguments.length;n0?[{node:n,keys:i}]:[]}return t.prototype.next=function(){var e=this.dive();return this.backtrack(),e},t.prototype.dive=function(){if(this._path.length===0)return{done:!0,value:void 0};var e=gn(this._path),r=e.node,n=e.keys;if(gn(n)===Oe)return{done:!1,value:this.result()};var i=r.get(gn(n));return this._path.push({node:i,keys:Array.from(i.keys())}),this.dive()},t.prototype.backtrack=function(){if(this._path.length!==0){var e=gn(this._path).keys;e.pop(),!(e.length>0)&&(this._path.pop(),this.backtrack())}},t.prototype.key=function(){return this.set._prefix+this._path.map(function(e){var r=e.keys;return gn(r)}).filter(function(e){return e!==Oe}).join("")},t.prototype.value=function(){return gn(this._path).node.get(Oe)},t.prototype.result=function(){switch(this._type){case Vh:return this.value();case Hh:return this.key();default:return[this.key(),this.value()]}},t.prototype[Symbol.iterator]=function(){return this},t}(),gn=function(t){return t[t.length-1]},k0=function(t,e,r){var n=new Map;if(e===void 0)return n;for(var i=e.length+1,o=i+r,s=new Uint8Array(o*i).fill(r+1),a=0;ar)continue e}$h(t.get(h),e,r,n,i,x,s,a+h)}}}catch(k){u={error:k}}finally{try{c&&!c.done&&(l=p.return)&&l.call(p)}finally{if(u)throw u.error}}},$a=function(){function t(e,r){e===void 0&&(e=new Map),r===void 0&&(r=""),this._size=void 0,this._tree=e,this._prefix=r}return t.prototype.atPrefix=function(e){var r,n;if(!e.startsWith(this._prefix))throw new Error("Mismatched prefix");var i=be(Uo(this._tree,e.slice(this._prefix.length)),2),o=i[0],s=i[1];if(o===void 0){var a=be(Ga(s),2),u=a[0],l=a[1];try{for(var f=q(u.keys()),p=f.next();!p.done;p=f.next()){var c=p.value;if(c!==Oe&&c.startsWith(l)){var h=new Map;return h.set(c.slice(l.length),u.get(c)),new t(h,e)}}}catch(w){r={error:w}}finally{try{p&&!p.done&&(n=f.return)&&n.call(f)}finally{if(r)throw r.error}}}return new t(o,e)},t.prototype.clear=function(){this._size=void 0,this._tree.clear()},t.prototype.delete=function(e){return this._size=void 0,M0(this._tree,e)},t.prototype.entries=function(){return new Va(this,P0)},t.prototype.forEach=function(e){var r,n;try{for(var i=q(this),o=i.next();!o.done;o=i.next()){var s=be(o.value,2),a=s[0],u=s[1];e(a,u,this)}}catch(l){r={error:l}}finally{try{o&&!o.done&&(n=i.return)&&n.call(i)}finally{if(r)throw r.error}}},t.prototype.fuzzyGet=function(e,r){return k0(this._tree,e,r)},t.prototype.get=function(e){var r=Wa(this._tree,e);return r!==void 0?r.get(Oe):void 0},t.prototype.has=function(e){var r=Wa(this._tree,e);return r!==void 0&&r.has(Oe)},t.prototype.keys=function(){return new Va(this,Hh)},t.prototype.set=function(e,r){if(typeof e!="string")throw new Error("key must be a string");this._size=void 0;var n=Ua(this._tree,e);return n.set(Oe,r),this},Object.defineProperty(t.prototype,"size",{get:function(){if(this._size)return this._size;this._size=0;for(var e=this.entries();!e.next().done;)this._size+=1;return this._size},enumerable:!1,configurable:!0}),t.prototype.update=function(e,r){if(typeof e!="string")throw new Error("key must be a string");this._size=void 0;var n=Ua(this._tree,e);return n.set(Oe,r(n.get(Oe))),this},t.prototype.fetch=function(e,r){if(typeof e!="string")throw new Error("key must be a string");this._size=void 0;var n=Ua(this._tree,e),i=n.get(Oe);return i===void 0&&n.set(Oe,i=r()),i},t.prototype.values=function(){return new Va(this,Vh)},t.prototype[Symbol.iterator]=function(){return this.entries()},t.from=function(e){var r,n,i=new t;try{for(var o=q(e),s=o.next();!s.done;s=o.next()){var a=be(s.value,2),u=a[0],l=a[1];i.set(u,l)}}catch(f){r={error:f}}finally{try{s&&!s.done&&(n=o.return)&&n.call(o)}finally{if(r)throw r.error}}return i},t.fromObject=function(e){return t.from(Object.entries(e))},t}(),Uo=function(t,e,r){var n,i;if(r===void 0&&(r=[]),e.length===0||t==null)return[t,r];try{for(var o=q(t.keys()),s=o.next();!s.done;s=o.next()){var a=s.value;if(a!==Oe&&e.startsWith(a))return r.push([t,a]),Uo(t.get(a),e.slice(a.length),r)}}catch(u){n={error:u}}finally{try{s&&!s.done&&(i=o.return)&&i.call(o)}finally{if(n)throw n.error}}return r.push([t,e]),Uo(void 0,"",r)},Wa=function(t,e){var r,n;if(e.length===0||t==null)return t;try{for(var i=q(t.keys()),o=i.next();!o.done;o=i.next()){var s=o.value;if(s!==Oe&&e.startsWith(s))return Wa(t.get(s),e.slice(s.length))}}catch(a){r={error:a}}finally{try{o&&!o.done&&(n=i.return)&&n.call(i)}finally{if(r)throw r.error}}},Ua=function(t,e){var r,n,i=e.length;e:for(var o=0;t&&o0)throw new Error("Expected documents to be present. Omit the argument to remove all documents.");this._index=new $a,this._documentCount=0,this._documentIds=new Map,this._idToShortId=new Map,this._fieldLength=new Map,this._avgFieldLength=[],this._storedFields=new Map,this._nextId=0}},t.prototype.discard=function(e){var r=this,n=this._idToShortId.get(e);if(n==null)throw new Error("MiniSearch: cannot discard document with ID ".concat(e,": it is not in the index"));this._idToShortId.delete(e),this._documentIds.delete(n),this._storedFields.delete(n),(this._fieldLength.get(n)||[]).forEach(function(i,o){r.removeFieldLength(n,o,r._documentCount,i)}),this._fieldLength.delete(n),this._documentCount-=1,this._dirtCount+=1,this.maybeAutoVacuum()},t.prototype.maybeAutoVacuum=function(){if(this._options.autoVacuum!==!1){var e=this._options.autoVacuum,r=e.minDirtFactor,n=e.minDirtCount,i=e.batchSize,o=e.batchWait;this.conditionalVacuum({batchSize:i,batchWait:o},{minDirtCount:n,minDirtFactor:r})}},t.prototype.discardAll=function(e){var r,n,i=this._options.autoVacuum;try{this._options.autoVacuum=!1;try{for(var o=q(e),s=o.next();!s.done;s=o.next()){var a=s.value;this.discard(a)}}catch(u){r={error:u}}finally{try{s&&!s.done&&(n=o.return)&&n.call(o)}finally{if(r)throw r.error}}}finally{this._options.autoVacuum=i}this.maybeAutoVacuum()},t.prototype.replace=function(e){var r=this._options,n=r.idField,i=r.extractField,o=i(e,n);this.discard(o),this.add(e)},t.prototype.vacuum=function(e){return e===void 0&&(e={}),this.conditionalVacuum(e)},t.prototype.conditionalVacuum=function(e,r){var n=this;return this._currentVacuum?(this._enqueuedVacuumConditions=this._enqueuedVacuumConditions&&r,this._enqueuedVacuum!=null?this._enqueuedVacuum:(this._enqueuedVacuum=this._currentVacuum.then(function(){var i=n._enqueuedVacuumConditions;return n._enqueuedVacuumConditions=Za,n.performVacuuming(e,i)}),this._enqueuedVacuum)):this.vacuumConditionsMet(r)===!1?Promise.resolve():(this._currentVacuum=this.performVacuuming(e),this._currentVacuum)},t.prototype.performVacuuming=function(e,r){return O0(this,void 0,void 0,function(){var n,i,o,s,a,u,l,f,p,c,h,w,x,v,d,b,m,g,y,_,A,C,F,D,P;return I0(this,function(N){switch(N.label){case 0:if(n=this._dirtCount,!this.vacuumConditionsMet(r))return[3,10];i=e.batchSize||Xa.batchSize,o=e.batchWait||Xa.batchWait,s=1,N.label=1;case 1:N.trys.push([1,7,8,9]),a=q(this._index),u=a.next(),N.label=2;case 2:if(u.done)return[3,6];l=be(u.value,2),f=l[0],p=l[1];try{for(c=(C=void 0,q(p)),h=c.next();!h.done;h=c.next()){w=be(h.value,2),x=w[0],v=w[1];try{for(d=(D=void 0,q(v)),b=d.next();!b.done;b=d.next())m=be(b.value,1),g=m[0],!this._documentIds.has(g)&&(v.size<=1?p.delete(x):v.delete(g))}catch(k){D={error:k}}finally{try{b&&!b.done&&(P=d.return)&&P.call(d)}finally{if(D)throw D.error}}}}catch(k){C={error:k}}finally{try{h&&!h.done&&(F=c.return)&&F.call(c)}finally{if(C)throw C.error}}return this._index.get(f).size===0&&this._index.delete(f),s%i!=0?[3,4]:[4,new Promise(function(k){return setTimeout(k,o)})];case 3:N.sent(),N.label=4;case 4:s+=1,N.label=5;case 5:return u=a.next(),[3,2];case 6:return[3,9];case 7:return y=N.sent(),_={error:y},[3,9];case 8:try{u&&!u.done&&(A=a.return)&&A.call(a)}finally{if(_)throw _.error}return[7];case 9:this._dirtCount-=n,N.label=10;case 10:return[4,null];case 11:return N.sent(),this._currentVacuum=this._enqueuedVacuum,this._enqueuedVacuum=null,[2]}})})},t.prototype.vacuumConditionsMet=function(e){if(e==null)return!0;var r=e.minDirtCount,n=e.minDirtFactor;return r=r||el.minDirtCount,n=n||el.minDirtFactor,this.dirtCount>=r&&this.dirtFactor>=n},Object.defineProperty(t.prototype,"isVacuuming",{get:function(){return this._currentVacuum!=null},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"dirtCount",{get:function(){return this._dirtCount},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"dirtFactor",{get:function(){return this._dirtCount/(1+this._documentCount+this._dirtCount)},enumerable:!1,configurable:!0}),t.prototype.has=function(e){return this._idToShortId.has(e)},t.prototype.search=function(e,r){var n,i;r===void 0&&(r={});var o=this.executeQuery(e,r),s=[];try{for(var a=q(o),u=a.next();!u.done;u=a.next()){var l=be(u.value,2),f=l[0],p=l[1],c=p.score,h=p.terms,w=p.match,x=h.length,v={id:this._documentIds.get(f),score:c*x,terms:Object.keys(w),match:w};Object.assign(v,this._storedFields.get(f)),(r.filter==null||r.filter(v))&&s.push(v)}}catch(d){n={error:d}}finally{try{u&&!u.done&&(i=a.return)&&i.call(a)}finally{if(n)throw n.error}}return s.sort(Yh),s},t.prototype.autoSuggest=function(e,r){var n,i,o,s;r===void 0&&(r={}),r=fe(fe({},this._options.autoSuggestOptions),r);var a=new Map;try{for(var u=q(this.search(e,r)),l=u.next();!l.done;l=u.next()){var f=l.value,p=f.score,c=f.terms,h=c.join(" "),w=a.get(h);w!=null?(w.score+=p,w.count+=1):a.set(h,{score:p,terms:c,count:1})}}catch(y){n={error:y}}finally{try{l&&!l.done&&(i=u.return)&&i.call(u)}finally{if(n)throw n.error}}var x=[];try{for(var v=q(a),d=v.next();!d.done;d=v.next()){var b=be(d.value,2),w=b[0],m=b[1],p=m.score,c=m.terms,g=m.count;x.push({suggestion:w,terms:c,score:p/g})}}catch(y){o={error:y}}finally{try{d&&!d.done&&(s=v.return)&&s.call(v)}finally{if(o)throw o.error}}return x.sort(Yh),x},Object.defineProperty(t.prototype,"documentCount",{get:function(){return this._documentCount},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"termCount",{get:function(){return this._index.size},enumerable:!1,configurable:!0}),t.loadJSON=function(e,r){if(r==null)throw new Error("MiniSearch: loadJSON should be given the same options used when serializing the index");return this.loadJS(JSON.parse(e),r)},t.getDefault=function(e){if(Ja.hasOwnProperty(e))return Ya(Ja,e);throw new Error('MiniSearch: unknown option "'.concat(e,'"'))},t.loadJS=function(e,r){var n,i,o,s,a,u,l=e.index,f=e.documentCount,p=e.nextId,c=e.documentIds,h=e.fieldIds,w=e.fieldLength,x=e.averageFieldLength,v=e.storedFields,d=e.dirtCount,b=e.serializationVersion;if(b!==1&&b!==2)throw new Error("MiniSearch: cannot deserialize an index created with an incompatible version");var m=new t(r);m._documentCount=f,m._nextId=p,m._documentIds=Go(c),m._idToShortId=new Map,m._fieldIds=h,m._fieldLength=Go(w),m._avgFieldLength=x,m._storedFields=Go(v),m._dirtCount=d||0,m._index=new $a;try{for(var g=q(m._documentIds),y=g.next();!y.done;y=g.next()){var _=be(y.value,2),A=_[0],C=_[1];m._idToShortId.set(C,A)}}catch(E){n={error:E}}finally{try{y&&!y.done&&(i=g.return)&&i.call(g)}finally{if(n)throw n.error}}try{for(var F=q(l),D=F.next();!D.done;D=F.next()){var P=be(D.value,2),N=P[0],k=P[1],H=new Map;try{for(var X=(a=void 0,q(Object.keys(k))),J=X.next();!J.done;J=X.next()){var Y=J.value,S=k[Y];b===1&&(S=S.ds),H.set(parseInt(Y,10),Go(S))}}catch(E){a={error:E}}finally{try{J&&!J.done&&(u=X.return)&&u.call(X)}finally{if(a)throw a.error}}m._index.set(N,H)}}catch(E){o={error:E}}finally{try{D&&!D.done&&(s=F.return)&&s.call(F)}finally{if(o)throw o.error}}return m},t.prototype.executeQuery=function(e,r){var n=this;if(r===void 0&&(r={}),typeof e!="string"){var i=fe(fe(fe({},r),e),{queries:void 0}),o=e.queries.map(function(v){return n.executeQuery(v,i)});return this.combineResults(o,e.combineWith)}var s=this._options,a=s.tokenize,u=s.processTerm,l=s.searchOptions,f=fe(fe({tokenize:a,processTerm:u},l),r),p=f.tokenize,c=f.processTerm,h=p(e).flatMap(function(v){return c(v)}).filter(function(v){return!!v}),w=h.map(K0(f)),x=w.map(function(v){return n.executeQuerySpec(v,f)});return this.combineResults(x,f.combineWith)},t.prototype.executeQuerySpec=function(e,r){var n,i,o,s,a=fe(fe({},this._options.searchOptions),r),u=(a.fields||this._options.fields).reduce(function(Y,S){var E;return fe(fe({},Y),(E={},E[S]=Ya(Y,S)||1,E))},a.boost||{}),l=a.boostDocument,f=a.weights,p=a.maxFuzzy,c=a.bm25,h=fe(fe({},Qh.weights),f),w=h.fuzzy,x=h.prefix,v=this._index.get(e.term),d=this.termResults(e.term,e.term,1,v,u,l,c),b,m;if(e.prefix&&(b=this._index.atPrefix(e.term)),e.fuzzy){var g=e.fuzzy===!0?.2:e.fuzzy,y=g<1?Math.min(p,Math.round(e.term.length*g)):g;y&&(m=this._index.fuzzyGet(e.term,y))}if(b)try{for(var _=q(b),A=_.next();!A.done;A=_.next()){var C=be(A.value,2),F=C[0],D=C[1],P=F.length-e.term.length;if(!!P){m==null||m.delete(F);var N=x*F.length/(F.length+.3*P);this.termResults(e.term,F,N,D,u,l,c,d)}}}catch(Y){n={error:Y}}finally{try{A&&!A.done&&(i=_.return)&&i.call(_)}finally{if(n)throw n.error}}if(m)try{for(var k=q(m.keys()),H=k.next();!H.done;H=k.next()){var F=H.value,X=be(m.get(F),2),J=X[0],P=X[1];if(!!P){var N=w*F.length/(F.length+P);this.termResults(e.term,F,N,J,u,l,c,d)}}}catch(Y){o={error:Y}}finally{try{H&&!H.done&&(s=k.return)&&s.call(k)}finally{if(o)throw o.error}}return d},t.prototype.combineResults=function(e,r){if(r===void 0&&(r=Qa),e.length===0)return new Map;var n=r.toLowerCase();return e.reduce(L0[n])||new Map},t.prototype.toJSON=function(){var e,r,n,i,o=[];try{for(var s=q(this._index),a=s.next();!a.done;a=s.next()){var u=be(a.value,2),l=u[0],f=u[1],p={};try{for(var c=(n=void 0,q(f)),h=c.next();!h.done;h=c.next()){var w=be(h.value,2),x=w[0],v=w[1];p[x]=Object.fromEntries(v)}}catch(d){n={error:d}}finally{try{h&&!h.done&&(i=c.return)&&i.call(c)}finally{if(n)throw n.error}}o.push([l,p])}}catch(d){e={error:d}}finally{try{a&&!a.done&&(r=s.return)&&r.call(s)}finally{if(e)throw e.error}}return{documentCount:this._documentCount,nextId:this._nextId,documentIds:Object.fromEntries(this._documentIds),fieldIds:this._fieldIds,fieldLength:Object.fromEntries(this._fieldLength),averageFieldLength:this._avgFieldLength,storedFields:Object.fromEntries(this._storedFields),dirtCount:this._dirtCount,index:o,serializationVersion:2}},t.prototype.termResults=function(e,r,n,i,o,s,a,u){var l,f,p,c,h;if(u===void 0&&(u=new Map),i==null)return u;try{for(var w=q(Object.keys(o)),x=w.next();!x.done;x=w.next()){var v=x.value,d=o[v],b=this._fieldIds[v],m=i.get(b);if(m!=null){var g=m.size,y=this._avgFieldLength[b];try{for(var _=(p=void 0,q(m.keys())),A=_.next();!A.done;A=_.next()){var C=A.value;if(!this._documentIds.has(C)){this.removeTerm(b,C,r),g-=1;continue}var F=s?s(this._documentIds.get(C),r):1;if(!!F){var D=m.get(C),P=this._fieldLength.get(C)[b],N=B0(D,g,this._documentCount,P,y,a),k=n*d*F*N,H=u.get(C);if(H){H.score+=k,H0(H.terms,e);var X=Ya(H.match,r);X?X.push(v):H.match[r]=[v]}else u.set(C,{score:k,terms:[e],match:(h={},h[r]=[v],h)})}}}catch(J){p={error:J}}finally{try{A&&!A.done&&(c=_.return)&&c.call(_)}finally{if(p)throw p.error}}}}}catch(J){l={error:J}}finally{try{x&&!x.done&&(f=w.return)&&f.call(w)}finally{if(l)throw l.error}}return u},t.prototype.addTerm=function(e,r,n){var i=this._index.fetch(n,Jh),o=i.get(e);if(o==null)o=new Map,o.set(r,1),i.set(e,o);else{var s=o.get(r);o.set(r,(s||0)+1)}},t.prototype.removeTerm=function(e,r,n){if(!this._index.has(n)){this.warnDocumentChanged(r,e,n);return}var i=this._index.fetch(n,Jh),o=i.get(e);o==null||o.get(r)==null?this.warnDocumentChanged(r,e,n):o.get(r)<=1?o.size<=1?i.delete(e):o.delete(r):o.set(r,o.get(r)-1),this._index.get(n).size===0&&this._index.delete(n)},t.prototype.warnDocumentChanged=function(e,r,n){var i,o;try{for(var s=q(Object.keys(this._fieldIds)),a=s.next();!a.done;a=s.next()){var u=a.value;if(this._fieldIds[u]===r){this._options.logger("warn","MiniSearch: document with ID ".concat(this._documentIds.get(e),' has changed before removal: term "').concat(n,'" was not present in field "').concat(u,'". Removing a document after it has changed can corrupt the index!'),"version_conflict");return}}}catch(l){i={error:l}}finally{try{a&&!a.done&&(o=s.return)&&o.call(s)}finally{if(i)throw i.error}}},t.prototype.addDocumentId=function(e){var r=this._nextId;return this._idToShortId.set(e,r),this._documentIds.set(r,e),this._documentCount+=1,this._nextId+=1,r},t.prototype.addFields=function(e){for(var r=0;r{Xh();ot();Ze();At();Zh=ge(require("obsidian"));Gn();ci();hn();$0=t=>{let e=t.split($n);e=[...e,...e.flatMap(Lu)],e=[...e,...e.flatMap(Ru)];let r=Gi();return r&&(e=e.flatMap(n=>ju.test(n)?r.cut(n):[n])),e},Qo=class{constructor(){this.indexedDocuments=new Map;this.minisearch=new qa(Qo.options)}async loadCache(){let e=await Fe.getMinisearchCache();return e?(this.minisearch=qa.loadJS(e.data,Qo.options),this.indexedDocuments=new Map(e.paths.map(r=>[r.path,r.mtime])),!0):(console.log("Omnisearch - No cache found"),!1)}getDiff(e){let r=new Map(e.map(o=>[o.path,o.mtime])),n=e.filter(o=>!this.indexedDocuments.has(o.path)||this.indexedDocuments.get(o.path)!==o.mtime),i=[...this.indexedDocuments].filter(([o,s])=>!r.has(o)||r.get(o)!==s).map(o=>({path:o[0],mtime:o[1]}));return{toAdd:n,toRemove:i}}async addFromPaths(e){de("Adding files",e);let r=(await Promise.all(e.map(async i=>await Fe.getDocument(i)))).filter(i=>!!i?.path);de("Sorting documents to first index markdown"),r=Ka(r,i=>i.path.endsWith(".md")?0:1),this.removeFromPaths(r.filter(i=>this.indexedDocuments.has(i.path)).map(i=>i.path));let n=Mu(r,500);for(let i of n){de("Indexing into search engine",i),i.forEach(s=>this.indexedDocuments.set(s.path,s.mtime));let o=i.filter(s=>this.minisearch.has(s.path));this.removeFromPaths(o.map(s=>s.path)),await this.minisearch.addAllAsync(i)}}removeFromPaths(e){e.forEach(n=>this.indexedDocuments.delete(n));let r=e.filter(n=>this.minisearch.has(n));this.minisearch.discardAll(r)}async search(e,r){if(e.isEmpty())return[];de("=== New search ==="),de("Starting search for",e);let n;switch(T.fuzziness){case"0":n=0;break;case"1":n=.1;break;default:n=.2;break}let i=this.minisearch.search(e.segmentsToStr(),{prefix:l=>l.length>=r.prefixLength,fuzzy:l=>l.length<=3?0:l.length<=5?n/2:n,combineWith:"AND",boost:{basename:T.weightBasename,directory:T.weightDirectory,aliases:T.weightBasename,headings1:T.weightH1,headings2:T.weightH2,headings3:T.weightH3,unmarkedTags:T.weightUnmarkedTags}});if(de("Found",i.length,"results"),e.query.ext?.length&&(i=i.filter(l=>{let f="."+l.id.split(".").pop();return e.query.ext?.some(p=>f.startsWith(p.startsWith(".")?p:"."+p))})),e.query.path&&(i=i.filter(l=>e.query.path?.some(f=>l.id.toLowerCase().includes(f.toLowerCase())))),e.query.exclude.path&&(i=i.filter(l=>!e.query.exclude.path?.some(f=>l.id.toLowerCase().includes(f.toLowerCase())))),!i.length)return[];if(r.singleFilePath)return i.filter(l=>l.id===r.singleFilePath);T.hideExcluded?i=i.filter(l=>!(app.metadataCache.isUserIgnored&&app.metadataCache.isUserIgnored(l.id))):i.forEach(l=>{app.metadataCache.isUserIgnored&&app.metadataCache.isUserIgnored(l.id)&&(l.score/=10)});let o=e.getTags();for(let l of o)for(let f of i)(f.tags??[]).includes(l)&&(f.score*=100);de("Sorting and limiting results"),i=i.sort((l,f)=>f.score-l.score).slice(0,50),i.length&&de("First result:",i[0]);let s=await Promise.all(i.map(async l=>await Fe.getDocument(l.id))),a=e.getExactTerms();a.length&&(de("Filtering with quoted terms: ",a),i=i.filter(l=>{let f=s.find(h=>h.path===l.id),p=f?.path.toLowerCase()??"",c=ca(f?.content??"").toLowerCase();return a.every(h=>c.includes(h)||p.includes(h))}));let u=e.query.exclude.text;return u.length&&(de("Filtering with exclusions"),i=i.filter(l=>{let f=ca(s.find(p=>p.path===l.id)?.content??"").toLowerCase();return u.every(p=>!f.includes(p))})),de("Deduping"),i=i.filter((l,f,p)=>p.findIndex(c=>c.id===l.id)===f),i}async getSuggestions(e,r){let n;T.simpleSearch?n=await this.search(e,{prefixLength:3,singleFilePath:r?.singleFilePath}):n=await this.search(e,{prefixLength:1,singleFilePath:r?.singleFilePath});let i=await Promise.all(n.map(async s=>await Fe.getDocument(s.id)));return n.map(s=>{de("Locating matches for",s.id);let a=i.find(p=>p.path===s.id);a||(console.warn(`Omnisearch - Note "${s.id}" not in the live cache`),a={content:"",basename:s.id,path:s.id});let u=[...Object.keys(s.match),...e.getExactTerms(),...e.getTags()].filter(p=>p.length>1||/\p{Emoji}/u.test(p));de("Matching tokens:",u),de("Getting matches locations...");let l=zo(a.content,dn(u),e);return de(`Matches for ${a.basename}`,l),he({score:s.score,foundWords:u,matches:l},a)})}async writeToCache(){await Fe.writeMinisearchCache(this.minisearch,this.indexedDocuments)}},tl=Qo;tl.options={tokenize:$0,extractField:(e,r)=>{if(r==="directory"){let n=e.path.split("/");return n.pop(),n.join("/")}return e[r]},processTerm:e=>(T.ignoreDiacritics?jt(e):e).toLowerCase(),idField:"path",fields:["basename","directory","aliases","content","headings1","headings2","headings3"],storeFields:["tags"],logger(e,r,n){n==="version_conflict"&&new Zh.Notice("Omnisearch - Your index cache may be incorrect or corrupted. If this message keeps appearing, go to Settings to clear the cache.",5e3)}};je=new tl});function em(t){rl.add(t)}async function qo(){let t=[...rl].map(e=>e.path);t.length&&(je.removeFromPaths(t),await je.addFromPaths(t),rl.clear())}var rl,Yo=j(()=>{yn();rl=new Set});var tm=pi(Jo=>{function nl(t){return nl=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},nl(t)}(function(t,e){if(typeof define=="function"&&define.amd)define(["exports"],e);else if(typeof Jo!="undefined")e(Jo);else{var r={exports:{}};e(r.exports),t.CancelablePromise=r.exports}})(typeof globalThis!="undefined"?globalThis:typeof self!="undefined"?self:Jo,function(t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CancelablePromise=void 0,t.cancelable=N,t.default=void 0,t.isCancelablePromise=k;function e(S,E){if(typeof E!="function"&&E!==null)throw new TypeError("Super expression must either be null or a function");S.prototype=Object.create(E&&E.prototype,{constructor:{value:S,writable:!0,configurable:!0}}),Object.defineProperty(S,"prototype",{writable:!1}),E&&r(S,E)}function r(S,E){return r=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(K,Z){return K.__proto__=Z,K},r(S,E)}function n(S){var E=s();return function(){var K=a(S),Z;if(E){var M=a(this).constructor;Z=Reflect.construct(K,arguments,M)}else Z=K.apply(this,arguments);return i(this,Z)}}function i(S,E){if(E&&(nl(E)==="object"||typeof E=="function"))return E;if(E!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return o(S)}function o(S){if(S===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return S}function s(){if(typeof Reflect=="undefined"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function a(S){return a=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(I){return I.__proto__||Object.getPrototypeOf(I)},a(S)}function u(S,E){var I=typeof Symbol!="undefined"&&S[Symbol.iterator]||S["@@iterator"];if(!I){if(Array.isArray(S)||(I=l(S))||E&&S&&typeof S.length=="number"){I&&(S=I);var K=0,Z=function(){};return{s:Z,n:function(){return K>=S.length?{done:!0}:{done:!1,value:S[K++]}},e:function(ye){throw ye},f:Z}}throw new TypeError(`Invalid attempt to iterate non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var M=!0,ne=!1,ze;return{s:function(){I=I.call(S)},n:function(){var ye=I.next();return M=ye.done,ye},e:function(ye){ne=!0,ze=ye},f:function(){try{!M&&I.return!=null&&I.return()}finally{if(ne)throw ze}}}}function l(S,E){if(!!S){if(typeof S=="string")return f(S,E);var I=Object.prototype.toString.call(S).slice(8,-1);if(I==="Object"&&S.constructor&&(I=S.constructor.name),I==="Map"||I==="Set")return Array.from(S);if(I==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(I))return f(S,E)}}function f(S,E){(E==null||E>S.length)&&(E=S.length);for(var I=0,K=new Array(E);I{let{score:r,path:n,basename:i,foundWords:o,matches:s,content:a}=e,u=pn(a,s[0]?.offset??-1);return{score:r,vault:app.vault.getName(),path:n,basename:i,foundWords:o,matches:s.map(f=>({match:f.match,offset:f.offset})),excerpt:u.content}})}async function c1(t){let e=new xr(t),r=await je.getSuggestions(e);return u1(r)}function f1(t){Zo.push(t),ym&&t()}function d1(t){Zo=Zo.filter(e=>e!==t)}function _m(){ym=!0,Zo.forEach(t=>t())}var ym,Zo,di,ol=j(()=>{Wo();yn();hn();Yo();ym=!1,Zo=[];di={search:c1,registerOnIndexed:f1,unregisterOnIndexed:d1,refreshIndex:qo}});var wm={};dl(wm,{default:()=>p1,getServer:()=>xm});function xm(){let t=vm.createServer(async function(e,r){r.setHeader("Access-Control-Allow-Origin","*"),r.setHeader("Access-Control-Allow-Methods","GET, HEAD, POST, OPTIONS, PUT, PATCH, DELETE"),r.setHeader("Access-Control-Allow-Headers","Access-Control-Allow-Headers, Origin, Authorization,Accept,x-client-id, X-Requested-With, Content-Type, Access-Control-Request-Method, Access-Control-Request-Headers, hypothesis-client-version"),r.setHeader("Access-Control-Allow-Credentials","true");try{if(e.url){let n=bm.parse(e.url,!0);if(n.pathname==="/search"){let i=n.query.q,o=await di.search(i);r.statusCode=200,r.setHeader("Content-Type","application/json"),r.end(JSON.stringify(o))}else r.end()}}catch(n){r.statusCode=500,r.end(n)}});return{listen(e){console.log(`Omnisearch - Starting HTTP server on port ${e}`),t.listen({port:parseInt(e),host:"localhost"},()=>{console.log(`Omnisearch - Started HTTP server on port ${e}`),new es.Notice(`Omnisearch - Started HTTP server on port ${e}`)}),t.on("error",r=>{console.error(r),new es.Notice(`Omnisearch - Cannot start HTTP server on ${e}. See console for more details.`)})},close(){t.close(),console.log("Omnisearch - Terminated HTTP server"),new es.Notice("Omnisearch - Terminated HTTP server")}}}var vm,bm,es,p1,jm=j(()=>{vm=ge(require("http")),bm=ge(require("url"));ol();es=ge(require("obsidian"));Ze();p1=xm});dl(exports,{default:()=>sl});var tr=ge(require("obsidian"));var Xo=ge(require("obsidian"));Xe();var er=ge(require("obsidian"));Xe();Xe();var Hu=ge(require("obsidian"));ot();Gn();function hy(t){let e,r,n,i,o,s,a,u,l=t[8].default,f=Ar(l,t,t[7],null);return{c(){e=R("div"),r=R("div"),n=R("input"),o=G(),f&&f.c(),B(n,"class","prompt-input"),B(n,"placeholder",t[0]),B(n,"spellcheck","false"),B(n,"type","text"),B(r,"class","omnisearch-input-field"),B(e,"class","omnisearch-input-container")},m(p,c){U(p,e,c),O(e,r),O(r,n),t[9](n),is(n,t[1]),O(e,o),f&&f.m(e,null),s=!0,a||(u=[$e(n,"input",t[10]),yl(i=t[3].call(null,n)),$e(n,"compositionend",t[11]),$e(n,"compositionstart",t[12]),$e(n,"input",t[4])],a=!0)},p(p,[c]){(!s||c&1)&&B(n,"placeholder",p[0]),c&2&&n.value!==p[1]&&is(n,p[1]),f&&f.p&&(!s||c&128)&&Sr(f,l,p,p[7],s?Cr(l,p[7],c,null):Er(p[7]),null)},i(p){s||(te(f,p),s=!0)},o(p){ie(f,p),s=!1},d(p){p&&W(e),t[9](null),f&&f.d(p),a=!1,rt(u)}}}function my(t,e,r){let{$$slots:n={},$$scope:i}=e,{initialValue:o=""}=e,{placeholder:s=""}=e,a=!1,u="",l,f=as();function p(m){r(1,u=m)}function c(m){m&&!a&&!u&&(a=!0,r(1,u=m),h())}function h(m){Dt().then(()=>(l.focus(),Dt())).then(()=>{l.select()})}let w=(0,Hu.debounce)(()=>{Fe.addToSearchHistory(""),f("input",u)},300);function x(m){ht[m?"unshift":"push"](()=>{l=m,r(2,l)})}function v(){u=this.value,r(1,u)}let d=m=>sa(!1),b=m=>sa(!0);return t.$$set=m=>{"initialValue"in m&&r(5,o=m.initialValue),"placeholder"in m&&r(0,s=m.placeholder),"$$scope"in m&&r(7,i=m.$$scope)},t.$$.update=()=>{if(t.$$.dirty&32){e:c(o)}},[s,u,l,h,w,o,p,i,n,x,v,d,b]}var Vu=class extends De{constructor(e){super();Pe(this,e,my,hy,Ce,{initialValue:5,placeholder:0,setInputValue:6})}get setInputValue(){return this.$$.ctx[6]}},Xi=Vu;Xe();function gy(t){let e,r,n,i,o=t[1].default,s=Ar(o,t,t[0],null);return{c(){e=R("div"),s&&s.c(),B(e,"class","prompt-results")},m(a,u){U(a,e,u),s&&s.m(e,null),r=!0,n||(i=$e(e,"mousedown",yy),n=!0)},p(a,[u]){s&&s.p&&(!r||u&1)&&Sr(s,o,a,a[0],r?Cr(o,a[0],u,null):Er(a[0]),null)},i(a){r||(te(s,a),r=!0)},o(a){ie(s,a),r=!1},d(a){a&&W(e),s&&s.d(a),n=!1,i()}}}var yy=t=>t.preventDefault();function _y(t,e,r){let{$$slots:n={},$$scope:i}=e;return t.$$set=o=>{"$$scope"in o&&r(0,i=o.$$scope)},[i,n]}var $u=class extends De{constructor(e){super();Pe(this,e,_y,gy,Ce,{})}},Zi=$u;ot();var za=ge(require("obsidian"));hn();async function Ho(t,e=!1){let r=dn(t.foundWords);r.exec(t.content);let n=r.lastIndex,i=!1;app.workspace.iterateAllLeaves(a=>{a.view instanceof za.MarkdownView&&!e&&a.getViewState().state?.file===t.path&&a.getViewState()?.pinned&&(app.workspace.setActiveLeaf(a,{focus:!0}),i=!0)}),i||await app.workspace.openLinkText(t.path,"",e);let o=app.workspace.getActiveViewOfType(za.MarkdownView);if(!o)return;let s=o.editor.offsetToPos(n);s.ch=0,o.editor.setCursor(s),o.editor.scrollIntoView({from:{line:s.line-10,ch:0},to:{line:s.line+10,ch:0}})}async function Eh(t,e=!1){try{let r;switch(app.vault.getConfig("newFileLocation")){case"current":r=(app.workspace.getActiveFile()?.parent?.path??"")+"/";break;case"folder":r=app.vault.getConfig("newFileFolderPath")+"/";break;default:r="";break}await app.workspace.openLinkText(`${r}${t}.md`,"",e)}catch(r){throw r.message="OmniSearch - Could not create note: "+r.message,console.error(r),r}}At();Xe();Ze();At();Xe();Xe();function A0(t){let e;return{c(){e=R("span"),e.innerHTML='',B(e,"class","suggestion-flair"),B(e,"aria-label","Not created yet, select to create")},m(r,n){U(r,e,n)},p:me,i:me,o:me,d(r){r&&W(e)}}}function C0(t){"use strict";return[]}var Fh=class extends De{constructor(e){super();Pe(this,e,C0,A0,Ce,{})}},Th=Fh;function Dh(t){let e,r;return e=new Th({}),{c(){We(e.$$.fragment)},m(n,i){Le(e,n,i),r=!0},i(n){r||(te(e.$$.fragment,n),r=!0)},o(n){ie(e.$$.fragment,n),r=!1},d(n){Ie(e,n)}}}function S0(t){let e,r,n,i,o,s=t[2]&&Dh(t),a=t[4].default,u=Ar(a,t,t[3],null);return{c(){e=R("div"),s&&s.c(),r=G(),u&&u.c(),B(e,"data-result-id",t[0]),B(e,"class","suggestion-item omnisearch-result"),os(e,"is-selected",t[1])},m(l,f){U(l,e,f),s&&s.m(e,null),O(e,r),u&&u.m(e,null),n=!0,i||(o=[$e(e,"mousemove",t[5]),$e(e,"click",t[6]),$e(e,"keypress",t[7]),$e(e,"auxclick",t[8])],i=!0)},p(l,[f]){l[2]?s?f&4&&te(s,1):(s=Dh(l),s.c(),te(s,1),s.m(e,r)):s&&(nr(),ie(s,1,1,()=>{s=null}),ir()),u&&u.p&&(!n||f&8)&&Sr(u,a,l,l[3],n?Cr(a,l[3],f,null):Er(l[3]),null),(!n||f&1)&&B(e,"data-result-id",l[0]),(!n||f&2)&&os(e,"is-selected",l[1])},i(l){n||(te(s),te(u,l),n=!0)},o(l){ie(s),ie(u,l),n=!1},d(l){l&&W(e),s&&s.d(),u&&u.d(l),i=!1,rt(o)}}}function E0(t,e,r){let{$$slots:n={},$$scope:i}=e,{id:o}=e,{selected:s=!1}=e,{glyph:a=!1}=e;function u(c){qe.call(this,t,c)}function l(c){qe.call(this,t,c)}function f(c){qe.call(this,t,c)}function p(c){qe.call(this,t,c)}return t.$$set=c=>{"id"in c&&r(0,o=c.id),"selected"in c&&r(1,s=c.selected),"glyph"in c&&r(2,a=c.glyph),"$$scope"in c&&r(3,i=c.$$scope)},[o,s,a,i,n,u,l,f,p]}var Oh=class extends De{constructor(e){super();Pe(this,e,E0,S0,Ce,{id:0,selected:1,glyph:2})}},Vo=Oh;var mn=ge(require("obsidian"));ci();hn();function Ih(t){let e,r=t[1].matches.length+"",n,i,o=(t[1].matches.length>1?"matches":"match")+"",s;return{c(){e=R("span"),n=Se(r),i=Se("\xA0"),s=Se(o),B(e,"class","omnisearch-result__counter")},m(a,u){U(a,e,u),O(e,n),O(e,i),O(e,s)},p(a,u){u&2&&r!==(r=a[1].matches.length+"")&&nt(n,r),u&2&&o!==(o=(a[1].matches.length>1?"matches":"match")+"")&&nt(s,o)},d(a){a&&W(e)}}}function Ph(t){let e,r,n,i,o;return{c(){e=R("div"),r=R("span"),n=G(),i=R("span"),o=Se(t[7]),B(e,"class","omnisearch-result__folder-path")},m(s,a){U(s,e,a),O(e,r),t[14](r),O(e,n),O(e,i),O(i,o)},p(s,a){a&128&&nt(o,s[7])},d(s){s&&W(e),t[14](null)}}}function kh(t){let e,r=Zt(t[5].content,t[9])+"";return{c(){e=R("div"),B(e,"class","omnisearch-result__body")},m(n,i){U(n,e,i),e.innerHTML=r},p(n,i){i&544&&r!==(r=Zt(n[5].content,n[9])+"")&&(e.innerHTML=r)},d(n){n&&W(e)}}}function Mh(t){let e,r,n;return{c(){e=R("div"),r=R("img"),Qe(r,"width","100px"),ns(r.src,n=t[6])||B(r,"src",n),B(r,"alt",""),B(e,"class","omnisearch-result__image-container")},m(i,o){U(i,e,o),O(e,r)},p(i,o){o&64&&!ns(r.src,n=i[6])&&B(r,"src",n)},d(i){i&&W(e)}}}function F0(t){let e,r,n,i,o,s,a=Zt(t[2],t[10])+"",u,l,f,p=gr(t[1].path)+"",c,h,w,x,v,d,b=t[1].matches.length>0&&Ih(t),m=t[7]&&Ph(t),g=t[11]&&kh(t),y=t[6]&&Mh(t);return{c(){e=R("div"),r=R("div"),n=R("span"),i=R("span"),o=G(),s=R("span"),u=G(),l=R("span"),f=Se("."),c=Se(p),h=G(),b&&b.c(),w=G(),m&&m.c(),x=G(),v=R("div"),g&&g.c(),d=G(),y&&y.c(),B(l,"class","omnisearch-result__extension"),B(n,"class","omnisearch-result__title"),B(r,"class","omnisearch-result__title-container"),Qe(v,"display","flex"),Qe(v,"flex-direction","row")},m(_,A){U(_,e,A),O(e,r),O(r,n),O(n,i),t[13](i),O(n,o),O(n,s),s.innerHTML=a,O(n,u),O(n,l),O(l,f),O(l,c),O(n,h),b&&b.m(n,null),O(e,w),m&&m.m(e,null),O(e,x),O(e,v),g&&g.m(v,null),O(v,d),y&&y.m(v,null)},p(_,A){A&1028&&a!==(a=Zt(_[2],_[10])+"")&&(s.innerHTML=a),A&2&&p!==(p=gr(_[1].path)+"")&&nt(c,p),_[1].matches.length>0?b?b.p(_,A):(b=Ih(_),b.c(),b.m(n,null)):b&&(b.d(1),b=null),_[7]?m?m.p(_,A):(m=Ph(_),m.c(),m.m(e,x)):m&&(m.d(1),m=null),_[11]?g?g.p(_,A):(g=kh(_),g.c(),g.m(v,d)):g&&(g.d(1),g=null),_[6]?y?y.p(_,A):(y=Mh(_),y.c(),y.m(v,null)):y&&(y.d(1),y=null)},d(_){_&&W(e),t[13](null),b&&b.d(),m&&m.d(),g&&g.d(),y&&y.d()}}}function T0(t){let e,r;return e=new Vo({props:{glyph:t[8],id:t[1].path,selected:t[0],$$slots:{default:[F0]},$$scope:{ctx:t}}}),e.$on("click",t[15]),e.$on("auxclick",t[16]),e.$on("mousemove",t[17]),{c(){We(e.$$.fragment)},m(n,i){Le(e,n,i),r=!0},p(n,[i]){let o={};i&256&&(o.glyph=n[8]),i&2&&(o.id=n[1].path),i&1&&(o.selected=n[0]),i&265982&&(o.$$scope={dirty:i,ctx:n}),e.$set(o)},i(n){r||(te(e.$$.fragment,n),r=!0)},o(n){ie(e.$$.fragment,n),r=!1},d(n){Ie(e,n)}}}function D0(t,e,r){let n,i,o,s,a,u;mi(t,dr,y=>r(11,u=y));let{selected:l=!1}=e,{note:f}=e,p=null,c="",h="",w,x;function v(y){ht[y?"unshift":"push"](()=>{x=y,r(4,x)})}function d(y){ht[y?"unshift":"push"](()=>{w=y,r(3,w)})}function b(y){qe.call(this,t,y)}function m(y){qe.call(this,t,y)}function g(y){qe.call(this,t,y)}t.$$set=y=>{"selected"in y&&r(0,l=y.selected),"note"in y&&r(1,f=y.note)},t.$$.update=()=>{if(t.$$.dirty&2){e:if(r(6,p=null),Vr(f.path)){let y=app.vault.getFiles().find(_=>_.path===f.path);y&&r(6,p=app.vault.getResourcePath(y))}}if(t.$$.dirty&2){e:r(12,n=dn(f.foundWords))}if(t.$$.dirty&30){e:r(2,c=f.basename),r(7,h=Ou(f.path)),T.ignoreDiacritics&&r(2,c=jt(c)),w&&(0,mn.setIcon)(w,"folder-open"),x&&(Vr(f.path)?(0,mn.setIcon)(x,"image"):mr(f.path)?(0,mn.setIcon)(x,"file-text"):$r(f.path)?(0,mn.setIcon)(x,"layout-dashboard"):(0,mn.setIcon)(x,"file"))}if(t.$$.dirty&4100){e:r(10,i=zo(c,n))}if(t.$$.dirty&2){e:r(5,s=pn(f.content,f.matches[0]?.offset??-1))}if(t.$$.dirty&34){e:r(9,o=li(f.matches).map(y=>(y.offset=y.offset-s.offset,y)))}};e:r(8,a=!1);return[l,f,c,w,x,s,p,h,a,o,i,u,n,v,d,b,m,g]}var Rh=class extends De{constructor(e){super();Pe(this,e,D0,T0,Ce,{selected:0,note:1})}},Lh=Rh;Wo();Ze();Yo();Gn();yn();var rm=ge(tm());function nm(t,e,r){let n=t.slice();return n[36]=e[r],n[38]=r,n}function W0(t){let e,r,n;return{c(){e=R("button"),e.textContent="Create note"},m(i,o){U(i,e,o),r||(n=$e(e,"click",t[12]),r=!0)},p:me,d(i){i&&W(e),r=!1,n()}}}function U0(t){let e,r=T.showCreateButton&&W0(t);return{c(){r&&r.c(),e=Fr()},m(n,i){r&&r.m(n,i),U(n,e,i)},p(n,i){T.showCreateButton&&r.p(n,i)},d(n){r&&r.d(n),n&&W(e)}}}function im(t){let e,r,n;return{c(){e=R("div"),r=Se("\u23F3 Work in progress: "),n=Se(t[3]),Qe(e,"text-align","center"),Qe(e,"color","var(--text-accent)"),Qe(e,"margin-top","10px")},m(i,o){U(i,e,o),O(e,r),O(e,n)},p(i,o){o[0]&8&&nt(n,i[3])},d(i){i&&W(e)}}}function om(t){let e,r;function n(...i){return t[18](t[38],...i)}return e=new Lh({props:{selected:t[38]===t[0],note:t[36]}}),e.$on("mousemove",n),e.$on("click",t[10]),e.$on("auxclick",t[19]),{c(){We(e.$$.fragment)},m(i,o){Le(e,i,o),r=!0},p(i,o){t=i;let s={};o[0]&1&&(s.selected=t[38]===t[0]),o[0]&4&&(s.note=t[36]),e.$set(s)},i(i){r||(te(e.$$.fragment,i),r=!0)},o(i){ie(e.$$.fragment,i),r=!1},d(i){Ie(e,i)}}}function G0(t){let e;return{c(){e=Se("Searching...")},m(r,n){U(r,e,n)},p:me,d(r){r&&W(e)}}}function Q0(t){let e,r=T.simpleSearch&&t[1].split($n).some(am),n,i=r&&sm(t);return{c(){e=Se(`We found 0 result for your search here. + `),i&&i.c(),n=Fr()},m(o,s){U(o,e,s),i&&i.m(o,s),U(o,n,s)},p(o,s){s[0]&2&&(r=T.simpleSearch&&o[1].split($n).some(am)),r?i||(i=sm(o),i.c(),i.m(n.parentNode,n)):i&&(i.d(1),i=null)},d(o){o&&W(e),i&&i.d(o),o&&W(n)}}}function sm(t){let e,r,n;return{c(){e=R("br"),r=G(),n=R("span"),n.textContent=`You have enabled "Simpler Search" in the settings, try to type more + characters.`,Qe(n,"color","var(--text-accent)"),Qe(n,"font-size","small")},m(i,o){U(i,e,o),U(i,r,o),U(i,n,o)},d(i){i&&W(e),i&&W(r),i&&W(n)}}}function q0(t){let e,r,n,i=t[2],o=[];for(let f=0;fie(o[f],1,1,()=>{o[f]=null});function a(f,p){if(!f[2].length&&f[1]&&!f[4])return Q0;if(f[4])return G0}let u=a(t,[-1,-1]),l=u&&u(t);return{c(){for(let f=0;f\u2191\u2193to navigate',u=G(),l=R("div"),l.innerHTML=`alt \u2191\u2193 + to cycle history`,f=G(),p=R("div"),c=R("span"),h=Se(t[7]),w=G(),x=R("span"),x.textContent="to open",v=G(),d=R("div"),d.innerHTML=`tab + to switch to In-File Search`,b=G(),m=R("div"),g=R("span"),y=Se(t[6]),_=G(),A=R("span"),A.textContent="to open in a new pane",C=G(),F=R("div"),F.innerHTML=`alt o + to open in the background`,D=G(),P=R("div"),N=R("span"),k=Se(t[9]),H=G(),X=R("span"),X.textContent="to create",J=G(),Y=R("div"),S=R("span"),E=Se(t[8]),I=G(),K=R("span"),K.textContent="to create in a new pane",Z=G(),M=R("div"),M.innerHTML=`alt \u21B5 + to insert a link`,ne=G(),ze=R("div"),ze.innerHTML=`ctrl h + to toggle excerpts`,Ae=G(),ye=R("div"),ye.innerHTML='escto close',B(a,"class","prompt-instruction"),B(l,"class","prompt-instruction"),B(c,"class","prompt-instruction-command"),B(p,"class","prompt-instruction"),B(d,"class","prompt-instruction"),B(g,"class","prompt-instruction-command"),B(m,"class","prompt-instruction"),B(F,"class","prompt-instruction"),B(N,"class","prompt-instruction-command"),B(P,"class","prompt-instruction"),B(S,"class","prompt-instruction-command"),B(Y,"class","prompt-instruction"),B(M,"class","prompt-instruction"),B(ze,"class","prompt-instruction"),B(ye,"class","prompt-instruction"),B(s,"class","prompt-instructions")},m(ee,xe){Le(e,ee,xe),U(ee,r,xe),Ve&&Ve.m(ee,xe),U(ee,n,xe),Le(i,ee,xe),U(ee,o,xe),U(ee,s,xe),O(s,a),O(s,u),O(s,l),O(s,f),O(s,p),O(p,c),O(c,h),O(p,w),O(p,x),O(s,v),O(s,d),O(s,b),O(s,m),O(m,g),O(g,y),O(m,_),O(m,A),O(s,C),O(s,F),O(s,D),O(s,P),O(P,N),O(N,k),O(P,H),O(P,X),O(s,J),O(s,Y),O(Y,S),O(S,E),O(Y,I),O(Y,K),O(s,Z),O(s,M),O(s,ne),O(s,ze),O(s,Ae),O(s,ye),He=!0},p(ee,xe){let ts={};xe[0]&2&&(ts.initialValue=ee[1]),xe[1]&256&&(ts.$$scope={dirty:xe,ctx:ee}),e.$set(ts),ee[3]?Ve?Ve.p(ee,xe):(Ve=im(ee),Ve.c(),Ve.m(n.parentNode,n)):Ve&&(Ve.d(1),Ve=null);let al={};xe[0]&23|xe[1]&256&&(al.$$scope={dirty:xe,ctx:ee}),i.$set(al),(!He||xe[0]&128)&&nt(h,ee[7]),(!He||xe[0]&64)&&nt(y,ee[6]),(!He||xe[0]&512)&&nt(k,ee[9]),(!He||xe[0]&256)&&nt(E,ee[8])},i(ee){He||(te(e.$$.fragment,ee),te(i.$$.fragment,ee),He=!0)},o(ee){ie(e.$$.fragment,ee),ie(i.$$.fragment,ee),He=!1},d(ee){t[16](null),Ie(e,ee),ee&&W(r),Ve&&Ve.d(ee),ee&&W(n),Ie(i,ee),ee&&W(o),ee&&W(s)}}}var am=t=>t.length<3;function J0(t,e,r){let n,i;mi(t,Bt,M=>r(15,i=M));let{modal:o}=e,{previousQuery:s}=e,a=0,u=0,l,f=[],p,c="",h=!0,w,x,v,d,b;wn(async()=>{Q.enable("vault"),Q.on("vault",re.Enter,C),Q.on("vault",re.OpenInBackground,F),Q.on("vault",re.CreateNote,H),Q.on("vault",re.OpenInNewPane,D),Q.on("vault",re.InsertLink,X),Q.on("vault",re.Tab,J),Q.on("vault",re.ArrowUp,()=>Y(-1)),Q.on("vault",re.ArrowDown,()=>Y(1)),Q.on("vault",re.PrevSearchHistory,m),Q.on("vault",re.NextSearchHistory,g),await qo(),T.showPreviousQueryResults&&r(13,s=(await Fe.getSearchHistory())[0])}),jn(()=>{Q.disable("vault")});async function m(){let M=(await Fe.getSearchHistory()).filter(ne=>ne);++u>=M.length&&(u=0),r(1,l=M[u]),w?.setInputValue(l)}async function g(){let M=(await Fe.getSearchHistory()).filter(ne=>ne);--u<0&&(u=M.length?M.length-1:0),r(1,l=M[u]),w?.setInputValue(l)}let y=null;async function _(){y&&(y.cancel(),y=null),p=new xr(l),y=(0,rm.cancelable)(new Promise(M=>{M(je.getSuggestions(p))})),r(2,f=await y),r(0,a=0),await S()}function A(M){!n||(M?.ctrlKey?D():C(),o.close())}function C(){!n||(N(n),o.close())}function F(){!n||N(n,!0)}function D(){!n||(N(n,!0),o.close())}function P(){l&&Fe.addToSearchHistory(l)}function N(M,ne=!1){P(),Ho(M,ne)}async function k(M){await H()}async function H(M){if(l){try{await Eh(l,M?.newLeaf)}catch(ne){new er.Notice(ne.message);return}o.close()}}function X(){if(!n)return;let M=app.vault.getMarkdownFiles().find(He=>He.path===n.path),ne=app.workspace.getActiveFile(),ze=app.workspace.getActiveViewOfType(er.MarkdownView);if(!ze?.editor){new er.Notice("Omnisearch - Error - No active editor",3e3);return}let Ae;M&&ne?Ae=app.fileManager.generateMarkdownLink(M,ne.path):Ae=`[[${n.basename}.${gr(n.path)}]]`;let ye=ze.editor.getCursor();ze.editor.replaceRange(Ae,ye,ye),ye.ch+=Ae.length,ze.editor.setCursor(ye),o.close()}function J(){if(!(n&&(mr(n?.path)||!n?.matches.length)))if(P(),o.close(),n){let M=app.vault.getAbstractFileByPath(n.path);M&&M instanceof er.TFile&&new _n(app,M,l).open()}else{let M=app.workspace.getActiveViewOfType(er.MarkdownView);M?.file&&new _n(app,M.file,l).open()}}function Y(M){r(0,a=qi(a+M,f.length)),S()}async function S(){await Dt(),n&&activeWindow.document.querySelector(`[data-result-id="${n.path}"]`)?.scrollIntoView({behavior:"auto",block:"nearest"})}function E(M){ht[M?"unshift":"push"](()=>{w=M,r(5,w)})}let I=M=>r(1,l=M.detail),K=(M,ne)=>r(0,a=M),Z=M=>{M.button==1&&D()};t.$$set=M=>{"modal"in M&&r(14,o=M.modal),"previousQuery"in M&&r(13,s=M.previousQuery)},t.$$.update=()=>{if(t.$$.dirty[0]&8194){e:r(1,l=l??s)}if(t.$$.dirty[0]&2){e:l?(r(4,h=!0),_().then(()=>{r(4,h=!1)})):(r(4,h=!1),r(2,f=[]))}if(t.$$.dirty[0]&5){e:n=f[a]}if(t.$$.dirty[0]&32768){e:switch(i){case et.LoadingCache:r(3,c="Loading cache...");break;case et.ReadingFiles:r(3,c="Reading files...");break;case et.IndexingFiles:r(3,c="Indexing files...");break;case et.WritingCache:_(),r(3,c="Updating cache...");break;default:_(),r(3,c="");break}}};e:T.openInNewPane?(r(6,x="\u21B5"),r(7,v=hr()+" \u21B5"),r(8,d="shift \u21B5"),r(9,b=hr()+" shift \u21B5")):(r(6,x=hr()+" \u21B5"),r(7,v="\u21B5"),r(8,d=hr()+" shift \u21B5"),r(9,b="shift \u21B5"));return[a,l,f,c,h,w,x,v,d,b,A,D,k,s,o,i,E,I,K,Z]}var lm=class extends De{constructor(e){super();Pe(this,e,J0,Y0,Ce,{modal:14,previousQuery:13},null,[-1,-1])}},um=lm;Xe();ot();At();var dm=ge(require("obsidian"));Xe();hn();ci();function X0(t){let e,r=Zt(t[2].content,t[3])+"";return{c(){e=R("div"),B(e,"class","omnisearch-result__body")},m(n,i){U(n,e,i),e.innerHTML=r},p(n,i){i&12&&r!==(r=Zt(n[2].content,n[3])+"")&&(e.innerHTML=r)},d(n){n&&W(e)}}}function Z0(t){let e,r;return e=new Vo({props:{id:t[0].toString(),selected:t[1],$$slots:{default:[X0]},$$scope:{ctx:t}}}),e.$on("mousemove",t[6]),e.$on("click",t[7]),e.$on("auxclick",t[8]),{c(){We(e.$$.fragment)},m(n,i){Le(e,n,i),r=!0},p(n,[i]){let o={};i&1&&(o.id=n[0].toString()),i&2&&(o.selected=n[1]),i&524&&(o.$$scope={dirty:i,ctx:n}),e.$set(o)},i(n){r||(te(e.$$.fragment,n),r=!0)},o(n){ie(e.$$.fragment,n),r=!1},d(n){Ie(e,n)}}}function e1(t,e,r){let n,i,{offset:o}=e,{note:s}=e,{index:a=0}=e,{selected:u=!1}=e;function l(c){qe.call(this,t,c)}function f(c){qe.call(this,t,c)}function p(c){qe.call(this,t,c)}return t.$$set=c=>{"offset"in c&&r(4,o=c.offset),"note"in c&&r(5,s=c.note),"index"in c&&r(0,a=c.index),"selected"in c&&r(1,u=c.selected)},t.$$.update=()=>{if(t.$$.dirty&48){e:r(2,n=pn(s?.content??"",o))}if(t.$$.dirty&36){e:r(3,i=li(s.matches).map(c=>(c.offset=c.offset-n.offset,c)))}},[a,u,n,i,o,s,l,f,p]}var cm=class extends De{constructor(e){super();Pe(this,e,e1,Z0,Ce,{offset:4,note:5,index:0,selected:1})}},fm=cm;Wo();yn();function pm(t,e,r){let n=t.slice();return n[19]=e[r],n[21]=r,n}function t1(t){let e;return{c(){e=R("div"),e.textContent="We found 0 result for your search here.",Qe(e,"text-align","center")},m(r,n){U(r,e,n)},p:me,i:me,o:me,d(r){r&&W(e)}}}function r1(t){let e,r,n=t[4],i=[];for(let s=0;sie(i[s],1,1,()=>{i[s]=null});return{c(){for(let s=0;s{s[f]=null}),ir(),r=s[e],r?r.p(u,l):(r=s[e]=o[e](u),r.c()),te(r,1),r.m(n.parentNode,n))},i(u){i||(te(r),i=!0)},o(u){ie(r),i=!1},d(u){s[e].d(u),u&&W(n)}}}function i1(t){let e;return{c(){e=R("span"),e.textContent="to close"},m(r,n){U(r,e,n)},d(r){r&&W(e)}}}function o1(t){let e;return{c(){e=R("span"),e.textContent="to go back to Vault Search"},m(r,n){U(r,e,n)},d(r){r&&W(e)}}}function s1(t){let e,r,n,i,o,s,a,u,l,f,p,c,h,w,x,v,d,b,m,g;e=new Xi({props:{placeholder:"Omnisearch - File",initialValue:t[1]}}),e.$on("input",t[10]),n=new Zi({props:{$$slots:{default:[n1]},$$scope:{ctx:t}}});function y(C,F){return C[0]?o1:i1}let _=y(t,-1),A=_(t);return{c(){We(e.$$.fragment),r=G(),We(n.$$.fragment),i=G(),o=R("div"),s=R("div"),s.innerHTML='\u2191\u2193to navigate',a=G(),u=R("div"),u.innerHTML='\u21B5to open',l=G(),f=R("div"),f.innerHTML=`tab + to switch to Vault Search`,p=G(),c=R("div"),h=R("span"),h.textContent="esc",w=G(),A.c(),x=G(),v=R("div"),d=R("span"),d.textContent=`${hr()} \u21B5`,b=G(),m=R("span"),m.textContent="to open in a new pane",B(s,"class","prompt-instruction"),B(u,"class","prompt-instruction"),B(f,"class","prompt-instruction"),B(h,"class","prompt-instruction-command"),B(c,"class","prompt-instruction"),B(d,"class","prompt-instruction-command"),B(v,"class","prompt-instruction"),B(o,"class","prompt-instructions")},m(C,F){Le(e,C,F),U(C,r,F),Le(n,C,F),U(C,i,F),U(C,o,F),O(o,s),O(o,a),O(o,u),O(o,l),O(o,f),O(o,p),O(o,c),O(c,h),O(c,w),A.m(c,null),O(o,x),O(o,v),O(v,d),O(v,b),O(v,m),g=!0},p(C,[F]){let D={};F&2&&(D.initialValue=C[1]),e.$set(D);let P={};F&4194360&&(P.$$scope={dirty:F,ctx:C}),n.$set(P),_!==(_=y(C,F))&&(A.d(1),A=_(C),A&&(A.c(),A.m(c,null)))},i(C){g||(te(e.$$.fragment,C),te(n.$$.fragment,C),g=!0)},o(C){ie(e.$$.fragment,C),ie(n.$$.fragment,C),g=!1},d(C){Ie(e,C),C&&W(r),Ie(n,C),C&&W(i),C&&W(o),A.d()}}}function a1(t,e,r){let n=t.find(i=>i.offset>e);return n?t.filter(i=>i.offset>e&&i.offset<=n.offset+r):[]}function l1(t,e,r){let{modal:n}=e,{parent:i=null}=e,{singleFilePath:o=""}=e,{previousQuery:s}=e,a,u=[],l=0,f,p;wn(()=>{Q.enable("infile"),Q.on("infile",re.Enter,v),Q.on("infile",re.OpenInNewPane,x),Q.on("infile",re.ArrowUp,()=>h(-1)),Q.on("infile",re.ArrowDown,()=>h(1)),Q.on("infile",re.Tab,d)}),jn(()=>{Q.disable("infile")});function c(_){let A=[],C=-1,F=0;for(;;){let D=a1(_,C,Vn);if(!D.length||(C=D.last().offset,A.push(D),++F>100))break}return A}function h(_){r(5,l=qi(l+_,u.length)),w()}async function w(){await Dt(),document.querySelector(`[data-result-id="${l}"]`)?.scrollIntoView({behavior:"auto",block:"nearest"})}async function x(){return v(!0)}async function v(_=!1){if(f){n.close(),i&&i.close(),await Ho(f,_);let A=app.workspace.getActiveViewOfType(dm.MarkdownView);if(!A)return;let C=u[l]??0,F=A.editor.offsetToPos(C);F.ch=0,A.editor.setCursor(F),A.editor.scrollIntoView({from:{line:F.line-10,ch:0},to:{line:F.line+10,ch:0}})}}function d(){new wr(app,a??s).open(),n.close()}let b=_=>r(2,a=_.detail),m=(_,A)=>r(5,l=_),g=_=>v(_.ctrlKey),y=_=>{_.button==1&&v(!0)};return t.$$set=_=>{"modal"in _&&r(7,n=_.modal),"parent"in _&&r(0,i=_.parent),"singleFilePath"in _&&r(8,o=_.singleFilePath),"previousQuery"in _&&r(1,s=_.previousQuery)},t.$$.update=()=>{if(t.$$.dirty&2){e:r(2,a=s??"")}if(t.$$.dirty&772){e:(async()=>{a&&(r(9,p=new xr(a)),r(3,f=(await je.getSuggestions(p,{singleFilePath:o}))[0]??null)),r(5,l=0),await w()})()}if(t.$$.dirty&8){e:if(f){let _=c(f.matches);r(4,u=_.map(A=>Math.round((A.first().offset+A.last().offset)/2)))}}},[i,s,a,f,u,l,v,n,o,p,b,m,g,y]}var mm=class extends De{constructor(e){super();Pe(this,e,l1,s1,Ce,{modal:7,parent:0,singleFilePath:8,previousQuery:1})}},gm=mm;ot();Ze();var il=class extends Xo.Modal{constructor(e){super(e);this.modalEl.replaceChildren(),this.modalEl.addClass("omnisearch-modal","prompt"),this.modalEl.removeClass("modal"),this.modalEl.tabIndex=-1,this.scope.register([],"ArrowDown",s=>{s.preventDefault(),Q.emit(re.ArrowDown)}),this.scope.register([],"ArrowUp",s=>{s.preventDefault(),Q.emit(re.ArrowUp)});for(let s of[{k:"J",dir:"down"},{k:"K",dir:"up"}])for(let a of["Ctrl","Mod"])this.scope.register([a],s.k,u=>{T.vimLikeNavigationShortcut&&Q.emit("arrow-"+s.dir)});for(let s of[{k:"N",dir:"down"},{k:"P",dir:"up"}])for(let a of["Ctrl","Mod"])this.scope.register([a],s.k,u=>{T.vimLikeNavigationShortcut&&Q.emit("arrow-"+s.dir)});let r,n,i,o;T.openInNewPane?(r=["Mod"],n=[],i=["Mod","Shift"],o=["Shift"]):(r=[],n=["Mod"],i=["Shift"],o=["Mod","Shift"]),this.scope.register(n,"Enter",s=>{s.preventDefault(),Q.emit(re.OpenInNewPane)}),this.scope.register(["Alt"],"Enter",s=>{s.preventDefault(),Q.emit(re.InsertLink)}),this.scope.register(i,"Enter",s=>{s.preventDefault(),Q.emit(re.CreateNote)}),this.scope.register(o,"Enter",s=>{s.preventDefault(),Q.emit(re.CreateNote,{newLeaf:!0})}),this.scope.register(r,"Enter",s=>{aa()||(s.preventDefault(),Q.emit(re.Enter))}),this.scope.register(["Alt"],"O",s=>{aa()||(s.preventDefault(),Q.emit(re.OpenInBackground))}),this.scope.register([],"Tab",s=>{s.preventDefault(),Q.emit(re.Tab)}),this.scope.register(["Alt"],"ArrowDown",s=>{s.preventDefault(),Q.emit(re.NextSearchHistory)}),this.scope.register(["Alt"],"ArrowUp",s=>{s.preventDefault(),Q.emit(re.PrevSearchHistory)}),this.scope.register(["Ctrl"],"H",s=>{Q.emit(Ui.ToggleExcerpts)})}},wr=class extends il{constructor(e,r){super(e);let n=e.workspace.getActiveViewOfType(Xo.MarkdownView)?.editor.getSelection(),i=new um({target:this.modalEl,props:{modal:this,previousQuery:n??r}});this.onClose=()=>{i.$destroy()}}},_n=class extends il{constructor(e,r,n="",i){super(e);let o=new gm({target:this.modalEl,props:{modal:this,singleFilePath:r.path,parent:i,previousQuery:n}});i&&i.containerEl.toggleVisibility(!1),this.onClose=()=>{i&&i.containerEl.toggleVisibility(!0),o.$destroy()}}};Ze();ot();ol();At();$i();Yo();yn();Gn();var sl=class extends tr.Plugin{constructor(){super(...arguments);this.apiHttpServer=null}async onload(){if(await bu(this),this.addSettingTab(new ia(this)),tr.Platform.isMobile||Promise.resolve().then(()=>(jm(),wm)).then(e=>this.apiHttpServer=e.getServer()),oa()){console.log("Omnisearch - Plugin disabled");return}await h1(),await Hr.clearOldDatabases(),m1(this),T.ribbonIcon&&this.addRibbonButton(),Q.disable("vault"),Q.disable("infile"),Q.on("global",Ui.ToggleExcerpts,()=>{dr.set(!T.showExcerpt)}),this.addCommand({id:"show-modal",name:"Vault search",callback:()=>{new wr(app).open()}}),this.addCommand({id:"show-modal-infile",name:"In-file search",editorCallback:(e,r)=>{r.file&&new _n(app,r.file).open()}}),app.workspace.onLayoutReady(async()=>{this.registerEvent(this.app.vault.on("create",e=>{Un(e.path)&&(de("Indexing new file",e.path),je.addFromPaths([e.path]))})),this.registerEvent(this.app.vault.on("delete",e=>{de("Removing file",e.path),Fe.removeFromLiveCache(e.path),je.removeFromPaths([e.path])})),this.registerEvent(this.app.vault.on("modify",async e=>{Un(e.path)&&(de("Updating file",e.path),await Fe.addToLiveCache(e.path),em(e))})),this.registerEvent(this.app.vault.on("rename",async(e,r)=>{Un(e.path)&&(de("Renaming file",e.path),Fe.removeFromLiveCache(r),await Fe.addToLiveCache(e.path),je.removeFromPaths([r]),await je.addFromPaths([e.path]))})),this.executeFirstLaunchTasks(),await this.populateIndex(),this.apiHttpServer&&T.httpApiEnabled&&this.apiHttpServer.listen(T.httpApiPort)})}executeFirstLaunchTasks(){let e="1.10.1";T.welcomeMessage!==e,T.welcomeMessage=e,this.saveData(T)}async onunload(){delete globalThis.omnisearch,await Ee.clearCache(),this.apiHttpServer.close()}addRibbonButton(){this.ribbonButton=this.addRibbonIcon("search","Omnisearch",e=>{new wr(app).open()})}removeRibbonButton(){this.ribbonButton&&this.ribbonButton.parentNode?.removeChild(this.ribbonButton)}async populateIndex(){console.time("Omnisearch - Indexing total time"),Bt.set(et.ReadingFiles);let e=app.vault.getFiles().filter(n=>Un(n.path));console.log(`Omnisearch - ${e.length} files total`),console.log(`Omnisearch - Cache is ${Nt()?"enabled":"disabled"}`),Nt()&&(console.time("Omnisearch - Loading index from cache"),Bt.set(et.LoadingCache),await je.loadCache()&&console.timeEnd("Omnisearch - Loading index from cache"));let r=je.getDiff(e.map(n=>({path:n.path,mtime:n.stat.mtime})));Nt()&&(r.toAdd.length&&console.log("Omnisearch - Total number of files to add/update: "+r.toAdd.length),r.toRemove.length&&console.log("Omnisearch - Total number of files to remove: "+r.toRemove.length)),r.toAdd.length>=1e3&&Nt()&&new tr.Notice(`Omnisearch - ${r.toAdd.length} files need to be indexed. Obsidian may experience stutters and freezes during the process`,1e4),Bt.set(et.IndexingFiles),je.removeFromPaths(r.toRemove.map(n=>n.path)),await je.addFromPaths(r.toAdd.map(n=>n.path)),(r.toRemove.length||r.toAdd.length)&&Nt()&&(Bt.set(et.WritingCache),T.useCache=!1,await le(this),await je.writeToCache(),T.useCache=!0,await le(this)),console.timeEnd("Omnisearch - Indexing total time"),r.toAdd.length>=1e3&&!tr.Platform.isIosApp&&new tr.Notice("Omnisearch - Your files have been indexed."),Bt.set(et.Done),_m()}};async function h1(){let t=[`${app.vault.configDir}/plugins/omnisearch/searchIndex.json`,`${app.vault.configDir}/plugins/omnisearch/notesCache.json`,`${app.vault.configDir}/plugins/omnisearch/notesCache.data`,`${app.vault.configDir}/plugins/omnisearch/searchIndex.data`,`${app.vault.configDir}/plugins/omnisearch/historyCache.json`,`${app.vault.configDir}/plugins/omnisearch/pdfCache.data`];for(let e of t)if(await app.vault.adapter.exists(e))try{await app.vault.adapter.remove(e)}catch{}}function m1(t){t.registerObsidianProtocolHandler("omnisearch",e=>{new wr(app,e.query).open()}),globalThis.omnisearch=di,app.plugins.plugins.omnisearch.api=di} diff --git a/Vault/.obsidian/plugins/omnisearch/manifest.json b/Vault/.obsidian/plugins/omnisearch/manifest.json index 6708391..a38db93 100644 --- a/Vault/.obsidian/plugins/omnisearch/manifest.json +++ b/Vault/.obsidian/plugins/omnisearch/manifest.json @@ -1,8 +1,8 @@ { "id": "omnisearch", "name": "Omnisearch", - "version": "1.14.2", - "minAppVersion": "1.0.0", + "version": "1.18.1", + "minAppVersion": "1.3.0", "description": "A search engine that just works", "author": "Simon Cambier", "authorUrl": "https://github.com/scambier/obsidian-omnisearch", diff --git a/Vault/.obsidian/plugins/omnisearch/styles.css b/Vault/.obsidian/plugins/omnisearch/styles.css index 2e8501e..2bec00f 100644 --- a/Vault/.obsidian/plugins/omnisearch/styles.css +++ b/Vault/.obsidian/plugins/omnisearch/styles.css @@ -25,7 +25,7 @@ } .omnisearch-result__title > span { - display: flex; + } .omnisearch-result__folder-path { diff --git a/Vault/.obsidian/plugins/table-editor-obsidian/manifest.json b/Vault/.obsidian/plugins/table-editor-obsidian/manifest.json index 359acf0..efde080 100644 --- a/Vault/.obsidian/plugins/table-editor-obsidian/manifest.json +++ b/Vault/.obsidian/plugins/table-editor-obsidian/manifest.json @@ -6,7 +6,12 @@ "description": "Improved table navigation, formatting, manipulation, and formulas", "isDesktopOnly": false, "minAppVersion": "1.0.0", - "version": "0.19.0", + "version": "0.19.1", "js": "main.js", + "fundingUrl": { + "Github Sponsor": "https://github.com/sponsors/tgrosinger", + "Buy me a Coffee": "https://buymeacoffee.com/tgrosinger", + "Paypal": "https://paypal.me/tgrosinger" + }, "donation": "https://buymeacoffee.com/tgrosinger" } \ No newline at end of file diff --git a/Vault/.obsidian/plugins/templater-obsidian/main.js b/Vault/.obsidian/plugins/templater-obsidian/main.js index 3226253..f186b3e 100644 --- a/Vault/.obsidian/plugins/templater-obsidian/main.js +++ b/Vault/.obsidian/plugins/templater-obsidian/main.js @@ -47,7 +47,7 @@ var __toBinary = /* @__PURE__ */ (() => { __export(exports, { default: () => TemplaterPlugin }); -var import_obsidian18 = __toModule(require("obsidian")); +var import_obsidian17 = __toModule(require("obsidian")); // src/settings/Settings.ts var import_obsidian6 = __toModule(require("obsidian")); @@ -245,7 +245,7 @@ var round = Math.round; // node_modules/@popperjs/core/lib/utils/userAgent.js function getUAString() { var uaData = navigator.userAgentData; - if (uaData != null && uaData.brands) { + if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) { return uaData.brands.map(function(item) { return item.brand + "/" + item.version; }).join(" "); @@ -476,15 +476,7 @@ function effect2(_ref2) { return; } } - if (true) { - if (!isHTMLElement(arrowElement)) { - console.error(['Popper: "arrow" element must be an HTMLElement (not an SVGElement).', "To use an SVG arrow, wrap it in an HTMLElement that will be used as", "the arrow."].join(" ")); - } - } if (!contains(state.elements.popper, arrowElement)) { - if (true) { - console.error(['Popper: "arrow" modifier\'s `element` must be a child of the popper', "element."].join(" ")); - } return; } state.elements.arrow = arrowElement; @@ -511,9 +503,8 @@ var unsetSides = { bottom: "auto", left: "auto" }; -function roundOffsetsByDPR(_ref) { +function roundOffsetsByDPR(_ref, win) { var x = _ref.x, y = _ref.y; - var win = window; var dpr = win.devicePixelRatio || 1; return { x: round(x * dpr) / dpr || 0, @@ -569,7 +560,7 @@ function mapToStyles(_ref2) { var _ref4 = roundOffsets === true ? roundOffsetsByDPR({ x, y - }) : { + }, getWindow(popper2)) : { x, y }; @@ -584,14 +575,6 @@ function mapToStyles(_ref2) { function computeStyles(_ref5) { var state = _ref5.state, options = _ref5.options; var _options$gpuAccelerat = options.gpuAcceleration, gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat, _options$adaptive = options.adaptive, adaptive = _options$adaptive === void 0 ? true : _options$adaptive, _options$roundOffsets = options.roundOffsets, roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets; - if (true) { - var transitionProperty = getComputedStyle(state.elements.popper).transitionProperty || ""; - if (adaptive && ["transform", "top", "right", "bottom", "left"].some(function(property) { - return transitionProperty.indexOf(property) >= 0; - })) { - console.warn(["Popper: Detected CSS transitions on at least one of the following", 'CSS properties: "transform", "top", "right", "bottom", "left".', "\n\n", 'Disable the "computeStyles" modifier\'s `adaptive` option to allow', "for smooth transitions, or remove these properties from the CSS", "transition declaration on the popper element if only transitioning", "opacity or background-color for example.", "\n\n", "We recommend using the popper element as a wrapper around an inner", "element that can have any CSS property transitioned for animations."].join(" ")); - } - } var commonStyles = { placement: getBasePlacement(state.placement), variation: getVariation(state.placement), @@ -948,9 +931,6 @@ function computeAutoPlacement(state, options) { }); if (allowedPlacements.length === 0) { allowedPlacements = placements2; - if (true) { - console.error(["Popper: The `allowedAutoPlacements` option did not allow any", "placements. Ensure the `placement` option matches the variation", "of the allowed placements.", 'For example, "auto" cannot be used to allow "bottom-start".', 'Use "auto-start" instead.'].join(" ")); - } } var overflows = allowedPlacements.reduce(function(acc, placement2) { acc[placement2] = detectOverflow(state, { @@ -1394,92 +1374,6 @@ function debounce(fn2) { }; } -// node_modules/@popperjs/core/lib/utils/format.js -function format(str) { - for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { - args[_key - 1] = arguments[_key]; - } - return [].concat(args).reduce(function(p, c) { - return p.replace(/%s/, c); - }, str); -} - -// node_modules/@popperjs/core/lib/utils/validateModifiers.js -var INVALID_MODIFIER_ERROR = 'Popper: modifier "%s" provided an invalid %s property, expected %s but got %s'; -var MISSING_DEPENDENCY_ERROR = 'Popper: modifier "%s" requires "%s", but "%s" modifier is not available'; -var VALID_PROPERTIES = ["name", "enabled", "phase", "fn", "effect", "requires", "options"]; -function validateModifiers(modifiers) { - modifiers.forEach(function(modifier) { - [].concat(Object.keys(modifier), VALID_PROPERTIES).filter(function(value, index, self) { - return self.indexOf(value) === index; - }).forEach(function(key) { - switch (key) { - case "name": - if (typeof modifier.name !== "string") { - console.error(format(INVALID_MODIFIER_ERROR, String(modifier.name), '"name"', '"string"', '"' + String(modifier.name) + '"')); - } - break; - case "enabled": - if (typeof modifier.enabled !== "boolean") { - console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"enabled"', '"boolean"', '"' + String(modifier.enabled) + '"')); - } - break; - case "phase": - if (modifierPhases.indexOf(modifier.phase) < 0) { - console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"phase"', "either " + modifierPhases.join(", "), '"' + String(modifier.phase) + '"')); - } - break; - case "fn": - if (typeof modifier.fn !== "function") { - console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"fn"', '"function"', '"' + String(modifier.fn) + '"')); - } - break; - case "effect": - if (modifier.effect != null && typeof modifier.effect !== "function") { - console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"effect"', '"function"', '"' + String(modifier.fn) + '"')); - } - break; - case "requires": - if (modifier.requires != null && !Array.isArray(modifier.requires)) { - console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"requires"', '"array"', '"' + String(modifier.requires) + '"')); - } - break; - case "requiresIfExists": - if (!Array.isArray(modifier.requiresIfExists)) { - console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"requiresIfExists"', '"array"', '"' + String(modifier.requiresIfExists) + '"')); - } - break; - case "options": - case "data": - break; - default: - console.error('PopperJS: an invalid property has been provided to the "' + modifier.name + '" modifier, valid properties are ' + VALID_PROPERTIES.map(function(s) { - return '"' + s + '"'; - }).join(", ") + '; but "' + key + '" was provided.'); - } - modifier.requires && modifier.requires.forEach(function(requirement) { - if (modifiers.find(function(mod) { - return mod.name === requirement; - }) == null) { - console.error(format(MISSING_DEPENDENCY_ERROR, String(modifier.name), requirement, requirement)); - } - }); - }); - }); -} - -// node_modules/@popperjs/core/lib/utils/uniqueBy.js -function uniqueBy(arr, fn2) { - var identifiers = new Set(); - return arr.filter(function(item) { - var identifier = fn2(item); - if (!identifiers.has(identifier)) { - identifiers.add(identifier); - return true; - } - }); -} - // node_modules/@popperjs/core/lib/utils/mergeByName.js function mergeByName(modifiers) { var merged = modifiers.reduce(function(merged2, current) { @@ -1496,8 +1390,6 @@ function mergeByName(modifiers) { } // node_modules/@popperjs/core/lib/createPopper.js -var INVALID_ELEMENT_ERROR = "Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element."; -var INFINITE_LOOP_ERROR = "Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash."; var DEFAULT_OPTIONS = { placement: "bottom", modifiers: [], @@ -1548,28 +1440,6 @@ function popperGenerator(generatorOptions) { state.orderedModifiers = orderedModifiers.filter(function(m) { return m.enabled; }); - if (true) { - var modifiers = uniqueBy([].concat(orderedModifiers, state.options.modifiers), function(_ref) { - var name = _ref.name; - return name; - }); - validateModifiers(modifiers); - if (getBasePlacement(state.options.placement) === auto) { - var flipModifier = state.orderedModifiers.find(function(_ref2) { - var name = _ref2.name; - return name === "flip"; - }); - if (!flipModifier) { - console.error(['Popper: "auto" placements require the "flip" modifier be', "present and enabled to work."].join(" ")); - } - } - var _getComputedStyle = getComputedStyle(popper2), marginTop = _getComputedStyle.marginTop, marginRight = _getComputedStyle.marginRight, marginBottom = _getComputedStyle.marginBottom, marginLeft = _getComputedStyle.marginLeft; - if ([marginTop, marginRight, marginBottom, marginLeft].some(function(margin) { - return parseFloat(margin); - })) { - console.warn(['Popper: CSS "margin" styles cannot be used to apply padding', "between the popper and its reference element or boundary.", "To replicate margin, use the `offset` modifier, as well as", "the `padding` option in the `preventOverflow` and `flip`", "modifiers."].join(" ")); - } - } runModifierEffects(); return instance.update(); }, @@ -1579,9 +1449,6 @@ function popperGenerator(generatorOptions) { } var _state$elements = state.elements, reference3 = _state$elements.reference, popper3 = _state$elements.popper; if (!areValidElements(reference3, popper3)) { - if (true) { - console.error(INVALID_ELEMENT_ERROR); - } return; } state.rects = { @@ -1593,15 +1460,7 @@ function popperGenerator(generatorOptions) { state.orderedModifiers.forEach(function(modifier) { return state.modifiersData[modifier.name] = Object.assign({}, modifier.data); }); - var __debug_loops__ = 0; for (var index = 0; index < state.orderedModifiers.length; index++) { - if (true) { - __debug_loops__ += 1; - if (__debug_loops__ > 100) { - console.error(INFINITE_LOOP_ERROR); - break; - } - } if (state.reset === true) { state.reset = false; index = -1; @@ -1630,9 +1489,6 @@ function popperGenerator(generatorOptions) { } }; if (!areValidElements(reference2, popper2)) { - if (true) { - console.error(INVALID_ELEMENT_ERROR); - } return instance; } instance.setOptions(options).then(function(state2) { @@ -1641,8 +1497,8 @@ function popperGenerator(generatorOptions) { } }); function runModifierEffects() { - state.orderedModifiers.forEach(function(_ref3) { - var name = _ref3.name, _ref3$options = _ref3.options, options2 = _ref3$options === void 0 ? {} : _ref3$options, effect4 = _ref3.effect; + state.orderedModifiers.forEach(function(_ref) { + var name = _ref.name, _ref$options = _ref.options, options2 = _ref$options === void 0 ? {} : _ref$options, effect4 = _ref.effect; if (typeof effect4 === "function") { var cleanupFn = effect4({ state, @@ -1882,6 +1738,9 @@ function arraymove(arr, fromIndex, toIndex) { arr[fromIndex] = arr[toIndex]; arr[toIndex] = element; } +function get_active_file(app2) { + return app2.workspace.activeEditor?.file ?? app2.workspace.getActiveFile(); +} // src/settings/suggesters/FileSuggester.ts var FileSuggestMode; @@ -1949,6 +1808,7 @@ var DEFAULT_SETTINGS = { enable_folder_templates: true, folder_templates: [{ folder: "", template: "" }], syntax_highlighting: true, + syntax_highlighting_mobile: false, enabled_templates_hotkeys: [""], startup_templates: [""], enable_ribbon_icon: true @@ -1963,7 +1823,7 @@ var TemplaterSettingTab = class extends import_obsidian6.PluginSettingTab { this.add_general_setting_header(); this.add_template_folder_setting(); this.add_internal_functions_setting(); - this.add_syntax_highlighting_setting(); + this.add_syntax_highlighting_settings(); this.add_auto_jump_to_cursor(); this.add_trigger_on_new_file_creation_setting(); this.add_ribbon_icon_setting(); @@ -1997,16 +1857,25 @@ var TemplaterSettingTab = class extends import_obsidian6.PluginSettingTab { }), " to get a list of all the available internal variables / functions."); new import_obsidian6.Setting(this.containerEl).setName("Internal Variables and Functions").setDesc(desc); } - add_syntax_highlighting_setting() { - const desc = document.createDocumentFragment(); - desc.append("Adds syntax highlighting for Templater commands in edit mode."); - new import_obsidian6.Setting(this.containerEl).setName("Syntax Highlighting").setDesc(desc).addToggle((toggle) => { + add_syntax_highlighting_settings() { + const desktopDesc = document.createDocumentFragment(); + desktopDesc.append("Adds syntax highlighting for Templater commands in edit mode."); + const mobileDesc = document.createDocumentFragment(); + mobileDesc.append("Adds syntax highlighting for Templater commands in edit mode on mobile. Use with caution: this may break live preview on mobile platforms."); + new import_obsidian6.Setting(this.containerEl).setName("Syntax Highlighting on Desktop").setDesc(desktopDesc).addToggle((toggle) => { toggle.setValue(this.plugin.settings.syntax_highlighting).onChange((syntax_highlighting) => { this.plugin.settings.syntax_highlighting = syntax_highlighting; this.plugin.save_settings(); this.plugin.event_handler.update_syntax_highlighting(); }); }); + new import_obsidian6.Setting(this.containerEl).setName("Syntax Highlighting on Mobile").setDesc(mobileDesc).addToggle((toggle) => { + toggle.setValue(this.plugin.settings.syntax_highlighting_mobile).onChange((syntax_highlighting_mobile) => { + this.plugin.settings.syntax_highlighting_mobile = syntax_highlighting_mobile; + this.plugin.save_settings(); + this.plugin.event_handler.update_syntax_highlighting(); + }); + }); } add_auto_jump_to_cursor() { const desc = document.createDocumentFragment(); @@ -2459,7 +2328,7 @@ var InternalModuleDate = class extends InternalModule { async create_dynamic_templates() { } generate_now() { - return (format2 = "YYYY-MM-DD", offset2, reference2, reference_format) => { + return (format = "YYYY-MM-DD", offset2, reference2, reference_format) => { if (reference2 && !window.moment(reference2, reference_format).isValid()) { throw new TemplaterError("Invalid reference date format, try specifying one with the argument 'reference_format'"); } @@ -2469,25 +2338,25 @@ var InternalModuleDate = class extends InternalModule { } else if (typeof offset2 === "number") { duration = window.moment.duration(offset2, "days"); } - return window.moment(reference2, reference_format).add(duration).format(format2); + return window.moment(reference2, reference_format).add(duration).format(format); }; } generate_tomorrow() { - return (format2 = "YYYY-MM-DD") => { - return window.moment().add(1, "days").format(format2); + return (format = "YYYY-MM-DD") => { + return window.moment().add(1, "days").format(format); }; } generate_weekday() { - return (format2 = "YYYY-MM-DD", weekday, reference2, reference_format) => { + return (format = "YYYY-MM-DD", weekday, reference2, reference_format) => { if (reference2 && !window.moment(reference2, reference_format).isValid()) { throw new TemplaterError("Invalid reference date format, try specifying one with the argument 'reference_format'"); } - return window.moment(reference2, reference_format).weekday(weekday).format(format2); + return window.moment(reference2, reference_format).weekday(weekday).format(format); }; } generate_yesterday() { - return (format2 = "YYYY-MM-DD") => { - return window.moment().add(-1, "days").format(format2); + return (format = "YYYY-MM-DD") => { + return window.moment().add(-1, "days").format(format); }; } }; @@ -2539,8 +2408,8 @@ var InternalModuleFile = class extends InternalModule { }; } generate_creation_date() { - return (format2 = "YYYY-MM-DD HH:mm") => { - return window.moment(this.config.target_file.stat.ctime).format(format2); + return (format = "YYYY-MM-DD HH:mm") => { + return window.moment(this.config.target_file.stat.ctime).format(format); }; } generate_cursor() { @@ -2550,12 +2419,12 @@ var InternalModuleFile = class extends InternalModule { } generate_cursor_append() { return (content) => { - const active_view = app.workspace.getActiveViewOfType(import_obsidian8.MarkdownView); - if (active_view === null) { - log_error(new TemplaterError("No active view, can't append to cursor.")); + const active_editor = app.workspace.activeEditor; + if (!active_editor || !active_editor.editor) { + log_error(new TemplaterError("No active editor, can't append to cursor.")); return; } - const editor = active_view.editor; + const editor = active_editor.editor; const doc = editor.getDoc(); doc.replaceSelection(content); return ""; @@ -2629,8 +2498,8 @@ var InternalModuleFile = class extends InternalModule { }; } generate_last_modified_date() { - return (format2 = "YYYY-MM-DD HH:mm") => { - return window.moment(this.config.target_file.stat.mtime).format(format2); + return (format = "YYYY-MM-DD HH:mm") => { + return window.moment(this.config.target_file.stat.mtime).format(format); }; } generate_move() { @@ -2682,11 +2551,11 @@ var InternalModuleFile = class extends InternalModule { } generate_selection() { return () => { - const active_view = app.workspace.getActiveViewOfType(import_obsidian8.MarkdownView); - if (active_view == null) { - throw new TemplaterError("Active view is null, can't read selection."); + const active_editor = app.workspace.activeEditor; + if (!active_editor || !active_editor.editor) { + throw new TemplaterError("Active editor is null, can't read selection."); } - const editor = active_view.editor; + const editor = active_editor.editor; return editor.getSelection(); }; } @@ -3076,13 +2945,17 @@ var UserScriptFunctions = class { }; const file_content = await app.vault.read(file); const wrapping_fn = window.eval("(function anonymous(require, module, exports){" + file_content + "\n})"); - wrapping_fn(req, mod, exp); + try { + wrapping_fn(req, mod, exp); + } catch (err) { + throw new TemplaterError(`Failed to load user script at "${file.path}".`, err.message); + } const user_function = exp["default"] || mod.exports; if (!user_function) { - throw new TemplaterError(`Failed to load user script ${file.path}. No exports detected.`); + throw new TemplaterError(`Failed to load user script at "${file.path}". No exports detected.`); } if (!(user_function instanceof Function)) { - throw new TemplaterError(`Failed to load user script ${file.path}. Default export is not a function.`); + throw new TemplaterError(`Failed to load user script at "${file.path}". Default export is not a function.`); } user_script_functions.set(`${file.basename}`, user_function); } @@ -3616,7 +3489,7 @@ var Templater = class { this.plugin.registerMarkdownPostProcessor((el, ctx) => this.process_dynamic_templates(el, ctx)); } create_running_config(template_file, target_file, run_mode) { - const active_file = app.workspace.getActiveFile(); + const active_file = get_active_file(app); return { template_file, target_file, @@ -3639,7 +3512,7 @@ var Templater = class { const new_file_location = app.vault.getConfig("newFileLocation"); switch (new_file_location) { case "current": { - const active_file = app.workspace.getActiveFile(); + const active_file = get_active_file(app); if (active_file) { folder = active_file.parent; } @@ -3692,26 +3565,28 @@ var Templater = class { } async append_template_to_active_file(template_file) { const active_view = app.workspace.getActiveViewOfType(import_obsidian13.MarkdownView); - if (active_view === null) { - log_error(new TemplaterError("No active view, can't append templates.")); + const active_editor = app.workspace.activeEditor; + if (!active_editor || !active_editor.file || !active_editor.editor) { + log_error(new TemplaterError("No active editor, can't append templates.")); return; } - const running_config = this.create_running_config(template_file, active_view.file, 1); + const running_config = this.create_running_config(template_file, active_editor.file, 1); const output_content = await errorWrapper(async () => this.read_and_parse_template(running_config), "Template parsing error, aborting."); if (output_content == null) { return; } - const editor = active_view.editor; + const editor = active_editor.editor; const doc = editor.getDoc(); const oldSelections = doc.listSelections(); doc.replaceSelection(output_content); app.workspace.trigger("templater:template-appended", { view: active_view, + editor: active_editor, content: output_content, oldSelections, newSelections: doc.listSelections() }); - await this.plugin.editor_handler.jump_to_next_cursor_location(active_view.file, true); + await this.plugin.editor_handler.jump_to_next_cursor_location(active_editor.file, true); } async write_template_to_file(template_file, file) { const running_config = this.create_running_config(template_file, file, 2); @@ -3727,12 +3602,12 @@ var Templater = class { await this.plugin.editor_handler.jump_to_next_cursor_location(file, true); } overwrite_active_file_commands() { - const active_view = app.workspace.getActiveViewOfType(import_obsidian13.MarkdownView); - if (active_view === null) { - log_error(new TemplaterError("Active view is null, can't overwrite content")); + const active_editor = app.workspace.activeEditor; + if (!active_editor || !active_editor.file) { + log_error(new TemplaterError("Active editor is null, can't overwrite content")); return; } - this.overwrite_file_commands(active_view.file, true); + this.overwrite_file_commands(active_editor.file, true); } async overwrite_file_commands(file, active_file = false) { const running_config = this.create_running_config(file, file, active_file ? 3 : 2); @@ -3856,7 +3731,9 @@ var EventHandler = class { this.update_file_menu(); } update_syntax_highlighting() { - if (this.plugin.settings.syntax_highlighting) { + const desktopShouldHighlight = this.plugin.editor_handler.desktopShouldHighlight(); + const mobileShouldHighlight = this.plugin.editor_handler.mobileShouldHighlight(); + if (desktopShouldHighlight || mobileShouldHighlight) { this.syntax_highlighting_event = app.workspace.on("codemirror", (cm) => { cm.setOption("mode", "templater"); }); @@ -3988,28 +3865,25 @@ var CommandHandler = class { }; // src/editor/Editor.ts -var import_obsidian17 = __toModule(require("obsidian")); +var import_obsidian16 = __toModule(require("obsidian")); // src/editor/CursorJumper.ts -var import_obsidian15 = __toModule(require("obsidian")); var CursorJumper = class { constructor() { } async jump_to_next_cursor_location() { - const active_view = app.workspace.getActiveViewOfType(import_obsidian15.MarkdownView); - if (!active_view) { + const active_editor = app.workspace.activeEditor; + if (!active_editor || !active_editor.editor) { return; } - const active_file = active_view.file; - await active_view.save(); - const content = await app.vault.read(active_file); + const content = active_editor.editor.getValue(); const { new_content, positions } = this.replace_and_get_cursor_positions(content); if (positions) { - await app.vault.modify(active_file, new_content); + active_editor.editor.setValue(new_content); this.set_cursor_location(positions); } if (app.vault.getConfig("vimMode")) { - const cm = active_view.editor.cm.cm; + const cm = active_editor.editor.cm.cm; window.CodeMirrorAdapter.Vim.handleKey(cm, "i", "mapping"); } } @@ -4027,7 +3901,7 @@ var CursorJumper = class { replace_and_get_cursor_positions(content) { let cursor_matches = []; let match; - const cursor_regex = new RegExp("<%\\s*tp.file.cursor\\((?[0-9]{0,2})\\)\\s*%>", "g"); + const cursor_regex = new RegExp("<%\\s*tp.file.cursor\\((?[0-9]*)\\)\\s*%>", "g"); while ((match = cursor_regex.exec(content)) != null) { cursor_matches.push(match); } @@ -4055,11 +3929,11 @@ var CursorJumper = class { return { new_content: content, positions }; } set_cursor_location(positions) { - const active_view = app.workspace.getActiveViewOfType(import_obsidian15.MarkdownView); - if (!active_view) { + const active_editor = app.workspace.activeEditor; + if (!active_editor || !active_editor.editor) { return; } - const editor = active_view.editor; + const editor = active_editor.editor; const selections = []; for (const pos of positions) { selections.push({ from: pos }); @@ -4072,10 +3946,10 @@ var CursorJumper = class { }; // src/editor/Autocomplete.ts -var import_obsidian16 = __toModule(require("obsidian")); +var import_obsidian15 = __toModule(require("obsidian")); // toml:/home/runner/work/Templater/Templater/docs/documentation.toml -var tp = { config: { name: "config", description: "This module exposes Templater's running configuration.\n\nThis is mostly useful when writing scripts requiring some context information.\n", functions: { template_file: { name: "template_file", description: "The `TFile` object representing the template file.", definition: "tp.file.template_file" }, target_file: { name: "target_file", description: "The `TFile` object representing the target file where the template will be inserted.", definition: "tp.config.target_file" }, run_mode: { name: "run_mode", description: "The `RunMode`, representing the way Templater was launched (Create new from template, Append to active file, ...)", definition: "tp.config.run_mode" }, active_file: { name: "active_file", description: "The active file (if existing) when launching Templater.", definition: "tp.config.active_file?" } } }, date: { name: "date", description: "This module contains every internal function related to dates.", functions: { now: { name: "now", description: "Retrieves the date.", definition: 'tp.date.now(format: string = "YYYY-MM-DD", offset?: number\u23AEstring, reference?: string, reference_format?: string)', args: { format: { name: "format", description: "Format for the date, refer to [format reference](https://momentjs.com/docs/#/displaying/format/)" }, offset: { name: "offset", description: "Offset for the day, e.g. set this to `-7` to get last week's date. You can also specify the offset as a string using the ISO 8601 format" }, reference: { name: "reference", description: "The date referential, e.g. set this to the note's title" }, reference_format: { name: "reference_format", description: "The date reference format." } } }, tomorrow: { name: "tomorrow", description: "Retrieves tomorrow's date.", definition: 'tp.date.tomorrow(format: string = "YYYY-MM-DD")', args: { format: { name: "format", description: "Format for the date, refer to [format reference](https://momentjs.com/docs/#/displaying/format/)" } } }, yesterday: { name: "yesterday", description: "Retrieves yesterday's date.", definition: 'tp.date.yesterday(format: string = "YYYY-MM-DD")', args: { format: { name: "format", description: "Format for the date, refer to [format reference](https://momentjs.com/docs/#/displaying/format/)" } } }, weekday: { name: "weekday", description: "", definition: 'tp.date.weekday(format: string = "YYYY-MM-DD", weekday: number, reference?: string, reference_format?: string)', args: { format: { name: "format", description: "Format for the date, refer to [format reference](https://momentjs.com/docs/#/displaying/format/)" }, weekday: { name: "weekday", description: "Week day number. If the locale assigns Monday as the first day of the week, `0` will be Monday, `-7` will be last week's day." }, reference: { name: "reference", description: "The date referential, e.g. set this to the note's title" }, reference_format: { name: "reference_format", description: "The date reference format." } } } } }, file: { name: "file", description: "This module contains every internal function related to files.", functions: { content: { name: "content", description: "Retrieves the file's content", definition: "tp.file.content" }, create_new: { name: "create_new", description: "Creates a new file using a specified template or with a specified content.", definition: "tp.file.create_new(template: TFile \u23AE string, filename?: string, open_new: boolean = false, folder?: TFolder)", args: { template: { name: "template", description: "Either the template used for the new file content, or the file content as a string. If it is the template to use, you retrieve it with `tp.file.find_tfile(TEMPLATENAME)`" }, filename: { name: "filename", description: 'The filename of the new file, defaults to "Untitled".' }, open_new: { name: "open_new", description: "Whether to open or not the newly created file. Warning: if you use this option, since commands are executed asynchronously, the file can be opened first and then other commands are appended to that new file and not the previous file." }, folder: { name: "folder", description: 'The folder to put the new file in, defaults to obsidian\'s default location. If you want the file to appear in a different folder, specify it with `app.vault.getAbstractFileByPath("FOLDERNAME")`' } } }, creation_date: { name: "creation_date", description: "Retrieves the file's creation date.", definition: 'tp.file.creation_date(format: string = "YYYY-MM-DD HH:mm")', args: { format: { name: "format", description: "Format for the date, refer to format reference" } } }, cursor: { name: "cursor", description: "Sets the cursor to this location after the template has been inserted. \n\nYou can navigate between the different tp.file.cursor using the configured hotkey in obsidian settings.\n", definition: "tp.file.cursor(order?: number)", args: { order: { name: "order", description: "The order of the different cursors jump, e.g. it will jump from 1 to 2 to 3, and so on.\nIf you specify multiple tp.file.cursor with the same order, the editor will switch to multi-cursor.\n" } } }, cursor_append: { name: "cursor_append", description: "Appends some content after the active cursor in the file.", definition: "tp.file.cursor_append(content: string)", args: { content: { name: "content", description: "The content to append after the active cursor" } } }, exists: { name: "exists", description: "The filename of the file we want to check existence. The fullpath to the file, relative to the Vault and containing the extension, must be provided. e.g. MyFolder/SubFolder/MyFile.", definition: "tp.file.exists(filename: string)", args: { filename: { name: "filename", description: "The filename of the file we want to check existence, e.g. MyFile." } } }, find_tfile: { name: "find_tfile", description: "Search for a file and returns its `TFile` instance", definition: "tp.file.find_tfile(filename: string)", args: { filename: { name: "filename", description: "The filename we want to search and resolve as a `TFile`" } } }, folder: { name: "folder", description: "Retrieves the file's folder name.", definition: "tp.file.folder(relative: boolean = false)", args: { relative: { name: "relative", description: "If set to true, appends the vault relative path to the folder name." } } }, include: { name: "include", description: "Includes the file's link content. Templates in the included content will be resolved.", definition: "tp.file.include(include_link: string \u23AE TFile)", args: { include_link: { name: "include_link", description: "The link to the file to include, e.g. [[MyFile]], or a TFile object. Also supports sections or blocks inclusions, e.g. [[MyFile#Section1]]" } } }, last_modified_date: { name: "last_modified_date", description: "Retrieves the file's last modification date.", definition: 'tp.file.last_modified_date(format: string = "YYYY-MM-DD HH:mm")', args: { format: { name: "format", description: "Format for the date, refer to format reference." } } }, move: { name: "functions.move", description: "Moves the file to the desired vault location.", definition: "tp.file.move(new_path: string, file_to_move?: TFile)", args: { new_path: { name: "new_path", description: "The new vault relative path of the file, without the file extension. Note: the new path needs to include the folder and the filename, e.g. /Notes/MyNote" } } }, path: { name: "path", description: "Retrieves the file's absolute path on the system.", definition: "tp.file.path(relative: boolean = false)", args: { relative: { name: "relative", description: "If set to true, only retrieves the vault's relative path." } } }, rename: { name: "rename", description: "Renames the file (keeps the same file extension).", definition: "tp.file.rename(new_title: string)", args: { new_title: { name: "new_title", description: "The new file title." } } }, selection: { name: "selection", description: "Retrieves the active file's text selection.", definition: "tp.file.selection()" }, tags: { name: "tags", description: "Retrieves the file's tags (array of string)", definition: "tp.file.tags" }, title: { name: "title", definition: "tp.file.title", description: "Retrieves the file's title." } } }, frontmatter: { name: "frontmatter", description: "This modules exposes all the frontmatter variables of a file as variables." }, obsidian: { name: "obsidian", description: "This module exposes all the functions and classes from the obsidian API." }, system: { name: "system", description: "This module contains system related functions.", functions: { clipboard: { name: "clipboard", description: "Retrieves the clipboard's content", definition: "tp.system.clipboard()" }, prompt: { name: "prompt", description: "Spawns a prompt modal and returns the user's input.", definition: "tp.system.prompt(prompt_text?: string, default_value?: string, throw_on_cancel: boolean = false, multiline?: boolean = false)", args: { prompt_text: { name: "prompt_text", description: "Text placed above the input field" }, default_value: { name: "default_value", description: "A default value for the input field" }, throw_on_cancel: { name: "throw_on_cancel", description: "Throws an error if the prompt is canceled, instead of returning a `null` value" }, multiline: { name: "multiline", description: "If set to true, the input field will be a multiline textarea" } } }, suggester: { name: "suggester", description: "Spawns a suggester prompt and returns the user's chosen item.", definition: 'tp.system.suggester(text_items: string[] \u23AE ((item: T) => string), items: T[], throw_on_cancel: boolean = false, placeholder: string = "", limit?: number = undefined)', args: { text_items: { name: "text_items", description: "Array of strings representing the text that will be displayed for each item in the suggester prompt. This can also be a function that maps an item to its text representation." }, items: { name: "items", description: "Array containing the values of each item in the correct order." }, throw_on_cancel: { name: "throw_on_cancel", description: "Throws an error if the prompt is canceled, instead of returning a `null` value" }, placeholder: { name: "placeholder", description: "Placeholder string of the prompt" }, limit: { name: "limit", description: "Limit the number of items rendered at once (useful to improve performance when displaying large lists)" } } } } }, web: { name: "web", description: "This modules contains every internal function related to the web (making web requests).", functions: { daily_quote: { name: "daily_quote", description: "Retrieves and parses the daily quote from the API https://api.quotable.io", definition: "tp.web.daily_quote()" }, random_picture: { name: "random_picture", description: "Gets a random image from https://unsplash.com/", definition: "tp.web.random_picture(size?: string, query?: string, include_size?: boolean)", args: { size: { name: "size", description: "Image size in the format `x`" }, query: { name: "query", description: "Limits selection to photos matching a search term. Multiple search terms can be passed separated by a comma `,`" }, include_dimensions: { name: "include_size", description: "Optional argument to include the specified size in the image link markdown. Defaults to false" } } } } } }; +var tp = { config: { name: "config", description: "This module exposes Templater's running configuration.\n\nThis is mostly useful when writing scripts requiring some context information.\n", functions: { template_file: { name: "template_file", description: "The `TFile` object representing the template file.", definition: "tp.config.template_file" }, target_file: { name: "target_file", description: "The `TFile` object representing the target file where the template will be inserted.", definition: "tp.config.target_file" }, run_mode: { name: "run_mode", description: "The `RunMode`, representing the way Templater was launched (Create new from template, Append to active file, ...)", definition: "tp.config.run_mode" }, active_file: { name: "active_file", description: "The active file (if existing) when launching Templater.", definition: "tp.config.active_file?" } } }, date: { name: "date", description: "This module contains every internal function related to dates.", functions: { now: { name: "now", description: "Retrieves the date.", definition: 'tp.date.now(format: string = "YYYY-MM-DD", offset?: number\u23AEstring, reference?: string, reference_format?: string)', args: [{ name: "format", description: "Format for the date, refer to [format reference](https://momentjs.com/docs/#/displaying/format/)" }, { name: "offset", description: "Offset for the day, e.g. set this to `-7` to get last week's date. You can also specify the offset as a string using the ISO 8601 format" }, { name: "reference", description: "The date referential, e.g. set this to the note's title" }, { name: "reference_format", description: "The date reference format." }] }, tomorrow: { name: "tomorrow", description: "Retrieves tomorrow's date.", definition: 'tp.date.tomorrow(format: string = "YYYY-MM-DD")', args: [{ name: "format", description: "Format for the date, refer to [format reference](https://momentjs.com/docs/#/displaying/format/)" }] }, yesterday: { name: "yesterday", description: "Retrieves yesterday's date.", definition: 'tp.date.yesterday(format: string = "YYYY-MM-DD")', args: [{ name: "format", description: "Format for the date, refer to [format reference](https://momentjs.com/docs/#/displaying/format/)" }] }, weekday: { name: "weekday", description: "", definition: 'tp.date.weekday(format: string = "YYYY-MM-DD", weekday: number, reference?: string, reference_format?: string)', args: [{ name: "format", description: "Format for the date, refer to [format reference](https://momentjs.com/docs/#/displaying/format/)" }, { name: "weekday", description: "Week day number. If the locale assigns Monday as the first day of the week, `0` will be Monday, `-7` will be last week's day." }, { name: "reference", description: "The date referential, e.g. set this to the note's title" }, { name: "reference_format", description: "The date reference format." }] } } }, file: { name: "file", description: "This module contains every internal function related to files.", functions: { content: { name: "content", description: "Retrieves the file's content", definition: "tp.file.content" }, create_new: { name: "create_new", description: "Creates a new file using a specified template or with a specified content.", definition: "tp.file.create_new(template: TFile \u23AE string, filename?: string, open_new: boolean = false, folder?: TFolder)", args: [{ name: "template", description: "Either the template used for the new file content, or the file content as a string. If it is the template to use, you retrieve it with `tp.file.find_tfile(TEMPLATENAME)`" }, { name: "filename", description: 'The filename of the new file, defaults to "Untitled".' }, { name: "open_new", description: "Whether to open or not the newly created file. Warning: if you use this option, since commands are executed asynchronously, the file can be opened first and then other commands are appended to that new file and not the previous file." }, { name: "folder", description: 'The folder to put the new file in, defaults to obsidian\'s default location. If you want the file to appear in a different folder, specify it with `app.vault.getAbstractFileByPath("FOLDERNAME")`' }] }, creation_date: { name: "creation_date", description: "Retrieves the file's creation date.", definition: 'tp.file.creation_date(format: string = "YYYY-MM-DD HH:mm")', args: [{ name: "format", description: "Format for the date, refer to format reference" }] }, cursor: { name: "cursor", description: "Sets the cursor to this location after the template has been inserted. \n\nYou can navigate between the different tp.file.cursor using the configured hotkey in obsidian settings.\n", definition: "tp.file.cursor(order?: number)", args: [{ name: "order", description: "The order of the different cursors jump, e.g. it will jump from 1 to 2 to 3, and so on.\nIf you specify multiple tp.file.cursor with the same order, the editor will switch to multi-cursor.\n" }] }, cursor_append: { name: "cursor_append", description: "Appends some content after the active cursor in the file.", definition: "tp.file.cursor_append(content: string)", args: [{ name: "content", description: "The content to append after the active cursor" }] }, exists: { name: "exists", description: "The filename of the file we want to check existence. The fullpath to the file, relative to the Vault and containing the extension, must be provided. e.g. MyFolder/SubFolder/MyFile.", definition: "tp.file.exists(filename: string)", args: [{ name: "filename", description: "The filename of the file we want to check existence, e.g. MyFile." }] }, find_tfile: { name: "find_tfile", description: "Search for a file and returns its `TFile` instance", definition: "tp.file.find_tfile(filename: string)", args: [{ name: "filename", description: "The filename we want to search and resolve as a `TFile`" }] }, folder: { name: "folder", description: "Retrieves the file's folder name.", definition: "tp.file.folder(relative: boolean = false)", args: [{ name: "relative", description: "If set to true, appends the vault relative path to the folder name." }] }, include: { name: "include", description: "Includes the file's link content. Templates in the included content will be resolved.", definition: "tp.file.include(include_link: string \u23AE TFile)", args: [{ name: "include_link", description: "The link to the file to include, e.g. [[MyFile]], or a TFile object. Also supports sections or blocks inclusions, e.g. [[MyFile#Section1]]" }] }, last_modified_date: { name: "last_modified_date", description: "Retrieves the file's last modification date.", definition: 'tp.file.last_modified_date(format: string = "YYYY-MM-DD HH:mm")', args: [{ name: "format", description: "Format for the date, refer to format reference." }] }, move: { name: "functions.move", description: "Moves the file to the desired vault location.", definition: "tp.file.move(new_path: string, file_to_move?: TFile)", example: '<% tp.file.move("/Notes/MyNote") %>', args: [{ name: "new_path", description: 'The new vault relative path of the file, without the file extension. Note: the new path needs to include the folder and the filename, e.g. `"/Notes/MyNote"`' }, { name: "file_to_move", description: "The file to move, defaults to the current file." }] }, path: { name: "path", description: "Retrieves the file's absolute path on the system.", definition: "tp.file.path(relative: boolean = false)", args: [{ name: "relative", description: "If set to true, only retrieves the vault's relative path." }] }, rename: { name: "rename", description: "Renames the file (keeps the same file extension).", definition: "tp.file.rename(new_title: string)", args: [{ name: "new_title", description: "The new file title." }] }, selection: { name: "selection", description: "Retrieves the active file's text selection.", definition: "tp.file.selection()" }, tags: { name: "tags", description: "Retrieves the file's tags (array of string)", definition: "tp.file.tags" }, title: { name: "title", definition: "tp.file.title", description: "Retrieves the file's title." } } }, frontmatter: { name: "frontmatter", description: "This modules exposes all the frontmatter variables of a file as variables." }, obsidian: { name: "obsidian", description: "This module exposes all the functions and classes from the obsidian API." }, system: { name: "system", description: "This module contains system related functions.", functions: { clipboard: { name: "clipboard", description: "Retrieves the clipboard's content", definition: "tp.system.clipboard()" }, prompt: { name: "prompt", description: "Spawns a prompt modal and returns the user's input.", definition: "tp.system.prompt(prompt_text?: string, default_value?: string, throw_on_cancel: boolean = false, multiline?: boolean = false)", args: [{ name: "prompt_text", description: "Text placed above the input field" }, { name: "default_value", description: "A default value for the input field" }, { name: "throw_on_cancel", description: "Throws an error if the prompt is canceled, instead of returning a `null` value" }, { name: "multiline", description: "If set to true, the input field will be a multiline textarea" }] }, suggester: { name: "suggester", description: "Spawns a suggester prompt and returns the user's chosen item.", definition: 'tp.system.suggester(text_items: string[] \u23AE ((item: T) => string), items: T[], throw_on_cancel: boolean = false, placeholder: string = "", limit?: number = undefined)', args: [{ name: "text_items", description: "Array of strings representing the text that will be displayed for each item in the suggester prompt. This can also be a function that maps an item to its text representation." }, { name: "items", description: "Array containing the values of each item in the correct order." }, { name: "throw_on_cancel", description: "Throws an error if the prompt is canceled, instead of returning a `null` value" }, { name: "placeholder", description: "Placeholder string of the prompt" }, { name: "limit", description: "Limit the number of items rendered at once (useful to improve performance when displaying large lists)" }] } } }, web: { name: "web", description: "This modules contains every internal function related to the web (making web requests).", functions: { daily_quote: { name: "daily_quote", description: "Retrieves and parses the daily quote from the API https://api.quotable.io", definition: "tp.web.daily_quote()" }, random_picture: { name: "random_picture", description: "Gets a random image from https://unsplash.com/", definition: "tp.web.random_picture(size?: string, query?: string, include_size?: boolean)", args: [{ name: "size", description: "Image size in the format `x`" }, { name: "query", description: "Limits selection to photos matching a search term. Multiple search terms can be passed separated by a comma `,`" }, { name: "include_size", description: "Optional argument to include the specified size in the image link markdown. Defaults to false" }] } } } }; var documentation_default = { tp }; // src/editor/TpDocumentation.ts @@ -4100,13 +3974,34 @@ function is_function_documentation(x) { return false; } var Documentation = class { - constructor() { + constructor(settings) { + this.settings = settings; this.documentation = documentation_default; } get_all_modules_documentation() { return Object.values(this.documentation.tp); } get_all_functions_documentation(module_name) { + if (module_name === "user") { + if (!this.settings || !this.settings.user_scripts_folder) + return; + const files = errorWrapperSync(() => get_tfiles_from_folder(this.settings.user_scripts_folder), `User Scripts folder doesn't exist`); + if (!files || files.length === 0) + return; + return files.reduce((processedFiles, file) => { + if (file.extension !== "js") + return processedFiles; + return [ + ...processedFiles, + { + name: file.basename, + definition: "", + description: "", + example: "" + } + ]; + }, []); + } if (!this.documentation.tp[module_name].functions) { return; } @@ -4128,11 +4023,11 @@ var Documentation = class { }; // src/editor/Autocomplete.ts -var Autocomplete = class extends import_obsidian16.EditorSuggest { - constructor() { +var Autocomplete = class extends import_obsidian15.EditorSuggest { + constructor(settings) { super(app); this.tp_keyword_regex = /tp\.(?[a-z]*)?(?\.(?[a-z_]*)?)?$/; - this.documentation = new Documentation(); + this.documentation = new Documentation(settings); } onTrigger(cursor, editor, _file) { const range = editor.getRange({ line: cursor.line, ch: 0 }, { line: cursor.line, ch: cursor.ch }); @@ -4185,15 +4080,15 @@ var Autocomplete = class extends import_obsidian16.EditorSuggest { } } selectSuggestion(value, _evt) { - const active_view = app.workspace.getActiveViewOfType(import_obsidian16.MarkdownView); - if (!active_view) { + const active_editor = app.workspace.activeEditor; + if (!active_editor || !active_editor.editor) { return; } - active_view.editor.replaceRange(value.name, this.latest_trigger_info.start, this.latest_trigger_info.end); + active_editor.editor.replaceRange(value.name, this.latest_trigger_info.start, this.latest_trigger_info.end); if (this.latest_trigger_info.start.ch == this.latest_trigger_info.end.ch) { const cursor_pos = this.latest_trigger_info.end; cursor_pos.ch += value.name.length; - active_view.editor.setCursor(cursor_pos); + active_editor.editor.setCursor(cursor_pos); } } }; @@ -5479,10 +5374,16 @@ var Editor2 = class { this.plugin = plugin; this.cursor_jumper = new CursorJumper(); } + desktopShouldHighlight() { + return import_obsidian16.Platform.isDesktopApp && this.plugin.settings.syntax_highlighting; + } + mobileShouldHighlight() { + return import_obsidian16.Platform.isMobileApp && this.plugin.settings.syntax_highlighting_mobile; + } async setup() { await this.registerCodeMirrorMode(); - this.plugin.registerEditorSuggest(new Autocomplete()); - if (import_obsidian17.Platform.isDesktopApp && this.plugin.settings.syntax_highlighting) { + this.plugin.registerEditorSuggest(new Autocomplete(this.plugin.settings)); + if (this.desktopShouldHighlight() || this.mobileShouldHighlight()) { this.plugin.registerEditorExtension(import_language.StreamLanguage.define(window.CodeMirror.getMode({}, { name: "templater" }))); } } @@ -5490,16 +5391,13 @@ var Editor2 = class { if (auto_jump && !this.plugin.settings.auto_jump_to_cursor) { return; } - if (file && app.workspace.getActiveFile() !== file) { + if (file && get_active_file(app) !== file) { return; } await this.cursor_jumper.jump_to_next_cursor_location(); } async registerCodeMirrorMode() { - if (!this.plugin.settings.syntax_highlighting) { - return; - } - if (import_obsidian17.Platform.isMobileApp) { + if (!this.desktopShouldHighlight() && !this.mobileShouldHighlight()) { return; } const js_mode = window.CodeMirror.getMode({}, "javascript"); @@ -5585,7 +5483,7 @@ var Editor2 = class { }; // src/main.ts -var TemplaterPlugin = class extends import_obsidian18.Plugin { +var TemplaterPlugin = class extends import_obsidian17.Plugin { async onload() { await this.load_settings(); this.templater = new Templater(this); @@ -5597,7 +5495,7 @@ var TemplaterPlugin = class extends import_obsidian18.Plugin { this.event_handler.setup(); this.command_handler = new CommandHandler(this); this.command_handler.setup(); - (0, import_obsidian18.addIcon)("templater-icon", ICON_DATA); + (0, import_obsidian17.addIcon)("templater-icon", ICON_DATA); if (this.settings.enable_ribbon_icon) { this.addRibbonIcon("templater-icon", "Templater", async () => { this.fuzzy_suggester.insert_template(); diff --git a/Vault/.obsidian/plugins/templater-obsidian/manifest.json b/Vault/.obsidian/plugins/templater-obsidian/manifest.json index 70cf595..a31f767 100644 --- a/Vault/.obsidian/plugins/templater-obsidian/manifest.json +++ b/Vault/.obsidian/plugins/templater-obsidian/manifest.json @@ -1,7 +1,7 @@ { "id": "templater-obsidian", "name": "Templater", - "version": "1.16.0", + "version": "1.16.4", "description": "Create and use templates", "minAppVersion": "0.11.13", "author": "SilentVoid", diff --git a/Vault/.obsidian/plugins/templater-obsidian/styles.css b/Vault/.obsidian/plugins/templater-obsidian/styles.css index 207db95..c9ece98 100644 --- a/Vault/.obsidian/plugins/templater-obsidian/styles.css +++ b/Vault/.obsidian/plugins/templater-obsidian/styles.css @@ -107,142 +107,81 @@ textarea.templater-prompt-input:focus { } .cm-s-obsidian .cm-templater-command.cm-templater-interpolation-tag { - color: #008bff; + color: var(--code-property, #008bff); } .cm-s-obsidian .cm-templater-command.cm-templater-execution-tag { - color: #c0d700; + color: var(--code-function, #c0d700); } -.theme-dark .cm-s-obsidian .cm-templater-command.cm-keyword { - color: #00a7aa; +.cm-s-obsidian .cm-templater-command.cm-keyword { + color: var(--code-keyword, #00a7aa); font-weight: normal; } -.theme-dark .cm-s-obsidian .cm-templater-command.cm-atom { - color: #f39b35; +.cm-s-obsidian .cm-templater-command.cm-atom { + color: var(--code-normal, #f39b35); } -.theme-dark .cm-s-obsidian .cm-templater-command.cm-number { - color: #a06fca; +.cm-s-obsidian .cm-templater-command.cm-value, +.cm-s-obsidian .cm-templater-command.cm-number, +.cm-s-obsidian .cm-templater-command.cm-type { + color: var(--code-value, #a06fca); } -.theme-dark .cm-s-obsidian .cm-templater-command.cm-type { - color: #a06fca; +.cm-s-obsidian .cm-templater-command.cm-def, +.cm-s-obsidian .cm-templater-command.cm-type.cm-def { + color: var(--code-normal, var(--text-normal)); } -.theme-dark .cm-s-obsidian .cm-templater-command.cm-def { - color: #98e342; +.cm-s-obsidian .cm-templater-command.cm-property, +.cm-s-obsidian .cm-templater-command.cm-property.cm-def, +.cm-s-obsidian .cm-templater-command.cm-attribute { + color: var(--code-function, #98e342); } -.theme-dark .cm-s-obsidian .cm-templater-command.cm-property { - color: #d4d4d4; +.cm-s-obsidian .cm-templater-command.cm-variable, +.cm-s-obsidian .cm-templater-command.cm-variable-2, +.cm-s-obsidian .cm-templater-command.cm-variable-3, +.cm-s-obsidian .cm-templater-command.cm-meta { + color: var(--code-property, #d4d4d4); } -.theme-dark .cm-s-obsidian .cm-templater-command.cm-variable { - color: #d4d4d4; +.cm-s-obsidian .cm-templater-command.cm-callee, +.cm-s-obsidian .cm-templater-command.cm-operator, +.cm-s-obsidian .cm-templater-command.cm-qualifier, +.cm-s-obsidian .cm-templater-command.cm-builtin { + color: var(--code-operator, #fc4384); } -.theme-dark .cm-s-obsidian .cm-templater-command.cm-variable-2 { - color: #da7dae; +.cm-s-obsidian .cm-templater-command.cm-tag { + color: var(--code-tag, #fc4384); } -.theme-dark .cm-s-obsidian .cm-templater-command.cm-variable-3 { - color: #a06fca; +.cm-s-obsidian .cm-templater-command.cm-comment, +.cm-s-obsidian .cm-templater-command.cm-comment.cm-tag, +.cm-s-obsidian .cm-templater-command.cm-comment.cm-attribute { + color: var(--code-comment, #696d70); } -.theme-dark .cm-s-obsidian .cm-templater-command.cm-type.cm-def { - color: #fc4384; +.cm-s-obsidian .cm-templater-command.cm-string, +.cm-s-obsidian .cm-templater-command.cm-string-2 { + color: var(--code-string, #e6db74); } -.theme-dark .cm-s-obsidian .cm-templater-command.cm-property.cm-def { - color: #fc4384; +.cm-s-obsidian .cm-templater-command.cm-header, +.cm-s-obsidian .cm-templater-command.cm-hr { + color: var(--code-keyword, #da7dae); } -.theme-dark .cm-s-obsidian .cm-templater-command.cm-callee { - color: #fc4384; +.cm-s-obsidian .cm-templater-command.cm-link { + color: var(--code-normal, #696d70); } -.theme-dark .cm-s-obsidian .cm-templater-command.cm-operator { - color: #fc4384; -} - -.theme-dark .cm-s-obsidian .cm-templater-command.cm-qualifier { - color: #fc4384; -} - -.theme-dark .cm-s-obsidian .cm-templater-command.cm-tag { - color: #fc4384; -} - -.theme-dark .cm-s-obsidian .cm-templater-command.cm-tag.cm-bracket { - color: #d4d4d4; -} - -.theme-dark .cm-s-obsidian .cm-templater-command.cm-attribute { - color: #a06fca; -} - -.theme-dark .cm-s-obsidian .cm-templater-command.cm-comment { - color: #696d70; -} - -.theme-dark .cm-s-obsidian .cm-templater-command.cm-comment.cm-tag { - color: #fc4384; -} - -.theme-dark .cm-s-obsidian .cm-templater-command.cm-comment.cm-attribute { - color: #d4d4d4; -} - -.theme-dark .cm-s-obsidian .cm-templater-command.cm-string { - color: #e6db74; -} - -.theme-dark .cm-s-obsidian .cm-templater-command.cm-string-2 { - color: #f39b35; -} - -.theme-dark .cm-s-obsidian .cm-templater-command.cm-meta { - color: #d4d4d4; - background: inherit; -} - -.theme-dark .cm-s-obsidian .cm-templater-command.cm-builtin { - color: #fc4384; -} - -.theme-dark .cm-s-obsidian .cm-templater-command.cm-header { - color: #da7dae; -} - -.theme-dark .cm-s-obsidian .cm-templater-command.cm-hr { - color: #98e342; -} - -.theme-dark .cm-s-obsidian .cm-templater-command.cm-link { - color: #696d70; -} - -.theme-dark .cm-s-obsidian .cm-templater-command.cm-error { +.cm-s-obsidian .cm-templater-command.cm-error { border-bottom: 1px solid #c42412; } -.theme-dark .cm-s-obsidian pre.HyperMD-codeblock .cm-keyword { - font-weight: normal; -} - -.theme-dark - .cm-s-obsidian - .cm-templater-command.CodeMirror-activeline-background { - background: #272727; -} - -.theme-dark .cm-s-obsidian .cm-templater-command.CodeMirror-matchingbracket { - outline: 1px solid grey; - color: #d4d4d4 !important; -} - .CodeMirror-hints { position: absolute; z-index: 10; diff --git a/Vault/.obsidian/themes/Minimal/manifest.json b/Vault/.obsidian/themes/Minimal/manifest.json index a7e8091..e5a439b 100644 --- a/Vault/.obsidian/themes/Minimal/manifest.json +++ b/Vault/.obsidian/themes/Minimal/manifest.json @@ -1,6 +1,6 @@ { "name": "Minimal", - "version": "7.0.7", + "version": "7.3.4", "minAppVersion": "1.1.9", "author": "@kepano", "authorUrl": "https://twitter.com/kepano", diff --git a/Vault/.obsidian/themes/Minimal/theme.css b/Vault/.obsidian/themes/Minimal/theme.css index 88dc4be..5464854 100644 --- a/Vault/.obsidian/themes/Minimal/theme.css +++ b/Vault/.obsidian/themes/Minimal/theme.css @@ -38,7 +38,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -body{--font-text-theme:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Inter,Ubuntu,sans-serif;--font-editor-theme:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Inter,Ubuntu,sans-serif;--font-monospace-theme:Menlo,SFMono-Regular,Consolas,"Roboto Mono",monospace;--font-interface-theme:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Inter,Ubuntu,sans-serif;--font-editor:var(--font-editor-override),var(--font-text-override),var(--font-editor-theme)}body{--blockquote-style:normal;--blockquote-color:var(--text-muted);--blockquote-border-thickness:1px;--blockquote-border-color:var(--quote-opening-modifier);--embed-block-shadow-hover:none;--font-ui-smaller:11px;--normal-weight:400;--bold-weight:600;--link-weight:inherit;--inline-title-margin-bottom:1rem;--h1-size:1.125em;--h2-size:1.05em;--h3-size:1em;--h4-size:0.90em;--h5-size:0.85em;--h6-size:0.85em;--h1-weight:600;--h2-weight:600;--h3-weight:500;--h4-weight:500;--h5-weight:500;--h6-weight:400;--h1-variant:normal;--h2-variant:normal;--h3-variant:normal;--h4-variant:normal;--h5-variant:small-caps;--h6-variant:small-caps;--h1-style:normal;--h2-style:normal;--h3-style:normal;--h4-style:normal;--h5-style:normal;--h6-style:normal;--line-width:40rem;--line-height:1.5;--max-width:88%;--max-col-width:18em;--icon-muted:0.5;--nested-padding:1.1em;--folding-offset:32px;--list-edit-offset:0.5em;--list-indent:2em;--list-spacing:0.075em;--input-height:32px;--header-height:40px;--mobile-left-sidebar-width:280pt;--mobile-right-sidebar-width:240pt;--top-left-padding-y:0px;--image-muted:0.7;--image-radius:0;--heading-spacing:2.25rem;--p-spacing:1.5em;--border-width:1px;--table-border-width:var(--border-width);--file-margins:var(--size-4-2) var(--size-4-12)}.mod-macos{--top-left-padding-y:24px}@media only screen and (-webkit-min-device-pixel-ratio:2),only screen and (min-device-pixel-ratio:2){.is-phone{--border-width:0.75px}}body{--base-h:0;--base-s:0%;--base-l:96%;--accent-h:201;--accent-s:17%;--accent-l:50%}.theme-dark,.theme-light{--color-red-rgb:208,66,85;--color-orange-rgb:213,118,63;--color-yellow-rgb:229,181,103;--color-green-rgb:168,195,115;--color-cyan-rgb:115,187,178;--color-blue-rgb:108,153,187;--color-purple-rgb:158,134,200;--color-pink-rgb:176,82,121;--color-red:#d04255;--color-orange:#d5763f;--color-yellow:#e5b567;--color-green:#a8c373;--color-cyan:#73bbb2;--color-blue:#6c99bb;--color-purple:#9e86c8;--color-pink:#b05279}.theme-light,.theme-light.minimal-default-light,body .excalidraw{--bg1:white;--bg2:hsl( var(--base-h), var(--base-s), var(--base-l) );--bg3:hsla( var(--base-h), var(--base-s), calc(var(--base-l) - 50%), 0.12 );--ui1:hsl( var(--base-h), var(--base-s), calc(var(--base-l) - 6%) );--ui2:hsl( var(--base-h), var(--base-s), calc(var(--base-l) - 12%) );--ui3:hsl( var(--base-h), var(--base-s), calc(var(--base-l) - 20%) );--tx1:hsl( var(--base-h), var(--base-s), calc(var(--base-l) - 90%) );--tx2:hsl( var(--base-h), calc(var(--base-s) - 20%), calc(var(--base-l) - 45%) );--tx3:hsl( var(--base-h), calc(var(--base-s) - 10%), calc(var(--base-l) - 25%) );--tx4:hsl( var(--base-h), calc(var(--base-s) - 10%), calc(var(--base-l) - 60%) );--ax1:hsl( var(--accent-h), var(--accent-s), var(--accent-l) );--ax2:hsl( var(--accent-h), var(--accent-s), calc(var(--accent-l) - 8%) );--ax3:hsl( var(--accent-h), var(--accent-s), calc(var(--accent-l) + 6%) );--hl1:hsla( var(--accent-h), 50%, calc(var(--base-l) - 20%), 30% );--hl2:rgba(255, 225, 0, 0.5);--sp1:white}.excalidraw.theme--dark,.theme-dark,.theme-dark.minimal-default-dark,.theme-light.minimal-light-contrast .titlebar,.theme-light.minimal-light-contrast.minimal-status-off .status-bar{--accent-l:60%;--base-l:15%;--bg1:hsl( var(--base-h), var(--base-s), var(--base-l) );--bg2:hsl( var(--base-h), var(--base-s), calc(var(--base-l) - 2%) );--bg3:hsla( var(--base-h), var(--base-s), calc(var(--base-l) + 40%), 0.12 );--ui1:hsl( var(--base-h), var(--base-s), calc(var(--base-l) + 6%) );--ui2:hsl( var(--base-h), var(--base-s), calc(var(--base-l) + 12%) );--ui3:hsl( var(--base-h), var(--base-s), calc(var(--base-l) + 20%) );--tx1:hsl( var(--base-h), calc(var(--base-s) - 10%), calc(var(--base-l) + 67%) );--tx2:hsl( var(--base-h), calc(var(--base-s) - 20%), calc(var(--base-l) + 45%) );--tx3:hsl( var(--base-h), calc(var(--base-s) - 10%), calc(var(--base-l) + 20%) );--tx4:hsl( var(--base-h), calc(var(--base-s) - 10%), calc(var(--base-l) + 50%) );--ax1:hsl( var(--accent-h), var(--accent-s), var(--accent-l) );--ax2:hsl( var(--accent-h), var(--accent-s), calc(var(--accent-l) + 8%) );--ax3:hsl( var(--accent-h), var(--accent-s), calc(var(--accent-l) - 5%) );--hl1:hsla( var(--accent-h), 50%, 40%, 30% );--hl2:rgba(255, 177, 80, 0.3);--sp1:white}.theme-light.minimal-light-white{--background-primary:white;--background-secondary:white;--background-secondary-alt:white;--ribbon-background:white;--bg1:white}.theme-dark.minimal-dark-black{--base-d:0%;--titlebar-background:black;--background-primary:black;--background-secondary:black;--background-secondary-alt:black;--ribbon-background:black;--background-modifier-hover:hsl( var(--base-h), var(--base-s), calc(var(--base-d) + 10%));--tx1:hsl( var(--base-h), var(--base-s), calc(var(--base-d) + 75%) );--tx2:hsl( var(--base-h), var(--base-s), calc(var(--base-d) + 50%) );--tx3:hsl( var(--base-h), var(--base-s), calc(var(--base-d) + 25%) );--ui1:hsl( var(--base-h), var(--base-s), calc(var(--base-d) + 12%) );--ui2:hsl( var(--base-h), var(--base-s), calc(var(--base-d) + 20%) );--ui3:hsl( var(--base-h), var(--base-s), calc(var(--base-d) + 30%) )}.theme-light{--mono100:black;--mono0:white}.theme-dark{--mono100:white;--mono0:black}.theme-dark,.theme-light,.theme-light.minimal-light-contrast .titlebar,.theme-light.minimal-light-contrast.is-mobile .workspace-drawer.mod-left,.theme-light.minimal-light-contrast.minimal-status-off .status-bar{--background-modifier-accent:var(--ax3);--background-modifier-border-focus:var(--ui3);--background-modifier-border-hover:var(--ui2);--background-modifier-border:var(--ui1);--background-modifier-form-field-highlighted:var(--bg1);--background-modifier-form-field:var(--bg1);--background-modifier-success:var(--color-green);--background-modifier-hover:var(--bg3);--background-modifier-active-hover:var(--bg3);--background-primary:var(--bg1);--background-primary-alt:var(--bg2);--background-secondary:var(--bg2);--background-secondary-alt:var(--bg1);--background-table-rows:var(--bg2);--checkbox-color:var(--ax3);--code-normal:var(--tx1);--divider-color:var(--ui1);--frame-divider-color:var(--ui1);--icon-color-active:var(--tx1);--icon-color-focused:var(--tx1);--icon-color-hover:var(--tx2);--icon-color:var(--tx2);--icon-hex:var(--mono0);--interactive-accent-hover:var(--ax1);--interactive-accent:var(--ax3);--interactive-hover:var(--ui1);--list-marker-color:var(--tx3);--modal-border-color:var(--ui2);--nav-item-background-active:var(--bg3);--nav-item-background-hover:var(--bg3);--nav-item-color:var(--tx2);--nav-item-color-active:var(--tx1);--nav-item-color-hover:var(--tx1);--nav-collapse-icon-color:var(--tx2);--nav-collapse-icon-color-collapsed:var(--tx2);--nav-indentation-guide-color:var(--ui1);--prompt-border-color:var(--ui3);--quote-opening-modifier:var(--ui2);--ribbon-background:var(--bg2);--scrollbar-active-thumb-bg:var(--ui3);--scrollbar-bg:transparent;--scrollbar-thumb-bg:var(--ui1);--search-result-background:var(--bg1);--tab-text-color-focused-active:var(--tx1);--tab-outline-color:var(--ui1);--text-accent-hover:var(--ax2);--text-accent:var(--ax1);--text-blockquote:var(--tx2);--text-bold:var(--tx1);--text-code:var(--tx4);--text-error:var(--color-red);--text-faint:var(--tx3);--text-highlight-bg:var(--hl2);--text-italic:var(--tx1);--text-muted:var(--tx2);--text-normal:var(--tx1);--text-on-accent:var(--sp1);--text-selection:var(--hl1);--title-color-inactive:var(--tx2);--title-color:var(--tx1);--titlebar-background:var(--bg2);--titlebar-background-focused:var(--bg2);--titlebar-text-color-focused:var(--tx1);--workspace-background-translucent:hsla(var(--base-h),var(--base-s), var(--base-l), 0.7)}.theme-light.minimal-light-contrast{--workspace-background-translucent:rgba(0,0,0,0.6)}.theme-light.minimal-light-contrast .theme-dark{--tab-container-background:var(--bg2);--ribbon-background-collapsed:var(--bg2)}.theme-light{--interactive-normal:var(--bg1);--interactive-accent-rgb:220,220,220;--active-line-bg:rgba(0,0,0,0.035);--background-modifier-cover:hsla(var(--base-h),calc(var(--base-s) - 70%),calc(var(--base-l) - 20%),0.5);--text-highlight-bg-active:rgba(0, 0, 0, 0.1);--background-modifier-error:rgba(255,0,0,0.14);--background-modifier-error-hover:rgba(255,0,0,0.08);--shadow-color:rgba(0, 0, 0, 0.1);--btn-shadow-color:rgba(0, 0, 0, 0.05)}.theme-dark{--interactive-normal:var(--bg3);--interactive-accent-rgb:66,66,66;--active-line-bg:rgba(255,255,255,0.04);--background-modifier-cover:hsla(var(--base-h),var(--base-s), calc(var(--base-l) - 12%), 0.5);--text-highlight-bg-active:rgba(255, 255, 255, 0.1);--background-modifier-error:rgba(255,20,20,0.12);--background-modifier-error-hover:rgba(255,20,20,0.18);--background-modifier-box-shadow:rgba(0, 0, 0, 0.3);--shadow-color:rgba(0, 0, 0, 0.3);--btn-shadow-color:rgba(0, 0, 0, 0.2)}.theme-light.minimal-light-white{--background-table-rows:var(--bg2)}.theme-light.minimal-light-tonal{--background-primary:var(--bg2);--background-primary-alt:var(--bg3);--background-table-rows:var(--bg3)}.theme-dark.minimal-dark-tonal{--ribbon-background:var(--bg1);--background-secondary:var(--bg1);--background-table-rows:var(--bg3)}.theme-dark.minimal-dark-black{--background-primary-alt:var(--bg3);--background-table-rows:var(--bg3);--modal-border:var(--ui2);--active-line-bg:rgba(255,255,255,0.085);--background-modifier-form-field:var(--bg3);--background-modifier-cover:hsla(var(--base-h),var(--base-s),calc(var(--base-d) + 8%),0.9);--background-modifier-box-shadow:rgba(0, 0, 0, 1)}body{--font-adaptive-normal:var(--font-text-size,var(--editor-font-size));--font-adaptive-small:var(--font-ui-medium);--font-adaptive-smaller:var(--font-ui-small);--font-adaptive-smallest:var(--font-ui-smaller);--line-width-wide:calc(var(--line-width) + 12.5%);--font-code:calc(var(--font-adaptive-normal) * 0.9);--table-text-size:calc(var(--font-adaptive-normal) * 0.875)}.minimal-dev-block-width .mod-root .workspace-leaf-content:after{display:flex;align-items:flex-end;content:"\00a0pane\00a0";font-size:12px;color:gray;font-family:var(--font-monospace);width:100%;max-width:100%;height:100vh;top:0;z-index:999;position:fixed;pointer-events:none}.minimal-dev-block-width.minimal-readable .mod-root .view-header:after{display:flex;align-items:flex-end;color:green;font-size:12px;font-family:var(--font-monospace);content:" ";width:var(--folding-offset);height:100vh;border-left:1px solid green;border-right:1px solid green;background-color:rgba(0,128,0,.1);top:0;left:max(calc(50% - var(--line-width)/ 2 - 1px),calc(50% - var(--max-width)/ 2 - 1px));z-index:999;position:fixed;pointer-events:none}.minimal-dev-block-width.minimal-readable-off .mod-root .view-header:after{display:flex;align-items:flex-end;color:green;font-size:12px;font-family:var(--font-monospace);content:" ";width:var(--folding-offset);height:100vh;border-left:1px solid green;border-right:1px solid green;background-color:rgba(0,128,0,.1);top:0;left:calc(50% - var(--max-width)/ 2 - 1px);z-index:999;position:fixed;pointer-events:none}.minimal-dev-block-width .mod-root .view-content:before{display:flex;align-items:flex-end;content:"\00a0max\00a0";font-size:12px;color:red;width:var(--max-width);height:100vh;border-left:1px solid red;border-right:1px solid red;top:0;left:50%;transform:translate(-50%,0);z-index:999;position:fixed;pointer-events:none}.minimal-dev-block-width.minimal-readable .mod-root .view-header:before{display:flex;align-items:flex-end;content:"\00a0wide\00a0";font-size:12px;color:orange;font-family:var(--font-monospace);width:var(--line-width-wide);max-width:var(--max-width);height:100vh;border-left:1px solid orange;border-right:1px solid orange;background-color:rgba(255,165,0,.05);top:0;left:50%;transform:translate(-50%,0);z-index:999;position:fixed;pointer-events:none}.minimal-dev-block-width.minimal-readable .mod-root .view-content:after{display:flex;align-items:flex-end;color:#00f;font-size:12px;font-family:var(--font-monospace);content:"\00a0normal";width:var(--line-width);max-width:var(--max-width);height:100vh;border-left:1px solid #00f;border-right:1px solid #00f;background-color:rgba(0,0,255,.08);top:0;left:50%;transform:translate(-50%,0);z-index:999;position:fixed;pointer-events:none}.CodeMirror-wrap>div>textarea{opacity:0}.markdown-source-view.mod-cm6 hr{border-width:2px}.mod-cm6 .cm-editor .cm-line{padding:0}.cm-editor .cm-content{padding-top:.5em}.markdown-source-view{color:var(--text-normal)}.markdown-source-view.mod-cm6 .cm-sizer{display:block}.markdown-source-view.mod-cm6 .cm-scroller{padding-left:0;padding-right:0}.markdown-rendered .mod-header+div>*{margin-block-start:0}body :not(.canvas-node) .markdown-source-view.mod-cm6 .cm-gutters{position:absolute!important;z-index:0;margin-inline-end:0}body :not(.canvas-node) .markdown-source-view.mod-cm6.is-rtl .cm-gutters{right:0}body{--line-number-color:var(--text-faint);--line-number-color-active:var(--text-muted)}.markdown-source-view.mod-cm6 .cm-gutters{color:var(--line-number-color)!important}.markdown-source-view.mod-cm6 .cm-editor .cm-gutterElement.cm-active .cm-heading-marker,.markdown-source-view.mod-cm6 .cm-editor .cm-lineNumbers .cm-gutterElement.cm-active{color:var(--line-number-color-active)}.cm-editor .cm-lineNumbers{background-color:var(--gutter-background)}.cm-editor .cm-lineNumbers .cm-gutterElement{min-width:var(--folding-offset);padding-inline-end:0.5em}.is-rtl .cm-editor .cm-lineNumbers .cm-gutterElement{text-align:left}@media (max-width:400pt){.cm-editor .cm-lineNumbers .cm-gutterElement{padding-inline-end:4px;padding-inline-start:8px}}.cm-editor .cm-lineNumbers .cm-gutterElement{font-variant-numeric:tabular-nums}.cm-editor .cm-gutterElement.cm-active .cm-heading-marker,.cm-editor .cm-lineNumbers .cm-gutterElement.cm-active{color:var(--text-muted)}.markdown-source-view.mod-cm6 .edit-block-button{cursor:var(--cursor);color:var(--text-faint);background-color:var(--background-primary);top:0;opacity:0;transition:opacity .2s;padding:4px 4px 4px 9px}.markdown-source-view.mod-cm6 .edit-block-button svg{margin:0!important}.markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-embed-block>.edit-block-button{width:30px!important;padding-left:7px!important}.is-live-preview:not(.is-readable-line-width) .cm-embed-block>.edit-block-button{padding-left:0!important;margin-left:0!important;padding:4px}.markdown-source-view.mod-cm6 .edit-block-button:hover{background-color:var(--background-primary);color:var(--text-muted)}.markdown-source-view.mod-cm6 .edit-block-button svg{opacity:1}.markdown-source-view.mod-cm6 .edit-block-button:hover svg{opacity:1}.markdown-source-view.mod-cm6 .cm-embed-block{padding:0;border:0;border-radius:0}.markdown-source-view.mod-cm6 .cm-embed-block:hover{border:0}.metadata-properties-heading{display:none}figure{margin-inline-start:0;margin-inline-end:0}.markdown-preview-view .mod-highlighted{transition:background-color .3s ease;background-color:var(--text-selection);color:inherit}.inline-title{padding-top:16px}.minimal-status-off .status-bar{--status-bar-position:static;--status-bar-radius:0;--status-bar-border-width:1px 0 0 0;--status-bar-background:var(--background-secondary);--status-bar-border-color:var(--ui1)}body:not(.minimal-status-off) .status-bar{background-color:var(--background-primary);--status-bar-border-width:0}.status-bar{transition:color .2s linear;color:var(--text-faint);font-size:var(--font-adaptive-smallest)}.status-bar .sync-status-icon.mod-success,.status-bar .sync-status-icon.mod-working{color:var(--text-faint)}.status-bar:hover,.status-bar:hover .sync-status-icon.mod-success,.status-bar:hover .sync-status-icon.mod-working{color:var(--text-muted);transition:color .2s linear}.status-bar .plugin-sync:hover .sync-status-icon.mod-success,.status-bar .plugin-sync:hover .sync-status-icon.mod-working{color:var(--text-normal)}.status-bar .status-bar-item{cursor:var(--cursor)!important}.status-bar .status-bar-item.cMenu-statusbar-button:hover,.status-bar .status-bar-item.mod-clickable:hover,.status-bar .status-bar-item.plugin-editor-status:hover,.status-bar .status-bar-item.plugin-sync:hover{text-align:center;background-color:var(--background-modifier-hover)!important}.tab-stack-top-flipped{--tab-stacked-text-transform:rotate(180deg);--tab-stacked-text-align:right}.tab-stack-center{--tab-stacked-text-align:center}.tab-stack-center-flipped{--tab-stacked-text-transform:rotate(180deg);--tab-stacked-text-align:center}.tab-stack-bottom{--tab-stacked-text-transform:rotate(180deg)}.tab-stack-bottom-flipped{--tab-stacked-text-align:right}.view-header-title,.view-header-title-parent{text-overflow:ellipsis}.view-header-title-container:not(.mod-at-end):after{display:none}body:not(.is-mobile) .view-actions .view-action:last-child{margin-left:-1px}.minimal-focus-mode .workspace-ribbon:not(.is-collapsed)~.mod-root .view-header:hover .view-actions,.mod-right.is-collapsed~.mod-root .view-header:hover .view-actions,.view-action.is-active:hover,.workspace-ribbon.mod-left.is-collapsed~.mod-root .view-header:hover .view-actions,body:not(.minimal-focus-mode) .workspace-ribbon:not(.is-collapsed)~.mod-root .view-actions{opacity:1;transition:opacity .25s ease-in-out}.view-header-title-container{opacity:0;transition:opacity .1s ease-in-out}.view-header-title-container:focus-within{opacity:1;transition:opacity .1s ease-in-out}.view-header:hover .view-header-title-container,.workspace-tab-header-container:hover+.workspace-tab-container .view-header-title-container{opacity:1;transition:opacity .1s ease-in-out}.is-phone .view-header-title-container,.minimal-tab-title-visible .view-header-title-container{opacity:1}.minimal-tab-title-hidden .view-header-title-container{opacity:0}.minimal-tab-title-hidden .view-header-title-container:focus-within{opacity:1;transition:opacity .1s ease-in-out}.minimal-tab-title-hidden .view-header:hover .view-header-title-container,.minimal-tab-title-hidden .workspace-tab-header-container:hover+.workspace-tab-container .view-header-title-container{opacity:0}body.window-title-off .titlebar-text{display:none}.titlebar-button-container.mod-right{background-color:transparent!important}.is-hidden-frameless.theme-dark:not(.minimal-dark-black):not(.colorful-frame),.is-hidden-frameless.theme-light:not(.minimal-light-tonal):not(.colorful-frame){--titlebar-background:var(--bg1)}.is-hidden-frameless.theme-dark:not(.minimal-dark-black):not(.colorful-frame).is-focused .sidebar-toggle-button.mod-right,.is-hidden-frameless.theme-dark:not(.minimal-dark-black):not(.colorful-frame).is-focused .workspace-ribbon.mod-left.is-collapsed,.is-hidden-frameless.theme-dark:not(.minimal-dark-black):not(.colorful-frame).is-focused .workspace-tabs.mod-top,.is-hidden-frameless.theme-light:not(.minimal-light-tonal):not(.colorful-frame).is-focused .sidebar-toggle-button.mod-right,.is-hidden-frameless.theme-light:not(.minimal-light-tonal):not(.colorful-frame).is-focused .workspace-ribbon.mod-left.is-collapsed,.is-hidden-frameless.theme-light:not(.minimal-light-tonal):not(.colorful-frame).is-focused .workspace-tabs.mod-top{--titlebar-background-focused:var(--bg1)}.is-hidden-frameless.theme-dark:not(.minimal-dark-black):not(.colorful-frame):not(.minimal-dark-tonal):not(.minimal-light-white) .workspace-ribbon.mod-left:not(.is-collapsed),.is-hidden-frameless.theme-light:not(.minimal-light-tonal):not(.colorful-frame):not(.minimal-dark-tonal):not(.minimal-light-white) .workspace-ribbon.mod-left:not(.is-collapsed){--titlebar-background:var(--bg2)}.mod-macos.is-hidden-frameless:not(.is-popout-window) .sidebar-toggle-button.mod-right{right:0;padding-right:var(--size-4-2)}body.is-focused{--titlebar-background-focused:var(--background-secondary)}.is-hidden-frameless:not(.colorful-frame) .mod-left-split .mod-top .workspace-tab-header-container{--tab-container-background:var(--background-secondary)}.mod-root .workspace-tab-header-status-icon{color:var(--text-muted)}.modal button:not(.mod-warning),.modal.mod-settings button:not(.mod-cta):not(.mod-warning),.modal.mod-settings button:not(.mod-warning){white-space:nowrap;transition:background-color .2s ease-out,border-color .2s ease-out}button.mod-warning{border:1px solid var(--background-modifier-error);color:var(--text-error);box-shadow:0 1px 1px 0 var(--btn-shadow-color);transition:background-color .2s ease-out}button.mod-warning:hover{border:1px solid var(--background-modifier-error);color:var(--text-error);box-shadow:0 2px 3px 0 var(--btn-shadow-color);transition:background-color .2s ease-out}.document-replace,.document-search{max-width:100%;padding:0}.document-search-container{margin:0 auto;max-width:var(--max-width);width:var(--line-width)}.is-mobile .CodeMirror-foldgutter-open:after,.is-mobile span[title="Fold line"]:after{transform:translateX(-2px)!important}body.is-mobile .CodeMirror-foldgutter-folded:after,body.is-mobile span[title="Unfold line"]:after{content:"›";font-family:sans-serif;transform:translateY(-2px);transform:rotate(-90deg) translateY(2px) translateX(-.45em)}body.is-mobile .CodeMirror-foldgutter-open:after,body.is-mobile span[title="Fold line"]:after{content:"›";font-family:sans-serif;transform:rotate(360deg)}body{--ig-adjust-reading:-0.95em;--ig-adjust-edit:2px}.markdown-rendered.show-indentation-guide li.task-list-item>ol::before,.markdown-rendered.show-indentation-guide li.task-list-item>ul::before,.markdown-rendered.show-indentation-guide li>ol::before,.markdown-rendered.show-indentation-guide li>ul::before{left:var(--ig-adjust-reading)}.markdown-source-view.mod-cm6 .cm-indent::before{transform:translateX(var(--ig-adjust-edit))}.is-mobile .markdown-rendered.show-indentation-guide li>ol::before,.is-mobile .markdown-rendered.show-indentation-guide li>ul::before{left:calc(0em + var(--ig-adjust-reading))}.is-mobile .markdown-source-view.mod-cm6 .cm-indent::before{transform:translateX(calc(2px + var(--ig-adjust-edit)))}.modal-button-container .mod-checkbox{--checkbox-radius:4px}.modal-container.mod-confirmation .modal{width:480px;min-width:0}.theme-light{--progress-outline:rgba(0,0,0,0.05)}.theme-dark{--progress-outline:rgba(255,255,255,0.04)}body{--progress-complete:var(--text-accent)}.markdown-preview-view progress,.markdown-rendered progress,.markdown-source-view.is-live-preview progress{width:220px}.markdown-preview-view progress[value]::-webkit-progress-bar,.markdown-rendered progress[value]::-webkit-progress-bar,.markdown-source-view.is-live-preview progress[value]::-webkit-progress-bar{box-shadow:inset 0 0 0 var(--border-width) var(--progress-outline)}.markdown-preview-view progress[value^='1']::-webkit-progress-value,.markdown-preview-view progress[value^='2']::-webkit-progress-value,.markdown-preview-view progress[value^='3']::-webkit-progress-value,.markdown-rendered progress[value^='1']::-webkit-progress-value,.markdown-rendered progress[value^='2']::-webkit-progress-value,.markdown-rendered progress[value^='3']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value^='1']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value^='2']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value^='3']::-webkit-progress-value{background-color:var(--color-red)}.markdown-preview-view progress[value^='4']::-webkit-progress-value,.markdown-preview-view progress[value^='5']::-webkit-progress-value,.markdown-rendered progress[value^='4']::-webkit-progress-value,.markdown-rendered progress[value^='5']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value^='4']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value^='5']::-webkit-progress-value{background-color:var(--color-orange)}.markdown-preview-view progress[value^='6']::-webkit-progress-value,.markdown-preview-view progress[value^='7']::-webkit-progress-value,.markdown-rendered progress[value^='6']::-webkit-progress-value,.markdown-rendered progress[value^='7']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value^='6']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value^='7']::-webkit-progress-value{background-color:var(--color-yellow)}.markdown-preview-view progress[value^='8']::-webkit-progress-value,.markdown-preview-view progress[value^='9']::-webkit-progress-value,.markdown-rendered progress[value^='8']::-webkit-progress-value,.markdown-rendered progress[value^='9']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value^='8']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value^='9']::-webkit-progress-value{background-color:var(--color-green)}.markdown-preview-view progress[value='1']::-webkit-progress-value,.markdown-preview-view progress[value='100']::-webkit-progress-value,.markdown-rendered progress[value='1']::-webkit-progress-value,.markdown-rendered progress[value='100']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value='1']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value='100']::-webkit-progress-value{background-color:var(--progress-complete)}.markdown-preview-view progress[value='0']::-webkit-progress-value,.markdown-preview-view progress[value='2']::-webkit-progress-value,.markdown-preview-view progress[value='3']::-webkit-progress-value,.markdown-preview-view progress[value='4']::-webkit-progress-value,.markdown-preview-view progress[value='5']::-webkit-progress-value,.markdown-preview-view progress[value='6']::-webkit-progress-value,.markdown-preview-view progress[value='7']::-webkit-progress-value,.markdown-preview-view progress[value='8']::-webkit-progress-value,.markdown-preview-view progress[value='9']::-webkit-progress-value,.markdown-rendered progress[value='0']::-webkit-progress-value,.markdown-rendered progress[value='2']::-webkit-progress-value,.markdown-rendered progress[value='3']::-webkit-progress-value,.markdown-rendered progress[value='4']::-webkit-progress-value,.markdown-rendered progress[value='5']::-webkit-progress-value,.markdown-rendered progress[value='6']::-webkit-progress-value,.markdown-rendered progress[value='7']::-webkit-progress-value,.markdown-rendered progress[value='8']::-webkit-progress-value,.markdown-rendered progress[value='9']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value='0']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value='2']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value='3']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value='4']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value='5']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value='6']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value='7']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value='8']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value='9']::-webkit-progress-value{background-color:var(--color-red)}body:not(.hider-scrollbars).styled-scrollbars ::-webkit-scrollbar,body:not(.native-scrollbars) ::-webkit-scrollbar{width:11px;background-color:transparent}body:not(.hider-scrollbars).styled-scrollbars ::-webkit-scrollbar:horizontal,body:not(.native-scrollbars) ::-webkit-scrollbar:horizontal{height:11px}body:not(.hider-scrollbars).styled-scrollbars ::-webkit-scrollbar-corner,body:not(.native-scrollbars) ::-webkit-scrollbar-corner{background-color:transparent}body:not(.hider-scrollbars).styled-scrollbars ::-webkit-scrollbar-track,body:not(.native-scrollbars) ::-webkit-scrollbar-track{background-color:transparent}body:not(.hider-scrollbars).styled-scrollbars ::-webkit-scrollbar-thumb,body:not(.native-scrollbars) ::-webkit-scrollbar-thumb{background-clip:padding-box;border-radius:20px;border:3px solid transparent;background-color:var(--background-modifier-border);border-width:3px 3px 3px 3px;min-height:45px}body:not(.hider-scrollbars).styled-scrollbars .mod-left-split .workspace-tabs ::-webkit-scrollbar-thumb:hover,body:not(.hider-scrollbars).styled-scrollbars .modal .vertical-tab-header::-webkit-scrollbar-thumb:hover,body:not(.hider-scrollbars).styled-scrollbars ::-webkit-scrollbar-thumb:hover,body:not(.native-scrollbars) .mod-left-split .workspace-tabs ::-webkit-scrollbar-thumb:hover,body:not(.native-scrollbars) .modal .vertical-tab-header::-webkit-scrollbar-thumb:hover,body:not(.native-scrollbars) ::-webkit-scrollbar-thumb:hover{background-color:var(--background-modifier-border-hover)}body:not(.hider-scrollbars).styled-scrollbars .mod-left-split .workspace-tabs ::-webkit-scrollbar-thumb:active,body:not(.hider-scrollbars).styled-scrollbars .modal .vertical-tab-header::-webkit-scrollbar-thumb:active,body:not(.hider-scrollbars).styled-scrollbars ::-webkit-scrollbar-thumb:active,body:not(.native-scrollbars) .mod-left-split .workspace-tabs ::-webkit-scrollbar-thumb:active,body:not(.native-scrollbars) .modal .vertical-tab-header::-webkit-scrollbar-thumb:active,body:not(.native-scrollbars) ::-webkit-scrollbar-thumb:active{background-color:var(--background-modifier-border-focus)}.tooltip{transition:none;animation:none}.tooltip.mod-left,.tooltip.mod-right{transform:none;animation:none}.tooltip.mod-error{color:var(--text-error)}.markdown-preview-view blockquote{padding:0 0 0 var(--nested-padding);font-size:var(--blockquote-size)}.markdown-source-view.mod-cm6 .HyperMD-quote,.markdown-source-view.mod-cm6.is-live-preview .HyperMD-quote{font-size:var(--blockquote-size)}.is-live-preview .cm-hmd-indent-in-quote{color:var(--text-faint)}.is-live-preview.is-readable-line-width>.cm-callout .callout{max-width:var(--max-width);margin:0 auto}.callouts-outlined .callout .callout-title{background-color:var(--background-primary);margin-top:-24px;z-index:200;width:fit-content;padding:0 .5em;margin-left:-.75em;letter-spacing:.05em;font-variant-caps:all-small-caps}.callouts-outlined .callout{overflow:visible;--callout-border-width:1px;--callout-border-opacity:0.5;--callout-title-size:0.8em;--callout-blend-mode:normal;background-color:transparent}.callouts-outlined .cm-embed-block.cm-callout{padding-top:12px}.callouts-outlined .callout-content .callout{margin-top:18px}body{--checkbox-radius:50%;--checkbox-top:2px;--checkbox-left:0px;--checkbox-margin:0px 6px 0px -2em}.checkbox-square{--checkbox-size:calc(var(--font-text-size) * 0.85);--checkbox-radius:4px;--checkbox-top:1px;--checkbox-left:0px;--checkbox-margin:0px 8px 0px -2em}body.minimal-strike-lists{--checklist-done-decoration:line-through}body:not(.minimal-strike-lists){--checklist-done-decoration:none;--checklist-done-color:var(--text-normal)}.markdown-preview-section>.contains-task-list{padding-bottom:.5em}.mod-cm6 .HyperMD-task-line[data-task] .cm-formatting-list-ol~.task-list-label .task-list-item-checkbox{margin:1px}.markdown-preview-view .task-list-item-checkbox{position:relative;top:var(--checkbox-top);left:var(--checkbox-left);line-height:0}.markdown-preview-view ul>li.task-list-item{text-indent:0;line-height:var(--line-height)}.is-mobile .mod-cm6 .HyperMD-task-line[data-task] .task-list-item-checkbox{margin-inline-start:-.4em}.is-mobile .markdown-preview-view input[type=checkbox].task-list-item-checkbox{top:.2em}.minimal-code-scroll{--code-white-space:pre}.minimal-code-scroll .HyperMD-codeblock.HyperMD-codeblock-bg{overflow-y:scroll;white-space:pre}.minimal-code-scroll .cm-hmd-codeblock{white-space:pre!important}@media print{.print{--code-background:#eee!important}}body{--embed-max-height:none;--embed-decoration-style:solid;--embed-decoration-color:var(--background-modifier-border-hover)}.embed-strict{--embed-background:transparent;--embed-border-left:0;--embed-padding:0}.embed-strict .markdown-embed-content{--folding-offset:0px}.embed-strict .el-embed-heading.el-p>p{margin-block-start:0;margin-block-end:0}.embed-strict .internal-embed .markdown-embed,.embed-strict .markdown-preview-view .markdown-embed,.embed-strict.markdown-preview-view .markdown-embed{padding:0}.embed-strict .internal-embed .markdown-embed .markdown-embed-title,.embed-strict .markdown-embed-title{display:none}.embed-strict .internal-embed:not([src*="#^"]) .markdown-embed-link{width:24px;opacity:0}.embed-underline .internal-embed:not(.pdf-embed){text-decoration-line:underline;text-decoration-style:var(--embed-decoration-style);text-decoration-color:var(--embed-decoration-color)}.embed-hide-title .markdown-embed-title{display:none}.contextual-typography .embed-strict .internal-embed .markdown-preview-view .markdown-preview-sizer>div,.embed-strict.contextual-typography .internal-embed .markdown-preview-view .markdown-preview-sizer>div{margin:0;width:100%}.markdown-embed .markdown-preview-view .markdown-preview-sizer{padding-bottom:0!important}.markdown-preview-view.is-readable-line-width .markdown-embed .markdown-preview-sizer,.markdown-preview-view.markdown-embed .markdown-preview-sizer{max-width:100%;width:100%;min-height:0!important;padding-bottom:0!important}.markdown-embed .markdown-preview-section div:last-child p,.markdown-embed .markdown-preview-section div:last-child ul{margin-block-end:2px}.markdown-preview-view .markdown-embed{margin-top:var(--nested-padding);padding:0 calc(var(--nested-padding)/ 2) 0 var(--nested-padding)}.internal-embed:not([src*="#^"]) .markdown-embed-link{right:0;width:100%}.file-embed-link,.markdown-embed-link{top:0;right:0;text-align:right;justify-content:flex-end}.file-embed-link svg,.markdown-embed-link svg{width:16px;height:16px}.markdown-embed .file-embed-link,.markdown-embed .markdown-embed-link{opacity:.6;transition:opacity .1s linear}.markdown-embed .file-embed-link:hover,.markdown-embed .markdown-embed-link:hover{opacity:1}.markdown-embed .file-embed-link:hover:hover,.markdown-embed .markdown-embed-link:hover:hover{background-color:transparent;--icon-color:var(--text-accent)}.file-embed-link:hover,.markdown-embed-link:hover{color:var(--text-muted)}.markdown-embed .markdown-preview-view{padding:0}.internal-embed .markdown-embed{border:0;border-left:1px solid var(--quote-opening-modifier);border-radius:0}a[href*="obsidian://search"]{background-image:url("data:image/svg+xml,")}.theme-dark a[href*="obsidian://search"]{background-image:url("data:image/svg+xml,")}div>ol,div>ul{padding-inline-start:1.4em}ul>li{min-height:1.4em}ol>li{margin-inline-start:0}ol{margin-inline-start:0;list-style:default}body{--adaptive-list-edit-offset:var(--list-edit-offset)}.is-rtl{--adaptive-list-edit-offset:calc(var(--list-edit-offset)*-1)}.markdown-source-view.mod-cm6 .cm-content .HyperMD-list-line{transform:translateX(var(--adaptive-list-edit-offset))}.markdown-preview-view ol>li,.markdown-preview-view ul>li,.markdown-source-view ol>li,.markdown-source-view ul>li,.mod-cm6 .HyperMD-list-line.cm-line{padding-top:var(--list-spacing);padding-bottom:var(--list-spacing)}.is-mobile ul>li:not(.task-list-item)::marker{font-size:.8em}.is-mobile .markdown-rendered ol,.is-mobile .markdown-rendered ul{padding-inline-start:var(--list-indent)}.is-mobile .markdown-rendered div>ol,.is-mobile .markdown-rendered div>ul{padding-inline-start:2em}.is-mobile .el-ol>ol,.is-mobile .el-ul>ul{margin-inline-start:0}.is-mobile .workspace-leaf-content:not([data-type=search]) .workspace-leaf-content[data-type=markdown] .nav-buttons-container{border-bottom:none;padding-top:5px}.is-mobile .mod-root .workspace-leaf-content[data-type=markdown] .search-input-container{width:calc(100% - 160px)}.embedded-backlinks .nav-header~.search-input-container{width:calc(100% - 140px);margin-top:12px}.embedded-backlinks .nav-buttons-container{position:absolute;right:0;top:14px}.embedded-backlinks .backlink-pane>.tree-item-self,.embedded-backlinks .backlink-pane>.tree-item-self:hover{text-transform:none;color:var(--text-normal);font-size:var(--font-adaptive-normal);font-weight:500;letter-spacing:unset}body{--pdf-dark-opacity:1}.theme-dark:not(.pdf-shadows-on),.theme-light:not(.pdf-shadows-on){--pdf-shadow:none;--pdf-thumbnail-shadow:none}.theme-dark:not(.pdf-shadows-on) .pdf-viewer .page,.theme-light:not(.pdf-shadows-on) .pdf-viewer .page{border:0}.theme-dark:not(.pdf-shadows-on) .pdf-sidebar-container .thumbnailSelectionRing,.theme-light:not(.pdf-shadows-on) .pdf-sidebar-container .thumbnailSelectionRing{padding:0}.theme-dark:not(.pdf-shadows-on) .pdf-sidebar-container .thumbnail::after,.theme-light:not(.pdf-shadows-on) .pdf-sidebar-container .thumbnail::after{right:var(--size-4-2);bottom:var(--size-4-2)}.theme-dark{--pdf-thumbnail-shadow:0 0 1px 0 rgba(0,0,0,0.6);--pdf-shadow:0 0 1px 0 rgba(0,0,0,0.6)}.theme-dark .pdf-viewer .canvasWrapper{opacity:var(--pdf-dark-opacity)}.theme-dark.pdf-invert-dark .workspace-leaf-content[data-type=pdf] .pdf-thumbnail-view .thumbnailImage,.theme-dark.pdf-invert-dark .workspace-leaf-content[data-type=pdf] .pdf-viewer .canvasWrapper{filter:invert(1) hue-rotate(180deg);mix-blend-mode:screen}.theme-light.pdf-blend-light .workspace-leaf-content[data-type=pdf] .pdf-thumbnail-view .thumbnailImage,.theme-light.pdf-blend-light .workspace-leaf-content[data-type=pdf] .pdf-viewer .canvasWrapper{mix-blend-mode:multiply}body{--table-header-border-width:0;--table-column-first-border-width:0;--table-column-last-border-width:0;--table-row-last-border-width:0;--table-edge-cell-padding-first:0;--table-edge-cell-padding-last:10px;--table-cell-padding:4px 10px;--table-header-size:var(--table-text-size)}.markdown-source-view.mod-cm6 table{border-collapse:collapse}.markdown-preview-view table,.markdown-source-view.mod-cm6 table{border:var(--border-width) solid var(--border-color);border-collapse:collapse}.markdown-preview-view td,.markdown-preview-view th,.markdown-source-view.mod-cm6 td,.markdown-source-view.mod-cm6 th{padding:var(--table-cell-padding)}.markdown-preview-view td:first-child,.markdown-preview-view th:first-child,.markdown-source-view.mod-cm6 td:first-child,.markdown-source-view.mod-cm6 th:first-child{padding-left:var(--table-edge-cell-padding-first)}.markdown-preview-view td:last-child,.markdown-preview-view th:last-child,.markdown-source-view.mod-cm6 td:last-child,.markdown-source-view.mod-cm6 th:last-child{padding-right:var(--table-edge-cell-padding-last)}.markdown-preview-view th,.markdown-source-view.mod-cm6 .dataview.table-view-table thead.table-view-thead tr th,.table-view-table>thead>tr>th{padding:var(--table-cell-padding)}.markdown-preview-view th:first-child,.markdown-source-view.mod-cm6 .dataview.table-view-table thead.table-view-thead tr th:first-child,.table-view-table>thead>tr>th:first-child{padding-left:var(--table-edge-cell-padding-first)}.markdown-preview-view th:last-child,.markdown-source-view.mod-cm6 .dataview.table-view-table thead.table-view-thead tr th:last-child,.table-view-table>thead>tr>th:last-child{padding-right:var(--table-edge-cell-padding-last)}.is-live-preview .el-table{width:100%;max-width:100%}.cm-hmd-table-sep-dummy,.cm-s-obsidian .HyperMD-table-row span.cm-hmd-table-sep{color:var(--text-faint);font-weight:400}body.minimal-unstyled-tags{--tag-background:transparent;--tag-background-hover:transparent;--tag-border-width:0px;--tag-padding-x:0;--tag-padding-y:0;--tag-size:inherit;--tag-color-hover:var(--text-accent-hover)}body.minimal-unstyled-tags.is-mobile.theme-dark{--tag-background:transparent}body:not(.minimal-unstyled-tags){--tag-size:0.8em;--tag-padding-y:0.2em;--tag-background:transparent;--tag-background-hover:transparent;--tag-color:var(--text-muted);--tag-border-width:1px;--tag-border-color:var(--background-modifier-border);--tag-border-color-hover:var(--background-modifier-border-hover);--tag-color-hover:var(--text-normal)}body.is-mobile.theme-dark{--tag-background:transparent}h1,h2,h3,h4{letter-spacing:-.02em}body,button,input{font-family:var(--font-interface)}.cm-s-obsidian span.cm-error{color:var(--color-red)}.markdown-preview-view,.popover,.workspace-leaf-content[data-type=markdown]{font-family:var(--font-text)}.cm-s-obsidian,.markdown-preview-view,.markdown-source-view.mod-cm6.is-live-preview .cm-scroller,body{font-size:var(--font-adaptive-normal);font-weight:var(--normal-weight);line-height:var(--line-height)}.cm-s-obsidian,.markdown-source-view,.markdown-source-view.mod-cm6 .cm-scroller{line-height:var(--line-height);font-family:var(--font-editor)}.cm-s-obsidian span.cm-formatting-task{line-height:var(--line-height)}.active-line-on .cm-line.cm-active,.active-line-on .markdown-source-view.mod-cm6.is-live-preview .HyperMD-quote.cm-active{background-color:var(--active-line-bg)}.active-line-on .cm-line.cm-active:before,.active-line-on .markdown-source-view.mod-cm6.is-live-preview .HyperMD-quote.cm-active:before{top:0;left:-50vw;position:absolute;display:block;content:'';width:50vw;height:100%;background-color:var(--active-line-bg)}.active-line-on .cm-line.cm-active:after,.active-line-on .markdown-source-view.mod-cm6.is-live-preview .HyperMD-quote.cm-active:after{top:0;right:-50vw;position:absolute;display:block;content:'';width:50vw;height:100%;background-color:var(--active-line-bg)}body{--content-margin:auto;--content-margin-start:max( calc(50% - var(--line-width)/2), calc(50% - var(--max-width)/2) );--content-line-width:min(var(--line-width), var(--max-width))}.markdown-preview-view .markdown-preview-sizer.markdown-preview-sizer{max-width:100%;margin-inline:auto;width:100%}.markdown-source-view.mod-cm6.is-readable-line-width .cm-content,.markdown-source-view.mod-cm6.is-readable-line-width .cm-sizer{max-width:100%;width:100%}.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>div,.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content>div,.markdown-source-view.mod-cm6.is-readable-line-width .cm-sizer>.embedded-backlinks,.markdown-source-view.mod-cm6.is-readable-line-width .cm-sizer>.inline-title,.markdown-source-view.mod-cm6.is-readable-line-width .cm-sizer>.metadata-container{max-width:var(--max-width);width:var(--line-width);margin-inline:var(--content-margin)!important}.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content>:not(div){max-width:var(--content-line-width);margin-inline-start:var(--content-margin-start)!important}.is-readable-line-width{--file-margins:1rem 0 0 0}.is-mobile .markdown-preview-view{--folding-offset:0}.minimal-line-nums .workspace-leaf-content[data-type=markdown]{--file-margins:var(--size-4-8) var(--size-4-8) var(--size-4-8) 48px}.minimal-line-nums .workspace-leaf-content[data-type=markdown].is-rtl{--file-margins:var(--size-4-8) 48px var(--size-4-8) var(--size-4-8)}.minimal-line-nums .workspace-leaf-content[data-type=markdown] .is-readable-line-width{--file-margins:0 0 0 var(--folding-offset)}.minimal-line-nums .workspace-leaf-content[data-type=markdown] .is-readable-line-width.is-rtl{--file-margins:0 var(--folding-offset) 0 0}.markdown-preview-view .inline-embed{--max-width:100%}body{--container-table-width:var(--line-width);--container-table-max-width:var(--max-width);--table-max-width:none;--table-width:auto;--table-margin:inherit;--container-img-width:var(--line-width);--container-img-max-width:var(--max-width);--img-max-width:100%;--img-width:auto;--img-margin-start:var(--content-margin-start);--img-line-width:var(--content-line-width);--container-chart-width:var(--line-width);--container-chart-max-width:var(--max-width);--chart-max-width:none;--chart-width:auto;--container-map-width:var(--line-width);--container-map-max-width:var(--max-width);--map-max-width:none;--map-width:auto;--container-iframe-width:var(--line-width);--container-iframe-max-width:var(--max-width);--iframe-max-width:none;--iframe-width:auto}body .wide{--line-width:var(--line-width-wide);--container-table-width:var(--line-width-wide);--container-img-width:var(--line-width-wide);--container-iframe-width:var(--line-width-wide);--container-map-width:var(--line-width-wide);--container-chart-width:var(--line-width-wide)}body .max{--line-width:var(--max-width);--container-table-width:var(--max-width);--container-img-width:var(--max-width);--container-iframe-width:var(--max-width);--container-map-width:var(--max-width);--container-chart-width:var(--max-width)}table.dataview{--table-min-width:min(var(--line-width),var(--max-width))}.cards table.dataview{--table-width:100%;--table-min-width:none}.maximize-tables-auto{--container-table-max-width:100%;--container-table-width:100%;--table-max-width:100%;--table-margin:var(--content-margin-start) auto;--table-width:auto}.maximize-tables-auto .cards{--container-table-max-width:var(--max-width)}.maximize-tables-auto .cards .block-language-dataview{--table-margin:auto}.maximize-tables{--container-table-max-width:100%;--container-table-width:100%;--table-min-width:min(var(--line-width), var(--max-width));--table-max-width:100%;--table-margin:auto;--table-width:auto;--table-edge-cell-padding-first:10px}.table-100,.table-max,.table-wide{--table-max-width:100%;--table-width:100%}.table-wide{--container-table-width:var(--line-width-wide);--table-edge-cell-padding-first:0px}.table-max{--container-table-width:var(--max-width);--table-edge-cell-padding-first:0px;--table-margin:0}.table-100{--container-table-width:100%;--container-table-max-width:100%;--table-edge-cell-padding-first:20px;--table-margin:0}.table-100 .dataview.list-view-ul{max-width:var(--max-width);width:var(--line-width);margin-inline:auto}.img-100,.img-max,.img-wide{--img-max-width:100%;--img-width:100%}.img-wide{--container-img-width:var(--line-width-wide);--img-line-width:var(--line-width-wide);--img-margin-start:calc(50% - var(--line-width-wide)/2)}.img-max{--container-img-width:var(--max-width);--img-line-width:var(--max-width);--img-margin-start:calc(50% - var(--max-width)/2)}.img-100{--container-img-width:100%;--container-img-max-width:100%;--img-line-width:100%;--img-margin-start:0}.map-100,.map-max,.map-wide{--map-max-width:100%;--map-width:100%}.map-wide{--container-map-width:var(--line-width-wide)}.map-max{--container-map-width:var(--max-width)}.map-100{--container-map-width:100%;--container-map-max-width:100%}.chart-100,.chart-max,.chart-wide{--chart-max-width:100%;--chart-width:100%}.chart-wide{--container-chart-width:var(--line-width-wide)}.chart-max{--container-chart-width:var(--max-width)}.chart-100{--container-chart-width:100%;--container-chart-max-width:100%}.iframe-100,.iframe-max,.iframe-wide{--iframe-max-width:100%;--iframe-width:100%}.iframe-wide{--container-iframe-width:var(--line-width-wide)}.iframe-max{--container-iframe-width:var(--max-width)}.iframe-100{--container-iframe-width:100%;--container-iframe-max-width:100%}.markdown-preview-view.is-readable-line-width .markdown-preview-sizer .cm-table-widget,.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>div:has(>.block-language-dataview>table),.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>div:has(>.block-language-dataviewjs),.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>div:has(>table),.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content .cm-table-widget,.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content>div:has(>.block-language-dataview>table),.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content>div:has(>.block-language-dataviewjs),.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content>div:has(>table){width:var(--container-table-width);max-width:var(--container-table-max-width)}.markdown-preview-view.is-readable-line-width .markdown-preview-sizer table,.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content table{width:var(--table-width);max-width:var(--table-max-width);margin-inline:var(--table-margin);min-width:var(--table-min-width)}.markdown-preview-view.is-readable-line-width .markdown-preview-sizer .block-language-dataviewjs>:is(p,h1,h2,h3,h4,h5,h6),.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content .block-language-dataviewjs>:is(p,h1,h2,h3,h4,h5,h6){width:var(--line-width)}.markdown-preview-view.is-readable-line-width .markdown-preview-sizer .dataview.dataview-error-box,.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content .dataview.dataview-error-box{margin-inline:var(--table-margin)}.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.image-embed,.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content>.image-embed{padding-top:.25rem;padding-bottom:.25rem}.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.image-embed,.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>div:has(.image-embed),.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content>.image-embed,.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content>div:has(.image-embed){width:var(--container-img-width);max-width:var(--container-img-max-width)}.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.image-embed img,.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>div:has(.image-embed) img,.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content>.image-embed img,.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content>div:has(.image-embed) img{max-width:var(--img-max-width)}.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>img,.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content>img{max-width:var(--img-line-width);margin-inline-start:var(--img-margin-start)!important}.markdown-preview-view.is-readable-line-width .markdown-preview-sizer div:has(>.block-language-chart),.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content div:has(>.block-language-chart){width:var(--container-chart-width);max-width:var(--container-chart-max-width)}.markdown-preview-view.is-readable-line-width .markdown-preview-sizer div:has(>.block-language-chart) canvas,.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content div:has(>.block-language-chart) canvas{max-width:var(--map-chart-width)}.markdown-preview-view.is-readable-line-width .markdown-preview-sizer div:has(>.block-language-leaflet),.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content div:has(>.block-language-leaflet){width:var(--container-map-width);max-width:var(--container-map-max-width)}.markdown-preview-view.is-readable-line-width .markdown-preview-sizer div:has(>.block-language-leaflet) iframe,.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content div:has(>.block-language-leaflet) iframe{max-width:var(--map-max-width)}.markdown-preview-view.is-readable-line-width .markdown-preview-sizer div:has(>.cm-html-embed),.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>div:has(>iframe),.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content div:has(>.cm-html-embed),.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content>div:has(>iframe){width:var(--container-iframe-width);max-width:var(--container-iframe-max-width)}.markdown-preview-view.is-readable-line-width .markdown-preview-sizer div:has(>.cm-html-embed) iframe,.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>div:has(>iframe) iframe,.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content div:has(>.cm-html-embed) iframe,.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content>div:has(>iframe) iframe{max-width:var(--iframe-max-width);width:var(--iframe-width)}.borders-none{--divider-width:0px;--tab-outline-width:0px}:root{--cards-min-width:180px;--cards-max-width:1fr;--cards-mobile-width:120px;--cards-image-height:400px;--cards-padding:1.2em;--cards-image-fit:contain;--cards-background:transparent;--cards-border-width:1px;--cards-aspect-ratio:auto;--cards-columns:repeat(auto-fit, minmax(var(--cards-min-width), var(--cards-max-width)))}@media (max-width:400pt){:root{--cards-min-width:var(--cards-mobile-width)}}.cards.table-100 table.dataview tbody,.table-100 .cards table.dataview tbody{padding:.25rem .75rem}.cards table.dataview{--table-width:100%;--table-edge-cell-padding-first:calc(var(--cards-padding)/2);--table-edge-cell-padding-last:calc(var(--cards-padding)/2);--table-cell-padding:calc(var(--cards-padding)/3) calc(var(--cards-padding)/2);line-height:1.3}.cards table.dataview tbody{clear:both;padding:.5rem 0;display:grid;grid-template-columns:var(--cards-columns);grid-column-gap:0.75rem;grid-row-gap:0.75rem}.cards table.dataview>tbody>tr{background-color:var(--cards-background);border:var(--cards-border-width) solid var(--background-modifier-border);display:flex;flex-direction:column;margin:0;padding:0 0 calc(var(--cards-padding)/3) 0;border-radius:6px;overflow:hidden;transition:box-shadow .15s linear;max-width:var(--cards-max-width)}.cards table.dataview>tbody>tr:hover{border:var(--cards-border-width) solid var(--background-modifier-border-hover);box-shadow:0 4px 6px 0 rgba(0,0,0,.05),0 1px 3px 1px rgba(0,0,0,.025);transition:box-shadow .15s linear}.cards table.dataview tbody>tr>td:first-child{font-weight:var(--bold-weight);border:none}.cards table.dataview tbody>tr>td:first-child a{display:block}.cards table.dataview tbody>tr>td:last-child{border:none}.cards table.dataview tbody>tr>td:not(:first-child){font-size:calc(var(--table-text-size) * .9);color:var(--text-muted)}.cards table.dataview tbody>tr>td>*{padding:calc(var(--cards-padding)/3) 0}.cards table.dataview tbody>tr>td:not(:last-child):not(:first-child){padding:4px 0;border-bottom:1px solid var(--background-modifier-border);width:calc(100% - var(--cards-padding));margin:0 calc(var(--cards-padding)/2)}.cards table.dataview tbody>tr>td a{text-decoration:none}.cards table.dataview tbody>tr>td>button{width:100%;margin:calc(var(--cards-padding)/2) 0}.cards table.dataview tbody>tr>td:last-child>button{margin-bottom:calc(var(--cards-padding)/6)}.cards table.dataview tbody>tr>td>ul{width:100%;padding:.25em 0!important;margin:0 auto!important}.cards table.dataview tbody>tr>td:has(img){padding:0!important;background-color:var(--background-secondary);display:block;margin:0;width:100%}.cards table.dataview tbody>tr>td img{aspect-ratio:var(--cards-aspect-ratio);width:100%;object-fit:var(--cards-image-fit);max-height:var(--cards-image-height);background-color:var(--background-secondary);vertical-align:bottom}.markdown-source-view.mod-cm6.cards .dataview.table-view-table>tbody>tr>td,.trim-cols .cards table.dataview tbody>tr>td{white-space:normal}.links-int-on .cards table{--link-decoration:none}.markdown-source-view.mod-cm6.cards .edit-block-button{top:0}.cards.table-100 table.dataview thead>tr,.table-100 .cards table.dataview thead>tr{right:.75rem}.cards.table-100 table.dataview thead:before,.table-100 .cards table.dataview thead:before{margin-right:.75rem}.theme-light .cards table.dataview thead:before{background-image:url('data:image/svg+xml;utf8,')}.cards table.dataview thead{user-select:none;width:180px;display:block;float:right;position:relative;text-align:right;height:24px;padding-bottom:0}.cards table.dataview thead:hover:before{opacity:.5;background-color:var(--background-modifier-hover)}.cards table.dataview thead:before{content:'';position:absolute;right:0;top:0;width:10px;height:16px;background-repeat:no-repeat;cursor:var(--cursor);text-align:right;padding:var(--size-4-1) var(--size-4-2);margin-bottom:2px;border-radius:var(--radius-s);font-weight:500;font-size:var(--font-adaptive-small);opacity:.25;background-position:center center;background-size:16px;background-image:url('data:image/svg+xml;utf8,')}.cards table.dataview thead>tr{top:-1px;position:absolute;display:none;z-index:9;border:1px solid var(--background-modifier-border-hover);background-color:var(--background-secondary);box-shadow:var(--shadow-s);padding:6px;border-radius:var(--radius-m);flex-direction:column;margin:24px 0 0 0;width:100%}.cards table.dataview thead:hover>tr{display:flex}.cards table.dataview thead>tr>th{display:block;padding:3px 30px 3px 6px!important;border-radius:var(--radius-s);width:100%;font-weight:400;color:var(--text-normal);cursor:var(--cursor);border:none;font-size:var(--font-ui-small)}.cards table.dataview thead>tr>th[sortable-style=sortable-asc],.cards table.dataview thead>tr>th[sortable-style=sortable-desc]{color:var(--text-normal)}.cards table.dataview thead>tr>th:hover{color:var(--text-normal);background-color:var(--background-modifier-hover)}.cards.cards-16-9{--cards-aspect-ratio:16/9}.cards.cards-1-1{--cards-aspect-ratio:1/1}.cards.cards-2-1{--cards-aspect-ratio:2/1}.cards.cards-2-3{--cards-aspect-ratio:2/3}.cards.cards-cols-1{--cards-columns:repeat(1, minmax(0, 1fr))}.cards.cards-cols-2{--cards-columns:repeat(2, minmax(0, 1fr))}.cards.cards-cover table.dataview tbody>tr>td img{object-fit:cover}.cards.cards-align-bottom table.dataview tbody>tr>td:last-child{align-items:flex-end;flex-grow:1}@media (max-width:400pt){.cards table.dataview tbody>tr>td:not(:first-child){font-size:80%}}@media (min-width:400pt){.cards-cols-3{--cards-columns:repeat(3, minmax(0, 1fr))}.cards-cols-4{--cards-columns:repeat(4, minmax(0, 1fr))}.cards-cols-5{--cards-columns:repeat(5, minmax(0, 1fr))}.cards-cols-6{--cards-columns:repeat(6, minmax(0, 1fr))}.cards-cols-7{--cards-columns:repeat(7, minmax(0, 1fr))}.cards-cols-8{--cards-columns:repeat(8, minmax(0, 1fr))}}.cm-formatting.cm-formatting-task.cm-property{font-family:var(--font-monospace);font-size:90%}input[data-task="!"]:checked,input[data-task="*"]:checked,input[data-task="-"]:checked,input[data-task="<"]:checked,input[data-task=">"]:checked,input[data-task="I"]:checked,input[data-task="b"]:checked,input[data-task="c"]:checked,input[data-task="d"]:checked,input[data-task="f"]:checked,input[data-task="k"]:checked,input[data-task="l"]:checked,input[data-task="p"]:checked,input[data-task="u"]:checked,input[data-task="w"]:checked,li[data-task="!"]>input:checked,li[data-task="!"]>p>input:checked,li[data-task="*"]>input:checked,li[data-task="*"]>p>input:checked,li[data-task="-"]>input:checked,li[data-task="-"]>p>input:checked,li[data-task="<"]>input:checked,li[data-task="<"]>p>input:checked,li[data-task=">"]>input:checked,li[data-task=">"]>p>input:checked,li[data-task="I"]>input:checked,li[data-task="I"]>p>input:checked,li[data-task="b"]>input:checked,li[data-task="b"]>p>input:checked,li[data-task="c"]>input:checked,li[data-task="c"]>p>input:checked,li[data-task="d"]>input:checked,li[data-task="d"]>p>input:checked,li[data-task="f"]>input:checked,li[data-task="f"]>p>input:checked,li[data-task="k"]>input:checked,li[data-task="k"]>p>input:checked,li[data-task="l"]>input:checked,li[data-task="l"]>p>input:checked,li[data-task="p"]>input:checked,li[data-task="p"]>p>input:checked,li[data-task="u"]>input:checked,li[data-task="u"]>p>input:checked,li[data-task="w"]>input:checked,li[data-task="w"]>p>input:checked{--checkbox-marker-color:transparent;border:none;border-radius:0;background-image:none;background-color:currentColor;-webkit-mask-size:var(--checkbox-icon);-webkit-mask-position:50% 50%}input[data-task=">"]:checked,li[data-task=">"]>input:checked,li[data-task=">"]>p>input:checked{color:var(--text-faint);transform:rotate(90deg);-webkit-mask-position:50% 100%;-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath d='M10.894 2.553a1 1 0 00-1.788 0l-7 14a1 1 0 001.169 1.409l5-1.429A1 1 0 009 15.571V11a1 1 0 112 0v4.571a1 1 0 00.725.962l5 1.428a1 1 0 001.17-1.408l-7-14z' /%3E%3C/svg%3E")}input[data-task="<"]:checked,li[data-task="<"]>input:checked,li[data-task="<"]>p>input:checked{color:var(--text-faint);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M10 18a8 8 0 100-16 8 8 0 000 16zm1-12a1 1 0 10-2 0v4a1 1 0 00.293.707l2.828 2.829a1 1 0 101.415-1.415L11 9.586V6z' clip-rule='evenodd' /%3E%3C/svg%3E");-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M6 2a1 1 0 00-1 1v1H4a2 2 0 00-2 2v10a2 2 0 002 2h12a2 2 0 002-2V6a2 2 0 00-2-2h-1V3a1 1 0 10-2 0v1H7V3a1 1 0 00-1-1zm0 5a1 1 0 000 2h8a1 1 0 100-2H6z' clip-rule='evenodd' /%3E%3C/svg%3E")}input[data-task="?"]:checked,li[data-task="?"]>input:checked,li[data-task="?"]>p>input:checked{--checkbox-marker-color:transparent;background-color:var(--color-yellow);border-color:var(--color-yellow);background-position:50% 50%;background-size:200% 90%;background-image:url('data:image/svg+xml,%3Csvg xmlns="http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg" width="20" height="20" preserveAspectRatio="xMidYMid meet" viewBox="0 0 16 16"%3E%3Cpath fill="white" fill-rule="evenodd" d="M4.475 5.458c-.284 0-.514-.237-.47-.517C4.28 3.24 5.576 2 7.825 2c2.25 0 3.767 1.36 3.767 3.215c0 1.344-.665 2.288-1.79 2.973c-1.1.659-1.414 1.118-1.414 2.01v.03a.5.5 0 0 1-.5.5h-.77a.5.5 0 0 1-.5-.495l-.003-.2c-.043-1.221.477-2.001 1.645-2.712c1.03-.632 1.397-1.135 1.397-2.028c0-.979-.758-1.698-1.926-1.698c-1.009 0-1.71.529-1.938 1.402c-.066.254-.278.461-.54.461h-.777ZM7.496 14c.622 0 1.095-.474 1.095-1.09c0-.618-.473-1.092-1.095-1.092c-.606 0-1.087.474-1.087 1.091S6.89 14 7.496 14Z"%2F%3E%3C%2Fsvg%3E')}.theme-dark input[data-task="?"]:checked,.theme-dark li[data-task="?"]>input:checked,.theme-dark li[data-task="?"]>p>input:checked{background-image:url('data:image/svg+xml,%3Csvg xmlns="http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg" width="20" height="20" preserveAspectRatio="xMidYMid meet" viewBox="0 0 16 16"%3E%3Cpath fill="black" fill-opacity="0.8" fill-rule="evenodd" d="M4.475 5.458c-.284 0-.514-.237-.47-.517C4.28 3.24 5.576 2 7.825 2c2.25 0 3.767 1.36 3.767 3.215c0 1.344-.665 2.288-1.79 2.973c-1.1.659-1.414 1.118-1.414 2.01v.03a.5.5 0 0 1-.5.5h-.77a.5.5 0 0 1-.5-.495l-.003-.2c-.043-1.221.477-2.001 1.645-2.712c1.03-.632 1.397-1.135 1.397-2.028c0-.979-.758-1.698-1.926-1.698c-1.009 0-1.71.529-1.938 1.402c-.066.254-.278.461-.54.461h-.777ZM7.496 14c.622 0 1.095-.474 1.095-1.09c0-.618-.473-1.092-1.095-1.092c-.606 0-1.087.474-1.087 1.091S6.89 14 7.496 14Z"%2F%3E%3C%2Fsvg%3E')}input[data-task="/"]:checked,li[data-task="/"]>input:checked,li[data-task="/"]>p>input:checked{background-image:none;background-color:transparent;position:relative;overflow:hidden}input[data-task="/"]:checked:after,li[data-task="/"]>input:checked:after,li[data-task="/"]>p>input:checked:after{top:0;left:0;content:" ";display:block;position:absolute;background-color:var(--background-modifier-accent);width:calc(50% - .5px);height:100%;-webkit-mask-image:none}input[data-task="!"]:checked,li[data-task="!"]>input:checked,li[data-task="!"]>p>input:checked{color:var(--color-orange);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M8.257 3.099c.765-1.36 2.722-1.36 3.486 0l5.58 9.92c.75 1.334-.213 2.98-1.742 2.98H4.42c-1.53 0-2.493-1.646-1.743-2.98l5.58-9.92zM11 13a1 1 0 11-2 0 1 1 0 012 0zm-1-8a1 1 0 00-1 1v3a1 1 0 002 0V6a1 1 0 00-1-1z' clip-rule='evenodd' /%3E%3C/svg%3E")}input[data-task="\""]:checked,input[data-task="“"]:checked,li[data-task="\""]>input:checked,li[data-task="\""]>p>input:checked,li[data-task="“"]>input:checked,li[data-task="“"]>p>input:checked{--checkbox-marker-color:transparent;background-position:50% 50%;background-color:var(--color-cyan);border-color:var(--color-cyan);background-size:75%;background-repeat:no-repeat;background-image:url('data:image/svg+xml,%3Csvg xmlns="http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg" width="20" height="20" preserveAspectRatio="xMidYMid meet" viewBox="0 0 24 24"%3E%3Cpath fill="white" d="M6.5 10c-.223 0-.437.034-.65.065c.069-.232.14-.468.254-.68c.114-.308.292-.575.469-.844c.148-.291.409-.488.601-.737c.201-.242.475-.403.692-.604c.213-.21.492-.315.714-.463c.232-.133.434-.28.65-.35l.539-.222l.474-.197l-.485-1.938l-.597.144c-.191.048-.424.104-.689.171c-.271.05-.56.187-.882.312c-.318.142-.686.238-1.028.466c-.344.218-.741.4-1.091.692c-.339.301-.748.562-1.05.945c-.33.358-.656.734-.909 1.162c-.293.408-.492.856-.702 1.299c-.19.443-.343.896-.468 1.336c-.237.882-.343 1.72-.384 2.437c-.034.718-.014 1.315.028 1.747c.015.204.043.402.063.539l.025.168l.026-.006A4.5 4.5 0 1 0 6.5 10zm11 0c-.223 0-.437.034-.65.065c.069-.232.14-.468.254-.68c.114-.308.292-.575.469-.844c.148-.291.409-.488.601-.737c.201-.242.475-.403.692-.604c.213-.21.492-.315.714-.463c.232-.133.434-.28.65-.35l.539-.222l.474-.197l-.485-1.938l-.597.144c-.191.048-.424.104-.689.171c-.271.05-.56.187-.882.312c-.317.143-.686.238-1.028.467c-.344.218-.741.4-1.091.692c-.339.301-.748.562-1.05.944c-.33.358-.656.734-.909 1.162c-.293.408-.492.856-.702 1.299c-.19.443-.343.896-.468 1.336c-.237.882-.343 1.72-.384 2.437c-.034.718-.014 1.315.028 1.747c.015.204.043.402.063.539l.025.168l.026-.006A4.5 4.5 0 1 0 17.5 10z"%2F%3E%3C%2Fsvg%3E')}.theme-dark input[data-task="\""]:checked,.theme-dark input[data-task="“"]:checked,.theme-dark li[data-task="\""]>input:checked,.theme-dark li[data-task="\""]>p>input:checked,.theme-dark li[data-task="“"]>input:checked,.theme-dark li[data-task="“"]>p>input:checked{background-image:url('data:image/svg+xml,%3Csvg xmlns="http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg" width="20" height="20" preserveAspectRatio="xMidYMid meet" viewBox="0 0 24 24"%3E%3Cpath fill="black" fill-opacity="0.7" d="M6.5 10c-.223 0-.437.034-.65.065c.069-.232.14-.468.254-.68c.114-.308.292-.575.469-.844c.148-.291.409-.488.601-.737c.201-.242.475-.403.692-.604c.213-.21.492-.315.714-.463c.232-.133.434-.28.65-.35l.539-.222l.474-.197l-.485-1.938l-.597.144c-.191.048-.424.104-.689.171c-.271.05-.56.187-.882.312c-.318.142-.686.238-1.028.466c-.344.218-.741.4-1.091.692c-.339.301-.748.562-1.05.945c-.33.358-.656.734-.909 1.162c-.293.408-.492.856-.702 1.299c-.19.443-.343.896-.468 1.336c-.237.882-.343 1.72-.384 2.437c-.034.718-.014 1.315.028 1.747c.015.204.043.402.063.539l.025.168l.026-.006A4.5 4.5 0 1 0 6.5 10zm11 0c-.223 0-.437.034-.65.065c.069-.232.14-.468.254-.68c.114-.308.292-.575.469-.844c.148-.291.409-.488.601-.737c.201-.242.475-.403.692-.604c.213-.21.492-.315.714-.463c.232-.133.434-.28.65-.35l.539-.222l.474-.197l-.485-1.938l-.597.144c-.191.048-.424.104-.689.171c-.271.05-.56.187-.882.312c-.317.143-.686.238-1.028.467c-.344.218-.741.4-1.091.692c-.339.301-.748.562-1.05.944c-.33.358-.656.734-.909 1.162c-.293.408-.492.856-.702 1.299c-.19.443-.343.896-.468 1.336c-.237.882-.343 1.72-.384 2.437c-.034.718-.014 1.315.028 1.747c.015.204.043.402.063.539l.025.168l.026-.006A4.5 4.5 0 1 0 17.5 10z"%2F%3E%3C%2Fsvg%3E')}input[data-task="-"]:checked,li[data-task="-"]>input:checked,li[data-task="-"]>p>input:checked{color:var(--text-faint);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M3 10a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1z' clip-rule='evenodd' /%3E%3C/svg%3E")}body:not(.tasks) .markdown-preview-view ul li[data-task="-"].task-list-item.is-checked,body:not(.tasks) .markdown-source-view.mod-cm6 .HyperMD-task-line[data-task]:is([data-task="-"]),body:not(.tasks) li[data-task="-"].task-list-item.is-checked{color:var(--text-faint);text-decoration:line-through solid var(--text-faint) 1px}input[data-task="*"]:checked,li[data-task="*"]>input:checked,li[data-task="*"]>p>input:checked{color:var(--color-yellow);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath d='M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z' /%3E%3C/svg%3E")}input[data-task="l"]:checked,li[data-task="l"]>input:checked,li[data-task="l"]>p>input:checked{color:var(--color-red);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M5.05 4.05a7 7 0 119.9 9.9L10 18.9l-4.95-4.95a7 7 0 010-9.9zM10 11a2 2 0 100-4 2 2 0 000 4z' clip-rule='evenodd' /%3E%3C/svg%3E")}input[data-task="i"]:checked,li[data-task="i"]>input:checked,li[data-task="i"]>p>input:checked{--checkbox-marker-color:transparent;background-color:var(--color-blue);border-color:var(--color-blue);background-position:50%;background-size:100%;background-image:url('data:image/svg+xml,%3Csvg xmlns="http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg" width="20" height="20" preserveAspectRatio="xMidYMid meet" viewBox="0 0 512 512"%3E%3Cpath fill="none" stroke="white" stroke-linecap="round" stroke-linejoin="round" stroke-width="40" d="M196 220h64v172"%2F%3E%3Cpath fill="none" stroke="white" stroke-linecap="round" stroke-miterlimit="10" stroke-width="40" d="M187 396h138"%2F%3E%3Cpath fill="white" d="M256 160a32 32 0 1 1 32-32a32 32 0 0 1-32 32Z"%2F%3E%3C%2Fsvg%3E')}.theme-dark input[data-task="i"]:checked,.theme-dark li[data-task="i"]>input:checked,.theme-dark li[data-task="i"]>p>input:checked{background-image:url('data:image/svg+xml,%3Csvg xmlns="http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg" width="20" height="20" preserveAspectRatio="xMidYMid meet" viewBox="0 0 512 512"%3E%3Cpath fill="none" stroke="black" stroke-opacity="0.8" stroke-linecap="round" stroke-linejoin="round" stroke-width="40" d="M196 220h64v172"%2F%3E%3Cpath fill="none" stroke="black" stroke-opacity="0.8" stroke-linecap="round" stroke-miterlimit="10" stroke-width="40" d="M187 396h138"%2F%3E%3Cpath fill="black" fill-opacity="0.8" d="M256 160a32 32 0 1 1 32-32a32 32 0 0 1-32 32Z"%2F%3E%3C%2Fsvg%3E')}input[data-task="S"]:checked,li[data-task="S"]>input:checked,li[data-task="S"]>p>input:checked{--checkbox-marker-color:transparent;border-color:var(--color-green);background-color:var(--color-green);background-size:100%;background-image:url('data:image/svg+xml,%3Csvg xmlns="http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg" width="20" height="20" preserveAspectRatio="xMidYMid meet" viewBox="0 0 48 48"%3E%3Cpath fill="white" fill-rule="evenodd" d="M26 8a2 2 0 1 0-4 0v2a8 8 0 1 0 0 16v8a4.002 4.002 0 0 1-3.773-2.666a2 2 0 0 0-3.771 1.332A8.003 8.003 0 0 0 22 38v2a2 2 0 1 0 4 0v-2a8 8 0 1 0 0-16v-8a4.002 4.002 0 0 1 3.773 2.666a2 2 0 0 0 3.771-1.332A8.003 8.003 0 0 0 26 10V8Zm-4 6a4 4 0 0 0 0 8v-8Zm4 12v8a4 4 0 0 0 0-8Z" clip-rule="evenodd"%2F%3E%3C%2Fsvg%3E')}.theme-dark input[data-task="S"]:checked,.theme-dark li[data-task="S"]>input:checked,.theme-dark li[data-task="S"]>p>input:checked{background-image:url('data:image/svg+xml,%3Csvg xmlns="http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg" width="20" height="20" preserveAspectRatio="xMidYMid meet" viewBox="0 0 48 48"%3E%3Cpath fill-opacity="0.8" fill="black" fill-rule="evenodd" d="M26 8a2 2 0 1 0-4 0v2a8 8 0 1 0 0 16v8a4.002 4.002 0 0 1-3.773-2.666a2 2 0 0 0-3.771 1.332A8.003 8.003 0 0 0 22 38v2a2 2 0 1 0 4 0v-2a8 8 0 1 0 0-16v-8a4.002 4.002 0 0 1 3.773 2.666a2 2 0 0 0 3.771-1.332A8.003 8.003 0 0 0 26 10V8Zm-4 6a4 4 0 0 0 0 8v-8Zm4 12v8a4 4 0 0 0 0-8Z" clip-rule="evenodd"%2F%3E%3C%2Fsvg%3E')}input[data-task="I"]:checked,li[data-task="I"]>input:checked,li[data-task="I"]>p>input:checked{color:var(--color-yellow);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath d='M11 3a1 1 0 10-2 0v1a1 1 0 102 0V3zM15.657 5.757a1 1 0 00-1.414-1.414l-.707.707a1 1 0 001.414 1.414l.707-.707zM18 10a1 1 0 01-1 1h-1a1 1 0 110-2h1a1 1 0 011 1zM5.05 6.464A1 1 0 106.464 5.05l-.707-.707a1 1 0 00-1.414 1.414l.707.707zM5 10a1 1 0 01-1 1H3a1 1 0 110-2h1a1 1 0 011 1zM8 16v-1h4v1a2 2 0 11-4 0zM12 14c.015-.34.208-.646.477-.859a4 4 0 10-4.954 0c.27.213.462.519.476.859h4.002z' /%3E%3C/svg%3E")}input[data-task="f"]:checked,li[data-task="f"]>input:checked,li[data-task="f"]>p>input:checked{color:var(--color-red);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M12.395 2.553a1 1 0 00-1.45-.385c-.345.23-.614.558-.822.88-.214.33-.403.713-.57 1.116-.334.804-.614 1.768-.84 2.734a31.365 31.365 0 00-.613 3.58 2.64 2.64 0 01-.945-1.067c-.328-.68-.398-1.534-.398-2.654A1 1 0 005.05 6.05 6.981 6.981 0 003 11a7 7 0 1011.95-4.95c-.592-.591-.98-.985-1.348-1.467-.363-.476-.724-1.063-1.207-2.03zM12.12 15.12A3 3 0 017 13s.879.5 2.5.5c0-1 .5-4 1.25-4.5.5 1 .786 1.293 1.371 1.879A2.99 2.99 0 0113 13a2.99 2.99 0 01-.879 2.121z' clip-rule='evenodd' /%3E%3C/svg%3E")}input[data-task="k"]:checked,li[data-task="k"]>input:checked,li[data-task="k"]>p>input:checked{color:var(--color-yellow);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M18 8a6 6 0 01-7.743 5.743L10 14l-1 1-1 1H6v2H2v-4l4.257-4.257A6 6 0 1118 8zm-6-4a1 1 0 100 2 2 2 0 012 2 1 1 0 102 0 4 4 0 00-4-4z' clip-rule='evenodd' /%3E%3C/svg%3E")}input[data-task="u"]:checked,li[data-task="u"]>input:checked,li[data-task="u"]>p>input:checked{color:var(--color-green);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M12 7a1 1 0 110-2h5a1 1 0 011 1v5a1 1 0 11-2 0V8.414l-4.293 4.293a1 1 0 01-1.414 0L8 10.414l-4.293 4.293a1 1 0 01-1.414-1.414l5-5a1 1 0 011.414 0L11 10.586 14.586 7H12z' clip-rule='evenodd' /%3E%3C/svg%3E")}input[data-task="d"]:checked,li[data-task="d"]>input:checked,li[data-task="d"]>p>input:checked{color:var(--color-red);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M12 13a1 1 0 100 2h5a1 1 0 001-1V9a1 1 0 10-2 0v2.586l-4.293-4.293a1 1 0 00-1.414 0L8 9.586 3.707 5.293a1 1 0 00-1.414 1.414l5 5a1 1 0 001.414 0L11 9.414 14.586 13H12z' clip-rule='evenodd' /%3E%3C/svg%3E")}input[data-task="w"]:checked,li[data-task="w"]>input:checked,li[data-task="w"]>p>input:checked{color:var(--color-purple);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M6 3a1 1 0 011-1h.01a1 1 0 010 2H7a1 1 0 01-1-1zm2 3a1 1 0 00-2 0v1a2 2 0 00-2 2v1a2 2 0 00-2 2v.683a3.7 3.7 0 011.055.485 1.704 1.704 0 001.89 0 3.704 3.704 0 014.11 0 1.704 1.704 0 001.89 0 3.704 3.704 0 014.11 0 1.704 1.704 0 001.89 0A3.7 3.7 0 0118 12.683V12a2 2 0 00-2-2V9a2 2 0 00-2-2V6a1 1 0 10-2 0v1h-1V6a1 1 0 10-2 0v1H8V6zm10 8.868a3.704 3.704 0 01-4.055-.036 1.704 1.704 0 00-1.89 0 3.704 3.704 0 01-4.11 0 1.704 1.704 0 00-1.89 0A3.704 3.704 0 012 14.868V17a1 1 0 001 1h14a1 1 0 001-1v-2.132zM9 3a1 1 0 011-1h.01a1 1 0 110 2H10a1 1 0 01-1-1zm3 0a1 1 0 011-1h.01a1 1 0 110 2H13a1 1 0 01-1-1z' clip-rule='evenodd' /%3E%3C/svg%3E")}input[data-task="p"]:checked,li[data-task="p"]>input:checked,li[data-task="p"]>p>input:checked{color:var(--color-green);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath d='M2 10.5a1.5 1.5 0 113 0v6a1.5 1.5 0 01-3 0v-6zM6 10.333v5.43a2 2 0 001.106 1.79l.05.025A4 4 0 008.943 18h5.416a2 2 0 001.962-1.608l1.2-6A2 2 0 0015.56 8H12V4a2 2 0 00-2-2 1 1 0 00-1 1v.667a4 4 0 01-.8 2.4L6.8 7.933a4 4 0 00-.8 2.4z' /%3E%3C/svg%3E")}input[data-task="c"]:checked,li[data-task="c"]>input:checked,li[data-task="c"]>p>input:checked{color:var(--color-orange);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath d='M18 9.5a1.5 1.5 0 11-3 0v-6a1.5 1.5 0 013 0v6zM14 9.667v-5.43a2 2 0 00-1.105-1.79l-.05-.025A4 4 0 0011.055 2H5.64a2 2 0 00-1.962 1.608l-1.2 6A2 2 0 004.44 12H8v4a2 2 0 002 2 1 1 0 001-1v-.667a4 4 0 01.8-2.4l1.4-1.866a4 4 0 00.8-2.4z' /%3E%3C/svg%3E")}input[data-task="b"]:checked,li[data-task="b"]>input:checked,li[data-task="b"]>p>input:checked{color:var(--color-orange);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath d='M5 4a2 2 0 012-2h6a2 2 0 012 2v14l-5-2.5L5 18V4z' /%3E%3C/svg%3E")}.colorful-active .nav-files-container{--nav-item-background-active:var(--interactive-accent);--nav-item-color-active:var(--text-on-accent)}.colorful-active #calendar-container .active,.colorful-active #calendar-container .active.today,.colorful-active #calendar-container .active:hover,.colorful-active #calendar-container .day:active{background-color:var(--interactive-accent);color:var(--text-on-accent)}.colorful-active #calendar-container .active .dot,.colorful-active #calendar-container .day:active .dot,.colorful-active #calendar-container .today.active .dot{fill:var(--text-on-accent)}body:not(.colorful-active) .horizontal-tab-nav-item.is-active,body:not(.colorful-active) .vertical-tab-nav-item.is-active{background-color:var(--background-modifier-hover);color:var(--text-normal)}body{--frame-background:hsl( var(--frame-background-h), var(--frame-background-s), var(--frame-background-l));--frame-icon-color:var(--frame-muted-color)}.theme-light{--frame-background-h:var(--accent-h);--frame-background-s:var(--accent-s);--frame-background-l:calc(var(--accent-l) + 30%);--frame-outline-color:hsla( var(--frame-background-h), var(--frame-background-s), calc(var(--frame-background-l) - 6.5%), 1 );--frame-muted-color:hsl( var(--frame-background-h), calc(var(--frame-background-s) - 10%), calc(var(--frame-background-l) - 35%))}.theme-dark{--frame-background-h:var(--accent-h);--frame-background-s:var(--accent-s);--frame-background-l:calc(var(--accent-l) - 25%);--frame-outline-color:hsla( var(--frame-background-h), calc(var(--frame-background-s) - 2%), calc(var(--frame-background-l) + 6.5%), 1 );--frame-muted-color:hsl( var(--frame-background-h), calc(var(--frame-background-s) - 10%), calc(var(--frame-background-l) + 25%))}.colorful-frame.theme-dark{--tab-outline-width:0px}.colorful-frame,.colorful-frame.is-focused{--frame-divider-color:var(--frame-outline-color);--titlebar-background:var(--frame-background);--titlebar-background-focused:var(--frame-background);--titlebar-text-color:var(--frame-muted-color);--minimal-tab-text-color:var(--frame-muted-color)}.colorful-frame .workspace-tabs:not(.mod-stacked),.colorful-frame.is-focused .workspace-tabs:not(.mod-stacked){--tab-text-color:var(--minimal-tab-text-color);--tab-text-color-focused:var(--minimal-tab-text-color)}.colorful-frame .mod-top .workspace-tab-header-container,.colorful-frame .titlebar,.colorful-frame .workspace-ribbon.mod-left:before,.colorful-frame.is-focused .mod-top .workspace-tab-header-container,.colorful-frame.is-focused .titlebar,.colorful-frame.is-focused .workspace-ribbon.mod-left:before{--tab-outline-color:var(--frame-outline-color);--tab-divider-color:var(--frame-outline-color)}.colorful-frame .mod-root .workspace-tab-header .workspace-tab-header-inner-icon,.colorful-frame.is-focused .mod-root .workspace-tab-header .workspace-tab-header-inner-icon{--icon-color:var(--minimal-tab-text-color-active);--icon-color-hover:var(--minimal-tab-text-color-active);--icon-color-active:var(--minimal-tab-text-color-active);--icon-color-focused:var(--minimal-tab-text-color-active)}.colorful-frame .mod-left-split .mod-top .workspace-tab-header,.colorful-frame .mod-right-split .mod-top .workspace-tab-header,.colorful-frame .sidebar-toggle-button,.colorful-frame .workspace-tab-header-new-tab,.colorful-frame .workspace-tab-header-tab-list,.colorful-frame .workspace-tab-header:not(.is-active),.colorful-frame.is-focused .mod-left-split .mod-top .workspace-tab-header,.colorful-frame.is-focused .mod-right-split .mod-top .workspace-tab-header,.colorful-frame.is-focused .sidebar-toggle-button,.colorful-frame.is-focused .workspace-tab-header-new-tab,.colorful-frame.is-focused .workspace-tab-header-tab-list,.colorful-frame.is-focused .workspace-tab-header:not(.is-active){--background-modifier-hover:var(--frame-outline-color);--icon-color:var(--frame-icon-color);--icon-color-hover:var(--frame-icon-color);--icon-color-active:var(--frame-icon-color);--icon-color-focused:var(--frame-icon-color);--icon-color-focus:var(--frame-icon-color)}.colorful-frame .mod-left-split .mod-top .workspace-tab-header.is-active .workspace-tab-header-inner-icon,.colorful-frame .mod-right-split .mod-top .workspace-tab-header.is-active .workspace-tab-header-inner-icon,.colorful-frame.is-focused .mod-left-split .mod-top .workspace-tab-header.is-active .workspace-tab-header-inner-icon,.colorful-frame.is-focused .mod-right-split .mod-top .workspace-tab-header.is-active .workspace-tab-header-inner-icon{color:var(--frame-icon-color)}.workspace-leaf-resize-handle{transition:none}.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-left-split>.workspace-leaf-resize-handle,.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-right-split>.workspace-leaf-resize-handle,.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-vertical>*>.workspace-leaf-resize-handle{-webkit-app-region:no-drag;border:0;z-index:15}.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-left-split>.workspace-leaf-resize-handle:after,.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-right-split>.workspace-leaf-resize-handle:after,.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-vertical>*>.workspace-leaf-resize-handle:after{content:"";height:100%;width:1px;background:linear-gradient(180deg,var(--frame-outline-color) var(--header-height),var(--divider-color) var(--header-height));top:0;position:absolute}.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-left-split>.workspace-leaf-resize-handle:hover:after,.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-right-split>.workspace-leaf-resize-handle:hover:after,.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-vertical>*>.workspace-leaf-resize-handle:hover:after{background:var(--divider-color-hover)}.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-right-split>.workspace-leaf-resize-handle:after{left:0}.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-left-split>.workspace-leaf-resize-handle:after,.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-vertical>*>.workspace-leaf-resize-handle:after{right:0}body.colorful-headings{--h1-color:var(--color-red);--h2-color:var(--color-orange);--h3-color:var(--color-yellow);--h4-color:var(--color-green);--h5-color:var(--color-blue);--h6-color:var(--color-purple)}body.colorful-headings .modal{--h1-color:var(--text-normal);--h2-color:var(--text-normal);--h3-color:var(--text-normal);--h4-color:var(--text-normal);--h5-color:var(--text-normal);--h6-color:var(--text-normal)}.is-mobile .tree-item-self .collapse-icon{width:20px}body:not(.minimal-icons-off) svg.calendar-day,body:not(.minimal-icons-off) svg.excalidraw-icon,body:not(.minimal-icons-off) svg.globe,body:not(.minimal-icons-off) svg.longform,body:not(.minimal-icons-off) svg.obsidian-leaflet-plugin-icon-map{background-color:currentColor}body:not(.minimal-icons-off) svg.excalidraw-icon path{display:none}body:not(.minimal-icons-off) svg.bar-graph{-webkit-mask-image:url('data:image/svg+xml;utf8,')}body:not(.minimal-icons-off) svg.excalidraw-icon{-webkit-mask-image:url('data:image/svg+xml;utf8,')}body:not(.minimal-icons-off) svg.longform{-webkit-mask-image:url('data:image/svg+xml;utf8,')}.workspace-ribbon.mod-left{border-left:0;transition:none}.minimal-focus-mode.is-translucent .workspace-ribbon.mod-left.is-collapsed,.minimal-focus-mode.is-translucent .workspace-ribbon.mod-left.is-collapsed:before{background-color:var(--background-primary)!important}.minimal-focus-mode .workspace-ribbon.mod-left{transition:background-color 0s linear 0s}.minimal-focus-mode .workspace-ribbon.mod-left.is-collapsed{border-color:transparent;background-color:var(--background-primary)}.minimal-focus-mode .workspace-ribbon.mod-left.is-collapsed:before{background-color:var(--background-primary);border-color:transparent}.minimal-focus-mode .workspace-ribbon.mod-left.is-collapsed .side-dock-actions,.minimal-focus-mode .workspace-ribbon.mod-left.is-collapsed .side-dock-settings{opacity:0;transition:opacity .1s ease-in-out .1s}.minimal-focus-mode .workspace-ribbon.mod-left.is-collapsed:hover .side-dock-actions,.minimal-focus-mode .workspace-ribbon.mod-left.is-collapsed:hover .side-dock-settings{opacity:1;transition:opacity .1s ease-in-out .1s}.minimal-focus-mode.borders-title .workspace-ribbon.mod-left.is-collapsed{border-right:none}.minimal-focus-mode .mod-top-right-space .sidebar-toggle-button.mod-right{opacity:0}.minimal-focus-mode:not(.minimal-status-off) .status-bar{opacity:0;transition:opacity .2s ease-in-out}.minimal-focus-mode .status-bar:hover{opacity:1;transition:opacity .2s ease-in-out}.minimal-focus-mode .mod-root .workspace-tabs{position:relative}.minimal-focus-mode .mod-root .workspace-tabs:before:hover{background-color:#00f}.minimal-focus-mode .mod-root .workspace-tab-header-container{height:0;transition:all .1s linear .6s;--tab-outline-width:0px}.minimal-focus-mode .mod-root .workspace-tab-header-container .workspace-tab-header-container-inner,.minimal-focus-mode .mod-root .workspace-tab-header-container .workspace-tab-header-new-tab,.minimal-focus-mode .mod-root .workspace-tab-header-container .workspace-tab-header-tab-list{opacity:0;transition:opacity .1s linear .6s}.minimal-focus-mode .mod-root .workspace-tab-header-container .workspace-tab-header-spacer:before{width:100%;content:" ";background-color:transparent;height:15px;position:absolute;z-index:100;top:0;left:0}.minimal-focus-mode .mod-root .workspace-tab-header-container:hover{height:var(--header-height);--tab-outline-width:1px;transition:all .1s linear 50ms}.minimal-focus-mode .mod-root .workspace-tab-header-container:hover .workspace-tab-header-container-inner,.minimal-focus-mode .mod-root .workspace-tab-header-container:hover .workspace-tab-header-new-tab,.minimal-focus-mode .mod-root .workspace-tab-header-container:hover .workspace-tab-header-tab-list{opacity:1;transition:opacity .1s linear 50ms}.minimal-focus-mode.mod-macos:not(.is-fullscreen) .workspace:not(.is-left-sidedock-open) .mod-root .workspace-tabs.mod-stacked .workspace-tab-container .workspace-tab-header-inner{padding-top:30px}body.show-view-header .app-container .workspace-split.mod-root>.workspace-leaf .view-header{transition:height .1s linear .1s}body.minimal-focus-mode.show-view-header .mod-root .workspace-leaf .view-header{height:0;transition:all .1s linear .5s}body.minimal-focus-mode.show-view-header .view-header::after{width:100%;content:" ";background-color:transparent;height:40px;position:absolute;z-index:-9;top:0}body.minimal-focus-mode.show-view-header .view-actions,body.minimal-focus-mode.show-view-header .view-header-nav-buttons,body.minimal-focus-mode.show-view-header .view-header-title-container{opacity:0;transition:all .1s linear .5s}body.minimal-focus-mode.show-view-header .mod-root .workspace-leaf .view-header:focus-within,body.minimal-focus-mode.show-view-header .mod-root .workspace-leaf .view-header:hover,body.minimal-focus-mode.show-view-header .mod-root .workspace-tab-header-container:hover~.workspace-tab-container .view-header{height:calc(var(--header-height) + 2px);transition:all .1s linear .1s}body.minimal-focus-mode.show-view-header .mod-root .workspace-tab-header-container:hover~.workspace-tab-container .view-header .view-actions,body.minimal-focus-mode.show-view-header .mod-root .workspace-tab-header-container:hover~.workspace-tab-container .view-header .view-header-nav-buttons,body.minimal-focus-mode.show-view-header .mod-root .workspace-tab-header-container:hover~.workspace-tab-container .view-header .view-header-title-container,body.minimal-focus-mode.show-view-header .view-header:focus-within .view-actions,body.minimal-focus-mode.show-view-header .view-header:focus-within .view-header-nav-buttons,body.minimal-focus-mode.show-view-header .view-header:focus-within .view-header-title-container,body.minimal-focus-mode.show-view-header .view-header:hover .view-actions,body.minimal-focus-mode.show-view-header .view-header:hover .view-header-nav-buttons,body.minimal-focus-mode.show-view-header .view-header:hover .view-header-title-container{opacity:1;transition:all .1s linear .1s}body.minimal-focus-mode.show-view-header .view-content{height:100%}.full-width-media{--iframe-width:100%}.full-width-media .markdown-preview-view .external-embed,.full-width-media .markdown-preview-view .image-embed img:not(.link-favicon):not(.emoji):not([width]),.full-width-media .markdown-preview-view audio,.full-width-media .markdown-preview-view img:not(.link-favicon):not(.emoji):not([width]),.full-width-media .markdown-preview-view p:has(.external-embed),.full-width-media .markdown-preview-view video,.full-width-media .markdown-source-view .external-embed,.full-width-media .markdown-source-view .image-embed img:not(.link-favicon):not(.emoji):not([width]),.full-width-media .markdown-source-view audio,.full-width-media .markdown-source-view img:not(.link-favicon):not(.emoji):not([width]),.full-width-media .markdown-source-view p:has(.external-embed),.full-width-media .markdown-source-view video{width:100%}.markdown-rendered img:not(.emoji),.markdown-source-view img:not(.emoji){border-radius:var(--image-radius)}.table-small table:not(.calendar){--table-text-size:85%}.table-tiny table:not(.calendar){--table-text-size:75%}.row-hover{--table-edge-cell-padding-first:10px}.row-alt{--table-row-alt-background:var(--background-table-rows);--table-edge-cell-padding-first:10px}.col-alt .markdown-rendered:not(.cards){--table-column-alt-background:var(--background-table-rows)}.table-tabular table:not(.calendar){font-variant-numeric:tabular-nums}.table-lines{--table-border-width:var(--border-width);--table-header-border-width:var(--border-width);--table-column-first-border-width:var(--border-width);--table-column-last-border-width:var(--border-width);--table-row-last-border-width:var(--border-width);--table-edge-cell-padding:10px}.table-nowrap{--table-white-space:nowrap}.table-nowrap .table-wrap,.trim-cols{--table-white-space:normal}.table-numbers table:not(.calendar){counter-reset:section}.table-numbers table:not(.calendar)>thead>tr>th:first-child::before{content:" ";padding-right:.5em;display:inline-block;min-width:2em}.table-numbers table:not(.calendar)>tbody>tr>td:first-child::before{counter-increment:section;content:counter(section) " ";text-align:center;padding-right:.5em;display:inline-block;min-width:2em;color:var(--text-faint);font-variant-numeric:tabular-nums}.row-lines-off .table-view-table>tbody>tr>td,.row-lines-off table:not(.calendar) tbody>tr:last-child>td,.row-lines-off table:not(.calendar) tbody>tr>td{border-bottom:none}.row-lines .table-view-table>tbody>tr>td,.row-lines table:not(.calendar) tbody>tr>td{border-bottom:var(--table-border-width) solid var(--table-border-color)}.row-lines table:not(.calendar) tbody>tr:last-child>td{border-bottom:none}.col-lines .table-view-table thead>tr>th:not(:last-child),.col-lines .table-view-table>tbody>tr>td:not(:last-child),.col-lines table:not(.calendar) tbody>tr>td:not(:last-child){border-right:var(--table-border-width) solid var(--background-modifier-border)}.row-hover{--table-row-background-hover:hsla( var(--accent-h), 50%, 80%, 20% )}.theme-dark .row-hover,.theme-dark.row-hover{--table-row-background-hover:hsla( var(--accent-h), 30%, 40%, 20% )}:root{--image-mix:normal}.image-blend-light{--image-mix:multiply}.theme-dark .markdown-preview-view img,.theme-dark .markdown-source-view img{opacity:var(--image-muted);transition:opacity .25s linear}@media print{body{--image-muted:1}}.theme-dark .markdown-preview-view img:hover,.theme-dark .markdown-source-view img:hover,.theme-dark .print-preview img{opacity:1;transition:opacity .25s linear}.theme-light img{mix-blend-mode:var(--image-mix)}div[src$="#invert"],div[src$="#multiply"]{background-color:var(--background-primary)}.theme-dark div[src$="#invert"] img,.theme-dark img[src$="#invert"],.theme-dark span[src$="#invert"] img{filter:invert(1) hue-rotate(180deg);mix-blend-mode:screen}.theme-dark div[src$="#multiply"] img,.theme-dark img[src$="#multiply"],.theme-dark span[src$="#multiply"] img{mix-blend-mode:screen}.theme-light div[src$="#multiply"] img,.theme-light img[src$="#multiply"],.theme-light span[src$="#multiply"] img{mix-blend-mode:multiply}.theme-light div[src$="#invertW"] img,.theme-light img[src$="#invertW"],.theme-light span[src$=invertW] img{filter:invert(1) hue-rotate(180deg)}img[src$="#circle"],span[src$="#circle"] img,span[src$="#round"] img{border-radius:50%;aspect-ratio:1/1}img[src$="#outline"],span[src$="#outline"] img{border:1px solid var(--ui1)}img[src$="#interface"],span[src$="#interface"] img{border:1px solid var(--ui1);box-shadow:0 .5px .9px rgba(0,0,0,.021),0 1.3px 2.5px rgba(0,0,0,.03),0 3px 6px rgba(0,0,0,.039),0 10px 20px rgba(0,0,0,.06);margin-top:10px;margin-bottom:15px;border-radius:var(--radius-m)}body{--image-grid-fit:cover;--image-grid-background:transparent;--img-grid-gap:0.5rem}@media (max-width:400pt){body{--img-grid-gap:0.25rem}}.img-grid-ratio{--image-grid-fit:contain}.img-grid .image-embed.is-loaded{line-height:0}.img-grid .image-embed.is-loaded img{background-color:var(--image-grid-background)}.img-grid .image-embed.is-loaded img:active{background-color:transparent}.img-grid .markdown-preview-section>div:has(.image-embed)>p{display:grid;margin-block-start:var(--img-grid-gap);margin-block-end:var(--img-grid-gap);grid-column-gap:var(--img-grid-gap);grid-row-gap:0;grid-template-columns:repeat(auto-fit,minmax(0,1fr))}.img-grid .markdown-preview-section>div:has(.image-embed)>p>br{display:none}.img-grid .markdown-preview-section>div:has(.image-embed)>p>img{object-fit:var(--image-grid-fit);align-self:stretch}.img-grid .markdown-preview-section>div:has(.image-embed)>p>.internal-embed img{object-fit:var(--image-grid-fit);height:100%;align-self:center}body:not(.zoom-off) .view-content div:not(.canvas-node-content) img{max-width:100%;cursor:zoom-in}body:not(.zoom-off) .view-content img:active{cursor:zoom-out}body:not(.zoom-off) .view-content .markdown-preview-view img[referrerpolicy=no-referrer]:active{background-color:var(--background-primary);padding:10px}body:not(.zoom-off) .view-content .image-embed:not(.canvas-node-content):active,body:not(.zoom-off) .view-content .markdown-preview-view img[referrerpolicy=no-referrer]:active{aspect-ratio:unset;cursor:zoom-out;display:block;z-index:200;position:fixed;max-height:calc(100% + 1px);max-width:100%;height:calc(100% + 1px);width:100%;object-fit:contain;margin:-.5px auto 0!important;text-align:center;padding:0;left:0;right:0;bottom:0}body:not(.zoom-off) .view-content .image-embed:not(.canvas-node-content):active:after{background-color:var(--background-primary);opacity:.9;content:" ";height:calc(100% + 1px);width:100%;position:fixed;left:0;right:1px;z-index:0}body:not(.zoom-off) .view-content .image-embed:not(.canvas-node-content):active img{aspect-ratio:unset;top:50%;z-index:99;transform:translateY(-50%);padding:0;margin:0 auto;width:calc(100% - 20px);max-height:95vh;object-fit:contain;left:0;right:0;bottom:0;position:absolute;opacity:1}.labeled-nav.is-fullscreen:not(.colorful-frame){--labeled-nav-top-margin:0}.labeled-nav{--labeled-nav-top-margin:var(--header-height)}.labeled-nav.is-translucent .mod-left-split .mod-top .workspace-tab-header-container .workspace-tab-header-container-inner{background-color:transparent}.labeled-nav.is-hidden-frameless:not(.is-fullscreen) .mod-left-split .workspace-tabs.mod-top-left-space .workspace-tab-header-container{padding-left:0}.labeled-nav.mod-macos .mod-left-split .mod-top .workspace-tab-header-container:before,.labeled-nav.mod-macos.is-hidden-frameless:not(.is-fullscreen) .mod-left-split .mod-top .workspace-tab-header-container:before{-webkit-app-region:drag;position:absolute;width:calc(100% - var(--divider-width));height:calc(var(--header-height) - var(--tab-outline-width));border-bottom:0 solid var(--tab-outline-color)}.labeled-nav.mod-macos.is-hidden-frameless:not(.is-fullscreen) .workspace-ribbon.mod-left:not(.is-collapsed){border:none;--tab-outline-width:0px}.labeled-nav.colorful-frame.is-hidden-frameless:not(.is-fullscreen) .mod-left-split .mod-top .workspace-tab-header-container:before,.labeled-nav.mod-macos:not(.hider-ribbon) .mod-left-split .mod-top .workspace-tab-header-container:before,.labeled-nav:not(.is-hidden-frameless) .mod-left-split .mod-top .workspace-tab-header-container:before{border-bottom:var(--tab-outline-width) solid var(--tab-outline-color)}.labeled-nav.colorful-frame.is-hidden-frameless:not(.is-fullscreen) .workspace-ribbon.mod-left:not(.is-collapsed),.labeled-nav.mod-macos:not(.hider-ribbon) .workspace-ribbon.mod-left:not(.is-collapsed),.labeled-nav:not(.is-hidden-frameless) .workspace-ribbon.mod-left:not(.is-collapsed){--tab-outline-width:1px}.labeled-nav:not(.is-hidden-frameless) .mod-left-split .mod-top .workspace-tab-header-container:before{position:absolute;top:0;content:" "}.labeled-nav.hider-ribbon.mod-macos.is-hidden-frameless:not(.is-fullscreen):not(.is-popout-window) .mod-left-split:not(.is-sidedock-collapsed) .workspace-tabs.mod-top-left-space .workspace-tab-header-container{padding-left:0}.labeled-nav:not(.is-grabbing):not(.is-fullscreen).is-hidden-frameless .mod-top .workspace-tab-header-container{-webkit-app-region:no-drag}.labeled-nav .mod-left-split .mod-top .workspace-tab-header-spacer{display:none}.labeled-nav .mod-left-split .mod-top .workspace-tab-header-inner-title{display:inline-block;font-weight:500;font-size:var(--font-adaptive-smaller)}.labeled-nav .mod-left-split .mod-top .workspace-tab-header-container{position:relative;flex-direction:column-reverse!important;height:auto;width:100%}.labeled-nav .mod-left-split .mod-top .workspace-tab-header-container .sidebar-toggle-button.mod-left{position:absolute;justify-content:flex-end;padding-right:var(--size-4-2);top:0;right:0}.labeled-nav .mod-left-split .mod-top .workspace-tab-header-container .workspace-tab-header-container-inner{padding-top:var(--size-4-2);margin-top:var(--labeled-nav-top-margin);flex-direction:column!important;background-color:var(--background-secondary)}.labeled-nav .mod-left-split .mod-top .workspace-tab-header-container .workspace-tab-container-inner{flex-grow:1;gap:0;padding:var(--size-4-2) var(--size-4-3)}.labeled-nav .mod-left-split .mod-top .workspace-tab-header{--icon-color:var(--text-muted);--tab-text-color:var(--text-muted);--tab-text-color-focused:var(--text-muted);padding:0;margin-bottom:2px;border:none;height:auto}.labeled-nav .mod-left-split .mod-top .workspace-tab-header.is-active:not(:hover){background-color:transparent}.labeled-nav .mod-left-split .mod-top .workspace-tab-header.is-active,.labeled-nav .mod-left-split .mod-top .workspace-tab-header:hover{opacity:1;--tab-text-color-active:var(--text-normal);--tab-text-color-focused:var(--text-normal);--tab-text-color-focused-active:var(--text-normal);--tab-text-color-focused-active-current:var(--text-normal);--icon-color:var(--text-normal)}.labeled-nav .mod-left-split .mod-top .workspace-tab-header .workspace-tab-header-inner{gap:var(--size-2-3);padding:var(--size-4-1) var(--size-4-2);box-shadow:none;border:none}.labeled-nav .mod-left-split .mod-top .workspace-tab-header.has-active-menu:hover,.labeled-nav .mod-left-split .mod-top .workspace-tab-header.is-active:hover{background-color:transparent}.labeled-nav .mod-left-split .mod-top .workspace-tab-header.is-active:hover .workspace-tab-header-inner,.labeled-nav .mod-left-split .mod-top .workspace-tab-header:not(.is-active):hover .workspace-tab-header-inner{background-color:var(--nav-item-background-hover)}.labeled-nav .mod-left-split .mod-top .workspace-tab-header.is-active .workspace-tab-header-inner-icon,.labeled-nav .mod-left-split .mod-top .workspace-tab-header:hover .workspace-tab-header-inner-icon{color:var(--icon-color-active)}.labeled-nav .mod-left-split .mod-top .workspace-tab-header-container{border:none;padding:0}body:not(.links-int-on){--link-decoration:none}body:not(.links-ext-on){--link-external-decoration:none}body:not(.sidebar-color) .mod-right-split{--background-secondary:var(--background-primary)}body:not(.sidebar-color) .mod-right-split :not(.mod-top) .workspace-tab-header-container{--tab-container-background:var(--background-primary)}body{--minimal-tab-text-color:var(--text-muted);--minimal-tab-text-color-active:var(--text-normal)}.workspace-tabs:not(.mod-stacked){--tab-text-color:var(--minimal-tab-text-color);--tab-text-color-focused:var(--minimal-tab-text-color);--tab-text-color-active:var(--minimal-tab-text-color-active);--tab-text-color-focused-active:var(--minimal-tab-text-color-active);--tab-text-color-focused-active-current:var(--minimal-tab-text-color-active)}.tabs-plain-square .mod-root{--tab-curve:0;--tab-radius:0;--tab-radius-active:0}.tabs-plain-square .mod-root .workspace-tab-header-container{padding-right:0}.tabs-plain-square .mod-root .workspace-tab-header-container-inner{margin-top:-1px;margin-left:-15px}.tabs-plain-square .mod-root .workspace-tab-header{padding:0}.tabs-plain-square .mod-root .workspace-tab-header-inner{padding:0 8px}.tabs-square .mod-root{--tab-curve:0;--tab-radius:0;--tab-radius-active:0}.tabs-underline .mod-root{--tab-curve:0;--tab-radius:0;--tab-radius-active:0;--tab-outline-width:0px;--tab-background-active:transparent}.tabs-underline .mod-root .workspace-tab-header-container{border-bottom:1px solid var(--divider-color)}.tabs-underline .mod-root .workspace-tab-header{border-bottom:2px solid transparent}.tabs-underline .mod-root .workspace-tab-header:hover{border-bottom:2px solid var(--ui2)}.tabs-underline .mod-root .workspace-tab-header:hover .workspace-tab-header-inner{background-color:transparent}.tabs-underline .mod-root .workspace-tab-header.is-active{border-bottom:2px solid var(--ax3)}.tabs-underline .mod-root .workspace-tab-header-inner:hover{background-color:transparent}body:not(.sidebar-tabs-underline):not(.sidebar-tabs-index):not(.sidebar-tabs-square) .workspace>.workspace-split:not(.mod-root) .workspace-tabs:not(.mod-top) .workspace-tab-header-container{--tab-outline-width:0}.mod-root .workspace-tab-header:not(.is-active) .workspace-tab-header-inner-close-button{display:none}.mod-root .workspace-tab-header:hover .workspace-tab-header-inner-close-button{display:flex}.tabs-modern.colorful-frame .mod-root .mod-top.workspace-tabs:not(.mod-stacked){--tab-background:var(--frame-outline-color);--tab-outline-width:1px}.tabs-modern.colorful-frame .mod-root .mod-top.workspace-tabs:not(.mod-stacked) .workspace-tab-header.is-active .workspace-tab-header-inner-close-button,.tabs-modern.colorful-frame .mod-root .mod-top.workspace-tabs:not(.mod-stacked) .workspace-tab-header:hover .workspace-tab-header-inner-close-button{color:var(--minimal-tab-text-color-active)}.tabs-modern.minimal-focus-mode .mod-root .workspace-tab-header-container:hover{--tab-outline-width:0px}.tabs-modern .mod-root{--tab-container-background:var(--background-primary)}.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked){--tab-background:var(--background-modifier-hover);--tab-height:calc(var(--header-height) - 14px);--tab-outline-width:0px}.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header-inner::after,.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header::after,.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header::before{display:none}.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header-container-inner{align-items:center;margin:0;padding:2px var(--size-4-2) 0 var(--size-4-1)}.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header-inner-title{text-overflow:ellipsis;-webkit-mask-image:none}.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header{background:0 0;border-radius:5px;border:none;box-shadow:none;height:var(--tab-height);margin-left:var(--size-4-1);padding:0}.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header.is-active .workspace-tab-header-inner-title{color:var(--tab-text-color-active)}.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header.is-active.mod-active,.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header:hover{opacity:1;background-color:var(--tab-background)}.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header-new-tab{margin-right:0}.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header-inner{padding:0 var(--size-4-1) 0 var(--size-4-2);border:1px solid transparent}.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header:not(.is-active):hover .workspace-tab-header-inner{background-color:transparent}.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header.is-active:not(.mod-active) .workspace-tab-header-inner,.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header:not(:hover):not(.mod-active) .workspace-tab-header-inner{border:1px solid var(--tab-outline-color)}.tabs-modern.sidebar-tabs-default .mod-right-split,.tabs-modern.sidebar-tabs-wide .mod-right-split{--tab-outline-width:0}.sidebar-tabs-underline .mod-right-split .workspace-tab-header-spacer,.sidebar-tabs-underline.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-spacer,.sidebar-tabs-underline:not(.labeled-nav) .mod-left-split .workspace-tab-header-spacer{display:none}.sidebar-tabs-underline .mod-right-split .workspace-tab-header-container,.sidebar-tabs-underline.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container,.sidebar-tabs-underline:not(.labeled-nav) .mod-left-split .workspace-tab-header-container{padding-right:0}.sidebar-tabs-underline .mod-right-split .workspace-tab-header-container-inner,.sidebar-tabs-underline.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container-inner,.sidebar-tabs-underline:not(.labeled-nav) .mod-left-split .workspace-tab-header-container-inner{padding:0;margin:0;flex-grow:1;gap:0}.sidebar-tabs-underline .mod-right-split .workspace-tab-header-container .workspace-tab-header,.sidebar-tabs-underline.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container .workspace-tab-header,.sidebar-tabs-underline:not(.labeled-nav) .mod-left-split .workspace-tab-header-container .workspace-tab-header{flex-grow:1;border-radius:0;max-width:100px}.sidebar-tabs-underline .mod-right-split .workspace-tab-header-container .workspace-tab-header.is-active,.sidebar-tabs-underline .mod-right-split .workspace-tab-header-container .workspace-tab-header:hover,.sidebar-tabs-underline.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container .workspace-tab-header.is-active,.sidebar-tabs-underline.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container .workspace-tab-header:hover,.sidebar-tabs-underline:not(.labeled-nav) .mod-left-split .workspace-tab-header-container .workspace-tab-header.is-active,.sidebar-tabs-underline:not(.labeled-nav) .mod-left-split .workspace-tab-header-container .workspace-tab-header:hover{background-color:transparent}.sidebar-tabs-underline .mod-right-split .workspace-tab-header-container .workspace-tab-header.is-active .workspace-tab-header-inner,.sidebar-tabs-underline .mod-right-split .workspace-tab-header-container .workspace-tab-header:hover .workspace-tab-header-inner,.sidebar-tabs-underline.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container .workspace-tab-header.is-active .workspace-tab-header-inner,.sidebar-tabs-underline.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container .workspace-tab-header:hover .workspace-tab-header-inner,.sidebar-tabs-underline:not(.labeled-nav) .mod-left-split .workspace-tab-header-container .workspace-tab-header.is-active .workspace-tab-header-inner,.sidebar-tabs-underline:not(.labeled-nav) .mod-left-split .workspace-tab-header-container .workspace-tab-header:hover .workspace-tab-header-inner{background-color:transparent}.sidebar-tabs-underline .mod-right-split .workspace-tab-header-container .workspace-tab-header .workspace-tab-header-inner,.sidebar-tabs-underline.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container .workspace-tab-header .workspace-tab-header-inner,.sidebar-tabs-underline:not(.labeled-nav) .mod-left-split .workspace-tab-header-container .workspace-tab-header .workspace-tab-header-inner{border-bottom:2px solid transparent;border-radius:0}.sidebar-tabs-underline .mod-right-split .workspace-tab-header-container .workspace-tab-header .workspace-tab-header-inner:hover,.sidebar-tabs-underline.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container .workspace-tab-header .workspace-tab-header-inner:hover,.sidebar-tabs-underline:not(.labeled-nav) .mod-left-split .workspace-tab-header-container .workspace-tab-header .workspace-tab-header-inner:hover{border-color:var(--ui2)}.sidebar-tabs-underline .mod-right-split .workspace-tab-header-container .workspace-tab-header.is-active .workspace-tab-header-inner,.sidebar-tabs-underline.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container .workspace-tab-header.is-active .workspace-tab-header-inner,.sidebar-tabs-underline:not(.labeled-nav) .mod-left-split .workspace-tab-header-container .workspace-tab-header.is-active .workspace-tab-header-inner{border-color:var(--ax3);padding-top:1px}.sidebar-tabs-square .mod-left-split,.sidebar-tabs-square .mod-right-split{--tab-radius:0px}.sidebar-tabs-index.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top),.sidebar-tabs-index:not(.labeled-nav) .mod-left-split,.sidebar-tabs-square.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top),.sidebar-tabs-square:not(.labeled-nav) .mod-left-split{--tab-background-active:var(--background-secondary)}.sidebar-tabs-index .mod-right-split .workspace-tab-header-container-inner,.sidebar-tabs-index.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container-inner,.sidebar-tabs-index:not(.labeled-nav) .mod-left-split .workspace-tab-header-container-inner,.sidebar-tabs-square .mod-right-split .workspace-tab-header-container-inner,.sidebar-tabs-square.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container-inner,.sidebar-tabs-square:not(.labeled-nav) .mod-left-split .workspace-tab-header-container-inner{padding:1px var(--size-4-2) 0;margin:6px 0 calc(var(--tab-outline-width) * -1);flex-grow:1}.sidebar-tabs-index .mod-right-split .workspace-tab-header,.sidebar-tabs-index.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header,.sidebar-tabs-index:not(.labeled-nav) .mod-left-split .workspace-tab-header,.sidebar-tabs-square .mod-right-split .workspace-tab-header,.sidebar-tabs-square.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header,.sidebar-tabs-square:not(.labeled-nav) .mod-left-split .workspace-tab-header{flex-grow:1;max-width:100px;border-radius:var(--tab-radius) var(--tab-radius) 0 0}.sidebar-tabs-index .mod-right-split .workspace-tab-header.is-active,.sidebar-tabs-index.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header.is-active,.sidebar-tabs-index:not(.labeled-nav) .mod-left-split .workspace-tab-header.is-active,.sidebar-tabs-square .mod-right-split .workspace-tab-header.is-active,.sidebar-tabs-square.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header.is-active,.sidebar-tabs-square:not(.labeled-nav) .mod-left-split .workspace-tab-header.is-active{box-shadow:0 0 0 var(--tab-outline-width) var(--tab-outline-color);color:var(--tab-text-color-active);background-color:var(--tab-background-active)}.sidebar-tabs-wide .mod-right-split .workspace-tab-header-container-inner,.sidebar-tabs-wide.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container-inner,.sidebar-tabs-wide:not(.labeled-nav) .mod-left-split .workspace-tab-header-container-inner{flex-grow:1;border:1px solid var(--tab-outline-color);padding:3px;margin:6px 8px 6px;border-radius:4px}.sidebar-tabs-wide .mod-right-split .workspace-tab-header,.sidebar-tabs-wide.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header,.sidebar-tabs-wide:not(.labeled-nav) .mod-left-split .workspace-tab-header{flex-grow:1}.sidebar-tabs-wide .mod-right-split .workspace-tab-header.is-active,.sidebar-tabs-wide.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header.is-active,.sidebar-tabs-wide:not(.labeled-nav) .mod-left-split .workspace-tab-header.is-active{border-color:transparent}.sidebar-tabs-wide .mod-right-split .workspace-tab-header-container,.sidebar-tabs-wide.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container,.sidebar-tabs-wide:not(.labeled-nav) .mod-left-split .workspace-tab-header-container{padding-right:0}.sidebar-tabs-wide .mod-right-split .workspace-tab-header-spacer,.sidebar-tabs-wide.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-spacer,.sidebar-tabs-wide:not(.labeled-nav) .mod-left-split .workspace-tab-header-spacer{display:none}.full-file-names{--nav-item-white-space:normal}body:not(.full-file-names){--nav-item-white-space:nowrap}body:not(.full-file-names) .tree-item-self{white-space:nowrap}body:not(.full-file-names) .tree-item-inner{text-overflow:ellipsis;overflow:hidden}.theme-dark,.theme-light{--h1l:var(--ui1);--h2l:var(--ui1);--h3l:var(--ui1);--h4l:var(--ui1);--h5l:var(--ui1);--h6l:var(--ui1)}.h1-l .markdown-reading-view h1:not(.embedded-note-title),.h1-l .mod-cm6 .cm-editor .HyperMD-header-1{border-bottom:1px solid var(--h1l);padding-bottom:.4em;margin-block-end:0.6em}.h2-l .markdown-reading-view h2,.h2-l .mod-cm6 .cm-editor .HyperMD-header-2{border-bottom:1px solid var(--h2l);padding-bottom:.4em;margin-block-end:0.6em}.h3-l .markdown-reading-view h3,.h3-l .mod-cm6 .cm-editor .HyperMD-header-3{border-bottom:1px solid var(--h3l);padding-bottom:.4em;margin-block-end:0.6em}.h4-l .markdown-reading-view h4,.h4-l .mod-cm6 .cm-editor .HyperMD-header-4{border-bottom:1px solid var(--h4l);padding-bottom:.4em;margin-block-end:0.6em}.h5-l .markdown-reading-view h5,.h5-l .mod-cm6 .cm-editor .HyperMD-header-5{border-bottom:1px solid var(--h5l);padding-bottom:.4em;margin-block-end:0.6em}.h6-l .markdown-reading-view h6,.h6-l .mod-cm6 .cm-editor .HyperMD-header-6{border-bottom:1px solid var(--h6l);padding-bottom:.4em;margin-block-end:0.6em}.is-tablet .workspace-drawer{padding-top:0}.is-tablet .workspace-drawer:not(.is-pinned){margin:30px 16px 0;height:calc(100vh - 48px);border-radius:15px;border:none}.is-tablet .workspace-drawer-ribbon{background-color:var(--background-primary);border-right:1px solid var(--background-modifier-border)}.is-tablet .workspace-drawer-header,.is-tablet .workspace-drawer.is-pinned .workspace-drawer-header{padding-top:var(--size-4-4)}.is-mobile{--font-bold:600;--font-ui-medium:var(--font-adaptive-small);--interactive-normal:var(--background-secondary);--background-modifier-form-field:var(--background-secondary);--background-modifier-form-field-highlighted:var(--background-secondary)}.is-mobile .markdown-source-view.mod-cm6 .cm-gutters{margin-left:0}.is-mobile .workspace-drawer.mod-left.is-pinned{max-width:var(--mobile-left-sidebar-width);min-width:150pt}.is-mobile .workspace-drawer.mod-right.is-pinned{max-width:var(--mobile-right-sidebar-width);min-width:150pt}.backlink-pane>.tree-item-self,.backlink-pane>.tree-item-self:hover,.outgoing-link-pane>.tree-item-self,.outgoing-link-pane>.tree-item-self:hover{color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;font-size:var(--font-adaptive-smallest);font-weight:500}body{--canvas-dot-pattern:var(--background-modifier-border-hover)}.canvas-node-label{font-size:var(--font-adaptive-small)}.canvas-edges :not(.is-themed) path.canvas-display-path{stroke:var(--background-modifier-border-focus)}.canvas-edges :not(.is-themed) polyline.canvas-path-end{stroke:var(--background-modifier-border-focus);fill:var(--background-modifier-border-focus)}.canvas-node-container{border:1.5px solid var(--background-modifier-border-focus)}.node-insert-event.mod-inside-iframe{--max-width:100%;--folding-offset:0px}.node-insert-event.mod-inside-iframe .cm-editor .cm-content{padding-top:0}.is-mobile .nav-folder.mod-root>.nav-folder-title .nav-folder-title-content{display:none}body:not(.is-mobile) .nav-folder.mod-root>.nav-folder-title .nav-folder-title-content{font-weight:500;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);font-size:var(--font-adaptive-smallest)}.nav-buttons-container{justify-content:flex-start}.nav-file-tag{padding-top:.2em;background-color:transparent;color:var(--text-faint)}.nav-file .is-active .nav-file-tag,.nav-file:hover .nav-file-tag{color:var(--text-muted)}input.prompt-input,input.prompt-input:focus,input.prompt-input:focus-visible,input.prompt-input:hover{border-color:rgba(var(--mono-rgb-100),.05)}.is-mobile .mod-publish .modal-content{display:unset;padding:10px 10px 10px;margin-bottom:120px;overflow-x:hidden}.is-mobile .mod-publish .button-container,.is-mobile .modal.mod-publish .modal-button-container{padding:10px 15px 30px;margin-left:0;left:0}.is-mobile .modal.mod-publish .modal-title{padding:10px 20px;margin:0 -10px;border-bottom:1px solid var(--background-modifier-border)}.is-mobile .publish-site-settings-container{margin-right:0;padding:0}.is-mobile .modal.mod-publish .modal-content .publish-sections-container{margin-right:0;padding-right:0}@media (max-width:400pt){.is-mobile .publish-changes-info,.is-mobile .publish-section-header{flex-wrap:wrap;border:none}.is-mobile .publish-changes-info .publish-changes-add-linked-btn{flex-basis:100%;margin-top:10px}.is-mobile .publish-section-header-text{flex-basis:100%;margin-bottom:10px;margin-left:20px;margin-top:-8px}.is-mobile .publish-section{background:var(--background-secondary);border-radius:10px;padding:12px 12px 1px}.is-mobile .publish-changes-switch-site{flex-grow:0;margin-right:10px}}.release-notes-view .cm-scroller.is-readable-line-width{width:var(--line-width);max-width:var(--max-width);margin:0 auto}.search-results-info{border-bottom:none}@media (max-width:400pt){.is-mobile .modal.mod-sync-log{width:100vw;height:100vh;max-height:calc(100vh - 32px);box-shadow:0 -32px 0 32px var(--background-primary);bottom:0;padding-bottom:10px}}.obsidian-banner.solid{border-bottom:var(--divider-width) solid var(--divider-color)}.contextual-typography .markdown-preview-view div.has-banner-icon.obsidian-banner-wrapper{overflow:visible}.theme-dark .markdown-preview-view img.emoji{opacity:1}body.theme-dark .button-default,body.theme-light .button-default{border:none;box-shadow:none;height:var(--input-height);background:var(--background-modifier-hover);color:var(--text-normal);font-size:revert;font-weight:500;transform:none;transition:all .1s linear;padding:0 20px}body.theme-dark .button-default:hover,body.theme-light .button-default:hover{border:none;background:var(--background-modifier-border-hover);box-shadow:none;transform:none;transition:all .1s linear}body.theme-dark .button-default:active,body.theme-dark .button-default:focus,body.theme-light .button-default:active,body.theme-light .button-default:focus{box-shadow:none}body .button-default.blue{background-color:var(--color-blue)!important}.button-default.red{background-color:var(--color-red)!important}.button-default.green{background-color:var(--color-green)!important}.button-default.yellow{background-color:var(--color-yellow)!important}.button-default.purple{background-color:var(--color-purple)!important}.workspace-leaf-content[data-type=calendar] .view-content{padding:5px 0 0 0}.mod-root #calendar-container{width:var(--line-width);max-width:var(--max-width);margin:0 auto;padding:0}#calendar-container{padding:0 var(--size-4-4) var(--size-4-1);--color-background-day-empty:var(--background-secondary-alt);--color-background-day-active:var(--background-modifier-hover);--color-background-day-hover:var(--background-modifier-hover);--color-dot:var(--text-faint);--color-text-title:var(--text-normal);--color-text-heading:var(--text-muted);--color-text-day:var(--text-normal);--color-text-today:var(--text-normal);--color-arrow:var(--text-faint);--color-background-day-empty:transparent}#calendar-container .table{border-collapse:separate;table-layout:fixed}#calendar-container h2{font-weight:400;font-size:var(--h2)}#calendar-container .arrow{cursor:var(--cursor);width:22px;border-radius:4px;padding:3px 7px}#calendar-container .arrow svg{width:12px;height:12px;color:var(--text-faint);opacity:.7}#calendar-container .arrow:hover{fill:var(--text-muted);color:var(--text-muted);background-color:var(--background-modifier-hover)}#calendar-container .arrow:hover svg{color:var(--text-muted);opacity:1}#calendar-container tr th{padding:2px 0 4px;font-weight:500;letter-spacing:.1em;font-size:var(--font-adaptive-smallest)}#calendar-container tr th:first-child{padding-left:0!important}#calendar-container tr td{padding:2px 0 0 0;border-radius:var(--radius-m);cursor:var(--cursor);border:1px solid transparent;transition:none}#calendar-container tr td:first-child{padding-left:0!important}#calendar-container .nav{padding:0;margin:var(--size-4-2) var(--size-4-1)}#calendar-container .dot{margin:0}#calendar-container .month,#calendar-container .title,#calendar-container .year{font-size:calc(var(--font-adaptive-small) + 2px);font-weight:400;color:var(--text-normal)}#calendar-container .today,#calendar-container .today.active{color:var(--text-accent);font-weight:600}#calendar-container .today .dot,#calendar-container .today.active .dot{fill:var(--text-accent)}#calendar-container .active .task{stroke:var(--text-faint)}#calendar-container .active{color:var(--text-normal)}#calendar-container .reset-button{text-transform:none;letter-spacing:0;font-size:var(--font-adaptive-smaller);font-weight:500;color:var(--text-muted);border-radius:4px;margin:0;padding:2px 8px}#calendar-container .reset-button:hover{color:var(--text-normal);background-color:var(--background-modifier-hover)}#calendar-container .day,#calendar-container .reset-button,#calendar-container .week-num{cursor:var(--cursor)}#calendar-container .day.adjacent-month{color:var(--text-faint);opacity:1}#calendar-container .day{padding:2px 4px 4px}#calendar-container .day,#calendar-container .week-num{font-size:calc(var(--font-adaptive-smaller) + 5%)}#calendar-container .active,#calendar-container .active.today,#calendar-container .day:hover,#calendar-container .week-num:hover{background-color:var(--color-background-day-active)}#calendar-container .active .dot{fill:var(--text-faint)}#calendar-container .active .task{stroke:var(--text-faint)}.block-language-chart canvas,.block-language-dataviewjs canvas{margin:1em 0}.theme-dark,.theme-light{--chart-color-1:var(--color-blue);--chart-color-2:var(--color-red);--chart-color-3:var(--color-yellow);--chart-color-4:var(--color-green);--chart-color-5:var(--color-orange);--chart-color-6:var(--color-purple);--chart-color-7:var(--color-cyan);--chart-color-8:var(--color-pink)}.checklist-plugin-main .group .classic,.checklist-plugin-main .group .compact,.checklist-plugin-main .group .page,.checklist-plugin-main .group svg{cursor:var(--cursor)}.workspace .view-content .checklist-plugin-main{padding:10px 10px 15px 15px;--todoList-togglePadding--compact:2px;--todoList-listItemMargin--compact:2px}.checklist-plugin-main .title{font-weight:400;color:var(--text-muted);font-size:var(--font-adaptive-small)}.checklist-plugin-main .group svg{fill:var(--text-faint)}.checklist-plugin-main .group svg:hover{fill:var(--text-normal)}.checklist-plugin-main .group .title:hover{color:var(--text-normal)}.checklist-plugin-main .group:not(:last-child){border-bottom:1px solid var(--background-modifier-border)}.checklist-plugin-main .group{padding:0 0 2px 0}.checklist-plugin-main .group .classic:last-child,.checklist-plugin-main .group .compact:last-child{margin-bottom:10px}.checklist-plugin-main .group .classic,.checklist-plugin-main .group .compact{font-size:var(--font-adaptive-small)}.checklist-plugin-main .group .classic,.checklist-plugin-main .group .compact{background:0 0;border-radius:0;margin:1px auto;padding:0}.checklist-plugin-main .group .classic .content{padding:0}.checklist-plugin-main .group .classic:hover,.checklist-plugin-main .group .compact:hover{background:0 0}.markdown-preview-view.checklist-plugin-main ul>li:not(.task-list-item)::before{display:none}.checklist-plugin-main .group .compact>.toggle .checked{background:var(--text-accent);top:-1px;left:-1px;height:18px;width:18px}.checklist-plugin-main .compact .toggle:hover{opacity:1!important}.checklist-plugin-main .group .count{font-size:var(--font-adaptive-smaller);padding:0;background:0 0;font-weight:400;color:var(--text-faint)}.checklist-plugin-main .group .group-header:hover .count{color:var(--text-muted)}.checklist-plugin-main .group .checkbox{border:1px solid var(--background-modifier-border-hover);min-height:18px;min-width:18px;height:18px;width:18px}.checklist-plugin-main .group .checkbox:hover{border:1px solid var(--background-modifier-border-focus)}.checklist-plugin-main button:active,.checklist-plugin-main button:focus,.checklist-plugin-main button:hover{box-shadow:none!important}.checklist-plugin-main button.collapse{padding:0}body:not(.is-mobile) .checklist-plugin-main button.collapse svg{width:18px;height:18px}.is-mobile .checklist-plugin-main .group-header .title{flex-grow:1;flex-shrink:0}.is-mobile .checklist-plugin-main button{width:auto}.is-mobile .checklist-plugin-main.markdown-preview-view ul{padding-inline-start:0}.is-mobile .workspace .view-content .checklist-plugin-main{padding-bottom:50px}body #cMenuModalBar{box-shadow:0 2px 20px var(--shadow-color)}body #cMenuModalBar .cMenuCommandItem{cursor:var(--cursor)}body #cMenuModalBar button.cMenuCommandItem:hover{background-color:var(--background-modifier-hover)}.MiniSettings-statusbar-button{padding-top:0;padding-bottom:0}.dataview-inline-lists .markdown-preview-view .dataview-ul,.dataview-inline-lists .markdown-source-view .dataview-ul{--list-spacing:0}.dataview-inline-lists .markdown-preview-view .dataview-ul li:not(:last-child):after,.dataview-inline-lists .markdown-source-view .dataview-ul li:not(:last-child):after{content:", "}.dataview-inline-lists .markdown-preview-view ul.dataview-ul>li::before,.dataview-inline-lists .markdown-source-view ul.dataview-ul>li::before{display:none}.dataview-inline-lists .markdown-preview-view .dataview-ul li,.dataview-inline-lists .markdown-source-view .dataview-ul li{display:inline-block;padding-right:.25em}.markdown-preview-view .table-view-table>thead>tr>th,body .table-view-table>thead>tr>th{font-weight:400;font-size:var(--table-text-size);color:var(--text-muted);border-bottom:var(--table-border-width) solid var(--table-border-color);cursor:var(--cursor)}table.dataview ul.dataview-ul{list-style:none;padding-inline-start:0;margin-block-start:0em!important;margin-block-end:0em!important}.markdown-preview-view:not(.cards) .table-view-table>tbody>tr>td,.markdown-source-view.mod-cm6:not(.cards) .table-view-table>tbody>tr>td{max-width:var(--max-col-width)}body .dataview.small-text{color:var(--text-faint)}body:not(.row-hover) .dataview.task-list-basic-item:hover,body:not(.row-hover) .dataview.task-list-item:hover,body:not(.row-hover) .table-view-table>tbody>tr:hover{background-color:transparent!important;box-shadow:none}body.row-hover .dataview.task-list-basic-item:hover,body.row-hover .dataview.task-list-item:hover,body.row-hover .table-view-table>tbody>tr:hover{background-color:var(--table-row-background-hover)!important}body .dataview-error{background-color:transparent}.dataview.dataview-error,.markdown-source-view.mod-cm6 .cm-content .dataview.dataview-error{color:var(--text-muted)}body div.dataview-error-box{min-height:0;border:none;background-color:transparent;font-size:var(--table-text-size);border-radius:var(--radius-m);padding:15px 0;justify-content:flex-start}body div.dataview-error-box p{margin-block-start:0;margin-block-end:0;color:var(--text-faint)}.block-language-dataviewjs:has(.dataview-error-box) table.dataview{display:none}.trim-cols .markdown-preview-view .table-view-table>tbody>tr>td,.trim-cols .markdown-source-view.mod-cm6 .table-view-table>tbody>tr>td,.trim-cols .markdown-source-view.mod-cm6 .table-view-table>thead>tr>th{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}ul .dataview .task-list-basic-item:hover,ul .dataview .task-list-item:hover{background-color:transparent;box-shadow:none}body .dataview.result-group{padding-left:0}body .dataview .inline-field-standalone-value,body .dataview.inline-field-key,body .dataview.inline-field-value{font-family:var(--font-text);font-size:calc(var(--font-adaptive-normal) - 2px);background:0 0;color:var(--text-muted)}body .dataview.inline-field-key{padding:0}body .dataview .inline-field-standalone-value{padding:0}body .dataview.inline-field-key::after{margin-left:3px;content:"|";color:var(--background-modifier-border)}body .dataview.inline-field-value{padding:0 1px 0 3px}.markdown-preview-view .block-language-dataview table.calendar th{border:none;cursor:default;background-image:none}.markdown-preview-view .block-language-dataview table.calendar .day{font-size:var(--font-adaptive-small)}.database-plugin__navbar,.database-plugin__scroll-container,.database-plugin__table{width:100%}.dbfolder-table-container{--font-adaptive-normal:var(--table-text-size);--font-size-text:12px}.database-plugin__cell_size_wide .database-plugin__td{padding:.15rem}.database-plugin__table{border-spacing:0!important}.MuiAppBar-root{background-color:transparent!important}.workspace-leaf-content .view-content.dictionary-view-content{padding:0}div[data-type=dictionary-view] .contents{padding-bottom:2rem}div[data-type=dictionary-view] .results>.container{background-color:transparent;margin-top:0;max-width:none;padding:0 10px}div[data-type=dictionary-view] .error,div[data-type=dictionary-view] .errorDescription{text-align:left;font-size:var(--font-adaptive-small);padding:10px 12px 0;margin:0}div[data-type=dictionary-view] .results>.container h3{text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);font-size:var(--font-adaptive-smallest);font-weight:500;padding:5px 7px 0 2px;margin-bottom:6px}div[data-type=dictionary-view] .container .main{border-radius:0;background-color:transparent;font-size:var(--font-adaptive-smaller);line-height:1.3;color:var(--text-muted);padding:5px 0 0}div[data-type=dictionary-view] .main .definition{padding:10px;border:1px solid var(--background-modifier-border);border-radius:5px;margin:10px 0 5px;background-color:var(--background-primary)}div[data-type=dictionary-view] .main .definition:last-child{border:1px solid var(--background-modifier-border)}div[data-type=dictionary-view] .main .synonyms{padding:10px 0 0}div[data-type=dictionary-view] .main .synonyms p{margin:0}div[data-type=dictionary-view] .main .definition>blockquote{margin:0}div[data-type=dictionary-view] .main .label{color:var(--text-normal);margin-bottom:2px;font-size:var(--font-adaptive-smaller);font-weight:500}div[data-type=dictionary-view] .main .mark{color:var(--text-normal);background-color:var(--text-selection);box-shadow:none}div[data-type=dictionary-view] .main>.opener{font-size:var(--font-adaptive-small);color:var(--text-normal);padding-left:5px}body .excalidraw,body .excalidraw.theme--dark{--color-primary-light:var(--text-selection);--color-primary:var(--interactive-accent);--color-primary-darker:var(--interactive-accent-hover);--color-primary-darkest:var(--interactive-accent-hover);--ui-font:var(--font-interface);--island-bg-color:var(--background-secondary);--icon-fill-color:var(--text-normal);--button-hover:var(--background-modifier-hover);--button-gray-1:var(--background-modifier-hover);--button-gray-2:var(--background-modifier-hover);--focus-highlight-color:var(--background-modifier-border-focus);--default-bg-color:var(--background-primary);--default-border-color:var(--background-modifier-border);--input-border-color:var(--background-modifier-border);--link-color:var(--text-accent);--overlay-bg-color:rgba(255, 255, 255, 0.88);--text-primary-color:var(--text-normal)}.git-view-body .opener{text-transform:uppercase;letter-spacing:.05em;font-size:var(--font-adaptive-smallest);font-weight:500;padding:5px 7px 5px 10px;margin-bottom:6px}.git-view-body .file-view .opener{text-transform:none;letter-spacing:normal;font-size:var(--font-adaptive-smallest);font-weight:400;padding:initial;margin-bottom:0}.git-view-body .file-view .opener .collapse-icon{display:flex!important;margin-left:-7px}.git-view-body{margin-top:6px}.git-view-body .file-view{margin-left:4px}.git-view-body .file-view main:hover{color:var(--text-normal)}.git-view-body .file-view .tools .type{display:none!important}.git-view-body .file-view .tools{opacity:0;transition:opacity .1s}.git-view-body .file-view main:hover>.tools{opacity:1}.git-view-body .staged{margin-bottom:12px}.git-view-body .opener.open{color:var(--text-normal)}div[data-type=git-view] .search-input-container{margin-left:0;width:100%}.git-view-body .opener .collapse-icon{display:none!important}.git-view-body main{background-color:var(--background-primary)!important;width:initial!important}.git-view-body .file-view>main:not(.topLevel){margin-left:7px}div[data-type=git-view] .commit-msg{min-height:2.5em!important;height:2.5em!important;padding:6.5px 8px!important}div[data-type=git-view] .search-input-clear-button{bottom:5.5px}.mod-macos.hider-frameless .workspace-ribbon{border:none}.is-tablet.hider-ribbon{--ribbon-width:0px}.is-tablet.hider-ribbon .side-dock-ribbon{display:none}.hider-ribbon .workspace-ribbon{padding:0}:root{--hider-ribbon-display:none}.ribbon-bottom-left-hover:not(.is-mobile){--hider-ribbon-display:flex}.hider-ribbon .workspace-ribbon-collapse-btn{display:none}.hider-ribbon .workspace-ribbon.mod-right{pointer-events:none}.hider-ribbon .workspace-ribbon.mod-left{position:absolute;border-right:0px;margin:0;height:var(--header-height);overflow:visible;flex-basis:0;bottom:0;top:auto;display:var(--hider-ribbon-display)!important;flex-direction:row;z-index:17;opacity:0;transition:opacity .25s ease-in-out;filter:drop-shadow(2px 10px 30px rgba(0,0,0,.2));gap:0}.hider-ribbon .side-dock-actions,.hider-ribbon .side-dock-settings{flex-direction:row;display:var(--hider-ribbon-display);border-top:var(--border-width) solid var(--background-modifier-border);background:var(--background-secondary);margin:0;position:relative;gap:var(--size-2-2)}.hider-ribbon .side-dock-actions{padding-left:8px}.hider-ribbon .side-dock-settings{border-right:var(--border-width) solid var(--background-modifier-border);border-top-right-radius:var(--radius-m);padding:0 var(--size-2-2)}.hider-ribbon .workspace-ribbon.mod-left .side-dock-ribbon-action{display:var(--hider-ribbon-display);margin:7px 0 8px}.hider-ribbon .workspace-ribbon.mod-left:hover{opacity:1;transition:opacity .25s ease-in-out}.hider-ribbon .workspace-ribbon.mod-left .workspace-ribbon-collapse-btn{opacity:0}.hider-ribbon .workspace-split.mod-left-split{margin:0}.hider-ribbon .workspace-leaf-content .item-list{padding-bottom:40px}.popover.hover-editor{--folding-offset:10px}.theme-dark,.theme-light{--he-title-bar-inactive-bg:var(--background-secondary);--he-title-bar-inactive-pinned-bg:var(--background-secondary);--he-title-bar-active-pinned-bg:var(--background-secondary);--he-title-bar-active-bg:var(--background-secondary);--he-title-bar-inactive-fg:var(--text-muted);--he-title-bar-active-fg:var(--text-normal);--he-title-bar-font-size:14px}.theme-light{--popover-shadow:0px 2.7px 3.1px rgba(0, 0, 0, 0.032),0px 5.9px 8.7px rgba(0, 0, 0, 0.052),0px 10.4px 18.1px rgba(0, 0, 0, 0.071),0px 20px 40px rgba(0, 0, 0, 0.11)}.theme-dark{--popover-shadow:0px 2.7px 3.1px rgba(0, 0, 0, 0.081),0px 5.9px 8.7px rgba(0, 0, 0, 0.131),0px 10.4px 18.1px rgba(0, 0, 0, 0.18),0px 20px 40px rgba(0, 0, 0, 0.28)}.popover.hover-editor:not(.snap-to-viewport){--max-width:92%}.popover.hover-editor:not(.snap-to-viewport) .markdown-preview-view,.popover.hover-editor:not(.snap-to-viewport) .markdown-source-view .cm-content{font-size:90%}body .popover.hover-editor:not(.is-loaded){box-shadow:var(--popover-shadow)}body .popover.hover-editor:not(.is-loaded) .markdown-preview-view{padding:15px 0 0 0}body .popover.hover-editor:not(.is-loaded) .view-content{height:100%;background-color:var(--background-primary)}body .popover.hover-editor:not(.is-loaded) .view-actions{height:auto}body .popover.hover-editor:not(.is-loaded) .popover-content{border:1px solid var(--background-modifier-border-hover)}body .popover.hover-editor:not(.is-loaded) .popover-titlebar{padding:0 4px}body .popover.hover-editor:not(.is-loaded) .popover-titlebar .popover-title{padding-left:4px;letter-spacing:-.02em;font-weight:var(--title-weight)}body .popover.hover-editor:not(.is-loaded) .markdown-embed{height:auto;font-size:unset;line-height:unset}body .popover.hover-editor:not(.is-loaded) .markdown-embed .markdown-preview-view{padding:0}body .popover.hover-editor:not(.is-loaded).show-navbar .popover-titlebar{border-bottom:var(--border-width) solid var(--background-modifier-border)}body .popover.hover-editor:not(.is-loaded) .popover-action,body .popover.hover-editor:not(.is-loaded) .popover-header-icon{cursor:var(--cursor);margin:4px 0;padding:4px 3px;border-radius:var(--radius-m);color:var(--icon-color)}body .popover.hover-editor:not(.is-loaded) .popover-action.mod-pin-popover,body .popover.hover-editor:not(.is-loaded) .popover-header-icon.mod-pin-popover{padding:4px 2px}body .popover.hover-editor:not(.is-loaded) .popover-action svg,body .popover.hover-editor:not(.is-loaded) .popover-header-icon svg{opacity:var(--icon-muted)}body .popover.hover-editor:not(.is-loaded) .popover-action:hover,body .popover.hover-editor:not(.is-loaded) .popover-header-icon:hover{background-color:var(--background-modifier-hover);color:var(--icon-color-hover)}body .popover.hover-editor:not(.is-loaded) .popover-action:hover svg,body .popover.hover-editor:not(.is-loaded) .popover-header-icon:hover svg{opacity:1;transition:opacity .1s ease-in-out}body .popover.hover-editor:not(.is-loaded) .popover-action.is-active,body .popover.hover-editor:not(.is-loaded) .popover-header-icon.is-active{color:var(--icon-color)}body.minimal-dark-black.theme-dark,body.minimal-dark-tonal.theme-dark,body.minimal-light-tonal.theme-light,body.minimal-light-white.theme-light,body.theme-dark{--kanban-border:0px}body:not(.is-mobile) .kanban-plugin__grow-wrap>textarea:focus{box-shadow:none}body:not(.minimal-icons-off) .kanban-plugin svg.cross{height:14px;width:14px}body .kanban-plugin__icon>svg,body .kanban-plugin__lane-settings-button svg{width:18px;height:18px}body .kanban-plugin{--kanban-border:var(--border-width);--interactive-accent:var(--text-selection);--interactive-accent-hover:var(--background-modifier-hover);--text-on-accent:var(--text-normal);background-color:var(--background-primary)}body .kanban-plugin__markdown-preview-view{font-family:var(--font-text)}body .kanban-plugin__board>div{margin:0 auto}body .kanban-plugin__checkbox-label{color:var(--text-muted)}body .kanban-plugin__item-markdown ul{margin:0}body .kanban-plugin__item-content-wrapper{box-shadow:none}body .kanban-plugin__grow-wrap::after,body .kanban-plugin__grow-wrap>textarea{padding:0;border:0;border-radius:0}body .kanban-plugin__grow-wrap::after,body .kanban-plugin__grow-wrap>textarea,body .kanban-plugin__item-title p,body .kanban-plugin__markdown-preview-view{font-size:var(--font-ui-medium);line-height:1.3}body .kanban-plugin__item{background-color:var(--background-primary)}body .kanban-plugin__item-title-wrapper{align-items:center}body .kanban-plugin__lane-form-wrapper{border:1px solid var(--background-modifier-border)}body .kanban-plugin__lane-header-wrapper{border-bottom:0}body .kanban-plugin__lane-header-wrapper .kanban-plugin__grow-wrap>textarea,body .kanban-plugin__lane-input-wrapper .kanban-plugin__grow-wrap>textarea,body .kanban-plugin__lane-title p{background:0 0;color:var(--text-normal);font-size:var(--font-ui-medium);font-weight:500}body .kanban-plugin__item-input-wrapper .kanban-plugin__grow-wrap>textarea{padding:0;border-radius:0;height:auto}body .kanban-plugin__item-form .kanban-plugin__grow-wrap{background-color:var(--background-primary)}body .kanban-plugin__item-input-wrapper .kanban-plugin__grow-wrap>textarea::placeholder{color:var(--text-faint)}body .kanban-plugin__item .kanban-plugin__item-edit-archive-button,body .kanban-plugin__item button.kanban-plugin__item-edit-button,body .kanban-plugin__item-settings-actions>button,body .kanban-plugin__lane button.kanban-plugin__lane-settings-button,body .kanban-plugin__lane button.kanban-plugin__lane-settings-button.is-enabled,body .kanban-plugin__lane-action-wrapper>button{background:0 0;transition:color .1s ease-in-out}body .kanban-plugin__item .kanban-plugin__item-edit-archive-button:hover,body .kanban-plugin__item button.kanban-plugin__item-edit-button.is-enabled,body .kanban-plugin__item button.kanban-plugin__item-edit-button:hover,body .kanban-plugin__lane button.kanban-plugin__lane-settings-button.is-enabled,body .kanban-plugin__lane button.kanban-plugin__lane-settings-button:hover{color:var(--text-normal);transition:color .1s ease-in-out;background:0 0}body .kanban-plugin__new-lane-button-wrapper{position:fixed;bottom:30px}body .kanban-plugin__lane-items>.kanban-plugin__placeholder:only-child{border:1px dashed var(--background-modifier-border);height:2em}body .kanban-plugin__item-postfix-button-wrapper{align-self:flex-start}body .kanban-plugin__item button.kanban-plugin__item-postfix-button.is-enabled,body .kanban-plugin__item button.kanban-plugin__item-prefix-button.is-enabled,body .kanban-plugin__lane button.kanban-plugin__lane-settings-button.is-enabled{color:var(--text-muted)}body .kanban-plugin button{box-shadow:none;cursor:var(--cursor);height:auto}body .kanban-plugin__item button.kanban-plugin__item-postfix-button:hover,body .kanban-plugin__item button.kanban-plugin__item-prefix-button:hover,body .kanban-plugin__lane button.kanban-plugin__lane-settings-button:hover{background-color:var(--background-modifier-hover)}body .kanban-plugin__item-button-wrapper>button{color:var(--text-muted);font-weight:400;background:0 0;min-height:calc(var(--input-height) + 8px)}body .kanban-plugin__item-button-wrapper>button:hover{color:var(--text-normal);background:var(--background-modifier-hover)}body .kanban-plugin__item-button-wrapper>button:focus{box-shadow:none}body .kanban-plugin__item-button-wrapper{padding:1px 6px 5px;border-top:none}body .kanban-plugin__lane-setting-wrapper>div:last-child{border:none;margin:0}body .kanban-plugin.something-is-dragging{cursor:grabbing;cursor:-webkit-grabbing}body .kanban-plugin__item.is-dragging{box-shadow:0 5px 30px rgba(0,0,0,.15),0 0 0 2px var(--text-selection)}body .kanban-plugin__lane-items{border:var(--kanban-border) solid var(--background-modifier-border);padding:0 4px;margin:0;background-color:var(--background-secondary)}body .kanban-plugin__lane{background:0 0;padding:0;border:var(--border-width) solid transparent}body .kanban-plugin__lane.is-dragging{box-shadow:0 5px 30px rgba(0,0,0,.15);border:1px solid var(--background-modifier-border)}body .kanban-plugin__lane .kanban-plugin__item-button-wrapper{border-top-left-radius:8px;border-top-right-radius:8px;border-top:1px solid var(--background-modifier-border);border-bottom-width:0;padding:4px 4px 0 4px}body .kanban-plugin__lane.will-prepend .kanban-plugin__lane-items{border-radius:8px}body .kanban-plugin__lane.will-prepend .kanban-plugin__item-form{border-top:1px solid var(--background-modifier-border);border-radius:8px 8px 0 0;padding:4px 4px 0;border-bottom-width:0}body .kanban-plugin__lane.will-prepend .kanban-plugin__item-form+.kanban-plugin__lane-items{border-top-width:0;border-radius:0 0 8px 8px}body .kanban-plugin__lane.will-prepend .kanban-plugin__item-button-wrapper+.kanban-plugin__lane-items{border-top-width:0;border-radius:0 0 8px 8px}body .kanban-plugin__lane:not(.will-prepend) .kanban-plugin__item-button-wrapper,body .kanban-plugin__lane:not(.will-prepend) .kanban-plugin__item-form{border-top:none;border-radius:0 0 8px 8px}body .kanban-plugin__lane:not(.will-prepend) .kanban-plugin__item-button-wrapper{padding:0 4px 4px 4px;border-bottom-width:1px}body .kanban-plugin__lane:not(.will-prepend) .kanban-plugin__lane-items{border-bottom:none;border-top-width:1px;border-radius:8px 8px 0 0}body .kanban-plugin__item-form .kanban-plugin__item-input-wrapper{min-height:calc(var(--input-height) + 8px);display:flex;justify-content:center}body .kanban-plugin__item-button-wrapper,body .kanban-plugin__item-form{background-color:var(--background-secondary);border:var(--kanban-border) solid var(--background-modifier-border)}body .kanban-plugin__item-form{padding:0 4px 5px}body .kanban-plugin__markdown-preview-view ol,body .kanban-plugin__markdown-preview-view ol.contains-task-list .contains-task-list,body .kanban-plugin__markdown-preview-view ul,body .kanban-plugin__markdown-preview-view ul.contains-task-list .contains-task-list{padding-inline-start:1.8em!important}@media (max-width:400pt){.kanban-plugin__board{flex-direction:column!important}.kanban-plugin__lane{width:100%!important;margin-bottom:1rem!important}}body .cm-heading-marker{cursor:var(--cursor);padding-left:10px}.theme-light{--leaflet-buttons:var(--bg1);--leaflet-borders:rgba(0,0,0,0.1)}.theme-dark{--leaflet-buttons:var(--bg2);--leaflet-borders:rgba(255,255,255,0.1)}.leaflet-top{transition:top .1s linear}.mod-macos.minimal-focus-mode .mod-root .map-100 .markdown-preview-sizer.markdown-preview-section .el-lang-leaflet:nth-child(3) .leaflet-top{top:calc(18px + var(--ewt-traffic-light-y));transition:top .1s linear}body .leaflet-container{background-color:var(--background-secondary);font-family:var(--font-interface)}.map-100 .markdown-preview-sizer.markdown-preview-section .el-lang-leaflet:nth-child(3){margin-top:-16px}.leaflet-control-attribution{display:none}.leaflet-popup-content{margin:10px}.block-language-leaflet{border-radius:var(--radius-m);overflow:hidden;border:var(--border-width) solid var(--background-modifier-border)}.map-wide .block-language-leaflet{border-radius:var(--radius-l)}.map-max .block-language-leaflet{border-radius:var(--radius-xl)}.workspace-leaf-content[data-type=obsidian-leaflet-map-view] .block-language-leaflet{border-radius:0;border:none}.map-100 .block-language-leaflet{border-radius:0;border-left:none;border-right:none}.block-language-leaflet .leaflet-control-expandable-list .input-container .input-item>input{appearance:none}body .block-language-leaflet .leaflet-bar.disabled>a{background-color:transparent;opacity:.3}body .leaflet-touch .leaflet-bar a:first-child{border-top-left-radius:4px;border-top-right-radius:4px}body .leaflet-touch .leaflet-bar a:last-child{border-bottom-left-radius:4px;border-bottom-right-radius:4px}body .leaflet-control-layers-toggle{border-radius:4px}body .block-language-leaflet .leaflet-control-expandable,body .block-language-leaflet .leaflet-control-has-actions .control-actions.expanded,body .block-language-leaflet .leaflet-distance-control,body .leaflet-bar,body .leaflet-bar a,body .leaflet-control-layers-expanded,body .leaflet-control-layers-toggle{background-color:var(--leaflet-buttons);color:var(--text-muted);border:none;user-select:none}body .leaflet-bar a.leaflet-disabled,body .leaflet-bar a.leaflet-disabled:hover{background-color:var(--leaflet-buttons);color:var(--text-faint);opacity:.6;cursor:not-allowed}body .leaflet-control a{cursor:var(--cursor);color:var(--text-normal)}body .leaflet-bar a:hover{background-color:var(--background-modifier-hover);color:var(--text-normal);border:none}body .leaflet-touch .leaflet-control-layers{background-color:var(--leaflet-buttons)}body .leaflet-touch .leaflet-bar,body .leaflet-touch .leaflet-control-layers{border-radius:5px;box-shadow:2px 0 8px 0 rgba(0,0,0,.1);border:1px solid var(--ui1)}body .block-language-leaflet .leaflet-control-has-actions .control-actions{box-shadow:0;border:1px solid var(--ui1)}body .leaflet-control-expandable-list .leaflet-bar{box-shadow:none;border-radius:0}body .block-language-leaflet .leaflet-distance-control{padding:4px 10px;height:auto;cursor:var(--cursor)!important}body .block-language-leaflet .leaflet-marker-link-popup>.leaflet-popup-content-wrapper>*{font-size:var(--font-adaptive-small);font-family:var(--font-interface)}body .block-language-leaflet .leaflet-marker-link-popup>.leaflet-popup-content-wrapper{padding:4px 10px!important}.leaflet-marker-icon svg path{stroke:var(--background-primary);stroke-width:18px}.map-view-marker-name{font-weight:400}.workspace-leaf-content[data-type=map] .graph-controls{background-color:var(--background-primary)}body:not(.is-mobile):not(.plugin-sliding-panes-rotate-header) .workspace-split.mod-root .workspace-leaf-content[data-type=map] .view-header{position:fixed;background:0 0!important;width:100%;z-index:99}body:not(.plugin-sliding-panes-rotate-header) .workspace-leaf-content[data-type=map] .view-header-title{display:none}body:not(.is-mobile):not(.plugin-sliding-panes-rotate-header) .workspace-leaf-content[data-type=map] .view-actions{background:0 0}body:not(.is-mobile):not(.plugin-sliding-panes-rotate-header) .workspace-leaf-content[data-type=map] .view-content{height:100%}body:not(.is-mobile):not(.plugin-sliding-panes-rotate-header) .workspace-leaf-content[data-type=map] .leaflet-top.leaflet-right{top:var(--header-height)}.obsidian-metatable{--metatable-font-size:calc(var(--font-adaptive-normal) - 2px);--metatable-font-family:var(--font-interface);--metatable-background:transparent;--metatable-foreground:var(--text-faint);--metatable-key-background:transparent;--metatable-key-border-width:0;--metatable-key-border-color:transparent;--metatable-value-background:transparent;padding-bottom:.5rem}.obsidian-metatable::part(key),.obsidian-metatable::part(value){border-bottom:0 solid var(--background-modifier-border);padding:.1rem 0;text-overflow:ellipsis;overflow:hidden}.obsidian-metatable::part(key){font-weight:400;color:var(--tx3);font-size:calc(var(--font-adaptive-normal) - 2px)}.obsidian-metatable::part(value){font-size:calc(var(--font-adaptive-normal) - 2px);color:var(--tx1)}body .NLT__header-menu-header-container{font-size:85%}body .NLT__button{background:0 0;box-shadow:none;color:var(--text-muted)}body .NLT__button:active,body .NLT__button:focus,body .NLT__button:hover{background:0 0;color:var(--text-normal);box-shadow:none}.NLT__app .NLT__button{background:0 0;border:1px solid var(--background-modifier-border);box-shadow:0 .5px 1px 0 var(--btn-shadow-color);color:var(--text-muted);padding:2px 8px}.NLT__app .NLT__button:active,.NLT__app .NLT__button:focus,.NLT__app .NLT__button:hover{background:0 0;border-color:var(--background-modifier-border-hover);color:var(--text-normal);box-shadow:0 .5px 1px 0 var(--btn-shadow-color)}.NLT__td:nth-last-child(2),.NLT__th:nth-last-child(2){border-right:0}.NLT__app .NLT__td:last-child,.NLT__app .NLT__th:last-child{padding-right:0}.NLT__app .NLT__th{background-image:none!important}.NLT__app th.NLT__selectable:hover{background-color:transparent;cursor:var(--cursor)}.NLT__menu .NLT__menu-container{background-color:var(--background-secondary)}.NLT__menu .NLT__header-menu-item{font-size:var(--font-adaptive-small)}.NLT__menu .NLT__header-menu{padding:6px 4px}.NLT__menu .NLT__drag-menu{font-size:var(--font-adaptive-small);padding:6px 4px}.NLT__menu svg{color:var(--text-faint);margin-right:6px}.NLT__menu .NLT__selectable:hover,.NLT__menu .NLT__selected{background:0 0}.NLT__menu .NLT__selected>.NLT__selectable{background-color:var(--background-modifier-hover)}.NLT__menu .NLT__selectable{cursor:var(--cursor)}.NLT__menu div.NLT__selectable{min-width:110px;border-radius:var(--radius-m);padding:3px 8px 3px 4px;margin:1px 2px 1px;cursor:var(--cursor);height:auto;line-height:20px}.NLT__menu div.NLT__selectable:hover{background-color:var(--background-modifier-hover)}.NLT__menu .NLT__textarea{font-size:var(--table-text-size)}.NLT__tfoot tr:hover td{background-color:transparent}.modal .quickAddPrompt>h1,.modal .quickAddYesNoPrompt h1{margin-top:0;text-align:left!important;font-size:var(--h1);font-weight:600}.modal .quickAddYesNoPrompt p{text-align:left!important}.modal .quickAddYesNoPrompt button{font-size:var(--font-ui-small)}.modal .yesNoPromptButtonContainer{font-size:var(--font-ui-small);justify-content:flex-end}.quickAddModal .modal-content{padding:20px 2px 5px}div#quick-explorer{display:flex}div#quick-explorer span.explorable{align-items:center;color:var(--text-muted);display:flex;font-size:var(--font-adaptive-smaller);line-height:16px}div#quick-explorer span.explorable:last-of-type{font-size:var(--font-adaptive-smaller)}div#quick-explorer span.explorable.selected,div#quick-explorer span.explorable:hover{background-color:unset!important}div#quick-explorer span.explorable.selected .explorable-name,div#quick-explorer span.explorable:hover .explorable-name{color:var(--text-normal)}div#quick-explorer span.explorable.selected .explorable-separator,div#quick-explorer span.explorable:hover .explorable-separator{color:var(--text-normal)}div#quick-explorer .explorable-name{padding:0 4px;border-radius:4px}div#quick-explorer .explorable-separator::before{content:"\00a0›"!important;font-size:1.3em;font-weight:400;margin:0}body:not(.colorful-active) .qe-popup-menu .menu-item:not(.is-disabled):not(.is-label).selected,body:not(.colorful-active) .qe-popup-menu .menu-item:not(.is-disabled):not(.is-label):hover{background-color:var(--background-modifier-hover);color:var(--text-normal)}body:not(.colorful-active) .qe-popup-menu .menu-item:not(.is-disabled):not(.is-label).selected .menu-item-icon,body:not(.colorful-active) .qe-popup-menu .menu-item:not(.is-disabled):not(.is-label):hover .menu-item-icon{color:var(--text-normal)}.workspace-leaf-content[data-type=recent-files] .view-content{padding-top:10px}.mod-root .workspace-leaf-content[data-type=reminder-list] main{max-width:var(--max-width);margin:0 auto;padding:0}.modal .reminder-actions .later-select{font-size:var(--font-settings-small);vertical-align:bottom;margin-left:3px}.modal .reminder-actions .icon{line-height:1}:not(.mod-root) .workspace-leaf-content[data-type=reminder-list] main{margin:0 auto;padding:15px}:not(.mod-root) .workspace-leaf-content[data-type=reminder-list] main .group-name{font-weight:500;color:var(--text-muted);font-size:var(--font-adaptive-small);padding-bottom:.5em;border-bottom:1px solid var(--background-modifier-border)}:not(.mod-root) .workspace-leaf-content[data-type=reminder-list] main .reminder-group .reminder-list-item{line-height:1.3;font-size:var(--font-adaptive-small)}:not(.mod-root) .workspace-leaf-content[data-type=reminder-list] main .reminder-group .no-reminders{color:var(--text-faint)}:not(.mod-root) .workspace-leaf-content[data-type=reminder-list] main .reminder-group .reminder-time{font-family:var(--font-text);font-size:var(--font-adaptive-small)}:not(.mod-root) .workspace-leaf-content[data-type=reminder-list] main .reminder-group .reminder-file{color:var(--text-faint)}body .modal .dtchooser{background-color:transparent}body .modal .dtchooser .reminder-calendar .year-month{font-weight:400;font-size:var(--font-adaptive-normal);padding-bottom:10px}body .modal .dtchooser .reminder-calendar .year-month .month,body .modal .dtchooser .reminder-calendar .year-month .year{color:var(--text-normal)}body .modal .dtchooser .reminder-calendar .year-month .month-nav:first-child{background-color:currentColor;-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M12.707 5.293a1 1 0 010 1.414L9.414 10l3.293 3.293a1 1 0 01-1.414 1.414l-4-4a1 1 0 010-1.414l4-4a1 1 0 011.414 0z' clip-rule='evenodd' /%3E%3C/svg%3E")}body .modal .dtchooser .reminder-calendar .year-month .month-nav:last-child{background-color:currentColor;-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z' clip-rule='evenodd' /%3E%3C/svg%3E")}body .modal .dtchooser .reminder-calendar .year-month .month-nav{-webkit-mask-size:20px 20px;-webkit-mask-repeat:no-repeat;-webkit-mask-position:50% 50%;color:var(--text-faint);cursor:var(--cursor);border-radius:var(--radius-m);padding:0;width:30px;display:inline-block}body .modal .dtchooser .reminder-calendar .year-month .month-nav:hover{color:var(--text-muted)}body .modal .dtchooser .reminder-calendar th{padding:.5em 0;font-size:var(--font-adaptive-smallest);font-weight:500;text-transform:uppercase;letter-spacing:.1em}body .modal .dtchooser .reminder-calendar .calendar-date{transition:background-color .1s ease-in;padding:.3em 0;border-radius:var(--radius-m)}body .modal .dtchooser .reminder-calendar .calendar-date.is-selected,body .modal .dtchooser .reminder-calendar .calendar-date:hover{transition:background-color .1s ease-in;background-color:var(--background-modifier-hover)!important}body .modal .dtchooser .reminder-calendar .calendar-date.is-selected{font-weight:var(--bold-weight);color:var(--text-accent)!important}body .markdown-preview-view th,body .markdown-source-view.mod-cm6 .dataview.table-view-table thead.table-view-thead tr th,body .table-view-table>thead>tr>th{cursor:var(--cursor);background-image:none}.markdown-source-view.mod-cm6 th{background-repeat:no-repeat;background-position:right}.style-settings-container[data-level="2"]{background:var(--background-secondary);border:1px solid var(--ui1);border-radius:5px;padding:10px 20px;margin:2px 0 2px -20px}.workspace-leaf-content[data-type=style-settings] .view-content{padding:var(--size-4-4) 0}.workspace-leaf-content[data-type=style-settings] .view-content>div{width:var(--line-width);max-width:var(--max-width);margin:0 auto}.workspace-leaf-content[data-type=style-settings] .style-settings-heading[data-level="0"] .setting-item-name{padding-left:17px}.workspace-leaf-content[data-type=style-settings] .setting-item{max-width:100%;margin:0 auto}.workspace-leaf-content[data-type=style-settings] .setting-item-name{position:relative}.workspace-leaf-content[data-type=style-settings] .style-settings-collapse-indicator{position:absolute;left:0}.setting-item-heading.style-settings-heading,.style-settings-container .style-settings-heading{cursor:var(--cursor)}.modal.mod-settings .setting-item .pickr button.pcr-button{box-shadow:none;border-radius:40px;height:24px;width:24px}.setting-item .pickr .pcr-button:after,.setting-item .pickr .pcr-button:before{border-radius:40px;box-shadow:none;border:none}.setting-item.setting-item-heading.style-settings-heading.is-collapsed{border-bottom:1px solid var(--background-modifier-border)}.setting-item.setting-item-heading.style-settings-heading{border:0;padding:10px 0 5px;margin-bottom:0}.setting-item .style-settings-export,.setting-item .style-settings-import{text-decoration:none;font-size:var(--font-ui-small);font-weight:500;color:var(--text-muted);margin:0;padding:2px 8px;border-radius:5px;cursor:var(--cursor)}.setting-item .style-settings-export:hover,.setting-item .style-settings-import:hover{background-color:var(--background-modifier-hover);color:var(--text-normal);cursor:var(--cursor)}.mod-root .workspace-leaf-content[data-type=style-settings] .style-settings-container .setting-item:not(.setting-item-heading){flex-direction:row;align-items:center;padding:.5em 0}.workspace-split:not(.mod-root) .workspace-leaf-content[data-type=style-settings] .setting-item-name{font-size:var(--font-adaptive-smaller)}.themed-color-wrapper>div+div{margin-top:0;margin-left:6px}.theme-light .themed-color-wrapper>.theme-light{background-color:transparent}.theme-light .themed-color-wrapper>.theme-dark{background-color:rgba(0,0,0,.8)}.theme-dark .themed-color-wrapper>.theme-dark{background-color:transparent}@media (max-width:400pt){.workspace-leaf-content[data-type=style-settings] .setting-item-name{font-size:var(--font-adaptive-small)}.workspace-leaf-content[data-type=style-settings] .setting-item-info:has(.search-input-container){width:100%;margin-right:0}}body .todoist-query-title{display:inline;font-size:var(--h4);font-variant:var(--h4-variant);letter-spacing:.02em;color:var(--h4-color);font-weight:var(--h4-weight);font-style:var(--h4-style)}body .is-live-preview .block-language-todoist{padding-left:0}ul.todoist-task-list>li.task-list-item .task-list-item-checkbox{margin:0}body .todoist-refresh-button{display:inline;float:right;background:0 0;padding:5px 6px 0;margin-right:0}body .is-live-preview .todoist-refresh-button{margin-right:30px}body .todoist-refresh-button:hover{box-shadow:none;background-color:var(--background-modifier-hover)}.todoist-refresh-button svg{width:15px;height:15px;opacity:var(--icon-muted)}ul.todoist-task-list{margin-left:-.25em}.is-live-preview ul.todoist-task-list{padding-left:0;margin-left:.5em;margin-block-start:0;margin-block-end:0}.contains-task-list.todoist-task-list .task-metadata{font-size:var(--font-adaptive-small);display:flex;color:var(--text-muted);justify-content:space-between;margin-left:.1em;margin-bottom:.25rem}.is-live-preview .contains-task-list.todoist-task-list .task-metadata{padding-left:calc(var(--checkbox-size) + .6em)}.todoist-task-list .task-date.task-overdue{color:var(--color-orange)}body .todoist-p1>input[type=checkbox]{border:1px solid var(--color-red)}body .todoist-p1>input[type=checkbox]:hover{opacity:.8}body .todoist-p2>input[type=checkbox]{border:1px solid var(--color-yellow)}body .todoist-p2>input[type=checkbox]:hover{opacity:.8}body .todoist-p3>input[type=checkbox]{border:1px solid var(--color-blue)}body .todoist-p3>input[type=checkbox]:hover{opacity:.8}body.theme-light{--color-axis-label:var(--tx1);--color-tick-label:var(--tx2);--color-dot-fill:var(--ax1);--color-line:var(--ui1)}.tracker-axis-label{font-family:var(--font-interface)}.tracker-axis{color:var(--ui2)}.tabs-manager .chat-view{--assistant-message-color:var(--background-primary);--padding-md:var(--size-4-2) var(--size-4-3);--padding-lg:var(--size-4-3) var(--size-4-3);--chat-box-color:var(--background-primary)}.tabs-manager .chat-view .ow-dialogue-timeline{padding:var(--size-4-4) var(--size-4-3) var(--size-4-8)}.tabs-manager .chat-view .ow-dialogue-timeline .ow-message-bubble .ow-content-wrapper{box-shadow:none;border-color:var(--background-modifier-border);border-radius:var(--radius-m)}.tabs-manager .chat-view .ow-dialogue-timeline .ow-message-bubble.ow-user-bubble .ow-content-wrapper{border-width:0;background-color:var(--interactive-accent)}.tabs-manager .chat-view .input-area .input-form .chat-box{border-radius:0;box-shadow:none;grid-row:1;grid-column:1/3;height:100px;border:none;padding:var(--size-4-3) var(--size-4-4) var(--size-4-2)}.tabs-manager .chat-view .input-area .input-form .chat-box:hover{height:100px}.tabs-manager .chat-view .input-area{padding:0;gap:0}.tabs-manager .chat-view .header{border-bottom:1px solid var(--background-modifier-border)}.tabs-manager .chat-view .input-form{border-top:1px solid var(--background-modifier-border)}.tabs-manager .chat-view .input-area .input-form .chat-box .info-bar span{color:var(--text-faint)}.tabs-manager .chat-view .input-area .input-form .btn-new-chat{display:none}.zoom-plugin-header{--link-color:var(--text-normal);--link-decoration:none;font-size:var(--font-ui-small);padding:0;justify-content:center;margin:var(--size-4-2) auto;max-width:var(--max-width)}.zoom-plugin-header>.zoom-plugin-title{text-decoration:none;max-width:15em;overflow:hidden}.zoom-plugin-header>.zoom-plugin-delimiter{color:var(--text-faint);padding:0 var(--size-4-1)}.theme-dark.minimal-atom-dark{--color-red-rgb:225,109,118;--color-orange-rgb:209,154,102;--color-yellow-rgb:206,193,103;--color-green-rgb:152,195,121;--color-cyan-rgb:88,182,194;--color-blue-rgb:98,175,239;--color-purple-rgb:198,120,222;--color-pink-rgb:225,109,118;--color-red:#e16d76;--color-orange:#d19a66;--color-yellow:#cec167;--color-green:#98c379;--color-cyan:#58b6c2;--color-blue:#62afef;--color-purple:#c678de;--color-pink:#e16d76}.theme-light.minimal-atom-light{--color-red-rgb:228,87,73;--color-orange-rgb:183,107,2;--color-yellow-rgb:193,131,2;--color-green-rgb:80,161,80;--color-cyan-rgb:13,151,179;--color-blue-rgb:98,175,239;--color-purple-rgb:166,38,164;--color-pink-rgb:228,87,73;--color-red:#e45749;--color-orange:#b76b02;--color-yellow:#c18302;--color-green:#50a150;--color-cyan:#0d97b3;--color-blue:#62afef;--color-purple:#a626a4;--color-pink:#e45749}.theme-light.minimal-atom-light{--base-h:106;--base-s:0%;--base-l:98%;--accent-h:231;--accent-s:76%;--accent-l:62%;--bg1:#fafafa;--bg2:#eaeaeb;--bg3:rgba(0,0,0,.1);--ui1:#dbdbdc;--ui2:#d8d8d9;--tx1:#232324;--tx2:#8e8e90;--tx3:#a0a1a8;--hl1:rgba(180,180,183,0.3);--hl2:rgba(209,154,102,0.35)}.theme-light.minimal-atom-light.minimal-light-white{--bg3:#eaeaeb}.theme-dark.minimal-atom-dark,.theme-light.minimal-atom-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-atom-light.minimal-light-contrast .titlebar,.theme-light.minimal-atom-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-atom-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-atom-light.minimal-light-contrast.minimal-status-off .status-bar{--base-h:220;--base-s:12%;--base-l:18%;--accent-h:220;--accent-s:86%;--accent-l:65%;--bg1:#282c34;--bg2:#21252c;--bg3:#3a3f4b;--divider-color:#181a1f;--tab-outline-color:#181a1f;--tx1:#d8dae1;--tx2:#898f9d;--tx3:#5d6370;--hl1:rgba(114,123,141,0.3);--hl2:rgba(209,154,102,0.3);--sp1:#fff}.theme-dark.minimal-atom-dark.minimal-dark-black{--base-d:5%;--bg3:#282c34;--divider-color:#282c34;--tab-outline-color:#282c34}.theme-light.minimal-ayu-light{--color-red-rgb:230,80,80;--color-orange-rgb:250,141,62;--color-yellow-rgb:242,174,73;--color-green-rgb:108,191,67;--color-cyan-rgb:76,191,153;--color-blue-rgb:57,158,230;--color-purple-rgb:163,122,204;--color-pink-rgb:255,115,131;--color-red:#e65050;--color-orange:#fa8d3e;--color-yellow:#f2ae49;--color-green:#6CBF43;--color-cyan:#4cbf99;--color-blue:#399ee6;--color-purple:#a37acc;--color-pink:#ff7383}.theme-dark.minimal-ayu-dark{--color-red-rgb:255,102,102;--color-orange-rgb:250,173,102;--color-yellow-rgb:255,209,55;--color-green-rgb:135,217,108;--color-cyan-rgb:149,230,203;--color-blue-rgb:115,208,255;--color-purple-rgb:223,191,255;--color-pink-rgb:242,121,131;--color-red:#ff6666;--color-orange:#ffad66;--color-yellow:#ffd137;--color-green:#87D96C;--color-cyan:#95e6cb;--color-blue:#73d0ff;--color-purple:#dfbfff;--color-pink:#f27983}.theme-light.minimal-ayu-light{--base-h:210;--base-s:17%;--base-l:98%;--accent-h:36;--accent-s:100%;--accent-l:50%;--bg1:#fff;--bg2:#f8f9fa;--bg3:rgba(209,218,224,0.5);--ui1:#E6EAED;--tx1:#5C6165;--tx2:#8A9199;--tx3:#AAAEB0;--hl1:rgba(3,91,214,0.15)}.theme-dark.minimal-ayu-dark,.theme-light.minimal-ayu-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-ayu-light.minimal-light-contrast .titlebar,.theme-light.minimal-ayu-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-ayu-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-ayu-light.minimal-light-contrast.minimal-status-off .status-bar{--base-h:222;--base-s:22%;--base-l:15%;--accent-h:35;--accent-s:100%;--accent-l:60%;--bg1:#232937;--bg2:#1E2431;--bg3:rgba(51,61,80,0.5);--ui1:#333C4A;--ui2:#333C4A;--ui3:#333C4A;--tx1:#cccac2;--tx2:#707A8C;--tx3:#495063;--hl1:rgba(64,159,255,0.25)}.theme-dark.minimal-ayu-dark.minimal-dark-black{--accent-h:40;--accent-s:75%;--accent-l:61%;--bg3:#0E1017;--tx1:#BFBDB6;--divider-color:#11151C;--tab-outline-color:#11151C}.theme-light.minimal-catppuccin-light{--color-red-rgb:230,69,83;--color-orange-rgb:254,100,12;--color-yellow-rgb:223,142,29;--color-green-rgb:64,160,43;--color-cyan-rgb:23,146,154;--color-blue-rgb:33,102,246;--color-purple-rgb:137,56,239;--color-pink-rgb:234,119,203;--color-red:#E64553;--color-orange:#FE640C;--color-yellow:#DF8E1D;--color-green:#40A02B;--color-cyan:#17929A;--color-blue:#2166F6;--color-purple:#8938EF;--color-pink:#EA77CB}.theme-dark.minimal-catppuccin-dark{--color-red-rgb:235,153,156;--color-orange-rgb:239,160,118;--color-yellow-rgb:229,200,144;--color-green-rgb:166,209,138;--color-cyan-rgb:129,200,190;--color-blue-rgb:140,170,238;--color-purple-rgb:202,158,230;--color-pink-rgb:244,185,229;--color-red:#EB999C;--color-orange:#EFA076;--color-yellow:#E5C890;--color-green:#A6D18A;--color-cyan:#81C8BE;--color-blue:#8CAAEE;--color-purple:#CA9EE6;--color-pink:#F4B9E5}.theme-light.minimal-catppuccin-light{--base-h:228;--base-s:20%;--base-l:95%;--accent-h:11;--accent-s:59%;--accent-l:67%;--bg1:#F0F1F5;--bg2:#DCE0E8;--bg3:hsla(228,11%,65%,.25);--ui1:#CCD0DA;--ui2:#BCC0CC;--ui3:#ACB0BE;--tx1:#4D4F69;--tx2:#5D5F77;--tx3:#8D8FA2;--hl1:rgba(172,176,190,.3);--hl2:rgba(223,142,29,.3)}.theme-light.minimal-catppuccin-light.minimal-light-tonal{--bg2:#DCE0E8}.theme-light.minimal-catppuccin-light.minimal-light-white{--bg3:#F0F1F5;--ui1:#DCE0E8}.theme-dark.minimal-catppuccin-dark,.theme-light.minimal-catppuccin-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-catppuccin-light.minimal-light-contrast .titlebar,.theme-light.minimal-catppuccin-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-catppuccin-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-catppuccin-light.minimal-light-contrast.minimal-status-off .status-bar{--base-h:229;--base-s:19%;--base-l:23%;--accent-h:10;--accent-s:57%;--accent-l:88%;--bg1:#303446;--bg2:#242634;--bg3:hsla(229,13%,52%,0.25);--ui1:#41455A;--ui2:#51576D;--ui3:#626880;--tx1:#C6D0F5;--tx2:#A6ADCE;--tx3:#848BA7;--sp1:#242634;--hl1:rgba(98,104,128,.5);--hl2:rgba(223,142,29,.4)}.theme-dark.minimal-catppuccin-dark.minimal-dark-black{--ui1:#303446;--hl2:rgba(223,142,29,.5)}.theme-dark.minimal-dracula-dark{--color-red-rgb:255,85,85;--color-orange-rgb:255,184,108;--color-yellow-rgb:241,250,140;--color-green-rgb:80,250,123;--color-cyan-rgb:139,233,253;--color-blue-rgb:98,114,164;--color-purple-rgb:189,147,249;--color-pink-rgb:255,121,198;--color-red:#ff5555;--color-orange:#ffb86c;--color-yellow:#f1fa8c;--color-green:#50fa7b;--color-cyan:#8be9fd;--color-blue:#6272a4;--color-purple:#bd93f9;--color-pink:#ff79c6}.theme-dark.minimal-dracula-dark,.theme-light.minimal-dracula-light.minimal-light-contrast .titlebar,.theme-light.minimal-dracula-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-dracula-light.minimal-light-contrast.minimal-status-off .status-bar{--base-h:232;--base-s:16%;--base-l:19%;--accent-h:265;--accent-s:89%;--accent-l:78%;--bg1:#282a37;--bg2:#21222c;--ui2:#44475a;--ui3:#6272a4;--tx1:#f8f8f2;--tx2:#949FBE;--tx3:#6272a4;--hl1:rgba(134, 140, 170, 0.3);--hl2:rgba(189, 147, 249, 0.35)}.theme-dark.minimal-dracula-dark.minimal-dark-black{--ui1:#282a36}.theme-light.minimal-everforest-light{--color-red-rgb:248,85,82;--color-orange-rgb:245,125,38;--color-yellow-rgb:223,160,0;--color-green-rgb:141,161,1;--color-cyan-rgb:53,167,124;--color-blue-rgb:56,148,196;--color-purple-rgb:223,105,186;--color-pink-rgb:223,105,186;--color-red:#f85552;--color-orange:#f57d26;--color-yellow:#dfa000;--color-green:#8da101;--color-cyan:#35a77c;--color-blue:#3795C5;--color-purple:#df69ba;--color-pink:#df69ba}.theme-dark.minimal-everforest-dark{--color-red-rgb:230,126,128;--color-orange-rgb:230,152,117;--color-yellow-rgb:219,188,127;--color-green-rgb:167,192,128;--color-cyan-rgb:131,192,146;--color-blue-rgb:127,187,179;--color-purple-rgb:223,105,186;--color-pink-rgb:223,105,186;--color-red:#e67e80;--color-orange:#e69875;--color-yellow:#dbbc7f;--color-green:#a7c080;--color-cyan:#83c092;--color-blue:#7fbbb3;--color-purple:#d699b6;--color-pink:#d699b6}.theme-light.minimal-everforest-light{--base-h:44;--base-s:87%;--base-l:94%;--accent-h:83;--accent-s:36%;--accent-l:53%;--bg1:#fdf6e3;--bg2:#efebd4;--bg3:rgba(226,222,198,.5);--ui1:#e0dcc7;--ui2:#bec5b2;--ui3:#bec5b2;--tx1:#5C6A72;--tx2:#829181;--tx3:#a6b0a0;--hl1:rgba(198,214,152,.4);--hl2:rgba(222,179,51,.3)}.theme-light.minimal-everforest-light.minimal-light-tonal{--bg2:#fdf6e3}.theme-light.minimal-everforest-light.minimal-light-white{--bg3:#f3efda;--ui1:#edead5}.theme-dark.minimal-everforest-dark,.theme-light.minimal-everforest-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-everforest-light.minimal-light-contrast .titlebar,.theme-light.minimal-everforest-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-everforest-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-everforest-light.minimal-light-contrast.minimal-status-off .status-bar{--base-h:203;--base-s:15%;--base-l:23%;--accent-h:81;--accent-s:34%;--accent-l:63%;--bg1:#2d353b;--bg2:#232a2e;--bg3:rgba(71,82,88,0.5);--ui1:#475258;--ui2:#4f585e;--ui3:#525c62;--tx1:#d3c6aa;--tx2:#9da9a0;--tx3:#7a8478;--hl1:rgba(134,70,93,.5);--hl2:rgba(147,185,96,.3)}.theme-dark.minimal-everforest-dark.minimal-dark-black{--hl1:rgba(134,70,93,.4);--ui1:#2b3339}.theme-dark.minimal-gruvbox-dark,.theme-light.minimal-gruvbox-light{--color-red-rgb:204,36,29;--color-orange-rgb:214,93,14;--color-yellow-rgb:215,153,33;--color-green-rgb:152,151,26;--color-cyan-rgb:104,157,106;--color-blue-rgb:69,133,136;--color-purple-rgb:177,98,134;--color-pink-rgb:177,98,134;--color-red:#cc241d;--color-orange:#d65d0e;--color-yellow:#d79921;--color-green:#98971a;--color-cyan:#689d6a;--color-blue:#458588;--color-purple:#b16286;--color-pink:#b16286}.theme-light.minimal-gruvbox-light{--base-h:49;--base-s:92%;--base-l:89%;--accent-h:24;--accent-s:88%;--accent-l:45%;--bg1:#fcf2c7;--bg2:#f2e6bd;--bg3:#ebd9b3;--ui1:#ebdbb2;--ui2:#d5c4a1;--ui3:#bdae93;--tx1:#282828;--tx2:#7c7065;--tx3:#a89a85;--hl1:rgba(192,165,125,.3);--hl2:rgba(215,153,33,.4)}.theme-light.minimal-gruvbox-light.minimal-light-tonal{--bg2:#fcf2c7}.theme-light.minimal-gruvbox-light.minimal-light-white{--bg3:#faf5d7;--ui1:#f2e6bd}.theme-dark.minimal-gruvbox-dark,.theme-light.minimal-gruvbox-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-gruvbox-light.minimal-light-contrast .titlebar,.theme-light.minimal-gruvbox-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-gruvbox-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-gruvbox-light.minimal-light-contrast.minimal-status-off .status-bar{--accent-h:24;--accent-s:88%;--accent-l:45%;--bg1:#282828;--bg2:#1e2021;--bg3:#3d3836;--bg3:rgba(62,57,55,0.5);--ui1:#3c3836;--ui2:#504945;--ui3:#665c54;--tx1:#fbf1c7;--tx2:#bdae93;--tx3:#7c6f64;--hl1:rgba(173,149,139,0.3);--hl2:rgba(215,153,33,.4)}.theme-dark.minimal-gruvbox-dark.minimal-dark-black{--hl1:rgba(173,149,139,0.4);--ui1:#282828}.theme-dark.minimal-macos-dark,.theme-light.minimal-macos-light{--color-red-rgb:255,59,49;--color-orange-rgb:255,149,2;--color-yellow-rgb:255,204,0;--color-green-rgb:42,205,65;--color-cyan-rgb:2,199,190;--color-blue-rgb:2,122,255;--color-purple-rgb:176,81,222;--color-pink-rgb:255,46,85;--color-red:#ff3b31;--color-orange:#ff9502;--color-yellow:#ffcc00;--color-green:#2acd41;--color-cyan:#02c7be;--color-blue:#027aff;--color-purple:#b051de;--color-pink:#ff2e55}.theme-light.minimal-macos-light{--base-h:106;--base-s:0%;--base-l:94%;--accent-h:212;--accent-s:100%;--accent-l:50%;--bg1:#fff;--bg2:#f0f0f0;--bg3:rgba(0,0,0,.1);--ui1:#e7e7e7;--tx1:#454545;--tx2:#808080;--tx3:#b0b0b0;--hl1:#b3d7ff}.theme-light.minimal-macos-light.minimal-light-tonal{--bg1:#f0f0f0;--bg2:#f0f0f0}.theme-dark.minimal-macos-dark,.theme-light.minimal-macos-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-macos-light.minimal-light-contrast .titlebar,.theme-light.minimal-macos-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-macos-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-macos-light.minimal-light-contrast.minimal-status-off .status-bar{--base-h:106;--base-s:0%;--base-l:12%;--accent-h:212;--accent-s:100%;--accent-l:50%;--bg1:#1e1e1e;--bg2:#282828;--bg3:rgba(255,255,255,0.11);--divider-color:#000;--tab-outline-color:#000;--ui1:#373737;--ui2:#515151;--ui3:#595959;--tx1:#dcdcdc;--tx2:#8c8c8c;--tx3:#686868;--hl1:rgba(98,169,252,0.5);--sp1:#fff}.theme-dark.minimal-macos-dark.minimal-dark-black{--divider-color:#1e1e1e;--tab-outline-color:#1e1e1e}.theme-dark.minimal-nord-dark,.theme-light.minimal-nord-light{--color-red-rgb:191,97,106;--color-orange-rgb:208,138,112;--color-yellow-rgb:235,203,139;--color-green-rgb:163,190,140;--color-cyan-rgb:136,192,208;--color-blue-rgb:129,161,193;--color-purple-rgb:180,142,173;--color-pink-rgb:180,142,173;--color-red:#BF616A;--color-orange:#D08770;--color-yellow:#EBCB8B;--color-green:#A3BE8C;--color-cyan:#88C0D0;--color-blue:#81A1C1;--color-purple:#B48EAD;--color-pink:#B48EAD}.theme-light.minimal-nord-light{--base-h:221;--base-s:27%;--base-l:94%;--accent-h:213;--accent-s:32%;--accent-l:52%;--bg1:#fff;--bg2:#eceff4;--bg3:rgba(157,174,206,0.25);--ui1:#d8dee9;--ui2:#BBCADC;--ui3:#81a1c1;--tx1:#2e3440;--tx2:#7D8697;--tx3:#ADB1B8;--hl2:rgba(208, 135, 112, 0.35)}.theme-dark.minimal-nord-dark,.theme-light.minimal-nord-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-nord-light.minimal-light-contrast .titlebar,.theme-light.minimal-nord-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-nord-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-nord-light.minimal-light-contrast.minimal-status-off .status-bar{--base-h:220;--base-s:16%;--base-l:22%;--accent-h:213;--accent-s:32%;--accent-l:52%;--bg1:#2e3440;--bg2:#3b4252;--bg3:rgba(135,152,190,0.15);--ui1:#434c5e;--ui2:#58647b;--ui3:#58647b;--tx1:#d8dee9;--tx2:#9eafcc;--tx3:#4c566a;--hl1:rgba(129,142,180,0.3);--hl2:rgba(208, 135, 112, 0.35)}.theme-dark.minimal-nord-dark.minimal-dark-black{--ui1:#2e3440}.theme-light.minimal-notion-light{--base-h:39;--base-s:18%;--base-d:96%;--accent-h:197;--accent-s:71%;--accent-l:52%;--bg2:#f7f6f4;--bg3:#e8e7e4;--ui1:#ededec;--ui2:#dbdbda;--ui3:#aaa9a5;--tx1:#37352f;--tx2:#72706c;--tx3:#aaa9a5;--hl1:rgba(131,201,229,0.3);--link-weight:500}.theme-dark.minimal-notion-dark,.theme-light.minimal-notion-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-notion-light.minimal-light-contrast .titlebar,.theme-light.minimal-notion-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-notion-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-notion-light.minimal-light-contrast.minimal-status-off .status-bar{--base-h:203;--base-s:8%;--base-d:20%;--accent-h:197;--accent-s:71%;--accent-l:52%;--bg1:#2f3437;--bg2:#373c3f;--bg3:#4b5053;--ui1:#3e4245;--ui2:#585d5f;--ui3:#585d5f;--tx1:#ebebeb;--tx2:#909295;--tx3:#585d5f;--hl1:rgba(57,134,164,0.3);--link-weight:500}.theme-dark.minimal-notion-dark.minimal-dark-black{--base-d:5%;--bg3:#232729;--ui1:#2f3437}.theme-light.minimal-rose-pine-light{--color-red-rgb:180,99,122;--color-orange-rgb:215,130,125;--color-yellow-rgb:234,157,53;--color-green-rgb:40,105,131;--color-cyan-rgb:87,147,159;--color-blue-rgb:87,147,159;--color-purple-rgb:144,122,169;--color-pink-rgb:144,122,169;--color-red:#b4637a;--color-orange:#d7827e;--color-yellow:#ea9d34;--color-green:#286983;--color-cyan:#56949f;--color-blue:#56949f;--color-purple:#907aa9;--color-pink:#907aa9}.theme-dark.minimal-rose-pine-dark{--color-red-rgb:234,111,146;--color-orange-rgb:233,155,151;--color-yellow-rgb:246,193,119;--color-green-rgb:47,116,143;--color-cyan-rgb:157,207,215;--color-blue-rgb:157,207,215;--color-purple-rgb:196,167,231;--color-pink-rgb:196,167,231;--color-red:#eb6f92;--color-orange:#ea9a97;--color-yellow:#f6c177;--color-green:#31748f;--color-cyan:#9ccfd8;--color-blue:#9ccfd8;--color-purple:#c4a7e7;--color-pink:#c4a7e7}.theme-light.minimal-rose-pine-light{--base-h:32;--base-s:57%;--base-l:95%;--accent-h:3;--accent-s:53%;--accent-l:67%;--bg1:#fffaf3;--bg2:#faf4ed;--bg3:rgba(233,223,218,0.5);--ui1:#EAE3E1;--ui2:#dfdad9;--ui3:#cecacd;--tx1:#575279;--tx2:#797593;--tx3:#9893a5;--hl1:#EAE3E1}.theme-dark.minimal-rose-pine-dark,.theme-light.minimal-rose-pine-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-rose-pine-light.minimal-light-contrast .titlebar,.theme-light.minimal-rose-pine-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-rose-pine-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-rose-pine-light.minimal-light-contrast.minimal-status-off .status-bar{--base-h:247;--base-s:23%;--base-l:15%;--accent-h:2;--accent-s:55%;--accent-l:83%;--bg1:#1f1d2e;--bg2:#191724;--bg3:rgba(68,66,86,0.5);--ui1:#312F41;--ui2:#403d52;--ui3:#524f67;--tx1:#e0def4;--tx2:#908caa;--tx3:#6e6a86;--hl1:#403d52}.theme-dark.minimal-rose-pine-dark.minimal-dark-black{--ui1:#21202e}.theme-dark.minimal-solarized-dark,.theme-light.minimal-solarized-light{--color-red-rgb:220,50,47;--color-orange-rgb:203,77,22;--color-yellow-rgb:181,137,0;--color-green-rgb:133,153,0;--color-cyan-rgb:42,161,152;--color-blue-rgb:38,139,210;--color-purple-rgb:108,113,196;--color-pink-rgb:211,54,130;--color-red:#dc322f;--color-orange:#cb4b16;--color-yellow:#b58900;--color-green:#859900;--color-cyan:#2aa198;--color-blue:#268bd2;--color-purple:#6c71c4;--color-pink:#d33682}.theme-light.minimal-solarized-light{--base-h:44;--base-s:87%;--base-l:94%;--accent-h:205;--accent-s:70%;--accent-l:48%;--bg1:#fdf6e3;--bg2:#eee8d5;--bg3:rgba(0,0,0,0.062);--ui1:#e9e1c8;--ui2:#d0cab8;--ui3:#d0cab8;--tx1:#073642;--tx2:#586e75;--tx3:#ABB2AC;--tx4:#586e75;--hl1:rgba(202,197,182,0.3);--hl2:rgba(203,75,22,0.3)}.theme-light.minimal-solarized-light.minimal-light-tonal{--bg2:#fdf6e3}.theme-dark.minimal-solarized-dark,.theme-light.minimal-solarized-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-solarized-light.minimal-light-contrast .titlebar,.theme-light.minimal-solarized-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-solarized-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-solarized-light.minimal-light-contrast.minimal-status-off .status-bar{--accent-h:205;--accent-s:70%;--accent-l:48%;--base-h:193;--base-s:98%;--base-l:11%;--bg1:#002b36;--bg2:#073642;--bg3:rgba(255,255,255,0.062);--ui1:#19414B;--ui2:#274850;--ui3:#31535B;--tx1:#93a1a1;--tx2:#657b83;--tx3:#31535B;--tx4:#657b83;--hl1:rgba(15,81,98,0.3);--hl2:rgba(203, 75, 22, 0.35)}.theme-dark.minimal-solarized-dark.minimal-dark-black{--hl1:rgba(15,81,98,0.55);--ui1:#002b36}.theme-dark.minimal-things-dark,.theme-light.minimal-things-light{--color-red-rgb:255,48,108;--color-orange-rgb:255,149,2;--color-yellow-rgb:255,213,0;--color-green-rgb:75,191,94;--color-cyan-rgb:73,174,164;--color-purple-rgb:176,81,222;--color-pink-rgb:255,46,85;--color-red:#FF306C;--color-orange:#ff9502;--color-yellow:#FFD500;--color-green:#4BBF5E;--color-cyan:#49AEA4;--color-purple:#b051de;--color-pink:#ff2e55}.theme-light.minimal-things-light{--color-blue-rgb:27,97,194;--color-blue:#1b61c2}.theme-dark.minimal-things-dark{--color-blue-rgb:77,149,247;--color-blue:#4d95f7}.theme-light.minimal-things-light{--accent-h:215;--accent-s:76%;--accent-l:43%;--bg1:white;--bg2:#f5f6f8;--bg3:rgba(162,177,187,0.25);--ui1:#eef0f4;--ui2:#D8DADD;--ui3:#c1c3c6;--tx1:#26272b;--tx2:#7D7F84;--tx3:#a9abb0;--hl1:#cae2ff}.theme-light.minimal-things-light.minimal-light-tonal{--ui1:#e6e8ec}.theme-light.minimal-things-light.minimal-light-white{--bg3:#f5f6f8}.theme-dark.minimal-things-dark,.theme-light.minimal-things-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-things-light.minimal-light-contrast .titlebar,.theme-light.minimal-things-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-things-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-things-light.minimal-light-contrast.minimal-status-off .status-bar{--base-h:218;--base-s:9%;--base-l:15%;--accent-h:215;--accent-s:91%;--accent-l:64%;--bg1:#24262a;--bg2:#202225;--bg3:#3d3f41;--divider-color:#17191c;--tab-outline-color:#17191c;--ui1:#3A3B3F;--ui2:#45464a;--ui3:#6c6e70;--tx1:#fbfbfb;--tx2:#CBCCCD;--tx3:#6c6e70;--hl1:rgba(40,119,236,0.35);--sp1:#fff}.theme-dark.minimal-things-dark.minimal-dark-black{--base-d:5%;--bg3:#24262a;--divider-color:#24262a;--tab-outline-color:#24262a} +body{--font-editor-theme:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Inter,Ubuntu,sans-serif;--font-editor:var(--font-editor-override),var(--font-text-override),var(--font-editor-theme)}body{--blockquote-style:normal;--blockquote-color:var(--text-muted);--blockquote-border-thickness:1px;--blockquote-border-color:var(--quote-opening-modifier);--embed-block-shadow-hover:none;--font-ui-smaller:11px;--normal-weight:400;--bold-weight:600;--link-weight:inherit;--inline-title-margin-bottom:1rem;--h1-size:1.125em;--h2-size:1.05em;--h3-size:1em;--h4-size:0.90em;--h5-size:0.85em;--h6-size:0.85em;--h1-weight:600;--h2-weight:600;--h3-weight:500;--h4-weight:500;--h5-weight:500;--h6-weight:400;--h1-variant:normal;--h2-variant:normal;--h3-variant:normal;--h4-variant:normal;--h5-variant:small-caps;--h6-variant:small-caps;--h1-style:normal;--h2-style:normal;--h3-style:normal;--h4-style:normal;--h5-style:normal;--h6-style:normal;--line-width:40rem;--line-height:1.5;--max-width:88%;--max-col-width:18em;--icon-muted:0.5;--nested-padding:1.1em;--folding-offset:32px;--list-edit-offset:0.5em;--list-indent:2em;--list-spacing:0.075em;--input-height:32px;--header-height:40px;--metadata-label-width:9rem;--metadata-label-font-size:var(--font-adaptive-small);--metadata-input-font-size:var(--font-adaptive-small);--mobile-left-sidebar-width:280pt;--mobile-right-sidebar-width:240pt;--top-left-padding-y:0px;--image-muted:0.7;--image-radius:4px;--heading-spacing:2em;--p-spacing:1.75rem;--border-width:1px;--table-border-width:var(--border-width);--table-selection:var(--text-selection);--table-selection-border-color:var(--text-selection);--table-selection-border-width:1px;--table-selection-border-radius:0px;--file-margins:var(--size-4-2) var(--size-4-12)}.mod-macos{--top-left-padding-y:24px}.is-phone{--metadata-label-font-size:var(--font-adaptive-smaller);--metadata-input-font-size:var(--font-adaptive-smaller)}@media only screen and (-webkit-min-device-pixel-ratio:2),only screen and (min-device-pixel-ratio:2){.is-phone{--border-width:0.75px}}body{--base-h:0;--base-s:0%;--base-l:96%;--accent-h:201;--accent-s:17%;--accent-l:50%}.theme-dark,.theme-light{--color-red-rgb:208,66,85;--color-orange-rgb:213,118,63;--color-yellow-rgb:229,181,103;--color-green-rgb:168,195,115;--color-cyan-rgb:115,187,178;--color-blue-rgb:108,153,187;--color-purple-rgb:158,134,200;--color-pink-rgb:176,82,121;--color-red:#d04255;--color-orange:#d5763f;--color-yellow:#e5b567;--color-green:#a8c373;--color-cyan:#73bbb2;--color-blue:#6c99bb;--color-purple:#9e86c8;--color-pink:#b05279}.theme-light,.theme-light.minimal-default-light,body .excalidraw{--bg1:white;--bg2:hsl( var(--base-h), var(--base-s), var(--base-l) );--bg3:hsla( var(--base-h), var(--base-s), calc(var(--base-l) - 50%), 0.12 );--ui1:hsl( var(--base-h), var(--base-s), calc(var(--base-l) - 6%) );--ui2:hsl( var(--base-h), var(--base-s), calc(var(--base-l) - 12%) );--ui3:hsl( var(--base-h), var(--base-s), calc(var(--base-l) - 20%) );--tx1:hsl( var(--base-h), var(--base-s), calc(var(--base-l) - 90%) );--tx2:hsl( var(--base-h), calc(var(--base-s) - 20%), calc(var(--base-l) - 45%) );--tx3:hsl( var(--base-h), calc(var(--base-s) - 10%), calc(var(--base-l) - 25%) );--tx4:hsl( var(--base-h), calc(var(--base-s) - 10%), calc(var(--base-l) - 60%) );--ax1:hsl( var(--accent-h), var(--accent-s), var(--accent-l) );--ax2:hsl( var(--accent-h), var(--accent-s), calc(var(--accent-l) - 8%) );--ax3:hsl( var(--accent-h), var(--accent-s), calc(var(--accent-l) + 6%) );--hl1:hsla( var(--accent-h), 50%, calc(var(--base-l) - 20%), 30% );--hl2:rgba(255, 225, 0, 0.5);--sp1:white}.excalidraw.theme--dark,.theme-dark,.theme-dark.minimal-default-dark,.theme-light.minimal-light-contrast .titlebar,.theme-light.minimal-light-contrast.minimal-status-off .status-bar{--accent-l:60%;--base-l:15%;--bg1:hsl( var(--base-h), var(--base-s), var(--base-l) );--bg2:hsl( var(--base-h), var(--base-s), calc(var(--base-l) - 2%) );--bg3:hsla( var(--base-h), var(--base-s), calc(var(--base-l) + 40%), 0.12 );--ui1:hsl( var(--base-h), var(--base-s), calc(var(--base-l) + 6%) );--ui2:hsl( var(--base-h), var(--base-s), calc(var(--base-l) + 12%) );--ui3:hsl( var(--base-h), var(--base-s), calc(var(--base-l) + 20%) );--tx1:hsl( var(--base-h), calc(var(--base-s) - 10%), calc(var(--base-l) + 67%) );--tx2:hsl( var(--base-h), calc(var(--base-s) - 20%), calc(var(--base-l) + 45%) );--tx3:hsl( var(--base-h), calc(var(--base-s) - 10%), calc(var(--base-l) + 20%) );--tx4:hsl( var(--base-h), calc(var(--base-s) - 10%), calc(var(--base-l) + 50%) );--ax1:hsl( var(--accent-h), var(--accent-s), var(--accent-l) );--ax2:hsl( var(--accent-h), var(--accent-s), calc(var(--accent-l) + 8%) );--ax3:hsl( var(--accent-h), var(--accent-s), calc(var(--accent-l) - 5%) );--hl1:hsla( var(--accent-h), 50%, 40%, 30% );--hl2:rgba(255, 177, 80, 0.3);--sp1:white}.theme-light.minimal-light-white{--background-primary:white;--background-secondary:white;--background-secondary-alt:white;--ribbon-background:white;--titlebar-background:white;--bg1:white}.theme-dark.minimal-dark-black{--base-d:0%;--titlebar-background:black;--background-primary:black;--background-secondary:black;--background-secondary-alt:black;--ribbon-background:black;--background-modifier-hover:hsl( var(--base-h), var(--base-s), calc(var(--base-d) + 10%));--tx1:hsl( var(--base-h), var(--base-s), calc(var(--base-d) + 75%) );--tx2:hsl( var(--base-h), var(--base-s), calc(var(--base-d) + 50%) );--tx3:hsl( var(--base-h), var(--base-s), calc(var(--base-d) + 25%) );--ui1:hsl( var(--base-h), var(--base-s), calc(var(--base-d) + 12%) );--ui2:hsl( var(--base-h), var(--base-s), calc(var(--base-d) + 20%) );--ui3:hsl( var(--base-h), var(--base-s), calc(var(--base-d) + 30%) )}.theme-light{--mono100:black;--mono0:white}.theme-dark{--mono100:white;--mono0:black}.theme-dark,.theme-light,.theme-light.minimal-light-contrast .titlebar,.theme-light.minimal-light-contrast.is-mobile .workspace-drawer.mod-left,.theme-light.minimal-light-contrast.minimal-status-off .status-bar{--background-modifier-accent:var(--ax3);--background-modifier-border-focus:var(--ui3);--background-modifier-border-hover:var(--ui2);--background-modifier-border:var(--ui1);--background-modifier-form-field-highlighted:var(--bg1);--background-modifier-form-field:var(--bg1);--background-modifier-success:var(--color-green);--background-modifier-hover:var(--bg3);--background-modifier-active-hover:var(--bg3);--background-primary:var(--bg1);--background-primary-alt:var(--bg2);--background-secondary:var(--bg2);--background-secondary-alt:var(--bg1);--background-table-rows:var(--bg2);--checkbox-color:var(--ax3);--code-normal:var(--tx1);--divider-color:var(--ui1);--frame-divider-color:var(--ui1);--icon-color-active:var(--tx1);--icon-color-focused:var(--tx1);--icon-color-hover:var(--tx2);--icon-color:var(--tx2);--icon-hex:var(--mono0);--interactive-accent-hover:var(--ax1);--interactive-accent:var(--ax3);--interactive-hover:var(--ui1);--list-marker-color:var(--tx3);--modal-border-color:var(--ui2);--nav-item-background-active:var(--bg3);--nav-item-background-hover:var(--bg3);--nav-item-color:var(--tx2);--nav-item-color-active:var(--tx1);--nav-item-color-hover:var(--tx1);--nav-collapse-icon-color:var(--tx2);--nav-collapse-icon-color-collapsed:var(--tx2);--nav-indentation-guide-color:var(--ui1);--prompt-border-color:var(--ui3);--quote-opening-modifier:var(--ui2);--ribbon-background:var(--bg2);--scrollbar-active-thumb-bg:var(--ui3);--scrollbar-bg:transparent;--scrollbar-thumb-bg:var(--ui1);--search-result-background:var(--bg1);--tab-text-color-focused-active:var(--tx1);--tab-outline-color:var(--ui1);--text-accent-hover:var(--ax2);--text-accent:var(--ax1);--text-blockquote:var(--tx2);--text-bold:var(--tx1);--text-code:var(--tx4);--text-error:var(--color-red);--text-faint:var(--tx3);--text-highlight-bg:var(--hl2);--text-italic:var(--tx1);--text-muted:var(--tx2);--text-normal:var(--tx1);--text-on-accent:var(--sp1);--text-selection:var(--hl1);--title-color-inactive:var(--tx2);--title-color:var(--tx1);--titlebar-background:var(--bg2);--titlebar-background-focused:var(--bg2);--titlebar-text-color-focused:var(--tx1);--workspace-background-translucent:hsla(var(--base-h),var(--base-s), var(--base-l), 0.7)}.theme-dark .view-actions,.theme-light .view-actions{--icon-color-active:var(--ax1)}.theme-light.minimal-light-contrast{--workspace-background-translucent:rgba(0,0,0,0.6)}.theme-light.minimal-light-contrast .theme-dark{--tab-container-background:var(--bg2);--ribbon-background-collapsed:var(--bg2)}.theme-light{--interactive-normal:var(--bg1);--interactive-accent-rgb:220,220,220;--active-line-bg:rgba(0,0,0,0.035);--background-modifier-cover:hsla(var(--base-h),calc(var(--base-s) - 70%),calc(var(--base-l) - 20%),0.5);--text-highlight-bg-active:rgba(0, 0, 0, 0.1);--background-modifier-error:rgba(255,0,0,0.14);--background-modifier-error-hover:rgba(255,0,0,0.08);--shadow-color:rgba(0, 0, 0, 0.1);--btn-shadow-color:rgba(0, 0, 0, 0.05)}.theme-dark{--interactive-normal:var(--bg3);--interactive-accent-rgb:66,66,66;--active-line-bg:rgba(255,255,255,0.04);--background-modifier-cover:hsla(var(--base-h),var(--base-s), calc(var(--base-l) - 12%), 0.5);--text-highlight-bg-active:rgba(255, 255, 255, 0.1);--background-modifier-error:rgba(255,20,20,0.12);--background-modifier-error-hover:rgba(255,20,20,0.18);--background-modifier-box-shadow:rgba(0, 0, 0, 0.3);--shadow-color:rgba(0, 0, 0, 0.3);--btn-shadow-color:rgba(0, 0, 0, 0.2)}.theme-light.minimal-light-white{--background-table-rows:var(--bg2)}.theme-light.minimal-light-tonal{--background-primary:var(--bg2);--background-primary-alt:var(--bg3);--background-table-rows:var(--bg3)}.theme-dark.minimal-dark-tonal{--ribbon-background:var(--bg1);--background-secondary:var(--bg1);--background-table-rows:var(--bg3)}.theme-dark.minimal-dark-black{--background-primary-alt:var(--bg3);--background-table-rows:var(--bg3);--modal-border:var(--ui2);--active-line-bg:rgba(255,255,255,0.085);--background-modifier-form-field:var(--bg3);--background-modifier-cover:hsla(var(--base-h),var(--base-s),calc(var(--base-d) + 8%),0.9);--background-modifier-box-shadow:rgba(0, 0, 0, 1)}body{--font-adaptive-normal:var(--font-text-size,var(--editor-font-size));--font-adaptive-small:calc(var(--font-ui-small) * 1.07);--font-adaptive-smaller:var(--font-ui-small);--font-adaptive-smallest:var(--font-ui-smaller);--line-width-wide:calc(var(--line-width) + 12.5%);--font-code:calc(var(--font-adaptive-normal) * 0.9);--table-text-size:calc(var(--font-adaptive-normal) * 0.875)}.minimal-dev-block-width .mod-root .workspace-leaf-content:after{display:flex;align-items:flex-end;content:"\00a0pane\00a0";font-size:12px;color:gray;font-family:var(--font-monospace);width:100%;max-width:100%;height:100vh;top:0;z-index:999;position:fixed;pointer-events:none}.minimal-dev-block-width.minimal-readable .mod-root .view-header:after{display:flex;align-items:flex-end;color:green;font-size:12px;font-family:var(--font-monospace);content:" ";width:var(--folding-offset);height:100vh;border-left:1px solid green;border-right:1px solid green;background-color:rgba(0,128,0,.1);top:0;left:max(calc(50% - var(--line-width)/ 2 - 1px),calc(50% - var(--max-width)/ 2 - 1px));z-index:999;position:fixed;pointer-events:none}.minimal-dev-block-width.minimal-readable-off .mod-root .view-header:after{display:flex;align-items:flex-end;color:green;font-size:12px;font-family:var(--font-monospace);content:" ";width:var(--folding-offset);height:100vh;border-left:1px solid green;border-right:1px solid green;background-color:rgba(0,128,0,.1);top:0;left:calc(50% - var(--max-width)/ 2 - 1px);z-index:999;position:fixed;pointer-events:none}.minimal-dev-block-width .mod-root .view-content:before{display:flex;align-items:flex-end;content:"\00a0max\00a0";font-size:12px;color:red;width:var(--max-width);height:100vh;border-left:1px solid red;border-right:1px solid red;top:0;left:50%;transform:translate(-50%,0);z-index:999;position:fixed;pointer-events:none}.minimal-dev-block-width.minimal-readable .mod-root .view-header:before{display:flex;align-items:flex-end;content:"\00a0wide\00a0";font-size:12px;color:orange;font-family:var(--font-monospace);width:var(--line-width-wide);max-width:var(--max-width);height:100vh;border-left:1px solid orange;border-right:1px solid orange;background-color:rgba(255,165,0,.05);top:0;left:50%;transform:translate(-50%,0);z-index:999;position:fixed;pointer-events:none}.minimal-dev-block-width.minimal-readable .mod-root .view-content:after{display:flex;align-items:flex-end;color:#00f;font-size:12px;font-family:var(--font-monospace);content:"\00a0normal";width:var(--line-width);max-width:var(--max-width);height:100vh;border-left:1px solid #00f;border-right:1px solid #00f;background-color:rgba(0,0,255,.08);top:0;left:50%;transform:translate(-50%,0);z-index:999;position:fixed;pointer-events:none}.CodeMirror-wrap>div>textarea{opacity:0}.markdown-source-view.mod-cm6 hr{border-width:2px}.mod-cm6 .cm-editor .cm-line{padding-left:0;padding-right:0}.cm-editor .cm-content{padding-top:.5em}.markdown-source-view{color:var(--text-normal)}.markdown-source-view.mod-cm6 .cm-sizer{display:block}.markdown-source-view.mod-cm6 .cm-scroller{padding-left:0;padding-right:0}.cm-s-obsidian .cm-line.HyperMD-header{padding-top:calc(var(--p-spacing)/ 2)}.markdown-rendered .mod-header+div>*{margin-block-start:0}body :not(.canvas-node) .markdown-source-view.mod-cm6 .cm-gutters{position:absolute!important;z-index:0;margin-inline-end:0}body :not(.canvas-node) .markdown-source-view.mod-cm6.is-rtl .cm-gutters{right:0}body{--line-number-color:var(--text-faint);--line-number-color-active:var(--text-muted)}.markdown-source-view.mod-cm6 .cm-gutters{color:var(--line-number-color)!important}.markdown-source-view.mod-cm6 .cm-editor .cm-gutterElement.cm-active .cm-heading-marker,.markdown-source-view.mod-cm6 .cm-editor .cm-lineNumbers .cm-gutterElement.cm-active{color:var(--line-number-color-active)}.cm-editor .cm-lineNumbers{background-color:var(--gutter-background)}.cm-editor .cm-lineNumbers .cm-gutterElement{min-width:var(--folding-offset);padding-inline-end:0.5em}.is-rtl .cm-editor .cm-lineNumbers .cm-gutterElement{text-align:left}@media (max-width:400pt){.cm-editor .cm-lineNumbers .cm-gutterElement{padding-inline-end:4px;padding-inline-start:8px}}.cm-editor .cm-lineNumbers .cm-gutterElement{font-variant-numeric:tabular-nums}.cm-editor .cm-gutterElement.cm-active .cm-heading-marker,.cm-editor .cm-lineNumbers .cm-gutterElement.cm-active{color:var(--text-muted)}.markdown-source-view.mod-cm6 .edit-block-button{cursor:var(--cursor);color:var(--text-faint);background-color:var(--background-primary);top:0;opacity:0;transition:opacity .2s;padding:4px 4px 4px 9px}.markdown-source-view.mod-cm6 .edit-block-button svg{margin:0!important}.markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-embed-block>.edit-block-button{width:30px!important;padding-left:7px!important}.is-live-preview:not(.is-readable-line-width) .cm-embed-block>.edit-block-button{padding-left:0!important;margin-left:0!important;padding:4px}.markdown-source-view.mod-cm6 .edit-block-button:hover{background-color:var(--background-primary);color:var(--text-muted)}.markdown-source-view.mod-cm6 .edit-block-button svg{opacity:1}.markdown-source-view.mod-cm6 .edit-block-button:hover svg{opacity:1}.markdown-source-view.mod-cm6 .cm-embed-block{padding:0;border:0;border-radius:0}.markdown-source-view.mod-cm6 .cm-embed-block:hover{border:0}.metadata-container{--input-height:2rem}.markdown-source-view .metadata-container{transform:translateX(-4px)}body.metadata-heading-off .metadata-properties-heading{display:none}.metadata-add-property-off .mod-root .metadata-add-button{display:none}.metadata-dividers{--metadata-divider-width:1px;--metadata-gap:0px}.metadata-icons-off .workspace-leaf-content[data-type=all-properties] .tree-item-inner{margin-left:-16px}.metadata-icons-off .workspace-leaf-content[data-type=all-properties] .tree-item-icon{display:none}.metadata-icons-off .metadata-property-icon{display:none}figure{margin-inline-start:0;margin-inline-end:0}.markdown-preview-view .mod-highlighted{transition:background-color .3s ease;background-color:var(--text-selection);color:inherit}.inline-title{padding-top:16px}.minimal-status-off .status-bar{--status-bar-position:static;--status-bar-radius:0;--status-bar-border-width:1px 0 0 0;--status-bar-background:var(--background-secondary);--status-bar-border-color:var(--ui1)}body:not(.minimal-status-off) .status-bar{background-color:var(--background-primary);--status-bar-border-width:0}.status-bar{transition:color .2s linear;color:var(--text-faint);font-size:var(--font-adaptive-smallest)}.status-bar .sync-status-icon.mod-success,.status-bar .sync-status-icon.mod-working{color:var(--text-faint)}.status-bar:hover,.status-bar:hover .sync-status-icon.mod-success,.status-bar:hover .sync-status-icon.mod-working{color:var(--text-muted);transition:color .2s linear}.status-bar .plugin-sync:hover .sync-status-icon.mod-success,.status-bar .plugin-sync:hover .sync-status-icon.mod-working{color:var(--text-normal)}.status-bar .status-bar-item{cursor:var(--cursor)!important}.status-bar .status-bar-item.cMenu-statusbar-button:hover,.status-bar .status-bar-item.mod-clickable:hover,.status-bar .status-bar-item.plugin-editor-status:hover,.status-bar .status-bar-item.plugin-sync:hover{text-align:center;background-color:var(--background-modifier-hover)!important}.tab-stack-top-flipped{--tab-stacked-text-transform:rotate(180deg);--tab-stacked-text-align:right}.tab-stack-center{--tab-stacked-text-align:center}.tab-stack-center-flipped{--tab-stacked-text-transform:rotate(180deg);--tab-stacked-text-align:center}.tab-stack-bottom{--tab-stacked-text-transform:rotate(180deg)}.tab-stack-bottom-flipped{--tab-stacked-text-align:right}.view-header-title,.view-header-title-parent{text-overflow:ellipsis}.view-header-title-container:not(.mod-at-end):after{display:none}body:not(.is-mobile) .view-actions .view-action:last-child{margin-left:-1px}.minimal-focus-mode .workspace-ribbon:not(.is-collapsed)~.mod-root .view-header:hover .view-actions,.mod-right.is-collapsed~.mod-root .view-header:hover .view-actions,.view-action.is-active:hover,.workspace-ribbon.mod-left.is-collapsed~.mod-root .view-header:hover .view-actions,body:not(.minimal-focus-mode) .workspace-ribbon:not(.is-collapsed)~.mod-root .view-actions{opacity:1;transition:opacity .25s ease-in-out}.view-header-title-container{opacity:0;transition:opacity .1s ease-in-out}.view-header-title-container:focus-within{opacity:1;transition:opacity .1s ease-in-out}.view-header:hover .view-header-title-container,.workspace-tab-header-container:hover+.workspace-tab-container .view-header-title-container{opacity:1;transition:opacity .1s ease-in-out}.is-phone .view-header-title-container,.minimal-tab-title-visible .view-header-title-container{opacity:1}.minimal-tab-title-hidden .view-header-title-container{opacity:0}.minimal-tab-title-hidden .view-header-title-container:focus-within{opacity:1;transition:opacity .1s ease-in-out}.minimal-tab-title-hidden .view-header:hover .view-header-title-container,.minimal-tab-title-hidden .workspace-tab-header-container:hover+.workspace-tab-container .view-header-title-container{opacity:0}body.window-title-off .titlebar-text{display:none}.titlebar-button-container.mod-right{background-color:transparent!important}.is-hidden-frameless.theme-dark:not(.minimal-dark-black):not(.colorful-frame),.is-hidden-frameless.theme-light:not(.minimal-light-tonal):not(.colorful-frame):not(.minimal-light-white){--titlebar-background:var(--bg1)}.is-hidden-frameless.theme-dark:not(.minimal-dark-black):not(.colorful-frame).is-focused .sidebar-toggle-button.mod-right,.is-hidden-frameless.theme-dark:not(.minimal-dark-black):not(.colorful-frame).is-focused .workspace-ribbon.mod-left.is-collapsed,.is-hidden-frameless.theme-dark:not(.minimal-dark-black):not(.colorful-frame).is-focused .workspace-tabs.mod-top,.is-hidden-frameless.theme-light:not(.minimal-light-tonal):not(.colorful-frame):not(.minimal-light-white).is-focused .sidebar-toggle-button.mod-right,.is-hidden-frameless.theme-light:not(.minimal-light-tonal):not(.colorful-frame):not(.minimal-light-white).is-focused .workspace-ribbon.mod-left.is-collapsed,.is-hidden-frameless.theme-light:not(.minimal-light-tonal):not(.colorful-frame):not(.minimal-light-white).is-focused .workspace-tabs.mod-top{--titlebar-background-focused:var(--bg1)}.is-hidden-frameless.theme-dark:not(.minimal-dark-black):not(.colorful-frame):not(.minimal-dark-tonal):not(.minimal-light-white) .workspace-ribbon.mod-left:not(.is-collapsed),.is-hidden-frameless.theme-light:not(.minimal-light-tonal):not(.colorful-frame):not(.minimal-light-white):not(.minimal-dark-tonal):not(.minimal-light-white) .workspace-ribbon.mod-left:not(.is-collapsed){--titlebar-background:var(--bg2)}.mod-macos.is-hidden-frameless:not(.is-popout-window) .sidebar-toggle-button.mod-right{right:0;padding-right:var(--size-4-2)}body.is-focused{--titlebar-background-focused:var(--background-secondary)}.is-hidden-frameless:not(.colorful-frame) .mod-left-split .mod-top .workspace-tab-header-container{--tab-container-background:var(--background-secondary)}.mod-root .workspace-tab-header-status-icon{color:var(--text-muted)}.modal button:not(.mod-warning),.modal.mod-settings button:not(.mod-cta):not(.mod-warning),.modal.mod-settings button:not(.mod-warning){white-space:nowrap;transition:background-color .2s ease-out,border-color .2s ease-out}button.mod-warning{border:1px solid var(--background-modifier-error);color:var(--text-error);box-shadow:0 1px 1px 0 var(--btn-shadow-color);transition:background-color .2s ease-out}button.mod-warning:hover{border:1px solid var(--background-modifier-error);color:var(--text-error);box-shadow:0 2px 3px 0 var(--btn-shadow-color);transition:background-color .2s ease-out}.document-replace,.document-search{max-width:100%;padding:0}.document-search-container{margin:0 auto;max-width:var(--max-width);width:var(--line-width)}.is-mobile .CodeMirror-foldgutter-open:after,.is-mobile span[title="Fold line"]:after{transform:translateX(-2px)!important}body.is-mobile .CodeMirror-foldgutter-folded:after,body.is-mobile span[title="Unfold line"]:after{content:"›";font-family:sans-serif;transform:translateY(-2px);transform:rotate(-90deg) translateY(2px) translateX(-.45em)}body.is-mobile .CodeMirror-foldgutter-open:after,body.is-mobile span[title="Fold line"]:after{content:"›";font-family:sans-serif;transform:rotate(360deg)}.modal-button-container .mod-checkbox{--checkbox-radius:4px}.modal-container.mod-confirmation .modal{width:480px;min-width:0}.theme-light{--progress-outline:rgba(0,0,0,0.05)}.theme-dark{--progress-outline:rgba(255,255,255,0.04)}body{--progress-complete:var(--text-accent)}.markdown-preview-view progress,.markdown-rendered progress,.markdown-source-view.is-live-preview progress{width:220px}.markdown-preview-view progress[value]::-webkit-progress-bar,.markdown-rendered progress[value]::-webkit-progress-bar,.markdown-source-view.is-live-preview progress[value]::-webkit-progress-bar{box-shadow:inset 0 0 0 var(--border-width) var(--progress-outline)}.markdown-preview-view progress[value^='1']::-webkit-progress-value,.markdown-preview-view progress[value^='2']::-webkit-progress-value,.markdown-preview-view progress[value^='3']::-webkit-progress-value,.markdown-rendered progress[value^='1']::-webkit-progress-value,.markdown-rendered progress[value^='2']::-webkit-progress-value,.markdown-rendered progress[value^='3']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value^='1']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value^='2']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value^='3']::-webkit-progress-value{background-color:var(--color-red)}.markdown-preview-view progress[value^='4']::-webkit-progress-value,.markdown-preview-view progress[value^='5']::-webkit-progress-value,.markdown-rendered progress[value^='4']::-webkit-progress-value,.markdown-rendered progress[value^='5']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value^='4']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value^='5']::-webkit-progress-value{background-color:var(--color-orange)}.markdown-preview-view progress[value^='6']::-webkit-progress-value,.markdown-preview-view progress[value^='7']::-webkit-progress-value,.markdown-rendered progress[value^='6']::-webkit-progress-value,.markdown-rendered progress[value^='7']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value^='6']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value^='7']::-webkit-progress-value{background-color:var(--color-yellow)}.markdown-preview-view progress[value^='8']::-webkit-progress-value,.markdown-preview-view progress[value^='9']::-webkit-progress-value,.markdown-rendered progress[value^='8']::-webkit-progress-value,.markdown-rendered progress[value^='9']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value^='8']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value^='9']::-webkit-progress-value{background-color:var(--color-green)}.markdown-preview-view progress[value='1']::-webkit-progress-value,.markdown-preview-view progress[value='100']::-webkit-progress-value,.markdown-rendered progress[value='1']::-webkit-progress-value,.markdown-rendered progress[value='100']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value='1']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value='100']::-webkit-progress-value{background-color:var(--progress-complete)}.markdown-preview-view progress[value='0']::-webkit-progress-value,.markdown-preview-view progress[value='2']::-webkit-progress-value,.markdown-preview-view progress[value='3']::-webkit-progress-value,.markdown-preview-view progress[value='4']::-webkit-progress-value,.markdown-preview-view progress[value='5']::-webkit-progress-value,.markdown-preview-view progress[value='6']::-webkit-progress-value,.markdown-preview-view progress[value='7']::-webkit-progress-value,.markdown-preview-view progress[value='8']::-webkit-progress-value,.markdown-preview-view progress[value='9']::-webkit-progress-value,.markdown-rendered progress[value='0']::-webkit-progress-value,.markdown-rendered progress[value='2']::-webkit-progress-value,.markdown-rendered progress[value='3']::-webkit-progress-value,.markdown-rendered progress[value='4']::-webkit-progress-value,.markdown-rendered progress[value='5']::-webkit-progress-value,.markdown-rendered progress[value='6']::-webkit-progress-value,.markdown-rendered progress[value='7']::-webkit-progress-value,.markdown-rendered progress[value='8']::-webkit-progress-value,.markdown-rendered progress[value='9']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value='0']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value='2']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value='3']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value='4']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value='5']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value='6']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value='7']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value='8']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value='9']::-webkit-progress-value{background-color:var(--color-red)}body:not(.hider-scrollbars).styled-scrollbars ::-webkit-scrollbar,body:not(.native-scrollbars) ::-webkit-scrollbar{width:11px;background-color:transparent}body:not(.hider-scrollbars).styled-scrollbars ::-webkit-scrollbar:horizontal,body:not(.native-scrollbars) ::-webkit-scrollbar:horizontal{height:11px}body:not(.hider-scrollbars).styled-scrollbars ::-webkit-scrollbar-corner,body:not(.native-scrollbars) ::-webkit-scrollbar-corner{background-color:transparent}body:not(.hider-scrollbars).styled-scrollbars ::-webkit-scrollbar-track,body:not(.native-scrollbars) ::-webkit-scrollbar-track{background-color:transparent}body:not(.hider-scrollbars).styled-scrollbars ::-webkit-scrollbar-thumb,body:not(.native-scrollbars) ::-webkit-scrollbar-thumb{background-clip:padding-box;border-radius:20px;border:3px solid transparent;background-color:var(--background-modifier-border);border-width:3px 3px 3px 3px;min-height:45px}body:not(.hider-scrollbars).styled-scrollbars .mod-left-split .workspace-tabs ::-webkit-scrollbar-thumb:hover,body:not(.hider-scrollbars).styled-scrollbars .modal .vertical-tab-header::-webkit-scrollbar-thumb:hover,body:not(.hider-scrollbars).styled-scrollbars ::-webkit-scrollbar-thumb:hover,body:not(.native-scrollbars) .mod-left-split .workspace-tabs ::-webkit-scrollbar-thumb:hover,body:not(.native-scrollbars) .modal .vertical-tab-header::-webkit-scrollbar-thumb:hover,body:not(.native-scrollbars) ::-webkit-scrollbar-thumb:hover{background-color:var(--background-modifier-border-hover)}body:not(.hider-scrollbars).styled-scrollbars .mod-left-split .workspace-tabs ::-webkit-scrollbar-thumb:active,body:not(.hider-scrollbars).styled-scrollbars .modal .vertical-tab-header::-webkit-scrollbar-thumb:active,body:not(.hider-scrollbars).styled-scrollbars ::-webkit-scrollbar-thumb:active,body:not(.native-scrollbars) .mod-left-split .workspace-tabs ::-webkit-scrollbar-thumb:active,body:not(.native-scrollbars) .modal .vertical-tab-header::-webkit-scrollbar-thumb:active,body:not(.native-scrollbars) ::-webkit-scrollbar-thumb:active{background-color:var(--background-modifier-border-focus)}.tooltip{transition:none;animation:none}.tooltip.mod-left,.tooltip.mod-right{animation:none}.tooltip.mod-error{color:var(--text-error)}.markdown-preview-view blockquote{padding:0 0 0 var(--nested-padding);font-size:var(--blockquote-size)}.markdown-source-view.mod-cm6 .HyperMD-quote,.markdown-source-view.mod-cm6.is-live-preview .HyperMD-quote{font-size:var(--blockquote-size)}.is-live-preview .cm-hmd-indent-in-quote{color:var(--text-faint)}.is-live-preview.is-readable-line-width>.cm-callout .callout{max-width:var(--max-width);margin:0 auto}.callouts-outlined .callout .callout-title{background-color:var(--background-primary);margin-top:-24px;z-index:200;width:fit-content;padding:0 .5em;margin-left:-.75em;letter-spacing:.05em;font-variant-caps:all-small-caps}.callouts-outlined .callout{overflow:visible;--callout-border-width:1px;--callout-border-opacity:0.5;--callout-title-size:0.8em;--callout-blend-mode:normal;background-color:transparent}.callouts-outlined .cm-embed-block.cm-callout{padding-top:12px}.callouts-outlined .callout-content .callout{margin-top:18px}body{--checkbox-radius:50%;--checkbox-top:2px;--checkbox-left:0px;--checkbox-margin:0px 6px 0px -2em}.checkbox-square{--checkbox-size:calc(var(--font-text-size) * 0.85);--checkbox-radius:4px;--checkbox-top:1px;--checkbox-left:0px;--checkbox-margin:0px 8px 0px -2em}body.minimal-strike-lists{--checklist-done-decoration:line-through}body:not(.minimal-strike-lists){--checklist-done-decoration:none;--checklist-done-color:var(--text-normal)}.markdown-preview-section>.contains-task-list{padding-bottom:.5em}.mod-cm6 .HyperMD-task-line[data-task] .cm-formatting-list-ol~.task-list-label .task-list-item-checkbox{margin:1px}.markdown-preview-view .task-list-item-checkbox{position:relative;top:var(--checkbox-top);left:var(--checkbox-left);line-height:0}.markdown-preview-view ul>li.task-list-item{text-indent:0;line-height:var(--line-height)}.is-mobile .mod-cm6 .HyperMD-task-line[data-task] .task-list-item-checkbox{margin-inline-start:-.4em}.is-mobile .markdown-preview-view input[type=checkbox].task-list-item-checkbox{top:.2em}.minimal-code-scroll{--code-white-space:pre}.minimal-code-scroll .HyperMD-codeblock.HyperMD-codeblock-bg{overflow-y:scroll;white-space:pre}.minimal-code-scroll .cm-hmd-codeblock{white-space:pre!important}@media print{.print{--code-background:#eee!important}}body{--embed-max-height:none;--embed-decoration-style:solid;--embed-decoration-color:var(--background-modifier-border-hover)}.embed-strict{--embed-background:transparent;--embed-border-left:0;--embed-padding:0}.embed-strict .markdown-embed-content{--folding-offset:0px}.embed-strict .el-embed-heading.el-p>p{margin-block-start:0;margin-block-end:0}.embed-strict .internal-embed .markdown-embed,.embed-strict .markdown-preview-view .markdown-embed,.embed-strict.markdown-preview-view .markdown-embed{padding:0}.embed-strict .internal-embed .markdown-embed .markdown-embed-title,.embed-strict .markdown-embed-title{display:none}.embed-strict .internal-embed:not([src*="#^"]) .markdown-embed-link{width:24px;opacity:0}.embed-underline .internal-embed:not(.pdf-embed){text-decoration-line:underline;text-decoration-style:var(--embed-decoration-style);text-decoration-color:var(--embed-decoration-color)}.embed-hide-title .markdown-embed-title{display:none}.contextual-typography .embed-strict .internal-embed .markdown-preview-view .markdown-preview-sizer>div,.embed-strict.contextual-typography .internal-embed .markdown-preview-view .markdown-preview-sizer>div{margin:0;width:100%}.markdown-embed .markdown-preview-view .markdown-preview-sizer{padding-bottom:0!important}.markdown-preview-view.is-readable-line-width .markdown-embed .markdown-preview-sizer,.markdown-preview-view.markdown-embed .markdown-preview-sizer{max-width:100%;width:100%;min-height:0!important;padding-bottom:0!important}.markdown-embed .markdown-preview-section div:last-child p,.markdown-embed .markdown-preview-section div:last-child ul{margin-block-end:2px}.markdown-preview-view .markdown-embed{margin-top:var(--nested-padding);padding:0 calc(var(--nested-padding)/ 2) 0 var(--nested-padding)}.internal-embed:not([src*="#^"]) .markdown-embed-link{right:0;width:100%}.file-embed-link,.markdown-embed-link{top:0;right:0;text-align:right;justify-content:flex-end}.file-embed-link svg,.markdown-embed-link svg{width:16px;height:16px}.markdown-embed .file-embed-link,.markdown-embed .markdown-embed-link{opacity:.6;transition:opacity .1s linear}.markdown-embed .file-embed-link:hover,.markdown-embed .markdown-embed-link:hover{opacity:1}.markdown-embed .file-embed-link:hover:hover,.markdown-embed .markdown-embed-link:hover:hover{background-color:transparent;--icon-color:var(--text-accent)}.file-embed-link:hover,.markdown-embed-link:hover{color:var(--text-muted)}.markdown-embed .markdown-preview-view{padding:0}.internal-embed .markdown-embed{border:0;border-left:1px solid var(--quote-opening-modifier);border-radius:0}a[href*="obsidian://search"]{background-image:url("data:image/svg+xml,")}.theme-dark a[href*="obsidian://search"]{background-image:url("data:image/svg+xml,")}div>ol,div>ul{padding-inline-start:1.4em}ul>li{min-height:1.4em}ol>li{margin-inline-start:0}ol{margin-inline-start:0;list-style:default}body{--adaptive-list-edit-offset:var(--list-edit-offset)}.is-rtl{--adaptive-list-edit-offset:calc(var(--list-edit-offset)*-1)}.markdown-preview-view ol>li,.markdown-preview-view ul>li,.markdown-source-view ol>li,.markdown-source-view ul>li,.mod-cm6 .HyperMD-list-line.cm-line{padding-top:var(--list-spacing);padding-bottom:var(--list-spacing)}.is-mobile ul>li:not(.task-list-item)::marker{font-size:.8em}.is-mobile .markdown-rendered ol,.is-mobile .markdown-rendered ul{padding-inline-start:var(--list-indent)}.is-mobile .markdown-rendered div>ol,.is-mobile .markdown-rendered div>ul{padding-inline-start:2em}.is-mobile .el-ol>ol,.is-mobile .el-ul>ul{margin-inline-start:0}.is-mobile .workspace-leaf-content:not([data-type=search]) .workspace-leaf-content[data-type=markdown] .nav-buttons-container{border-bottom:none;padding-top:5px}.is-mobile .mod-root .workspace-leaf-content[data-type=markdown] .search-input-container{width:calc(100% - 160px)}.embedded-backlinks .nav-header~.search-input-container{width:calc(100% - 140px);margin-top:12px}.embedded-backlinks .nav-buttons-container{position:absolute;right:0;top:14px}.embedded-backlinks .backlink-pane>.tree-item-self,.embedded-backlinks .backlink-pane>.tree-item-self:hover{text-transform:none;color:var(--text-normal);font-size:var(--font-adaptive-normal);font-weight:500;letter-spacing:unset}body{--pdf-dark-opacity:1}.theme-dark:not(.pdf-shadows-on),.theme-light:not(.pdf-shadows-on){--pdf-shadow:none;--pdf-thumbnail-shadow:none}.theme-dark:not(.pdf-shadows-on) .pdf-viewer .page,.theme-light:not(.pdf-shadows-on) .pdf-viewer .page{border:0}.theme-dark:not(.pdf-shadows-on) .pdf-sidebar-container .thumbnailSelectionRing,.theme-light:not(.pdf-shadows-on) .pdf-sidebar-container .thumbnailSelectionRing{padding:0}.theme-dark:not(.pdf-shadows-on) .pdf-sidebar-container .thumbnail::after,.theme-light:not(.pdf-shadows-on) .pdf-sidebar-container .thumbnail::after{right:var(--size-4-2);bottom:var(--size-4-2)}.theme-dark{--pdf-thumbnail-shadow:0 0 1px 0 rgba(0,0,0,0.6);--pdf-shadow:0 0 1px 0 rgba(0,0,0,0.6)}.theme-dark .pdf-viewer .canvasWrapper{opacity:var(--pdf-dark-opacity)}.theme-dark.pdf-invert-dark .workspace-leaf-content[data-type=pdf] .pdf-thumbnail-view .thumbnailImage,.theme-dark.pdf-invert-dark .workspace-leaf-content[data-type=pdf] .pdf-viewer .canvasWrapper{filter:invert(1) hue-rotate(180deg);mix-blend-mode:screen}.theme-light.pdf-blend-light .workspace-leaf-content[data-type=pdf] .pdf-thumbnail-view .thumbnailImage,.theme-light.pdf-blend-light .workspace-leaf-content[data-type=pdf] .pdf-viewer .canvasWrapper{mix-blend-mode:multiply}body{--table-header-border-width:0;--table-column-first-border-width:0;--table-column-last-border-width:0;--table-row-last-border-width:0;--table-edge-cell-padding-first:0;--table-edge-cell-padding-last:0;--table-cell-padding:4px 10px;--table-header-size:var(--table-text-size)}.markdown-source-view.mod-cm6 table{border-collapse:collapse}.markdown-preview-view table,.markdown-source-view.mod-cm6 table{border:var(--border-width) solid var(--border-color);border-collapse:collapse}.markdown-preview-view td,.markdown-preview-view th,.markdown-source-view.mod-cm6 td,.markdown-source-view.mod-cm6 th{padding:var(--table-cell-padding)}.markdown-preview-view td:first-child,.markdown-preview-view th:first-child,.markdown-source-view.mod-cm6 td:first-child,.markdown-source-view.mod-cm6 th:first-child{padding-left:var(--table-edge-cell-padding-first)}.markdown-preview-view td:first-child .table-cell-wrapper,.markdown-preview-view th:first-child .table-cell-wrapper,.markdown-source-view.mod-cm6 td:first-child .table-cell-wrapper,.markdown-source-view.mod-cm6 th:first-child .table-cell-wrapper{padding-left:0}.markdown-preview-view td:last-child,.markdown-preview-view th:last-child,.markdown-source-view.mod-cm6 td:last-child,.markdown-source-view.mod-cm6 th:last-child{padding-right:var(--table-edge-cell-padding-last)}.markdown-preview-view td:last-child .table-cell-wrapper,.markdown-preview-view th:last-child .table-cell-wrapper,.markdown-source-view.mod-cm6 td:last-child .table-cell-wrapper,.markdown-source-view.mod-cm6 th:last-child .table-cell-wrapper{padding-right:0}.markdown-preview-view th,.markdown-source-view.mod-cm6 .dataview.table-view-table thead.table-view-thead tr th,.table-view-table>thead>tr>th{padding:var(--table-cell-padding)}.markdown-preview-view th:first-child,.markdown-source-view.mod-cm6 .dataview.table-view-table thead.table-view-thead tr th:first-child,.table-view-table>thead>tr>th:first-child{padding-left:var(--table-edge-cell-padding-first)}.markdown-preview-view th:last-child,.markdown-source-view.mod-cm6 .dataview.table-view-table thead.table-view-thead tr th:last-child,.table-view-table>thead>tr>th:last-child{padding-right:var(--table-edge-cell-padding-last)}.is-live-preview .el-table{width:100%;max-width:100%}.cm-hmd-table-sep-dummy,.cm-s-obsidian .HyperMD-table-row span.cm-hmd-table-sep{color:var(--text-faint);font-weight:400}.table-cell-wrapper .cm-line{font-size:var(--table-text-size);line-height:var(--table-line-height)}body.minimal-unstyled-tags{--tag-background:transparent;--tag-background-hover:transparent;--tag-border-width:0px;--tag-padding-x:0;--tag-padding-y:0;--tag-size:inherit;--tag-color-hover:var(--text-accent-hover)}body.minimal-unstyled-tags.is-mobile.theme-dark{--tag-background:transparent}body:not(.minimal-unstyled-tags){--tag-size:0.8em;--tag-padding-y:0.2em;--tag-background:transparent;--tag-background-hover:transparent;--tag-color:var(--text-muted);--tag-border-width:1px;--tag-border-color:var(--background-modifier-border);--tag-border-color-hover:var(--background-modifier-border-hover);--tag-color-hover:var(--text-normal)}body.is-mobile.theme-dark{--tag-background:transparent}h1,h2,h3,h4{letter-spacing:-.02em}body,button,input{font-family:var(--font-interface)}.cm-s-obsidian span.cm-error{color:var(--color-red)}.markdown-preview-view,.popover,.workspace-leaf-content[data-type=markdown]{font-family:var(--font-text)}.markdown-preview-view,.view-content>.cm-s-obsidian,.view-content>.markdown-source-view.mod-cm6.is-live-preview>.cm-scroller,body{font-size:var(--font-adaptive-normal);font-weight:var(--normal-weight);line-height:var(--line-height)}.view-content>.cm-s-obsidian,.view-content>.markdown-source-view,.view-content>.markdown-source-view.mod-cm6 .cm-scroller{line-height:var(--line-height);font-family:var(--font-editor)}.cm-s-obsidian span.cm-formatting-task{line-height:var(--line-height)}.active-line-on .cm-line.cm-active,.active-line-on .markdown-source-view.mod-cm6.is-live-preview .HyperMD-quote.cm-active{background-color:var(--active-line-bg);box-shadow:-25vw 0 var(--active-line-bg),25vw 0 var(--active-line-bg)}body{--content-margin:auto;--content-margin-start:max( calc(50% - var(--line-width)/2), calc(50% - var(--max-width)/2) );--content-line-width:min(var(--line-width), var(--max-width))}.markdown-preview-view .markdown-preview-sizer.markdown-preview-sizer{max-width:100%;margin-inline:auto;width:100%}.markdown-source-view.mod-cm6.is-readable-line-width .cm-content,.markdown-source-view.mod-cm6.is-readable-line-width .cm-sizer{max-width:100%;width:100%}.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>div,.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content>div,.markdown-source-view.mod-cm6.is-readable-line-width .cm-sizer>.embedded-backlinks,.markdown-source-view.mod-cm6.is-readable-line-width .cm-sizer>.inline-title,.markdown-source-view.mod-cm6.is-readable-line-width .cm-sizer>.metadata-container{max-width:var(--max-width);width:var(--line-width);margin-inline:var(--content-margin)!important}.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content>:not(div){max-width:var(--content-line-width);margin-inline-start:var(--content-margin-start)!important}.is-readable-line-width{--file-margins:1rem 0 0 0}.is-mobile .markdown-preview-view{--folding-offset:0}.minimal-line-nums .workspace-leaf-content[data-type=markdown]{--file-margins:var(--size-4-8) var(--size-4-8) var(--size-4-8) 48px}.minimal-line-nums .workspace-leaf-content[data-type=markdown].is-rtl{--file-margins:var(--size-4-8) 48px var(--size-4-8) var(--size-4-8)}.minimal-line-nums .workspace-leaf-content[data-type=markdown] .is-readable-line-width{--file-margins:1rem 0 0 var(--folding-offset)}.minimal-line-nums .workspace-leaf-content[data-type=markdown] .is-readable-line-width.is-rtl{--file-margins:1rem var(--folding-offset) 0 0}.minimal-line-nums .mod-left-split .markdown-preview-view,.minimal-line-nums .mod-left-split .markdown-source-view.mod-cm6 .cm-scroller,.minimal-line-nums .mod-right-split .markdown-preview-view,.minimal-line-nums .mod-right-split .markdown-source-view.mod-cm6 .cm-scroller{--file-margins:var(--size-4-5) var(--size-4-5) var(--size-4-5) 48px}.view-content .reader-mode-content.is-readable-line-width .markdown-preview-sizer{max-width:var(--max-width);width:var(--line-width)}.markdown-preview-view .inline-embed{--max-width:100%}body{--container-table-width:var(--line-width);--container-table-max-width:var(--max-width);--table-max-width:none;--table-width:auto;--table-margin:inherit;--container-img-width:var(--line-width);--container-img-max-width:var(--max-width);--img-max-width:100%;--img-width:auto;--img-margin-start:var(--content-margin-start);--img-line-width:var(--content-line-width);--container-chart-width:var(--line-width);--container-chart-max-width:var(--max-width);--chart-max-width:none;--chart-width:auto;--container-map-width:var(--line-width);--container-map-max-width:var(--max-width);--map-max-width:none;--map-width:auto;--container-iframe-width:var(--line-width);--container-iframe-max-width:var(--max-width);--iframe-max-width:none;--iframe-width:auto}body .wide{--line-width:var(--line-width-wide);--container-table-width:var(--line-width-wide);--container-img-width:var(--line-width-wide);--container-iframe-width:var(--line-width-wide);--container-map-width:var(--line-width-wide);--container-chart-width:var(--line-width-wide)}body .max{--line-width:var(--max-width);--container-table-width:var(--max-width);--container-img-width:var(--max-width);--container-iframe-width:var(--max-width);--container-map-width:var(--max-width);--container-chart-width:var(--max-width)}table.dataview{--table-min-width:min(var(--line-width),var(--max-width))}.cards table.dataview{--table-width:100%;--table-min-width:none}.maximize-tables-auto{--container-table-max-width:100%;--container-table-width:100%;--table-max-width:100%;--table-margin:var(--content-margin-start) auto;--table-width:auto}.maximize-tables-auto .cards{--container-table-max-width:var(--max-width)}.maximize-tables-auto .cards .block-language-dataview{--table-margin:auto}.maximize-tables{--container-table-max-width:100%;--container-table-width:100%;--table-min-width:min(var(--line-width), var(--max-width));--table-max-width:100%;--table-margin:auto;--table-width:auto;--table-edge-cell-padding-first:10px}.table-100,.table-max,.table-wide{--table-max-width:100%;--table-width:100%}.table-wide{--container-table-width:var(--line-width-wide);--table-edge-cell-padding-first:0px}.table-max{--container-table-width:var(--max-width);--table-edge-cell-padding-first:0px;--table-margin:0}.table-100{--container-table-width:100%;--container-table-max-width:100%;--table-edge-cell-padding-first:20px;--table-margin:0}.table-100 .dataview.list-view-ul{max-width:var(--max-width);width:var(--line-width);margin-inline:auto}.img-100,.img-max,.img-wide{--img-max-width:100%;--img-width:100%}.img-wide{--container-img-width:var(--line-width-wide);--img-line-width:var(--line-width-wide);--img-margin-start:calc(50% - var(--line-width-wide)/2)}.img-max{--container-img-width:var(--max-width);--img-line-width:var(--max-width);--img-margin-start:calc(50% - var(--max-width)/2)}.img-100{--container-img-width:100%;--container-img-max-width:100%;--img-line-width:100%;--img-margin-start:0}.map-100,.map-max,.map-wide{--map-max-width:100%;--map-width:100%}.map-wide{--container-map-width:var(--line-width-wide)}.map-max{--container-map-width:var(--max-width)}.map-100{--container-map-width:100%;--container-map-max-width:100%}.chart-100,.chart-max,.chart-wide{--chart-max-width:100%;--chart-width:100%}.chart-wide{--container-chart-width:var(--line-width-wide)}.chart-max{--container-chart-width:var(--max-width)}.chart-100{--container-chart-width:100%;--container-chart-max-width:100%}.iframe-100,.iframe-max,.iframe-wide{--iframe-max-width:100%;--iframe-width:100%}.iframe-wide{--container-iframe-width:var(--line-width-wide)}.iframe-max{--container-iframe-width:var(--max-width)}.iframe-100{--container-iframe-width:100%;--container-iframe-max-width:100%}.markdown-preview-view.is-readable-line-width .markdown-preview-sizer .cm-table-widget,.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>div:has(>.block-language-dataview>table),.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>div:has(>.block-language-dataviewjs),.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>div:has(>table),.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content .cm-table-widget,.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content>div:has(>.block-language-dataview>table),.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content>div:has(>.block-language-dataviewjs),.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content>div:has(>table){width:var(--container-table-width);max-width:var(--container-table-max-width)}.markdown-preview-view.is-readable-line-width .markdown-preview-sizer table,.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content table{width:var(--table-width);max-width:var(--table-max-width);margin-inline:var(--table-margin);min-width:var(--table-min-width)}.markdown-preview-view.is-readable-line-width .markdown-preview-sizer .block-language-dataviewjs>:is(p,h1,h2,h3,h4,h5,h6),.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content .block-language-dataviewjs>:is(p,h1,h2,h3,h4,h5,h6){width:var(--line-width)}.markdown-preview-view.is-readable-line-width .markdown-preview-sizer .block-language-dataviewjs>.dataview-error,.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content .block-language-dataviewjs>.dataview-error{margin:0 auto;width:var(--content-line-width)}.markdown-preview-view.is-readable-line-width .markdown-preview-sizer .dataview.dataview-error-box,.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content .dataview.dataview-error-box{margin-inline:var(--table-margin)}.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.image-embed,.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content>.image-embed{padding-top:.25rem;padding-bottom:.25rem}.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.image-embed,.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>div:has(.image-embed),.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content>.image-embed,.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content>div:has(.image-embed){width:var(--container-img-width);max-width:var(--container-img-max-width)}.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.image-embed img,.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>div:has(.image-embed) img,.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content>.image-embed img,.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content>div:has(.image-embed) img{max-width:var(--img-max-width)}.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>img,.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content>img{max-width:var(--img-line-width);margin-inline-start:var(--img-margin-start)!important}.markdown-preview-view.is-readable-line-width .markdown-preview-sizer div:has(>.block-language-chart),.markdown-preview-view.is-readable-line-width .markdown-preview-sizer div:has(>.block-language-dataviewjs canvas),.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content div:has(>.block-language-chart),.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content div:has(>.block-language-dataviewjs canvas){width:var(--container-chart-width);max-width:var(--container-chart-max-width)}.markdown-preview-view.is-readable-line-width .markdown-preview-sizer div:has(>.block-language-chart) canvas,.markdown-preview-view.is-readable-line-width .markdown-preview-sizer div:has(>.block-language-dataviewjs canvas) canvas,.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content div:has(>.block-language-chart) canvas,.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content div:has(>.block-language-dataviewjs canvas) canvas{max-width:var(--map-chart-width)}.markdown-preview-view.is-readable-line-width .markdown-preview-sizer div:has(>.block-language-leaflet),.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content div:has(>.block-language-leaflet){width:var(--container-map-width);max-width:var(--container-map-max-width)}.markdown-preview-view.is-readable-line-width .markdown-preview-sizer div:has(>.block-language-leaflet) iframe,.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content div:has(>.block-language-leaflet) iframe{max-width:var(--map-max-width)}.markdown-preview-view.is-readable-line-width .markdown-preview-sizer div:has(>.cm-html-embed),.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>div:has(>iframe),.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content div:has(>.cm-html-embed),.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content>div:has(>iframe){width:var(--container-iframe-width);max-width:var(--container-iframe-max-width)}.markdown-preview-view.is-readable-line-width .markdown-preview-sizer div:has(>.cm-html-embed) iframe,.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>div:has(>iframe) iframe,.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content div:has(>.cm-html-embed) iframe,.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content>div:has(>iframe) iframe{max-width:var(--iframe-max-width);width:var(--iframe-width)}.borders-none{--divider-width:0px;--tab-outline-width:0px}body{--cards-min-width:180px;--cards-max-width:1fr;--cards-mobile-width:120px;--cards-image-height:400px;--cards-padding:1.2em;--cards-image-fit:contain;--cards-background:transparent;--cards-border-width:1px;--cards-aspect-ratio:auto;--cards-columns:repeat(auto-fit, minmax(var(--cards-min-width), var(--cards-max-width)))}@media (max-width:400pt){body{--cards-min-width:var(--cards-mobile-width)}}.cards.table-100 table.dataview tbody,.table-100 .cards table.dataview tbody{padding:.25rem .75rem}.cards table.dataview{--table-width:100%;--table-edge-cell-padding-first:calc(var(--cards-padding)/2);--table-edge-cell-padding-last:calc(var(--cards-padding)/2);--table-cell-padding:calc(var(--cards-padding)/3) calc(var(--cards-padding)/2);line-height:1.3}.cards table.dataview tbody{clear:both;padding:.5rem 0;display:grid;grid-template-columns:var(--cards-columns);grid-column-gap:0.75rem;grid-row-gap:0.75rem}.cards table.dataview>tbody>tr{background-color:var(--cards-background);border:var(--cards-border-width) solid var(--background-modifier-border);display:flex;flex-direction:column;margin:0;padding:0 0 calc(var(--cards-padding)/3) 0;border-radius:6px;overflow:hidden;transition:box-shadow .15s linear;max-width:var(--cards-max-width)}.cards table.dataview>tbody>tr:hover{border:var(--cards-border-width) solid var(--background-modifier-border-hover);box-shadow:0 4px 6px 0 rgba(0,0,0,.05),0 1px 3px 1px rgba(0,0,0,.025);transition:box-shadow .15s linear}.cards table.dataview tbody>tr>td:first-child{font-weight:var(--bold-weight);border:none}.cards table.dataview tbody>tr>td:first-child a{display:block}.cards table.dataview tbody>tr>td:last-child{border:none}.cards table.dataview tbody>tr>td:not(:first-child){font-size:calc(var(--table-text-size) * .9);color:var(--text-muted)}.cards table.dataview tbody>tr>td>*{padding:calc(var(--cards-padding)/3) 0}.cards table.dataview tbody>tr>td:not(:last-child):not(:first-child){padding:4px 0;border-bottom:1px solid var(--background-modifier-border);width:calc(100% - var(--cards-padding));margin:0 calc(var(--cards-padding)/2)}.cards table.dataview tbody>tr>td a{text-decoration:none}.cards table.dataview tbody>tr>td>button{width:100%;margin:calc(var(--cards-padding)/2) 0}.cards table.dataview tbody>tr>td:last-child>button{margin-bottom:calc(var(--cards-padding)/6)}.cards table.dataview tbody>tr>td>ul{width:100%;padding:.25em 0!important;margin:0 auto!important}.cards table.dataview tbody>tr>td:has(img){padding:0!important;background-color:var(--background-secondary);display:block;margin:0;width:100%}.cards table.dataview tbody>tr>td img{aspect-ratio:var(--cards-aspect-ratio);width:100%;object-fit:var(--cards-image-fit);max-height:var(--cards-image-height);background-color:var(--background-secondary);vertical-align:bottom}.markdown-source-view.mod-cm6.cards .dataview.table-view-table>tbody>tr>td,.trim-cols .cards table.dataview tbody>tr>td{white-space:normal}.links-int-on .cards table{--link-decoration:none}.markdown-source-view.mod-cm6.cards .edit-block-button{top:0}.cards.table-100 table.dataview thead>tr,.table-100 .cards table.dataview thead>tr{right:.75rem}.cards.table-100 table.dataview thead:before,.table-100 .cards table.dataview thead:before{margin-right:.75rem}.theme-light .cards table.dataview thead:before{background-image:url('data:image/svg+xml;utf8,')}.cards table.dataview thead{user-select:none;width:180px;display:block;float:right;position:relative;text-align:right;height:24px;padding-bottom:0}.cards table.dataview thead:hover:before{opacity:.5;background-color:var(--background-modifier-hover)}.cards table.dataview thead:before{content:'';position:absolute;right:0;top:0;width:10px;height:16px;background-repeat:no-repeat;cursor:var(--cursor);text-align:right;padding:var(--size-4-1) var(--size-4-2);margin-bottom:2px;border-radius:var(--radius-s);font-weight:500;font-size:var(--font-adaptive-small);opacity:.25;background-position:center center;background-size:16px;background-image:url('data:image/svg+xml;utf8,')}.cards table.dataview thead>tr{top:-1px;position:absolute;display:none;z-index:9;border:1px solid var(--background-modifier-border-hover);background-color:var(--background-secondary);box-shadow:var(--shadow-s);padding:6px;border-radius:var(--radius-m);flex-direction:column;margin:24px 0 0 0;width:100%}.cards table.dataview thead:hover>tr{display:flex}.cards table.dataview thead>tr>th{display:block;padding:3px 30px 3px 6px!important;border-radius:var(--radius-s);width:100%;font-weight:400;color:var(--text-normal);cursor:var(--cursor);border:none;font-size:var(--font-ui-small)}.cards table.dataview thead>tr>th[sortable-style=sortable-asc],.cards table.dataview thead>tr>th[sortable-style=sortable-desc]{color:var(--text-normal)}.cards table.dataview thead>tr>th:hover{color:var(--text-normal);background-color:var(--background-modifier-hover)}.list-cards.markdown-preview-view .list-bullet,.list-cards.markdown-preview-view .list-collapse-indicator,.list-cards.markdown-preview-view.markdown-rendered.show-indentation-guide li>ul::before{display:none}.list-cards.markdown-preview-view div>ul{display:grid;gap:.75rem;grid-template-columns:var(--cards-columns);padding:0;line-height:var(--line-height-tight)}.list-cards.markdown-preview-view div>ul>li{background-color:var(--cards-background);padding:calc(var(--cards-padding)/2);border-radius:var(--radius-s);border:var(--cards-border-width) solid var(--background-modifier-border);overflow:hidden}.list-cards.markdown-preview-view div>ul .image-embed{padding:0;display:block;background-color:var(--background-secondary);border-radius:var(--image-radius)}.list-cards.markdown-preview-view div>ul .image-embed img{aspect-ratio:var(--cards-aspect-ratio);object-fit:var(--cards-image-fit);max-height:var(--cards-image-height);background-color:var(--background-secondary);vertical-align:bottom}.list-cards.markdown-preview-view div>ul>li>a{--link-decoration:none;--link-external-decoration:none;font-weight:var(--bold-weight)}.list-cards.markdown-preview-view div ul>li:hover{border-color:var(--background-modifier-border-hover)}.list-cards.markdown-preview-view div ul ul{display:block;width:100%;color:var(--text-muted);font-size:var(--font-smallest);margin:calc(var(--cards-padding)/-4) 0;padding:calc(var(--cards-padding)/2) 0}.list-cards.markdown-preview-view div ul ul ul{padding-bottom:calc(var(--cards-padding)/4)}.list-cards.markdown-preview-view div ul ul>li{display:block}.cards.cards-16-9,.list-cards.cards-16-9{--cards-aspect-ratio:16/9}.cards.cards-1-1,.list-cards.cards-1-1{--cards-aspect-ratio:1/1}.cards.cards-2-1,.list-cards.cards-2-1{--cards-aspect-ratio:2/1}.cards.cards-2-3,.list-cards.cards-2-3{--cards-aspect-ratio:2/3}.cards.cards-cols-1,.list-cards.cards-cols-1{--cards-columns:repeat(1, minmax(0, 1fr))}.cards.cards-cols-2,.list-cards.cards-cols-2{--cards-columns:repeat(2, minmax(0, 1fr))}.cards.cards-cover,.list-cards.cards-cover{--cards-image-fit:cover}.cards.cards-align-bottom table.dataview tbody>tr>td:last-child,.list-cards.cards-align-bottom table.dataview tbody>tr>td:last-child{margin-top:auto}@media (max-width:400pt){.cards table.dataview tbody>tr>td:not(:first-child){font-size:80%}}@media (min-width:400pt){.cards-cols-3{--cards-columns:repeat(3, minmax(0, 1fr))}.cards-cols-4{--cards-columns:repeat(4, minmax(0, 1fr))}.cards-cols-5{--cards-columns:repeat(5, minmax(0, 1fr))}.cards-cols-6{--cards-columns:repeat(6, minmax(0, 1fr))}.cards-cols-7{--cards-columns:repeat(7, minmax(0, 1fr))}.cards-cols-8{--cards-columns:repeat(8, minmax(0, 1fr))}}.cm-formatting.cm-formatting-task.cm-property{font-family:var(--font-monospace);font-size:90%}input[data-task="!"]:checked,input[data-task="*"]:checked,input[data-task="-"]:checked,input[data-task="<"]:checked,input[data-task=">"]:checked,input[data-task="I"]:checked,input[data-task="b"]:checked,input[data-task="c"]:checked,input[data-task="d"]:checked,input[data-task="f"]:checked,input[data-task="k"]:checked,input[data-task="l"]:checked,input[data-task="p"]:checked,input[data-task="u"]:checked,input[data-task="w"]:checked,li[data-task="!"]>input:checked,li[data-task="!"]>p>input:checked,li[data-task="*"]>input:checked,li[data-task="*"]>p>input:checked,li[data-task="-"]>input:checked,li[data-task="-"]>p>input:checked,li[data-task="<"]>input:checked,li[data-task="<"]>p>input:checked,li[data-task=">"]>input:checked,li[data-task=">"]>p>input:checked,li[data-task="I"]>input:checked,li[data-task="I"]>p>input:checked,li[data-task="b"]>input:checked,li[data-task="b"]>p>input:checked,li[data-task="c"]>input:checked,li[data-task="c"]>p>input:checked,li[data-task="d"]>input:checked,li[data-task="d"]>p>input:checked,li[data-task="f"]>input:checked,li[data-task="f"]>p>input:checked,li[data-task="k"]>input:checked,li[data-task="k"]>p>input:checked,li[data-task="l"]>input:checked,li[data-task="l"]>p>input:checked,li[data-task="p"]>input:checked,li[data-task="p"]>p>input:checked,li[data-task="u"]>input:checked,li[data-task="u"]>p>input:checked,li[data-task="w"]>input:checked,li[data-task="w"]>p>input:checked{--checkbox-marker-color:transparent;border:none;border-radius:0;background-image:none;background-color:currentColor;-webkit-mask-size:var(--checkbox-icon);-webkit-mask-position:50% 50%}input[data-task=">"]:checked,li[data-task=">"]>input:checked,li[data-task=">"]>p>input:checked{color:var(--text-faint);transform:rotate(90deg);-webkit-mask-position:50% 100%;-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath d='M10.894 2.553a1 1 0 00-1.788 0l-7 14a1 1 0 001.169 1.409l5-1.429A1 1 0 009 15.571V11a1 1 0 112 0v4.571a1 1 0 00.725.962l5 1.428a1 1 0 001.17-1.408l-7-14z' /%3E%3C/svg%3E")}input[data-task="<"]:checked,li[data-task="<"]>input:checked,li[data-task="<"]>p>input:checked{color:var(--text-faint);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M10 18a8 8 0 100-16 8 8 0 000 16zm1-12a1 1 0 10-2 0v4a1 1 0 00.293.707l2.828 2.829a1 1 0 101.415-1.415L11 9.586V6z' clip-rule='evenodd' /%3E%3C/svg%3E");-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M6 2a1 1 0 00-1 1v1H4a2 2 0 00-2 2v10a2 2 0 002 2h12a2 2 0 002-2V6a2 2 0 00-2-2h-1V3a1 1 0 10-2 0v1H7V3a1 1 0 00-1-1zm0 5a1 1 0 000 2h8a1 1 0 100-2H6z' clip-rule='evenodd' /%3E%3C/svg%3E")}input[data-task="?"]:checked,li[data-task="?"]>input:checked,li[data-task="?"]>p>input:checked{--checkbox-marker-color:transparent;background-color:var(--color-yellow);border-color:var(--color-yellow);background-position:50% 50%;background-size:200% 90%;background-image:url('data:image/svg+xml,%3Csvg xmlns="http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg" width="20" height="20" preserveAspectRatio="xMidYMid meet" viewBox="0 0 16 16"%3E%3Cpath fill="white" fill-rule="evenodd" d="M4.475 5.458c-.284 0-.514-.237-.47-.517C4.28 3.24 5.576 2 7.825 2c2.25 0 3.767 1.36 3.767 3.215c0 1.344-.665 2.288-1.79 2.973c-1.1.659-1.414 1.118-1.414 2.01v.03a.5.5 0 0 1-.5.5h-.77a.5.5 0 0 1-.5-.495l-.003-.2c-.043-1.221.477-2.001 1.645-2.712c1.03-.632 1.397-1.135 1.397-2.028c0-.979-.758-1.698-1.926-1.698c-1.009 0-1.71.529-1.938 1.402c-.066.254-.278.461-.54.461h-.777ZM7.496 14c.622 0 1.095-.474 1.095-1.09c0-.618-.473-1.092-1.095-1.092c-.606 0-1.087.474-1.087 1.091S6.89 14 7.496 14Z"%2F%3E%3C%2Fsvg%3E')}.theme-dark input[data-task="?"]:checked,.theme-dark li[data-task="?"]>input:checked,.theme-dark li[data-task="?"]>p>input:checked{background-image:url('data:image/svg+xml,%3Csvg xmlns="http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg" width="20" height="20" preserveAspectRatio="xMidYMid meet" viewBox="0 0 16 16"%3E%3Cpath fill="black" fill-opacity="0.8" fill-rule="evenodd" d="M4.475 5.458c-.284 0-.514-.237-.47-.517C4.28 3.24 5.576 2 7.825 2c2.25 0 3.767 1.36 3.767 3.215c0 1.344-.665 2.288-1.79 2.973c-1.1.659-1.414 1.118-1.414 2.01v.03a.5.5 0 0 1-.5.5h-.77a.5.5 0 0 1-.5-.495l-.003-.2c-.043-1.221.477-2.001 1.645-2.712c1.03-.632 1.397-1.135 1.397-2.028c0-.979-.758-1.698-1.926-1.698c-1.009 0-1.71.529-1.938 1.402c-.066.254-.278.461-.54.461h-.777ZM7.496 14c.622 0 1.095-.474 1.095-1.09c0-.618-.473-1.092-1.095-1.092c-.606 0-1.087.474-1.087 1.091S6.89 14 7.496 14Z"%2F%3E%3C%2Fsvg%3E')}input[data-task="/"]:checked,li[data-task="/"]>input:checked,li[data-task="/"]>p>input:checked{background-image:none;background-color:transparent;position:relative;overflow:hidden}input[data-task="/"]:checked:after,li[data-task="/"]>input:checked:after,li[data-task="/"]>p>input:checked:after{top:0;left:0;content:" ";display:block;position:absolute;background-color:var(--background-modifier-accent);width:calc(50% - .5px);height:100%;-webkit-mask-image:none}input[data-task="!"]:checked,li[data-task="!"]>input:checked,li[data-task="!"]>p>input:checked{color:var(--color-orange);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M8.257 3.099c.765-1.36 2.722-1.36 3.486 0l5.58 9.92c.75 1.334-.213 2.98-1.742 2.98H4.42c-1.53 0-2.493-1.646-1.743-2.98l5.58-9.92zM11 13a1 1 0 11-2 0 1 1 0 012 0zm-1-8a1 1 0 00-1 1v3a1 1 0 002 0V6a1 1 0 00-1-1z' clip-rule='evenodd' /%3E%3C/svg%3E")}input[data-task="\""]:checked,input[data-task="“"]:checked,li[data-task="\""]>input:checked,li[data-task="\""]>p>input:checked,li[data-task="“"]>input:checked,li[data-task="“"]>p>input:checked{--checkbox-marker-color:transparent;background-position:50% 50%;background-color:var(--color-cyan);border-color:var(--color-cyan);background-size:75%;background-repeat:no-repeat;background-image:url('data:image/svg+xml,%3Csvg xmlns="http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg" width="20" height="20" preserveAspectRatio="xMidYMid meet" viewBox="0 0 24 24"%3E%3Cpath fill="white" d="M6.5 10c-.223 0-.437.034-.65.065c.069-.232.14-.468.254-.68c.114-.308.292-.575.469-.844c.148-.291.409-.488.601-.737c.201-.242.475-.403.692-.604c.213-.21.492-.315.714-.463c.232-.133.434-.28.65-.35l.539-.222l.474-.197l-.485-1.938l-.597.144c-.191.048-.424.104-.689.171c-.271.05-.56.187-.882.312c-.318.142-.686.238-1.028.466c-.344.218-.741.4-1.091.692c-.339.301-.748.562-1.05.945c-.33.358-.656.734-.909 1.162c-.293.408-.492.856-.702 1.299c-.19.443-.343.896-.468 1.336c-.237.882-.343 1.72-.384 2.437c-.034.718-.014 1.315.028 1.747c.015.204.043.402.063.539l.025.168l.026-.006A4.5 4.5 0 1 0 6.5 10zm11 0c-.223 0-.437.034-.65.065c.069-.232.14-.468.254-.68c.114-.308.292-.575.469-.844c.148-.291.409-.488.601-.737c.201-.242.475-.403.692-.604c.213-.21.492-.315.714-.463c.232-.133.434-.28.65-.35l.539-.222l.474-.197l-.485-1.938l-.597.144c-.191.048-.424.104-.689.171c-.271.05-.56.187-.882.312c-.317.143-.686.238-1.028.467c-.344.218-.741.4-1.091.692c-.339.301-.748.562-1.05.944c-.33.358-.656.734-.909 1.162c-.293.408-.492.856-.702 1.299c-.19.443-.343.896-.468 1.336c-.237.882-.343 1.72-.384 2.437c-.034.718-.014 1.315.028 1.747c.015.204.043.402.063.539l.025.168l.026-.006A4.5 4.5 0 1 0 17.5 10z"%2F%3E%3C%2Fsvg%3E')}.theme-dark input[data-task="\""]:checked,.theme-dark input[data-task="“"]:checked,.theme-dark li[data-task="\""]>input:checked,.theme-dark li[data-task="\""]>p>input:checked,.theme-dark li[data-task="“"]>input:checked,.theme-dark li[data-task="“"]>p>input:checked{background-image:url('data:image/svg+xml,%3Csvg xmlns="http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg" width="20" height="20" preserveAspectRatio="xMidYMid meet" viewBox="0 0 24 24"%3E%3Cpath fill="black" fill-opacity="0.7" d="M6.5 10c-.223 0-.437.034-.65.065c.069-.232.14-.468.254-.68c.114-.308.292-.575.469-.844c.148-.291.409-.488.601-.737c.201-.242.475-.403.692-.604c.213-.21.492-.315.714-.463c.232-.133.434-.28.65-.35l.539-.222l.474-.197l-.485-1.938l-.597.144c-.191.048-.424.104-.689.171c-.271.05-.56.187-.882.312c-.318.142-.686.238-1.028.466c-.344.218-.741.4-1.091.692c-.339.301-.748.562-1.05.945c-.33.358-.656.734-.909 1.162c-.293.408-.492.856-.702 1.299c-.19.443-.343.896-.468 1.336c-.237.882-.343 1.72-.384 2.437c-.034.718-.014 1.315.028 1.747c.015.204.043.402.063.539l.025.168l.026-.006A4.5 4.5 0 1 0 6.5 10zm11 0c-.223 0-.437.034-.65.065c.069-.232.14-.468.254-.68c.114-.308.292-.575.469-.844c.148-.291.409-.488.601-.737c.201-.242.475-.403.692-.604c.213-.21.492-.315.714-.463c.232-.133.434-.28.65-.35l.539-.222l.474-.197l-.485-1.938l-.597.144c-.191.048-.424.104-.689.171c-.271.05-.56.187-.882.312c-.317.143-.686.238-1.028.467c-.344.218-.741.4-1.091.692c-.339.301-.748.562-1.05.944c-.33.358-.656.734-.909 1.162c-.293.408-.492.856-.702 1.299c-.19.443-.343.896-.468 1.336c-.237.882-.343 1.72-.384 2.437c-.034.718-.014 1.315.028 1.747c.015.204.043.402.063.539l.025.168l.026-.006A4.5 4.5 0 1 0 17.5 10z"%2F%3E%3C%2Fsvg%3E')}input[data-task="-"]:checked,li[data-task="-"]>input:checked,li[data-task="-"]>p>input:checked{color:var(--text-faint);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M3 10a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1z' clip-rule='evenodd' /%3E%3C/svg%3E")}body:not(.tasks) .markdown-preview-view ul li[data-task="-"].task-list-item.is-checked,body:not(.tasks) .markdown-source-view.mod-cm6 .HyperMD-task-line[data-task]:is([data-task="-"]),body:not(.tasks) li[data-task="-"].task-list-item.is-checked{color:var(--text-faint);text-decoration:line-through solid var(--text-faint) 1px}input[data-task="*"]:checked,li[data-task="*"]>input:checked,li[data-task="*"]>p>input:checked{color:var(--color-yellow);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath d='M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z' /%3E%3C/svg%3E")}input[data-task="l"]:checked,li[data-task="l"]>input:checked,li[data-task="l"]>p>input:checked{color:var(--color-red);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M5.05 4.05a7 7 0 119.9 9.9L10 18.9l-4.95-4.95a7 7 0 010-9.9zM10 11a2 2 0 100-4 2 2 0 000 4z' clip-rule='evenodd' /%3E%3C/svg%3E")}input[data-task="i"]:checked,li[data-task="i"]>input:checked,li[data-task="i"]>p>input:checked{--checkbox-marker-color:transparent;background-color:var(--color-blue);border-color:var(--color-blue);background-position:50%;background-size:100%;background-image:url('data:image/svg+xml,%3Csvg xmlns="http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg" width="20" height="20" preserveAspectRatio="xMidYMid meet" viewBox="0 0 512 512"%3E%3Cpath fill="none" stroke="white" stroke-linecap="round" stroke-linejoin="round" stroke-width="40" d="M196 220h64v172"%2F%3E%3Cpath fill="none" stroke="white" stroke-linecap="round" stroke-miterlimit="10" stroke-width="40" d="M187 396h138"%2F%3E%3Cpath fill="white" d="M256 160a32 32 0 1 1 32-32a32 32 0 0 1-32 32Z"%2F%3E%3C%2Fsvg%3E')}.theme-dark input[data-task="i"]:checked,.theme-dark li[data-task="i"]>input:checked,.theme-dark li[data-task="i"]>p>input:checked{background-image:url('data:image/svg+xml,%3Csvg xmlns="http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg" width="20" height="20" preserveAspectRatio="xMidYMid meet" viewBox="0 0 512 512"%3E%3Cpath fill="none" stroke="black" stroke-opacity="0.8" stroke-linecap="round" stroke-linejoin="round" stroke-width="40" d="M196 220h64v172"%2F%3E%3Cpath fill="none" stroke="black" stroke-opacity="0.8" stroke-linecap="round" stroke-miterlimit="10" stroke-width="40" d="M187 396h138"%2F%3E%3Cpath fill="black" fill-opacity="0.8" d="M256 160a32 32 0 1 1 32-32a32 32 0 0 1-32 32Z"%2F%3E%3C%2Fsvg%3E')}input[data-task="S"]:checked,li[data-task="S"]>input:checked,li[data-task="S"]>p>input:checked{--checkbox-marker-color:transparent;border-color:var(--color-green);background-color:var(--color-green);background-size:100%;background-image:url('data:image/svg+xml,%3Csvg xmlns="http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg" width="20" height="20" preserveAspectRatio="xMidYMid meet" viewBox="0 0 48 48"%3E%3Cpath fill="white" fill-rule="evenodd" d="M26 8a2 2 0 1 0-4 0v2a8 8 0 1 0 0 16v8a4.002 4.002 0 0 1-3.773-2.666a2 2 0 0 0-3.771 1.332A8.003 8.003 0 0 0 22 38v2a2 2 0 1 0 4 0v-2a8 8 0 1 0 0-16v-8a4.002 4.002 0 0 1 3.773 2.666a2 2 0 0 0 3.771-1.332A8.003 8.003 0 0 0 26 10V8Zm-4 6a4 4 0 0 0 0 8v-8Zm4 12v8a4 4 0 0 0 0-8Z" clip-rule="evenodd"%2F%3E%3C%2Fsvg%3E')}.theme-dark input[data-task="S"]:checked,.theme-dark li[data-task="S"]>input:checked,.theme-dark li[data-task="S"]>p>input:checked{background-image:url('data:image/svg+xml,%3Csvg xmlns="http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg" width="20" height="20" preserveAspectRatio="xMidYMid meet" viewBox="0 0 48 48"%3E%3Cpath fill-opacity="0.8" fill="black" fill-rule="evenodd" d="M26 8a2 2 0 1 0-4 0v2a8 8 0 1 0 0 16v8a4.002 4.002 0 0 1-3.773-2.666a2 2 0 0 0-3.771 1.332A8.003 8.003 0 0 0 22 38v2a2 2 0 1 0 4 0v-2a8 8 0 1 0 0-16v-8a4.002 4.002 0 0 1 3.773 2.666a2 2 0 0 0 3.771-1.332A8.003 8.003 0 0 0 26 10V8Zm-4 6a4 4 0 0 0 0 8v-8Zm4 12v8a4 4 0 0 0 0-8Z" clip-rule="evenodd"%2F%3E%3C%2Fsvg%3E')}input[data-task="I"]:checked,li[data-task="I"]>input:checked,li[data-task="I"]>p>input:checked{color:var(--color-yellow);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath d='M11 3a1 1 0 10-2 0v1a1 1 0 102 0V3zM15.657 5.757a1 1 0 00-1.414-1.414l-.707.707a1 1 0 001.414 1.414l.707-.707zM18 10a1 1 0 01-1 1h-1a1 1 0 110-2h1a1 1 0 011 1zM5.05 6.464A1 1 0 106.464 5.05l-.707-.707a1 1 0 00-1.414 1.414l.707.707zM5 10a1 1 0 01-1 1H3a1 1 0 110-2h1a1 1 0 011 1zM8 16v-1h4v1a2 2 0 11-4 0zM12 14c.015-.34.208-.646.477-.859a4 4 0 10-4.954 0c.27.213.462.519.476.859h4.002z' /%3E%3C/svg%3E")}input[data-task="f"]:checked,li[data-task="f"]>input:checked,li[data-task="f"]>p>input:checked{color:var(--color-red);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M12.395 2.553a1 1 0 00-1.45-.385c-.345.23-.614.558-.822.88-.214.33-.403.713-.57 1.116-.334.804-.614 1.768-.84 2.734a31.365 31.365 0 00-.613 3.58 2.64 2.64 0 01-.945-1.067c-.328-.68-.398-1.534-.398-2.654A1 1 0 005.05 6.05 6.981 6.981 0 003 11a7 7 0 1011.95-4.95c-.592-.591-.98-.985-1.348-1.467-.363-.476-.724-1.063-1.207-2.03zM12.12 15.12A3 3 0 017 13s.879.5 2.5.5c0-1 .5-4 1.25-4.5.5 1 .786 1.293 1.371 1.879A2.99 2.99 0 0113 13a2.99 2.99 0 01-.879 2.121z' clip-rule='evenodd' /%3E%3C/svg%3E")}input[data-task="k"]:checked,li[data-task="k"]>input:checked,li[data-task="k"]>p>input:checked{color:var(--color-yellow);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M18 8a6 6 0 01-7.743 5.743L10 14l-1 1-1 1H6v2H2v-4l4.257-4.257A6 6 0 1118 8zm-6-4a1 1 0 100 2 2 2 0 012 2 1 1 0 102 0 4 4 0 00-4-4z' clip-rule='evenodd' /%3E%3C/svg%3E")}input[data-task="u"]:checked,li[data-task="u"]>input:checked,li[data-task="u"]>p>input:checked{color:var(--color-green);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M12 7a1 1 0 110-2h5a1 1 0 011 1v5a1 1 0 11-2 0V8.414l-4.293 4.293a1 1 0 01-1.414 0L8 10.414l-4.293 4.293a1 1 0 01-1.414-1.414l5-5a1 1 0 011.414 0L11 10.586 14.586 7H12z' clip-rule='evenodd' /%3E%3C/svg%3E")}input[data-task="d"]:checked,li[data-task="d"]>input:checked,li[data-task="d"]>p>input:checked{color:var(--color-red);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M12 13a1 1 0 100 2h5a1 1 0 001-1V9a1 1 0 10-2 0v2.586l-4.293-4.293a1 1 0 00-1.414 0L8 9.586 3.707 5.293a1 1 0 00-1.414 1.414l5 5a1 1 0 001.414 0L11 9.414 14.586 13H12z' clip-rule='evenodd' /%3E%3C/svg%3E")}input[data-task="w"]:checked,li[data-task="w"]>input:checked,li[data-task="w"]>p>input:checked{color:var(--color-purple);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M6 3a1 1 0 011-1h.01a1 1 0 010 2H7a1 1 0 01-1-1zm2 3a1 1 0 00-2 0v1a2 2 0 00-2 2v1a2 2 0 00-2 2v.683a3.7 3.7 0 011.055.485 1.704 1.704 0 001.89 0 3.704 3.704 0 014.11 0 1.704 1.704 0 001.89 0 3.704 3.704 0 014.11 0 1.704 1.704 0 001.89 0A3.7 3.7 0 0118 12.683V12a2 2 0 00-2-2V9a2 2 0 00-2-2V6a1 1 0 10-2 0v1h-1V6a1 1 0 10-2 0v1H8V6zm10 8.868a3.704 3.704 0 01-4.055-.036 1.704 1.704 0 00-1.89 0 3.704 3.704 0 01-4.11 0 1.704 1.704 0 00-1.89 0A3.704 3.704 0 012 14.868V17a1 1 0 001 1h14a1 1 0 001-1v-2.132zM9 3a1 1 0 011-1h.01a1 1 0 110 2H10a1 1 0 01-1-1zm3 0a1 1 0 011-1h.01a1 1 0 110 2H13a1 1 0 01-1-1z' clip-rule='evenodd' /%3E%3C/svg%3E")}input[data-task="p"]:checked,li[data-task="p"]>input:checked,li[data-task="p"]>p>input:checked{color:var(--color-green);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath d='M2 10.5a1.5 1.5 0 113 0v6a1.5 1.5 0 01-3 0v-6zM6 10.333v5.43a2 2 0 001.106 1.79l.05.025A4 4 0 008.943 18h5.416a2 2 0 001.962-1.608l1.2-6A2 2 0 0015.56 8H12V4a2 2 0 00-2-2 1 1 0 00-1 1v.667a4 4 0 01-.8 2.4L6.8 7.933a4 4 0 00-.8 2.4z' /%3E%3C/svg%3E")}input[data-task="c"]:checked,li[data-task="c"]>input:checked,li[data-task="c"]>p>input:checked{color:var(--color-orange);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath d='M18 9.5a1.5 1.5 0 11-3 0v-6a1.5 1.5 0 013 0v6zM14 9.667v-5.43a2 2 0 00-1.105-1.79l-.05-.025A4 4 0 0011.055 2H5.64a2 2 0 00-1.962 1.608l-1.2 6A2 2 0 004.44 12H8v4a2 2 0 002 2 1 1 0 001-1v-.667a4 4 0 01.8-2.4l1.4-1.866a4 4 0 00.8-2.4z' /%3E%3C/svg%3E")}input[data-task="b"]:checked,li[data-task="b"]>input:checked,li[data-task="b"]>p>input:checked{color:var(--color-orange);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath d='M5 4a2 2 0 012-2h6a2 2 0 012 2v14l-5-2.5L5 18V4z' /%3E%3C/svg%3E")}.colorful-active .nav-files-container{--nav-item-background-active:var(--interactive-accent);--nav-item-color-active:var(--text-on-accent)}.colorful-active #calendar-container .active,.colorful-active #calendar-container .active.today,.colorful-active #calendar-container .active:hover,.colorful-active #calendar-container .day:active{background-color:var(--interactive-accent);color:var(--text-on-accent)}.colorful-active #calendar-container .active .dot,.colorful-active #calendar-container .day:active .dot,.colorful-active #calendar-container .today.active .dot{fill:var(--text-on-accent)}body:not(.colorful-active) .horizontal-tab-nav-item.is-active,body:not(.colorful-active) .vertical-tab-nav-item.is-active{background-color:var(--background-modifier-hover);color:var(--text-normal)}body{--frame-background:hsl( var(--frame-background-h), var(--frame-background-s), var(--frame-background-l));--frame-icon-color:var(--frame-muted-color)}.theme-light{--frame-background-h:var(--accent-h);--frame-background-s:var(--accent-s);--frame-background-l:calc(var(--accent-l) + 30%);--frame-outline-color:hsla( var(--frame-background-h), var(--frame-background-s), calc(var(--frame-background-l) - 6.5%), 1 );--frame-muted-color:hsl( var(--frame-background-h), calc(var(--frame-background-s) - 10%), calc(var(--frame-background-l) - 35%))}.theme-dark{--frame-background-h:var(--accent-h);--frame-background-s:var(--accent-s);--frame-background-l:calc(var(--accent-l) - 25%);--frame-outline-color:hsla( var(--frame-background-h), calc(var(--frame-background-s) - 2%), calc(var(--frame-background-l) + 6.5%), 1 );--frame-muted-color:hsl( var(--frame-background-h), calc(var(--frame-background-s) - 10%), calc(var(--frame-background-l) + 25%))}.colorful-frame.theme-dark{--tab-outline-width:0px}.colorful-frame,.colorful-frame.is-focused{--frame-divider-color:var(--frame-outline-color);--titlebar-background:var(--frame-background);--titlebar-background-focused:var(--frame-background);--titlebar-text-color:var(--frame-muted-color);--minimal-tab-text-color:var(--frame-muted-color)}.colorful-frame .workspace-tabs:not(.mod-stacked),.colorful-frame.is-focused .workspace-tabs:not(.mod-stacked){--tab-text-color:var(--minimal-tab-text-color);--tab-text-color-focused:var(--minimal-tab-text-color)}.colorful-frame .mod-top .workspace-tab-header-container,.colorful-frame .titlebar,.colorful-frame .workspace-ribbon.mod-left:before,.colorful-frame.is-focused .mod-top .workspace-tab-header-container,.colorful-frame.is-focused .titlebar,.colorful-frame.is-focused .workspace-ribbon.mod-left:before{--tab-outline-color:var(--frame-outline-color);--tab-divider-color:var(--frame-outline-color)}.colorful-frame .mod-root .workspace-tab-header .workspace-tab-header-inner-icon,.colorful-frame.is-focused .mod-root .workspace-tab-header .workspace-tab-header-inner-icon{--icon-color:var(--minimal-tab-text-color-active);--icon-color-hover:var(--minimal-tab-text-color-active);--icon-color-active:var(--minimal-tab-text-color-active);--icon-color-focused:var(--minimal-tab-text-color-active)}.colorful-frame .mod-left-split .mod-top .workspace-tab-header,.colorful-frame .mod-right-split .mod-top .workspace-tab-header,.colorful-frame .sidebar-toggle-button,.colorful-frame .workspace-tab-header-new-tab,.colorful-frame .workspace-tab-header-tab-list,.colorful-frame .workspace-tab-header:not(.is-active),.colorful-frame.is-focused .mod-left-split .mod-top .workspace-tab-header,.colorful-frame.is-focused .mod-right-split .mod-top .workspace-tab-header,.colorful-frame.is-focused .sidebar-toggle-button,.colorful-frame.is-focused .workspace-tab-header-new-tab,.colorful-frame.is-focused .workspace-tab-header-tab-list,.colorful-frame.is-focused .workspace-tab-header:not(.is-active){--background-modifier-hover:var(--frame-outline-color);--icon-color:var(--frame-icon-color);--icon-color-hover:var(--frame-icon-color);--icon-color-active:var(--frame-icon-color);--icon-color-focused:var(--frame-icon-color);--icon-color-focus:var(--frame-icon-color)}.colorful-frame .mod-left-split .mod-top .workspace-tab-header.is-active .workspace-tab-header-inner-icon,.colorful-frame .mod-right-split .mod-top .workspace-tab-header.is-active .workspace-tab-header-inner-icon,.colorful-frame.is-focused .mod-left-split .mod-top .workspace-tab-header.is-active .workspace-tab-header-inner-icon,.colorful-frame.is-focused .mod-right-split .mod-top .workspace-tab-header.is-active .workspace-tab-header-inner-icon{color:var(--frame-icon-color)}.workspace-leaf-resize-handle{transition:none}.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-left-split>.workspace-leaf-resize-handle,.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-right-split>.workspace-leaf-resize-handle,.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-vertical>*>.workspace-leaf-resize-handle{-webkit-app-region:no-drag;border:0;z-index:15}.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-left-split>.workspace-leaf-resize-handle:after,.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-right-split>.workspace-leaf-resize-handle:after,.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-vertical>*>.workspace-leaf-resize-handle:after{content:"";height:100%;width:1px;background:linear-gradient(180deg,var(--frame-outline-color) var(--header-height),var(--divider-color) var(--header-height));top:0;position:absolute}.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-left-split>.workspace-leaf-resize-handle:hover:after,.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-right-split>.workspace-leaf-resize-handle:hover:after,.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-vertical>*>.workspace-leaf-resize-handle:hover:after{background:var(--divider-color-hover)}.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-right-split>.workspace-leaf-resize-handle:after{left:0}.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-left-split>.workspace-leaf-resize-handle:after,.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-vertical>*>.workspace-leaf-resize-handle:after{right:0}body.colorful-headings{--h1-color:var(--color-red);--h2-color:var(--color-orange);--h3-color:var(--color-yellow);--h4-color:var(--color-green);--h5-color:var(--color-blue);--h6-color:var(--color-purple)}body.colorful-headings .modal{--h1-color:var(--text-normal);--h2-color:var(--text-normal);--h3-color:var(--text-normal);--h4-color:var(--text-normal);--h5-color:var(--text-normal);--h6-color:var(--text-normal)}.is-mobile .tree-item-self .collapse-icon{width:20px}body:not(.minimal-icons-off) svg.calendar-day,body:not(.minimal-icons-off) svg.excalidraw-icon,body:not(.minimal-icons-off) svg.globe,body:not(.minimal-icons-off) svg.longform,body:not(.minimal-icons-off) svg.obsidian-leaflet-plugin-icon-map{background-color:currentColor}body:not(.minimal-icons-off) svg.excalidraw-icon path{display:none}body:not(.minimal-icons-off) svg.bar-graph{-webkit-mask-image:url('data:image/svg+xml;utf8,')}body:not(.minimal-icons-off) svg.excalidraw-icon{-webkit-mask-image:url('data:image/svg+xml;utf8,')}body:not(.minimal-icons-off) svg.longform{-webkit-mask-image:url('data:image/svg+xml;utf8,')}.workspace-ribbon.mod-left{border-left:0;transition:none}.minimal-focus-mode.is-translucent .workspace-ribbon.mod-left.is-collapsed,.minimal-focus-mode.is-translucent .workspace-ribbon.mod-left.is-collapsed:before{background-color:var(--background-primary)!important}.minimal-focus-mode .workspace-ribbon.mod-left{transition:background-color 0s linear 0s}.minimal-focus-mode .workspace-ribbon.mod-left.is-collapsed{border-color:transparent;background-color:var(--background-primary)}.minimal-focus-mode .workspace-ribbon.mod-left.is-collapsed:before{background-color:var(--background-primary);border-color:transparent}.minimal-focus-mode .workspace-ribbon.mod-left.is-collapsed .side-dock-actions,.minimal-focus-mode .workspace-ribbon.mod-left.is-collapsed .side-dock-settings{opacity:0;transition:opacity .1s ease-in-out .1s}.minimal-focus-mode .workspace-ribbon.mod-left.is-collapsed:hover .side-dock-actions,.minimal-focus-mode .workspace-ribbon.mod-left.is-collapsed:hover .side-dock-settings{opacity:1;transition:opacity .1s ease-in-out .1s}.minimal-focus-mode.borders-title .workspace-ribbon.mod-left.is-collapsed{border-right:none}.minimal-focus-mode .mod-top-right-space .sidebar-toggle-button.mod-right{opacity:0}.minimal-focus-mode:not(.minimal-status-off) .status-bar{opacity:0;transition:opacity .2s ease-in-out}.minimal-focus-mode .status-bar:hover{opacity:1;transition:opacity .2s ease-in-out}.minimal-focus-mode .mod-root .workspace-tabs{position:relative}.minimal-focus-mode .mod-root .workspace-tabs:before:hover{background-color:#00f}.minimal-focus-mode .mod-root .workspace-tab-header-container{height:0;transition:all .1s linear .6s;--tab-outline-width:0px}.minimal-focus-mode .mod-root .workspace-tab-header-container .workspace-tab-header-container-inner,.minimal-focus-mode .mod-root .workspace-tab-header-container .workspace-tab-header-new-tab,.minimal-focus-mode .mod-root .workspace-tab-header-container .workspace-tab-header-tab-list{opacity:0;transition:opacity .1s linear .6s}.minimal-focus-mode .mod-root .workspace-tab-header-container .workspace-tab-header-spacer:before{width:100%;content:" ";background-color:transparent;height:15px;position:absolute;z-index:100;top:0;left:0}.minimal-focus-mode .mod-root .workspace-tab-header-container:hover{height:var(--header-height);--tab-outline-width:1px;transition:all .1s linear 50ms}.minimal-focus-mode .mod-root .workspace-tab-header-container:hover .workspace-tab-header-container-inner,.minimal-focus-mode .mod-root .workspace-tab-header-container:hover .workspace-tab-header-new-tab,.minimal-focus-mode .mod-root .workspace-tab-header-container:hover .workspace-tab-header-tab-list{opacity:1;transition:opacity .1s linear 50ms}.minimal-focus-mode.mod-macos:not(.is-fullscreen) .workspace:not(.is-left-sidedock-open) .mod-root .workspace-tabs.mod-stacked .workspace-tab-container .workspace-tab-header-inner{padding-top:30px}body.show-view-header .app-container .workspace-split.mod-root>.workspace-leaf .view-header{transition:height .1s linear .1s}body.minimal-focus-mode.show-view-header .mod-root .workspace-leaf .view-header{height:0;transition:all .1s linear .5s}body.minimal-focus-mode.show-view-header .view-header::after{width:100%;content:" ";background-color:transparent;height:40px;position:absolute;z-index:-9;top:0}body.minimal-focus-mode.show-view-header .view-actions,body.minimal-focus-mode.show-view-header .view-header-nav-buttons,body.minimal-focus-mode.show-view-header .view-header-title-container{opacity:0;transition:all .1s linear .5s}body.minimal-focus-mode.show-view-header .mod-root .workspace-leaf .view-header:focus-within,body.minimal-focus-mode.show-view-header .mod-root .workspace-leaf .view-header:hover,body.minimal-focus-mode.show-view-header .mod-root .workspace-tab-header-container:hover~.workspace-tab-container .view-header{height:calc(var(--header-height) + 2px);transition:all .1s linear .1s}body.minimal-focus-mode.show-view-header .mod-root .workspace-tab-header-container:hover~.workspace-tab-container .view-header .view-actions,body.minimal-focus-mode.show-view-header .mod-root .workspace-tab-header-container:hover~.workspace-tab-container .view-header .view-header-nav-buttons,body.minimal-focus-mode.show-view-header .mod-root .workspace-tab-header-container:hover~.workspace-tab-container .view-header .view-header-title-container,body.minimal-focus-mode.show-view-header .view-header:focus-within .view-actions,body.minimal-focus-mode.show-view-header .view-header:focus-within .view-header-nav-buttons,body.minimal-focus-mode.show-view-header .view-header:focus-within .view-header-title-container,body.minimal-focus-mode.show-view-header .view-header:hover .view-actions,body.minimal-focus-mode.show-view-header .view-header:hover .view-header-nav-buttons,body.minimal-focus-mode.show-view-header .view-header:hover .view-header-title-container{opacity:1;transition:all .1s linear .1s}body.minimal-focus-mode.show-view-header .view-content{height:100%}.full-width-media{--iframe-width:100%}.full-width-media .markdown-preview-view .external-embed,.full-width-media .markdown-preview-view .image-embed img:not(.link-favicon):not(.emoji):not([width]),.full-width-media .markdown-preview-view audio,.full-width-media .markdown-preview-view img:not(.link-favicon):not(.emoji):not([width]),.full-width-media .markdown-preview-view p:has(.external-embed),.full-width-media .markdown-preview-view video,.full-width-media .markdown-source-view .external-embed,.full-width-media .markdown-source-view .image-embed img:not(.link-favicon):not(.emoji):not([width]),.full-width-media .markdown-source-view audio,.full-width-media .markdown-source-view img:not(.link-favicon):not(.emoji):not([width]),.full-width-media .markdown-source-view p:has(.external-embed),.full-width-media .markdown-source-view video{width:100%}.markdown-rendered img:not(.emoji),.markdown-rendered video,.markdown-source-view img:not(.emoji),.markdown-source-view video{border-radius:var(--image-radius)}.table-small table:not(.calendar){--table-text-size:85%}.table-tiny table:not(.calendar){--table-text-size:75%}.row-hover{--table-edge-cell-padding-first:8px;--table-edge-cell-padding-last:8px}.row-alt{--table-row-alt-background:var(--background-table-rows);--table-edge-cell-padding-first:8px;--table-edge-cell-padding-last:8px}.col-alt .markdown-rendered:not(.cards){--table-column-alt-background:var(--background-table-rows)}.table-tabular table:not(.calendar){font-variant-numeric:tabular-nums}.table-lines{--table-border-width:var(--border-width);--table-header-border-width:var(--border-width);--table-column-first-border-width:var(--border-width);--table-column-last-border-width:var(--border-width);--table-row-last-border-width:var(--border-width);--table-edge-cell-padding:8px;--table-edge-cell-padding-first:8px;--table-edge-cell-padding-last:8px}.table-nowrap{--table-white-space:nowrap}.table-nowrap .table-wrap,.trim-cols{--table-white-space:normal}.table-numbers{--table-numbers-padding-right:0.5em}.table-numbers table:not(.calendar){counter-reset:section}.table-numbers table:not(.calendar)>thead>tr>th:first-child{white-space:nowrap}.table-numbers table:not(.calendar)>thead>tr>th:first-child::before{content:" ";padding-right:var(--table-numbers-padding-right);display:inline-block;min-width:2em}.table-numbers table:not(.calendar)>thead>tr>th:first-child .markdown-source-view.mod-cm6,.table-numbers table:not(.calendar)>thead>tr>th:first-child .table-cell-wrapper{display:inline-block;min-width:10px}.table-numbers table:not(.calendar).table-editor>tbody>tr>td:first-child .table-cell-wrapper,.table-numbers table:not(.calendar):not(.table-editor)>tbody>tr>td:first-child{white-space:nowrap}.table-numbers table:not(.calendar).table-editor>tbody>tr>td:first-child .table-cell-wrapper::before,.table-numbers table:not(.calendar):not(.table-editor)>tbody>tr>td:first-child::before{counter-increment:section;content:counter(section) " ";text-align:center;padding-right:var(--table-numbers-padding-right);display:inline-block;min-width:2em;color:var(--text-faint);font-variant-numeric:tabular-nums}.table-numbers table:not(.calendar).table-editor>tbody>tr>td:first-child .table-cell-wrapper .markdown-source-view.mod-cm6,.table-numbers table:not(.calendar):not(.table-editor)>tbody>tr>td:first-child .markdown-source-view.mod-cm6{display:inline-block;min-width:10px}.table-numbers .table-editor{--table-numbers-padding-right:0}.row-lines-off .table-view-table>tbody>tr>td,.row-lines-off table:not(.calendar) tbody>tr:last-child>td,.row-lines-off table:not(.calendar) tbody>tr>td{border-bottom:none}.row-lines .table-view-table>tbody>tr>td,.row-lines table:not(.calendar) tbody>tr>td{border-bottom:var(--table-border-width) solid var(--table-border-color)}.row-lines table:not(.calendar) tbody>tr:last-child>td{border-bottom:none}.col-lines .table-view-table thead>tr>th:not(:last-child),.col-lines .table-view-table>tbody>tr>td:not(:last-child),.col-lines table:not(.calendar) tbody>tr>td:not(:last-child){border-right:var(--table-border-width) solid var(--background-modifier-border)}.row-hover{--table-row-background-hover:hsla( var(--accent-h), 50%, 80%, 20% )}.theme-dark .row-hover,.theme-dark.row-hover{--table-row-background-hover:hsla( var(--accent-h), 30%, 40%, 20% )}:root{--image-mix:normal}.image-blend-light{--image-mix:multiply}.theme-dark .markdown-preview-view img,.theme-dark .markdown-source-view img{opacity:var(--image-muted);transition:opacity .25s linear}@media print{body{--image-muted:1}}.theme-dark .markdown-preview-view img:hover,.theme-dark .markdown-source-view img:hover,.theme-dark .print-preview img{opacity:1;transition:opacity .25s linear}.theme-light img{mix-blend-mode:var(--image-mix)}div[src$="#invert"],div[src$="#multiply"]{background-color:var(--background-primary)}.theme-dark div[src$="#invert"] img,.theme-dark img[src$="#invert"],.theme-dark span[src$="#invert"] img{filter:invert(1) hue-rotate(180deg);mix-blend-mode:screen}.theme-dark div[src$="#multiply"] img,.theme-dark img[src$="#multiply"],.theme-dark span[src$="#multiply"] img{mix-blend-mode:screen}.theme-light div[src$="#multiply"] img,.theme-light img[src$="#multiply"],.theme-light span[src$="#multiply"] img{mix-blend-mode:multiply}.theme-light div[src$="#invertW"] img,.theme-light img[src$="#invertW"],.theme-light span[src$=invertW] img{filter:invert(1) hue-rotate(180deg)}img[src$="#circle"],span[src$="#circle"] img,span[src$="#round"] img{border-radius:50%;aspect-ratio:1/1}img[src$="#outline"],span[src$="#outline"] img{border:1px solid var(--ui1)}img[src$="#interface"],span[src$="#interface"] img{border:1px solid var(--ui1);box-shadow:0 .5px .9px rgba(0,0,0,.021),0 1.3px 2.5px rgba(0,0,0,.03),0 3px 6px rgba(0,0,0,.039),0 10px 20px rgba(0,0,0,.06);margin-top:10px;margin-bottom:15px;border-radius:var(--radius-m)}body{--image-grid-fit:cover;--image-grid-background:transparent;--img-grid-gap:0.5rem}@media (max-width:400pt){body{--img-grid-gap:0.25rem}}.img-grid-ratio{--image-grid-fit:contain}.img-grid .image-embed.is-loaded{line-height:0}.img-grid .image-embed.is-loaded img{background-color:var(--image-grid-background)}.img-grid .image-embed.is-loaded img:active{background-color:transparent}.img-grid .markdown-preview-section>div:has(.image-embed)>p{display:grid;margin-block-start:var(--img-grid-gap);margin-block-end:var(--img-grid-gap);grid-column-gap:var(--img-grid-gap);grid-row-gap:0;grid-template-columns:repeat(auto-fit,minmax(0,1fr))}.img-grid .markdown-preview-section>div:has(.image-embed)>p>br{display:none}.img-grid .markdown-preview-section>div:has(.image-embed)>p>img{object-fit:var(--image-grid-fit);align-self:stretch}.img-grid .markdown-preview-section>div:has(.image-embed)>p>.internal-embed img{object-fit:var(--image-grid-fit);height:100%;align-self:center}body:not(.zoom-off) .view-content div:not(.canvas-node-content) img{max-width:100%;cursor:zoom-in}body:not(.zoom-off) .view-content img:active{cursor:zoom-out}body:not(.zoom-off) .view-content .markdown-preview-view img[referrerpolicy=no-referrer]:active{background-color:var(--background-primary);padding:10px}body:not(.zoom-off) .view-content .image-embed:not(.canvas-node-content):active,body:not(.zoom-off) .view-content .markdown-preview-view img[referrerpolicy=no-referrer]:active{--container-img-width:100%;--container-img-max-width:100%;aspect-ratio:unset;cursor:zoom-out;display:block;z-index:200;position:fixed;max-height:calc(100% + 1px);max-width:100%;height:calc(100% + 1px);width:100%;object-fit:contain;margin:-.5px auto 0!important;text-align:center;padding:0;left:0;right:0;bottom:0}body:not(.zoom-off) .view-content .image-embed:not(.canvas-node-content):active:after{background-color:var(--background-primary);opacity:.9;content:" ";height:calc(100% + 1px);width:100%;position:fixed;left:0;right:1px;z-index:0}body:not(.zoom-off) .view-content .image-embed:not(.canvas-node-content):active img{aspect-ratio:unset;top:50%;z-index:99;transform:translateY(-50%);padding:0;margin:0 auto;width:calc(100% - 20px);max-height:95vh;object-fit:contain;left:0;right:0;bottom:0;position:absolute;opacity:1}.labeled-nav.is-fullscreen:not(.colorful-frame),.labeled-nav.mod-windows{--labeled-nav-top-margin:0}.labeled-nav{--labeled-nav-top-margin:var(--header-height)}.labeled-nav.is-translucent .mod-left-split .mod-top .workspace-tab-header-container .workspace-tab-header-container-inner{background-color:transparent}.labeled-nav.is-hidden-frameless:not(.is-fullscreen) .mod-left-split .workspace-tabs.mod-top-left-space .workspace-tab-header-container{padding-left:0}.labeled-nav.mod-macos .mod-left-split .mod-top .workspace-tab-header-container:before,.labeled-nav.mod-macos.is-hidden-frameless:not(.is-fullscreen) .mod-left-split .mod-top .workspace-tab-header-container:before{-webkit-app-region:drag;position:absolute;width:calc(100% - var(--divider-width));height:calc(var(--header-height) - var(--tab-outline-width));border-bottom:0 solid var(--tab-outline-color)}.labeled-nav.mod-macos.is-hidden-frameless:not(.is-fullscreen) .workspace-ribbon.mod-left:not(.is-collapsed){border:none;--tab-outline-width:0px}.labeled-nav.colorful-frame.is-hidden-frameless:not(.is-fullscreen) .mod-left-split .mod-top .workspace-tab-header-container:before,.labeled-nav.mod-macos:not(.hider-ribbon) .mod-left-split .mod-top .workspace-tab-header-container:before,.labeled-nav:not(.is-hidden-frameless) .mod-left-split .mod-top .workspace-tab-header-container:before{border-bottom:var(--tab-outline-width) solid var(--tab-outline-color)}.labeled-nav.colorful-frame.is-hidden-frameless:not(.is-fullscreen) .workspace-ribbon.mod-left:not(.is-collapsed),.labeled-nav.mod-macos:not(.hider-ribbon) .workspace-ribbon.mod-left:not(.is-collapsed),.labeled-nav:not(.is-hidden-frameless) .workspace-ribbon.mod-left:not(.is-collapsed){--tab-outline-width:1px}.labeled-nav:not(.is-hidden-frameless) .mod-left-split .mod-top .workspace-tab-header-container:before{position:absolute;top:0;content:" "}.labeled-nav.hider-ribbon.mod-macos.is-hidden-frameless:not(.is-fullscreen):not(.is-popout-window) .mod-left-split:not(.is-sidedock-collapsed) .workspace-tabs.mod-top-left-space .workspace-tab-header-container{padding-left:0}.labeled-nav:not(.is-grabbing):not(.is-fullscreen).is-hidden-frameless .mod-top .workspace-tab-header-container{-webkit-app-region:no-drag}.labeled-nav .mod-left-split .mod-top .workspace-tab-header-spacer{display:none}.labeled-nav .mod-left-split .mod-top .workspace-tab-header-inner-title{display:inline-block;font-weight:500;font-size:var(--font-adaptive-smaller)}.labeled-nav .mod-left-split .mod-top .workspace-tab-header-container{position:relative;flex-direction:column-reverse!important;height:auto;width:100%}.labeled-nav .mod-left-split .mod-top .workspace-tab-header-container .sidebar-toggle-button.mod-left{position:absolute;justify-content:flex-end;padding-right:var(--size-4-2);top:0;right:0}.labeled-nav .mod-left-split .mod-top .workspace-tab-header-container .workspace-tab-header-container-inner{padding-top:var(--size-4-2);margin-top:var(--labeled-nav-top-margin);flex-direction:column!important;background-color:var(--background-secondary)}.labeled-nav .mod-left-split .mod-top .workspace-tab-header-container .workspace-tab-container-inner{flex-grow:1;gap:0;padding:var(--size-4-2) var(--size-4-3)}.labeled-nav .mod-left-split .mod-top .workspace-tab-header{--icon-color:var(--text-muted);--tab-text-color:var(--text-muted);--tab-text-color-focused:var(--text-muted);padding:0;margin-bottom:2px;border:none;height:auto}.labeled-nav .mod-left-split .mod-top .workspace-tab-header.is-active:not(:hover){background-color:transparent}.labeled-nav .mod-left-split .mod-top .workspace-tab-header.is-active,.labeled-nav .mod-left-split .mod-top .workspace-tab-header:hover{opacity:1;--tab-text-color-active:var(--text-normal);--tab-text-color-focused:var(--text-normal);--tab-text-color-focused-active:var(--text-normal);--tab-text-color-focused-active-current:var(--text-normal);--icon-color:var(--text-normal)}.labeled-nav .mod-left-split .mod-top .workspace-tab-header .workspace-tab-header-inner{gap:var(--size-2-3);padding:var(--size-4-1) var(--size-4-2);box-shadow:none;border:none}.labeled-nav .mod-left-split .mod-top .workspace-tab-header.has-active-menu:hover,.labeled-nav .mod-left-split .mod-top .workspace-tab-header.is-active:hover{background-color:transparent}.labeled-nav .mod-left-split .mod-top .workspace-tab-header.is-active:hover .workspace-tab-header-inner,.labeled-nav .mod-left-split .mod-top .workspace-tab-header:not(.is-active):hover .workspace-tab-header-inner{background-color:var(--nav-item-background-hover)}.labeled-nav .mod-left-split .mod-top .workspace-tab-header.is-active .workspace-tab-header-inner-icon,.labeled-nav .mod-left-split .mod-top .workspace-tab-header:hover .workspace-tab-header-inner-icon{color:var(--icon-color-active)}.labeled-nav .mod-left-split .mod-top .workspace-tab-header-container{border:none;padding:0}body:not(.links-int-on){--link-decoration:none}body:not(.links-ext-on){--link-external-decoration:none}body:not(.sidebar-color) .mod-right-split{--background-secondary:var(--background-primary)}body:not(.sidebar-color) .mod-right-split :not(.mod-top) .workspace-tab-header-container{--tab-container-background:var(--background-primary)}body{--minimal-tab-text-color:var(--text-muted);--minimal-tab-text-color-active:var(--text-normal)}.workspace-tabs:not(.mod-stacked){--tab-text-color:var(--minimal-tab-text-color);--tab-text-color-focused:var(--minimal-tab-text-color);--tab-text-color-active:var(--minimal-tab-text-color-active);--tab-text-color-focused-active:var(--minimal-tab-text-color-active);--tab-text-color-focused-active-current:var(--minimal-tab-text-color-active)}.tabs-plain-square .mod-root{--tab-curve:0;--tab-radius:0;--tab-radius-active:0}.tabs-plain-square .mod-root .workspace-tab-header-container{padding-right:0}.tabs-plain-square .mod-root .workspace-tab-header-container-inner{margin-top:-1px;margin-left:-15px}.tabs-plain-square .mod-root .workspace-tab-header{padding:0}.tabs-plain-square .mod-root .workspace-tab-header-inner{padding:0 8px}.tabs-square .mod-root{--tab-curve:0;--tab-radius:0;--tab-radius-active:0}.tabs-underline .mod-root{--tab-curve:0;--tab-radius:0;--tab-radius-active:0;--tab-outline-width:0px;--tab-background-active:transparent}.tabs-underline .mod-root .workspace-tab-header-container{border-bottom:1px solid var(--divider-color)}.tabs-underline .mod-root .workspace-tab-header{border-bottom:2px solid transparent}.tabs-underline .mod-root .workspace-tab-header:hover{border-bottom:2px solid var(--ui2)}.tabs-underline .mod-root .workspace-tab-header:hover .workspace-tab-header-inner{background-color:transparent}.tabs-underline .mod-root .workspace-tab-header.is-active{border-bottom:2px solid var(--ax3)}.tabs-underline .mod-root .workspace-tab-header-inner:hover{background-color:transparent}body:not(.sidebar-tabs-underline):not(.sidebar-tabs-index):not(.sidebar-tabs-square) .workspace>.workspace-split:not(.mod-root) .workspace-tabs:not(.mod-top) .workspace-tab-header-container{--tab-outline-width:0}.tabs-modern.colorful-frame .mod-root .mod-top.workspace-tabs:not(.mod-stacked){--tab-background:var(--frame-outline-color);--tab-outline-width:1px}.tabs-modern.colorful-frame .mod-root .mod-top.workspace-tabs:not(.mod-stacked) .workspace-tab-header.is-active .workspace-tab-header-inner-close-button,.tabs-modern.colorful-frame .mod-root .mod-top.workspace-tabs:not(.mod-stacked) .workspace-tab-header:hover .workspace-tab-header-inner-close-button{color:var(--minimal-tab-text-color-active)}.tabs-modern.minimal-focus-mode .mod-root .workspace-tab-header-container:hover{--tab-outline-width:0px}.tabs-modern .mod-root{--tab-container-background:var(--background-primary)}.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked){--tab-background:var(--background-modifier-hover);--tab-height:calc(var(--header-height) - 14px);--tab-outline-width:0px}.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header-inner::after,.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header::after,.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header::before{display:none}.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header-container-inner{align-items:center;margin:0;padding:2px var(--size-4-2) 0 var(--size-4-1)}.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header-inner-title{text-overflow:ellipsis;-webkit-mask-image:none}.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header{background:0 0;border-radius:5px;border:none;box-shadow:none;height:var(--tab-height);margin-left:var(--size-4-1);padding:0}.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header.is-active .workspace-tab-header-inner-title{color:var(--tab-text-color-active)}.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header.is-active.mod-active,.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header:hover{opacity:1;background-color:var(--tab-background)}.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header-new-tab{margin-right:0}.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header-inner{padding:0 var(--size-4-1) 0 var(--size-4-2);border:1px solid transparent}.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header:not(.is-active):hover .workspace-tab-header-inner{background-color:transparent}.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header.is-active:not(.mod-active) .workspace-tab-header-inner,.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header:not(:hover):not(.mod-active) .workspace-tab-header-inner{border:1px solid var(--tab-outline-color)}.tabs-modern.sidebar-tabs-default .mod-right-split,.tabs-modern.sidebar-tabs-wide .mod-right-split{--tab-outline-width:0}.sidebar-tabs-underline .mod-right-split .workspace-tab-header-spacer,.sidebar-tabs-underline.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-spacer,.sidebar-tabs-underline:not(.labeled-nav) .mod-left-split .workspace-tab-header-spacer{display:none}.sidebar-tabs-underline .mod-right-split .workspace-tab-header-container,.sidebar-tabs-underline.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container,.sidebar-tabs-underline:not(.labeled-nav) .mod-left-split .workspace-tab-header-container{padding-right:0}.sidebar-tabs-underline .mod-right-split .workspace-tab-header-container-inner,.sidebar-tabs-underline.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container-inner,.sidebar-tabs-underline:not(.labeled-nav) .mod-left-split .workspace-tab-header-container-inner{padding:0;margin:0;flex-grow:1;gap:0}.sidebar-tabs-underline .mod-right-split .workspace-tab-header-container .workspace-tab-header,.sidebar-tabs-underline.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container .workspace-tab-header,.sidebar-tabs-underline:not(.labeled-nav) .mod-left-split .workspace-tab-header-container .workspace-tab-header{flex-grow:1;border-radius:0;max-width:100px}.sidebar-tabs-underline .mod-right-split .workspace-tab-header-container .workspace-tab-header.is-active,.sidebar-tabs-underline .mod-right-split .workspace-tab-header-container .workspace-tab-header:hover,.sidebar-tabs-underline.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container .workspace-tab-header.is-active,.sidebar-tabs-underline.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container .workspace-tab-header:hover,.sidebar-tabs-underline:not(.labeled-nav) .mod-left-split .workspace-tab-header-container .workspace-tab-header.is-active,.sidebar-tabs-underline:not(.labeled-nav) .mod-left-split .workspace-tab-header-container .workspace-tab-header:hover{background-color:transparent}.sidebar-tabs-underline .mod-right-split .workspace-tab-header-container .workspace-tab-header.is-active .workspace-tab-header-inner,.sidebar-tabs-underline .mod-right-split .workspace-tab-header-container .workspace-tab-header:hover .workspace-tab-header-inner,.sidebar-tabs-underline.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container .workspace-tab-header.is-active .workspace-tab-header-inner,.sidebar-tabs-underline.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container .workspace-tab-header:hover .workspace-tab-header-inner,.sidebar-tabs-underline:not(.labeled-nav) .mod-left-split .workspace-tab-header-container .workspace-tab-header.is-active .workspace-tab-header-inner,.sidebar-tabs-underline:not(.labeled-nav) .mod-left-split .workspace-tab-header-container .workspace-tab-header:hover .workspace-tab-header-inner{background-color:transparent}.sidebar-tabs-underline .mod-right-split .workspace-tab-header-container .workspace-tab-header .workspace-tab-header-inner,.sidebar-tabs-underline.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container .workspace-tab-header .workspace-tab-header-inner,.sidebar-tabs-underline:not(.labeled-nav) .mod-left-split .workspace-tab-header-container .workspace-tab-header .workspace-tab-header-inner{border-bottom:2px solid transparent;border-radius:0}.sidebar-tabs-underline .mod-right-split .workspace-tab-header-container .workspace-tab-header .workspace-tab-header-inner:hover,.sidebar-tabs-underline.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container .workspace-tab-header .workspace-tab-header-inner:hover,.sidebar-tabs-underline:not(.labeled-nav) .mod-left-split .workspace-tab-header-container .workspace-tab-header .workspace-tab-header-inner:hover{border-color:var(--ui2)}.sidebar-tabs-underline .mod-right-split .workspace-tab-header-container .workspace-tab-header.is-active .workspace-tab-header-inner,.sidebar-tabs-underline.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container .workspace-tab-header.is-active .workspace-tab-header-inner,.sidebar-tabs-underline:not(.labeled-nav) .mod-left-split .workspace-tab-header-container .workspace-tab-header.is-active .workspace-tab-header-inner{border-color:var(--ax3);padding-top:1px}.sidebar-tabs-square .mod-left-split,.sidebar-tabs-square .mod-right-split{--tab-radius:0px}.sidebar-tabs-index.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top),.sidebar-tabs-index:not(.labeled-nav) .mod-left-split,.sidebar-tabs-square.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top),.sidebar-tabs-square:not(.labeled-nav) .mod-left-split{--tab-background-active:var(--background-secondary)}.sidebar-tabs-index .mod-right-split .workspace-tab-header-container-inner,.sidebar-tabs-index.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container-inner,.sidebar-tabs-index:not(.labeled-nav) .mod-left-split .workspace-tab-header-container-inner,.sidebar-tabs-square .mod-right-split .workspace-tab-header-container-inner,.sidebar-tabs-square.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container-inner,.sidebar-tabs-square:not(.labeled-nav) .mod-left-split .workspace-tab-header-container-inner{padding:1px var(--size-4-2) 0;margin:6px 0 calc(var(--tab-outline-width) * -1);flex-grow:1}.sidebar-tabs-index .mod-right-split .workspace-tab-header,.sidebar-tabs-index.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header,.sidebar-tabs-index:not(.labeled-nav) .mod-left-split .workspace-tab-header,.sidebar-tabs-square .mod-right-split .workspace-tab-header,.sidebar-tabs-square.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header,.sidebar-tabs-square:not(.labeled-nav) .mod-left-split .workspace-tab-header{flex-grow:1;max-width:100px;border-radius:var(--tab-radius) var(--tab-radius) 0 0}.sidebar-tabs-index .mod-right-split .workspace-tab-header.is-active,.sidebar-tabs-index.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header.is-active,.sidebar-tabs-index:not(.labeled-nav) .mod-left-split .workspace-tab-header.is-active,.sidebar-tabs-square .mod-right-split .workspace-tab-header.is-active,.sidebar-tabs-square.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header.is-active,.sidebar-tabs-square:not(.labeled-nav) .mod-left-split .workspace-tab-header.is-active{box-shadow:0 0 0 var(--tab-outline-width) var(--tab-outline-color);color:var(--tab-text-color-active);background-color:var(--tab-background-active)}.sidebar-tabs-wide .mod-right-split .workspace-tab-header-container-inner,.sidebar-tabs-wide.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container-inner,.sidebar-tabs-wide:not(.labeled-nav) .mod-left-split .workspace-tab-header-container-inner{flex-grow:1;border:1px solid var(--tab-outline-color);padding:3px;margin:6px 8px 6px;border-radius:4px}.sidebar-tabs-wide .mod-right-split .workspace-tab-header,.sidebar-tabs-wide.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header,.sidebar-tabs-wide:not(.labeled-nav) .mod-left-split .workspace-tab-header{flex-grow:1}.sidebar-tabs-wide .mod-right-split .workspace-tab-header.is-active,.sidebar-tabs-wide.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header.is-active,.sidebar-tabs-wide:not(.labeled-nav) .mod-left-split .workspace-tab-header.is-active{border-color:transparent}.sidebar-tabs-wide .mod-right-split .workspace-tab-header-container,.sidebar-tabs-wide.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container,.sidebar-tabs-wide:not(.labeled-nav) .mod-left-split .workspace-tab-header-container{padding-right:0}.sidebar-tabs-wide .mod-right-split .workspace-tab-header-spacer,.sidebar-tabs-wide.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-spacer,.sidebar-tabs-wide:not(.labeled-nav) .mod-left-split .workspace-tab-header-spacer{display:none}.full-file-names{--nav-item-white-space:normal}body:not(.full-file-names){--nav-item-white-space:nowrap}body:not(.full-file-names) .tree-item-self{white-space:nowrap}body:not(.full-file-names) .tree-item-inner{text-overflow:ellipsis;overflow:hidden}.theme-dark,.theme-light{--h1l:var(--ui1);--h2l:var(--ui1);--h3l:var(--ui1);--h4l:var(--ui1);--h5l:var(--ui1);--h6l:var(--ui1)}.h1-l .markdown-reading-view h1:not(.embedded-note-title),.h1-l .mod-cm6 .cm-editor .HyperMD-header-1{border-bottom:1px solid var(--h1l);padding-bottom:.4em;margin-block-end:0.6em}.h2-l .markdown-reading-view h2,.h2-l .mod-cm6 .cm-editor .HyperMD-header-2{border-bottom:1px solid var(--h2l);padding-bottom:.4em;margin-block-end:0.6em}.h3-l .markdown-reading-view h3,.h3-l .mod-cm6 .cm-editor .HyperMD-header-3{border-bottom:1px solid var(--h3l);padding-bottom:.4em;margin-block-end:0.6em}.h4-l .markdown-reading-view h4,.h4-l .mod-cm6 .cm-editor .HyperMD-header-4{border-bottom:1px solid var(--h4l);padding-bottom:.4em;margin-block-end:0.6em}.h5-l .markdown-reading-view h5,.h5-l .mod-cm6 .cm-editor .HyperMD-header-5{border-bottom:1px solid var(--h5l);padding-bottom:.4em;margin-block-end:0.6em}.h6-l .markdown-reading-view h6,.h6-l .mod-cm6 .cm-editor .HyperMD-header-6{border-bottom:1px solid var(--h6l);padding-bottom:.4em;margin-block-end:0.6em}.is-tablet .workspace-drawer{padding-top:0}.is-tablet .workspace-drawer:not(.is-pinned){margin:30px 16px 0;height:calc(100vh - 48px);border-radius:15px;border:none}.is-tablet .workspace-drawer-ribbon{background-color:var(--background-primary);border-right:1px solid var(--background-modifier-border)}.is-tablet .workspace-drawer-header,.is-tablet .workspace-drawer.is-pinned .workspace-drawer-header{padding-top:var(--size-4-4)}.is-mobile{--font-bold:600;--font-ui-medium:var(--font-adaptive-small);--interactive-normal:var(--background-secondary);--background-modifier-form-field:var(--background-secondary);--background-modifier-form-field-highlighted:var(--background-secondary)}.is-mobile .markdown-source-view.mod-cm6 .cm-gutters{margin-left:0}.is-mobile .workspace-drawer.mod-left.is-pinned{max-width:var(--mobile-left-sidebar-width);min-width:150pt}.is-mobile .workspace-drawer.mod-right.is-pinned{max-width:var(--mobile-right-sidebar-width);min-width:150pt}.backlink-pane>.tree-item-self,.backlink-pane>.tree-item-self:hover,.outgoing-link-pane>.tree-item-self,.outgoing-link-pane>.tree-item-self:hover{color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;font-size:var(--font-adaptive-smallest);font-weight:500}body{--canvas-dot-pattern:var(--background-modifier-border-hover)}.canvas-node-label{font-size:var(--font-adaptive-small)}.canvas-edges :not(.is-themed) path.canvas-display-path{stroke:var(--background-modifier-border-focus)}.canvas-edges :not(.is-themed) polyline.canvas-path-end{stroke:var(--background-modifier-border-focus);fill:var(--background-modifier-border-focus)}.canvas-node-container{border:1.5px solid var(--background-modifier-border-focus)}.node-insert-event.mod-inside-iframe{--max-width:100%;--folding-offset:0px}.node-insert-event.mod-inside-iframe .cm-editor .cm-content{padding-top:0}.is-mobile .nav-folder.mod-root>.nav-folder-title .nav-folder-title-content{display:none}body:not(.is-mobile) .nav-folder.mod-root>.nav-folder-title .nav-folder-title-content{font-weight:500;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);font-size:var(--font-adaptive-smallest)}.nav-buttons-container{justify-content:flex-start}.nav-file-tag{padding-top:.2em;background-color:transparent;color:var(--text-faint)}.nav-file .is-active .nav-file-tag,.nav-file:hover .nav-file-tag{color:var(--text-muted)}input.prompt-input,input.prompt-input:focus,input.prompt-input:focus-visible,input.prompt-input:hover{border-color:rgba(var(--mono-rgb-100),.05)}.is-mobile .mod-publish .modal-content{display:unset;padding:10px 10px 10px;margin-bottom:120px;overflow-x:hidden}.is-mobile .mod-publish .button-container,.is-mobile .modal.mod-publish .modal-button-container{padding:10px 15px 30px;margin-left:0;left:0}.is-mobile .modal.mod-publish .modal-title{padding:10px 20px;margin:0 -10px;border-bottom:1px solid var(--background-modifier-border)}.is-mobile .publish-site-settings-container{margin-right:0;padding:0}.is-mobile .modal.mod-publish .modal-content .publish-sections-container{margin-right:0;padding-right:0}@media (max-width:400pt){.is-mobile .publish-changes-info,.is-mobile .publish-section-header{flex-wrap:wrap;border:none}.is-mobile .publish-changes-info .publish-changes-add-linked-btn{flex-basis:100%;margin-top:10px}.is-mobile .publish-section-header-text{flex-basis:100%;margin-bottom:10px;margin-left:20px;margin-top:-8px}.is-mobile .publish-section{background:var(--background-secondary);border-radius:10px;padding:12px 12px 1px}.is-mobile .publish-changes-switch-site{flex-grow:0;margin-right:10px}}.release-notes-view .cm-scroller.is-readable-line-width{width:var(--line-width);max-width:var(--max-width);margin:0 auto}.search-results-info{border-bottom:none}@media (max-width:400pt){.is-mobile .modal.mod-sync-log{width:100vw;height:100vh;max-height:calc(100vh - 32px);box-shadow:0 -32px 0 32px var(--background-primary);bottom:0;padding-bottom:10px}}.obsidian-banner.solid{border-bottom:var(--divider-width) solid var(--divider-color)}.contextual-typography .markdown-preview-view div.has-banner-icon.obsidian-banner-wrapper{overflow:visible}.theme-dark .markdown-preview-view img.emoji{opacity:1}body.theme-dark .button-default,body.theme-light .button-default{border:none;box-shadow:none;height:var(--input-height);background:var(--background-modifier-hover);color:var(--text-normal);font-size:revert;font-weight:500;transform:none;transition:all .1s linear;padding:0 20px}body.theme-dark .button-default:hover,body.theme-light .button-default:hover{border:none;background:var(--background-modifier-border-hover);box-shadow:none;transform:none;transition:all .1s linear}body.theme-dark .button-default:active,body.theme-dark .button-default:focus,body.theme-light .button-default:active,body.theme-light .button-default:focus{box-shadow:none}body .button-default.blue{background-color:var(--color-blue)!important}.button-default.red{background-color:var(--color-red)!important}.button-default.green{background-color:var(--color-green)!important}.button-default.yellow{background-color:var(--color-yellow)!important}.button-default.purple{background-color:var(--color-purple)!important}.workspace-leaf-content[data-type=calendar] .view-content{padding:5px 0 0 0}.mod-root #calendar-container{width:var(--line-width);max-width:var(--max-width);margin:0 auto;padding:0}body{--calendar-dot-active:var(--text-faint);--calendar-dot-today:var(--text-accent)}#calendar-container{padding:0 var(--size-4-4) var(--size-4-1);--color-background-day-empty:var(--background-secondary-alt);--color-background-day-active:var(--background-modifier-hover);--color-background-day-hover:var(--background-modifier-hover);--color-dot:var(--text-faint);--calendar-text-active:inherit;--color-text-title:var(--text-normal);--color-text-heading:var(--text-muted);--color-text-day:var(--text-normal);--color-text-today:var(--text-normal);--color-arrow:var(--text-faint);--color-background-day-empty:transparent}#calendar-container .table{border-collapse:separate;table-layout:fixed}#calendar-container h2{font-weight:400;font-size:var(--h2)}#calendar-container .arrow{cursor:var(--cursor);width:22px;border-radius:4px;padding:3px 7px}#calendar-container .arrow svg{width:12px;height:12px;color:var(--text-faint);opacity:.7}#calendar-container .arrow:hover{fill:var(--text-muted);color:var(--text-muted);background-color:var(--background-modifier-hover)}#calendar-container .arrow:hover svg{color:var(--text-muted);opacity:1}#calendar-container tr th{padding:2px 0 4px;font-weight:500;letter-spacing:.1em;font-size:var(--font-adaptive-smallest)}#calendar-container tr th:first-child{padding-left:0!important}#calendar-container tr td{padding:2px 0 0 0;border-radius:var(--radius-m);cursor:var(--cursor);border:1px solid transparent;transition:none}#calendar-container tr td:first-child{padding-left:0!important}#calendar-container .nav{padding:0;margin:var(--size-4-2) var(--size-4-1)}#calendar-container .dot{margin:0}#calendar-container .month,#calendar-container .title,#calendar-container .year{font-size:calc(var(--font-adaptive-small) + 2px);font-weight:400;color:var(--text-normal)}#calendar-container .today,#calendar-container .today.active{color:var(--text-accent);font-weight:600}#calendar-container .today .dot,#calendar-container .today.active .dot{fill:var(--calendar-dot-today)}#calendar-container .active .task{stroke:var(--text-faint)}#calendar-container .active{color:var(--text-normal)}#calendar-container .reset-button{text-transform:none;letter-spacing:0;font-size:var(--font-adaptive-smaller);font-weight:500;color:var(--text-muted);border-radius:4px;margin:0;padding:2px 8px}#calendar-container .reset-button:hover{color:var(--text-normal);background-color:var(--background-modifier-hover)}#calendar-container .day,#calendar-container .reset-button,#calendar-container .week-num{cursor:var(--cursor)}#calendar-container .day.adjacent-month{color:var(--text-faint);opacity:1}#calendar-container .day{padding:2px 4px 4px}#calendar-container .day,#calendar-container .week-num{font-size:calc(var(--font-adaptive-smaller) + 5%)}#calendar-container .active,#calendar-container .active.today,#calendar-container .day:hover,#calendar-container .week-num:hover{background-color:var(--color-background-day-active);color:var(--calendar-text-active)}#calendar-container .active .dot{fill:var(--calendar-dot-active)}#calendar-container .active .task{stroke:var(--text-faint)}.block-language-chart canvas,.block-language-dataviewjs canvas{margin:1em 0}.theme-dark,.theme-light{--chart-color-1:var(--color-blue);--chart-color-2:var(--color-red);--chart-color-3:var(--color-yellow);--chart-color-4:var(--color-green);--chart-color-5:var(--color-orange);--chart-color-6:var(--color-purple);--chart-color-7:var(--color-cyan);--chart-color-8:var(--color-pink)}.checklist-plugin-main .group .classic,.checklist-plugin-main .group .compact,.checklist-plugin-main .group .page,.checklist-plugin-main .group svg{cursor:var(--cursor)}.workspace .view-content .checklist-plugin-main{padding:10px 10px 15px 15px;--todoList-togglePadding--compact:2px;--todoList-listItemMargin--compact:2px}.checklist-plugin-main .title{font-weight:400;color:var(--text-muted);font-size:var(--font-adaptive-small)}.checklist-plugin-main .group svg{fill:var(--text-faint)}.checklist-plugin-main .group svg:hover{fill:var(--text-normal)}.checklist-plugin-main .group .title:hover{color:var(--text-normal)}.checklist-plugin-main .group:not(:last-child){border-bottom:1px solid var(--background-modifier-border)}.checklist-plugin-main .group{padding:0 0 2px 0}.checklist-plugin-main .group .classic:last-child,.checklist-plugin-main .group .compact:last-child{margin-bottom:10px}.checklist-plugin-main .group .classic,.checklist-plugin-main .group .compact{font-size:var(--font-adaptive-small)}.checklist-plugin-main .group .classic,.checklist-plugin-main .group .compact{background:0 0;border-radius:0;margin:1px auto;padding:0}.checklist-plugin-main .group .classic .content{padding:0}.checklist-plugin-main .group .classic:hover,.checklist-plugin-main .group .compact:hover{background:0 0}.markdown-preview-view.checklist-plugin-main ul>li:not(.task-list-item)::before{display:none}.checklist-plugin-main .group .compact>.toggle .checked{background:var(--text-accent);top:-1px;left:-1px;height:18px;width:18px}.checklist-plugin-main .compact .toggle:hover{opacity:1!important}.checklist-plugin-main .group .count{font-size:var(--font-adaptive-smaller);padding:0;background:0 0;font-weight:400;color:var(--text-faint)}.checklist-plugin-main .group .group-header:hover .count{color:var(--text-muted)}.checklist-plugin-main .group .checkbox{border:1px solid var(--background-modifier-border-hover);min-height:18px;min-width:18px;height:18px;width:18px}.checklist-plugin-main .group .checkbox:hover{border:1px solid var(--background-modifier-border-focus)}.checklist-plugin-main button:active,.checklist-plugin-main button:focus,.checklist-plugin-main button:hover{box-shadow:none!important}.checklist-plugin-main button.collapse{padding:0}body:not(.is-mobile) .checklist-plugin-main button.collapse svg{width:18px;height:18px}.is-mobile .checklist-plugin-main .group-header .title{flex-grow:1;flex-shrink:0}.is-mobile .checklist-plugin-main button{width:auto}.is-mobile .checklist-plugin-main.markdown-preview-view ul{padding-inline-start:0}.is-mobile .workspace .view-content .checklist-plugin-main{padding-bottom:50px}body #cMenuModalBar{box-shadow:0 2px 20px var(--shadow-color)}body #cMenuModalBar .cMenuCommandItem{cursor:var(--cursor)}body #cMenuModalBar button.cMenuCommandItem:hover{background-color:var(--background-modifier-hover)}.MiniSettings-statusbar-button{padding-top:0;padding-bottom:0}.dataview-inline-lists .markdown-preview-view .dataview-ul,.dataview-inline-lists .markdown-source-view .dataview-ul{--list-spacing:0}.dataview-inline-lists .markdown-preview-view .dataview-ul li:not(:last-child):after,.dataview-inline-lists .markdown-source-view .dataview-ul li:not(:last-child):after{content:", "}.dataview-inline-lists .markdown-preview-view ul.dataview-ul>li::before,.dataview-inline-lists .markdown-source-view ul.dataview-ul>li::before{display:none}.dataview-inline-lists .markdown-preview-view .dataview-ul li,.dataview-inline-lists .markdown-source-view .dataview-ul li{display:inline-block;padding-right:.25em}.markdown-preview-view .table-view-table>thead>tr>th,body .table-view-table>thead>tr>th{font-weight:400;font-size:var(--table-text-size);color:var(--text-muted);border-bottom:var(--table-border-width) solid var(--table-border-color);cursor:var(--cursor)}table.dataview ul.dataview-ul{list-style:none;padding-inline-start:0;margin-block-start:0em!important;margin-block-end:0em!important}.markdown-preview-view:not(.cards) .table-view-table>tbody>tr>td,.markdown-source-view.mod-cm6:not(.cards) .table-view-table>tbody>tr>td{max-width:var(--max-col-width)}body .dataview.small-text{color:var(--text-faint)}body:not(.row-hover) .dataview.task-list-basic-item:hover,body:not(.row-hover) .dataview.task-list-item:hover,body:not(.row-hover) .table-view-table>tbody>tr:hover{background-color:transparent!important;box-shadow:none}body.row-hover .dataview.task-list-basic-item:hover,body.row-hover .dataview.task-list-item:hover,body.row-hover .table-view-table>tbody>tr:hover{background-color:var(--table-row-background-hover)!important}body .dataview-error{background-color:transparent}.dataview.dataview-error,.markdown-source-view.mod-cm6 .cm-content .dataview.dataview-error{color:var(--text-muted)}body div.dataview-error-box{min-height:0;border:none;background-color:transparent;font-size:var(--table-text-size);border-radius:var(--radius-m);padding:15px 0;justify-content:flex-start}body div.dataview-error-box p{margin-block-start:0;margin-block-end:0;color:var(--text-faint)}.block-language-dataviewjs:has(.dataview-error-box) table.dataview{display:none}.trim-cols .markdown-preview-view .table-view-table>tbody>tr>td,.trim-cols .markdown-source-view.mod-cm6 .table-view-table>tbody>tr>td,.trim-cols .markdown-source-view.mod-cm6 .table-view-table>thead>tr>th{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}ul .dataview .task-list-basic-item:hover,ul .dataview .task-list-item:hover{background-color:transparent;box-shadow:none}body .dataview.result-group{padding-left:0}body .dataview .inline-field-standalone-value,body .dataview.inline-field-key,body .dataview.inline-field-value{font-family:var(--font-text);font-size:calc(var(--font-adaptive-normal) - 2px);background:0 0;color:var(--text-muted)}body .dataview.inline-field-key{padding:0}body .dataview .inline-field-standalone-value{padding:0}body .dataview.inline-field-key::after{margin-left:3px;content:"|";color:var(--background-modifier-border)}body .dataview.inline-field-value{padding:0 1px 0 3px}.markdown-preview-view .block-language-dataview table.calendar th{border:none;cursor:default;background-image:none}.markdown-preview-view .block-language-dataview table.calendar .day{font-size:var(--font-adaptive-small)}.database-plugin__navbar,.database-plugin__scroll-container,.database-plugin__table{width:100%}.dbfolder-table-container{--font-adaptive-normal:var(--table-text-size);--font-size-text:12px}.database-plugin__cell_size_wide .database-plugin__td{padding:.15rem}.database-plugin__table{border-spacing:0!important}.MuiAppBar-root{background-color:transparent!important}.workspace-leaf-content .view-content.dictionary-view-content{padding:0}div[data-type=dictionary-view] .contents{padding-bottom:2rem}div[data-type=dictionary-view] .results>.container{background-color:transparent;margin-top:0;max-width:none;padding:0 10px}div[data-type=dictionary-view] .error,div[data-type=dictionary-view] .errorDescription{text-align:left;font-size:var(--font-adaptive-small);padding:10px 12px 0;margin:0}div[data-type=dictionary-view] .results>.container h3{text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);font-size:var(--font-adaptive-smallest);font-weight:500;padding:5px 7px 0 2px;margin-bottom:6px}div[data-type=dictionary-view] .container .main{border-radius:0;background-color:transparent;font-size:var(--font-adaptive-smaller);line-height:1.3;color:var(--text-muted);padding:5px 0 0}div[data-type=dictionary-view] .main .definition{padding:10px;border:1px solid var(--background-modifier-border);border-radius:5px;margin:10px 0 5px;background-color:var(--background-primary)}div[data-type=dictionary-view] .main .definition:last-child{border:1px solid var(--background-modifier-border)}div[data-type=dictionary-view] .main .synonyms{padding:10px 0 0}div[data-type=dictionary-view] .main .synonyms p{margin:0}div[data-type=dictionary-view] .main .definition>blockquote{margin:0}div[data-type=dictionary-view] .main .label{color:var(--text-normal);margin-bottom:2px;font-size:var(--font-adaptive-smaller);font-weight:500}div[data-type=dictionary-view] .main .mark{color:var(--text-normal);background-color:var(--text-selection);box-shadow:none}div[data-type=dictionary-view] .main>.opener{font-size:var(--font-adaptive-small);color:var(--text-normal);padding-left:5px}body .excalidraw,body .excalidraw.theme--dark{--color-primary-light:var(--text-selection);--color-primary:var(--interactive-accent);--color-primary-darker:var(--interactive-accent-hover);--color-primary-darkest:var(--interactive-accent-hover);--ui-font:var(--font-interface);--island-bg-color:var(--background-secondary);--icon-fill-color:var(--text-normal);--button-hover:var(--background-modifier-hover);--button-gray-1:var(--background-modifier-hover);--button-gray-2:var(--background-modifier-hover);--focus-highlight-color:var(--background-modifier-border-focus);--default-bg-color:var(--background-primary);--default-border-color:var(--background-modifier-border);--input-border-color:var(--background-modifier-border);--link-color:var(--text-accent);--overlay-bg-color:rgba(255, 255, 255, 0.88);--text-primary-color:var(--text-normal)}.git-view-body .opener{text-transform:uppercase;letter-spacing:.05em;font-size:var(--font-adaptive-smallest);font-weight:500;padding:5px 7px 5px 10px;margin-bottom:6px}.git-view-body .file-view .opener{text-transform:none;letter-spacing:normal;font-size:var(--font-adaptive-smallest);font-weight:400;padding:initial;margin-bottom:0}.git-view-body .file-view .opener .collapse-icon{display:flex!important;margin-left:-7px}.git-view-body{margin-top:6px}.git-view-body .file-view{margin-left:4px}.git-view-body .file-view main:hover{color:var(--text-normal)}.git-view-body .file-view .tools .type{display:none!important}.git-view-body .file-view .tools{opacity:0;transition:opacity .1s}.git-view-body .file-view main:hover>.tools{opacity:1}.git-view-body .staged{margin-bottom:12px}.git-view-body .opener.open{color:var(--text-normal)}div[data-type=git-view] .search-input-container{margin-left:0;width:100%}.git-view-body .opener .collapse-icon{display:none!important}.git-view-body main{background-color:var(--background-primary)!important;width:initial!important}.git-view-body .file-view>main:not(.topLevel){margin-left:7px}div[data-type=git-view] .commit-msg{min-height:2.5em!important;height:2.5em!important;padding:6.5px 8px!important}div[data-type=git-view] .search-input-clear-button{bottom:5.5px}.mod-macos.hider-frameless .workspace-ribbon{border:none}.is-tablet.hider-ribbon{--ribbon-width:0px}.is-tablet.hider-ribbon .side-dock-ribbon{display:none}.hider-ribbon .workspace-ribbon{padding:0}:root{--hider-ribbon-display:none}.ribbon-bottom-left-hover:not(.is-mobile){--hider-ribbon-display:flex}.hider-ribbon .workspace-ribbon-collapse-btn{display:none}.hider-ribbon .workspace-ribbon.mod-right{pointer-events:none}.hider-ribbon .workspace-ribbon.mod-left{position:absolute;border-right:0px;margin:0;height:var(--header-height);overflow:visible;flex-basis:0;bottom:0;top:auto;display:var(--hider-ribbon-display)!important;flex-direction:row;z-index:17;opacity:0;transition:opacity .25s ease-in-out;filter:drop-shadow(2px 10px 30px rgba(0,0,0,.2));gap:0}.hider-ribbon .side-dock-actions,.hider-ribbon .side-dock-settings{flex-direction:row;display:var(--hider-ribbon-display);border-top:var(--border-width) solid var(--background-modifier-border);background:var(--background-secondary);margin:0;position:relative;gap:var(--size-2-2)}.hider-ribbon .side-dock-actions{padding-left:8px}.hider-ribbon .side-dock-settings{border-right:var(--border-width) solid var(--background-modifier-border);border-top-right-radius:var(--radius-m);padding:0 var(--size-2-2)}.hider-ribbon .workspace-ribbon.mod-left .side-dock-ribbon-action{display:var(--hider-ribbon-display);margin:7px 0 8px}.hider-ribbon .workspace-ribbon.mod-left:hover{opacity:1;transition:opacity .25s ease-in-out}.hider-ribbon .workspace-ribbon.mod-left .workspace-ribbon-collapse-btn{opacity:0}.hider-ribbon .workspace-split.mod-left-split{margin:0}.hider-ribbon .workspace-leaf-content .item-list{padding-bottom:40px}.popover.hover-editor{--folding-offset:10px}.theme-dark,.theme-light{--he-title-bar-inactive-bg:var(--background-secondary);--he-title-bar-inactive-pinned-bg:var(--background-secondary);--he-title-bar-active-pinned-bg:var(--background-secondary);--he-title-bar-active-bg:var(--background-secondary);--he-title-bar-inactive-fg:var(--text-muted);--he-title-bar-active-fg:var(--text-normal);--he-title-bar-font-size:14px}.theme-light{--popover-shadow:0px 2.7px 3.1px rgba(0, 0, 0, 0.032),0px 5.9px 8.7px rgba(0, 0, 0, 0.052),0px 10.4px 18.1px rgba(0, 0, 0, 0.071),0px 20px 40px rgba(0, 0, 0, 0.11)}.theme-dark{--popover-shadow:0px 2.7px 3.1px rgba(0, 0, 0, 0.081),0px 5.9px 8.7px rgba(0, 0, 0, 0.131),0px 10.4px 18.1px rgba(0, 0, 0, 0.18),0px 20px 40px rgba(0, 0, 0, 0.28)}.popover.hover-editor:not(.snap-to-viewport){--max-width:92%}.popover.hover-editor:not(.snap-to-viewport) .markdown-preview-view,.popover.hover-editor:not(.snap-to-viewport) .markdown-source-view .cm-content{font-size:90%}body .popover.hover-editor:not(.is-loaded){box-shadow:var(--popover-shadow)}body .popover.hover-editor:not(.is-loaded) .markdown-preview-view{padding:15px 0 0 0}body .popover.hover-editor:not(.is-loaded) .view-content{height:100%;background-color:var(--background-primary)}body .popover.hover-editor:not(.is-loaded) .view-actions{height:auto}body .popover.hover-editor:not(.is-loaded) .popover-content{border:1px solid var(--background-modifier-border-hover)}body .popover.hover-editor:not(.is-loaded) .popover-titlebar{padding:0 4px}body .popover.hover-editor:not(.is-loaded) .popover-titlebar .popover-title{padding-left:4px;letter-spacing:-.02em;font-weight:var(--title-weight)}body .popover.hover-editor:not(.is-loaded) .markdown-embed{height:auto;font-size:unset;line-height:unset}body .popover.hover-editor:not(.is-loaded) .markdown-embed .markdown-preview-view{padding:0}body .popover.hover-editor:not(.is-loaded).show-navbar .popover-titlebar{border-bottom:var(--border-width) solid var(--background-modifier-border)}body .popover.hover-editor:not(.is-loaded) .popover-action,body .popover.hover-editor:not(.is-loaded) .popover-header-icon{cursor:var(--cursor);margin:4px 0;padding:4px 3px;border-radius:var(--radius-m);color:var(--icon-color)}body .popover.hover-editor:not(.is-loaded) .popover-action.mod-pin-popover,body .popover.hover-editor:not(.is-loaded) .popover-header-icon.mod-pin-popover{padding:4px 2px}body .popover.hover-editor:not(.is-loaded) .popover-action svg,body .popover.hover-editor:not(.is-loaded) .popover-header-icon svg{opacity:var(--icon-muted)}body .popover.hover-editor:not(.is-loaded) .popover-action:hover,body .popover.hover-editor:not(.is-loaded) .popover-header-icon:hover{background-color:var(--background-modifier-hover);color:var(--icon-color-hover)}body .popover.hover-editor:not(.is-loaded) .popover-action:hover svg,body .popover.hover-editor:not(.is-loaded) .popover-header-icon:hover svg{opacity:1;transition:opacity .1s ease-in-out}body .popover.hover-editor:not(.is-loaded) .popover-action.is-active,body .popover.hover-editor:not(.is-loaded) .popover-header-icon.is-active{color:var(--icon-color)}body.minimal-dark-black.theme-dark,body.minimal-dark-tonal.theme-dark,body.minimal-light-tonal.theme-light,body.minimal-light-white.theme-light,body.theme-dark{--kanban-border:0px}body:not(.is-mobile) .kanban-plugin__grow-wrap>textarea:focus{box-shadow:none}body:not(.minimal-icons-off) .kanban-plugin svg.cross{height:14px;width:14px}body .kanban-plugin__icon>svg,body .kanban-plugin__lane-settings-button svg{width:18px;height:18px}body .kanban-plugin{--kanban-border:var(--border-width);--interactive-accent:var(--text-selection);--interactive-accent-hover:var(--background-modifier-hover);--text-on-accent:var(--text-normal);background-color:var(--background-primary)}body .kanban-plugin__markdown-preview-view{font-family:var(--font-text)}body .kanban-plugin__board>div{margin:0 auto}body .kanban-plugin__checkbox-label{color:var(--text-muted)}body .kanban-plugin__item-markdown ul{margin:0}body .kanban-plugin__item-content-wrapper{box-shadow:none}body .kanban-plugin__grow-wrap::after,body .kanban-plugin__grow-wrap>textarea{padding:0;border:0;border-radius:0}body .kanban-plugin__grow-wrap::after,body .kanban-plugin__grow-wrap>textarea,body .kanban-plugin__item-title p,body .kanban-plugin__markdown-preview-view{font-size:var(--font-ui-medium);line-height:1.3}body .kanban-plugin__item{background-color:var(--background-primary)}body .kanban-plugin__item-title-wrapper{align-items:center}body .kanban-plugin__lane-form-wrapper{border:1px solid var(--background-modifier-border)}body .kanban-plugin__lane-header-wrapper{border-bottom:0}body .kanban-plugin__lane-header-wrapper .kanban-plugin__grow-wrap>textarea,body .kanban-plugin__lane-input-wrapper .kanban-plugin__grow-wrap>textarea,body .kanban-plugin__lane-title p{background:0 0;color:var(--text-normal);font-size:var(--font-ui-medium);font-weight:500}body .kanban-plugin__item-input-wrapper .kanban-plugin__grow-wrap>textarea{padding:0;border-radius:0;height:auto}body .kanban-plugin__item-form .kanban-plugin__grow-wrap{background-color:var(--background-primary)}body .kanban-plugin__item-input-wrapper .kanban-plugin__grow-wrap>textarea::placeholder{color:var(--text-faint)}body .kanban-plugin__item .kanban-plugin__item-edit-archive-button,body .kanban-plugin__item button.kanban-plugin__item-edit-button,body .kanban-plugin__item-settings-actions>button,body .kanban-plugin__lane button.kanban-plugin__lane-settings-button,body .kanban-plugin__lane button.kanban-plugin__lane-settings-button.is-enabled,body .kanban-plugin__lane-action-wrapper>button{background:0 0;transition:color .1s ease-in-out}body .kanban-plugin__item .kanban-plugin__item-edit-archive-button:hover,body .kanban-plugin__item button.kanban-plugin__item-edit-button.is-enabled,body .kanban-plugin__item button.kanban-plugin__item-edit-button:hover,body .kanban-plugin__lane button.kanban-plugin__lane-settings-button.is-enabled,body .kanban-plugin__lane button.kanban-plugin__lane-settings-button:hover{color:var(--text-normal);transition:color .1s ease-in-out;background:0 0}body .kanban-plugin__new-lane-button-wrapper{position:fixed;bottom:30px}body .kanban-plugin__lane-items>.kanban-plugin__placeholder:only-child{border:1px dashed var(--background-modifier-border);height:2em}body .kanban-plugin__item-postfix-button-wrapper{align-self:flex-start}body .kanban-plugin__item button.kanban-plugin__item-postfix-button.is-enabled,body .kanban-plugin__item button.kanban-plugin__item-prefix-button.is-enabled,body .kanban-plugin__lane button.kanban-plugin__lane-settings-button.is-enabled{color:var(--text-muted)}body .kanban-plugin button{box-shadow:none;cursor:var(--cursor);height:auto}body .kanban-plugin__item button.kanban-plugin__item-postfix-button:hover,body .kanban-plugin__item button.kanban-plugin__item-prefix-button:hover,body .kanban-plugin__lane button.kanban-plugin__lane-settings-button:hover{background-color:var(--background-modifier-hover)}body .kanban-plugin__item-button-wrapper>button{color:var(--text-muted);font-weight:400;background:0 0;min-height:calc(var(--input-height) + 8px)}body .kanban-plugin__item-button-wrapper>button:hover{color:var(--text-normal);background:var(--background-modifier-hover)}body .kanban-plugin__item-button-wrapper>button:focus{box-shadow:none}body .kanban-plugin__item-button-wrapper{padding:1px 6px 5px;border-top:none}body .kanban-plugin__lane-setting-wrapper>div:last-child{border:none;margin:0}body .kanban-plugin.something-is-dragging{cursor:grabbing;cursor:-webkit-grabbing}body .kanban-plugin__item.is-dragging{box-shadow:0 5px 30px rgba(0,0,0,.15),0 0 0 2px var(--text-selection)}body .kanban-plugin__lane-items{border:var(--kanban-border) solid var(--background-modifier-border);padding:0 4px;margin:0;background-color:var(--background-secondary)}body .kanban-plugin__lane{background:0 0;padding:0;border:var(--border-width) solid transparent}body .kanban-plugin__lane.is-dragging{box-shadow:0 5px 30px rgba(0,0,0,.15);border:1px solid var(--background-modifier-border)}body .kanban-plugin__lane .kanban-plugin__item-button-wrapper{border-top-left-radius:8px;border-top-right-radius:8px;border-top:1px solid var(--background-modifier-border);border-bottom-width:0;padding:4px 4px 0 4px}body .kanban-plugin__lane.will-prepend .kanban-plugin__lane-items{border-radius:8px}body .kanban-plugin__lane.will-prepend .kanban-plugin__item-form{border-top:1px solid var(--background-modifier-border);border-radius:8px 8px 0 0;padding:4px 4px 0;border-bottom-width:0}body .kanban-plugin__lane.will-prepend .kanban-plugin__item-form+.kanban-plugin__lane-items{border-top-width:0;border-radius:0 0 8px 8px}body .kanban-plugin__lane.will-prepend .kanban-plugin__item-button-wrapper+.kanban-plugin__lane-items{border-top-width:0;border-radius:0 0 8px 8px}body .kanban-plugin__lane:not(.will-prepend) .kanban-plugin__item-button-wrapper,body .kanban-plugin__lane:not(.will-prepend) .kanban-plugin__item-form{border-top:none;border-radius:0 0 8px 8px}body .kanban-plugin__lane:not(.will-prepend) .kanban-plugin__item-button-wrapper{padding:0 4px 4px 4px;border-bottom-width:1px}body .kanban-plugin__lane:not(.will-prepend) .kanban-plugin__lane-items{border-bottom:none;border-top-width:1px;border-radius:8px 8px 0 0}body .kanban-plugin__item-form .kanban-plugin__item-input-wrapper{min-height:calc(var(--input-height) + 8px);display:flex;justify-content:center}body .kanban-plugin__item-button-wrapper,body .kanban-plugin__item-form{background-color:var(--background-secondary);border:var(--kanban-border) solid var(--background-modifier-border)}body .kanban-plugin__item-form{padding:0 4px 5px}body .kanban-plugin__markdown-preview-view ol,body .kanban-plugin__markdown-preview-view ol.contains-task-list .contains-task-list,body .kanban-plugin__markdown-preview-view ul,body .kanban-plugin__markdown-preview-view ul.contains-task-list .contains-task-list{padding-inline-start:1.8em!important}@media (max-width:400pt){.kanban-plugin__board{flex-direction:column!important}.kanban-plugin__lane{width:100%!important;margin-bottom:1rem!important}}body .cm-heading-marker{cursor:var(--cursor);padding-left:10px}.theme-light{--leaflet-buttons:var(--bg1);--leaflet-borders:rgba(0,0,0,0.1)}.theme-dark{--leaflet-buttons:var(--bg2);--leaflet-borders:rgba(255,255,255,0.1)}.leaflet-top{transition:top .1s linear}.mod-macos.minimal-focus-mode .mod-root .map-100 .markdown-preview-sizer.markdown-preview-section .el-lang-leaflet:nth-child(3) .leaflet-top{top:calc(18px + var(--ewt-traffic-light-y));transition:top .1s linear}body .leaflet-container{background-color:var(--background-secondary);font-family:var(--font-interface)}.map-100 .markdown-preview-sizer.markdown-preview-section .el-lang-leaflet:nth-child(3){margin-top:-16px}.leaflet-control-attribution{display:none}.leaflet-popup-content{margin:10px}.block-language-leaflet{border-radius:var(--radius-m);overflow:hidden;border:var(--border-width) solid var(--background-modifier-border)}.map-wide .block-language-leaflet{border-radius:var(--radius-l)}.map-max .block-language-leaflet{border-radius:var(--radius-xl)}.workspace-leaf-content[data-type=obsidian-leaflet-map-view] .block-language-leaflet{border-radius:0;border:none}.map-100 .block-language-leaflet{border-radius:0;border-left:none;border-right:none}.block-language-leaflet .leaflet-control-expandable-list .input-container .input-item>input{appearance:none}body .block-language-leaflet .leaflet-bar.disabled>a{background-color:transparent;opacity:.3}body .leaflet-touch .leaflet-bar a:first-child{border-top-left-radius:4px;border-top-right-radius:4px}body .leaflet-touch .leaflet-bar a:last-child{border-bottom-left-radius:4px;border-bottom-right-radius:4px}body .leaflet-control-layers-toggle{border-radius:4px}body .block-language-leaflet .leaflet-control-expandable,body .block-language-leaflet .leaflet-control-has-actions .control-actions.expanded,body .block-language-leaflet .leaflet-distance-control,body .leaflet-bar,body .leaflet-bar a,body .leaflet-control-layers-expanded,body .leaflet-control-layers-toggle{background-color:var(--leaflet-buttons);color:var(--text-muted);border:none;user-select:none}body .leaflet-bar a.leaflet-disabled,body .leaflet-bar a.leaflet-disabled:hover{background-color:var(--leaflet-buttons);color:var(--text-faint);opacity:.6;cursor:not-allowed}body .leaflet-control a{cursor:var(--cursor);color:var(--text-normal)}body .leaflet-bar a:hover{background-color:var(--background-modifier-hover);color:var(--text-normal);border:none}body .leaflet-touch .leaflet-control-layers{background-color:var(--leaflet-buttons)}body .leaflet-touch .leaflet-bar,body .leaflet-touch .leaflet-control-layers{border-radius:5px;box-shadow:2px 0 8px 0 rgba(0,0,0,.1);border:1px solid var(--ui1)}body .block-language-leaflet .leaflet-control-has-actions .control-actions{box-shadow:0;border:1px solid var(--ui1)}body .leaflet-control-expandable-list .leaflet-bar{box-shadow:none;border-radius:0}body .block-language-leaflet .leaflet-distance-control{padding:4px 10px;height:auto;cursor:var(--cursor)!important}body .block-language-leaflet .leaflet-marker-link-popup>.leaflet-popup-content-wrapper>*{font-size:var(--font-adaptive-small);font-family:var(--font-interface)}body .block-language-leaflet .leaflet-marker-link-popup>.leaflet-popup-content-wrapper{padding:4px 10px!important}.leaflet-marker-icon svg path{stroke:var(--background-primary);stroke-width:18px}.map-view-marker-name{font-weight:400}.workspace-leaf-content[data-type=map] .graph-controls{background-color:var(--background-primary)}body:not(.is-mobile):not(.plugin-sliding-panes-rotate-header) .workspace-split.mod-root .workspace-leaf-content[data-type=map] .view-header{position:fixed;background:0 0!important;width:100%;z-index:99}body:not(.plugin-sliding-panes-rotate-header) .workspace-leaf-content[data-type=map] .view-header-title{display:none}body:not(.is-mobile):not(.plugin-sliding-panes-rotate-header) .workspace-leaf-content[data-type=map] .view-actions{background:0 0}body:not(.is-mobile):not(.plugin-sliding-panes-rotate-header) .workspace-leaf-content[data-type=map] .view-content{height:100%}body:not(.is-mobile):not(.plugin-sliding-panes-rotate-header) .workspace-leaf-content[data-type=map] .leaflet-top.leaflet-right{top:var(--header-height)}.obsidian-metatable{--metatable-font-size:calc(var(--font-adaptive-normal) - 2px);--metatable-font-family:var(--font-interface);--metatable-background:transparent;--metatable-foreground:var(--text-faint);--metatable-key-background:transparent;--metatable-key-border-width:0;--metatable-key-border-color:transparent;--metatable-value-background:transparent;padding-bottom:.5rem}.obsidian-metatable::part(key),.obsidian-metatable::part(value){border-bottom:0 solid var(--background-modifier-border);padding:.1rem 0;text-overflow:ellipsis;overflow:hidden}.obsidian-metatable::part(key){font-weight:400;color:var(--tx3);font-size:calc(var(--font-adaptive-normal) - 2px)}.obsidian-metatable::part(value){font-size:calc(var(--font-adaptive-normal) - 2px);color:var(--tx1)}body .NLT__header-menu-header-container{font-size:85%}body .NLT__button{background:0 0;box-shadow:none;color:var(--text-muted)}body .NLT__button:active,body .NLT__button:focus,body .NLT__button:hover{background:0 0;color:var(--text-normal);box-shadow:none}.NLT__app .NLT__button{background:0 0;border:1px solid var(--background-modifier-border);box-shadow:0 .5px 1px 0 var(--btn-shadow-color);color:var(--text-muted);padding:2px 8px}.NLT__app .NLT__button:active,.NLT__app .NLT__button:focus,.NLT__app .NLT__button:hover{background:0 0;border-color:var(--background-modifier-border-hover);color:var(--text-normal);box-shadow:0 .5px 1px 0 var(--btn-shadow-color)}.NLT__td:nth-last-child(2),.NLT__th:nth-last-child(2){border-right:0}.NLT__app .NLT__td:last-child,.NLT__app .NLT__th:last-child{padding-right:0}.NLT__app .NLT__th{background-image:none!important}.NLT__app th.NLT__selectable:hover{background-color:transparent;cursor:var(--cursor)}.NLT__menu .NLT__menu-container{background-color:var(--background-secondary)}.NLT__menu .NLT__header-menu-item{font-size:var(--font-adaptive-small)}.NLT__menu .NLT__header-menu{padding:6px 4px}.NLT__menu .NLT__drag-menu{font-size:var(--font-adaptive-small);padding:6px 4px}.NLT__menu svg{color:var(--text-faint);margin-right:6px}.NLT__menu .NLT__selectable:hover,.NLT__menu .NLT__selected{background:0 0}.NLT__menu .NLT__selected>.NLT__selectable{background-color:var(--background-modifier-hover)}.NLT__menu .NLT__selectable{cursor:var(--cursor)}.NLT__menu div.NLT__selectable{min-width:110px;border-radius:var(--radius-m);padding:3px 8px 3px 4px;margin:1px 2px 1px;cursor:var(--cursor);height:auto;line-height:20px}.NLT__menu div.NLT__selectable:hover{background-color:var(--background-modifier-hover)}.NLT__menu .NLT__textarea{font-size:var(--table-text-size)}.NLT__tfoot tr:hover td{background-color:transparent}.modal .quickAddPrompt>h1,.modal .quickAddYesNoPrompt h1{margin-top:0;text-align:left!important;font-size:var(--h1);font-weight:600}.modal .quickAddYesNoPrompt p{text-align:left!important}.modal .quickAddYesNoPrompt button{font-size:var(--font-ui-small)}.modal .yesNoPromptButtonContainer{font-size:var(--font-ui-small);justify-content:flex-end}.quickAddModal .modal-content{padding:20px 2px 5px}div#quick-explorer{display:flex}div#quick-explorer span.explorable{align-items:center;color:var(--text-muted);display:flex;font-size:var(--font-adaptive-smaller);line-height:16px}div#quick-explorer span.explorable:last-of-type{font-size:var(--font-adaptive-smaller)}div#quick-explorer span.explorable.selected,div#quick-explorer span.explorable:hover{background-color:unset!important}div#quick-explorer span.explorable.selected .explorable-name,div#quick-explorer span.explorable:hover .explorable-name{color:var(--text-normal)}div#quick-explorer span.explorable.selected .explorable-separator,div#quick-explorer span.explorable:hover .explorable-separator{color:var(--text-normal)}div#quick-explorer .explorable-name{padding:0 4px;border-radius:4px}div#quick-explorer .explorable-separator::before{content:"\00a0›"!important;font-size:1.3em;font-weight:400;margin:0}body:not(.colorful-active) .qe-popup-menu .menu-item:not(.is-disabled):not(.is-label).selected,body:not(.colorful-active) .qe-popup-menu .menu-item:not(.is-disabled):not(.is-label):hover{background-color:var(--background-modifier-hover);color:var(--text-normal)}body:not(.colorful-active) .qe-popup-menu .menu-item:not(.is-disabled):not(.is-label).selected .menu-item-icon,body:not(.colorful-active) .qe-popup-menu .menu-item:not(.is-disabled):not(.is-label):hover .menu-item-icon{color:var(--text-normal)}.workspace-leaf-content[data-type=recent-files] .view-content{padding-top:10px}.mod-root .workspace-leaf-content[data-type=reminder-list] main{max-width:var(--max-width);margin:0 auto;padding:0}.modal .reminder-actions .later-select{font-size:var(--font-settings-small);vertical-align:bottom;margin-left:3px}.modal .reminder-actions .icon{line-height:1}:not(.mod-root) .workspace-leaf-content[data-type=reminder-list] main{margin:0 auto;padding:15px}:not(.mod-root) .workspace-leaf-content[data-type=reminder-list] main .group-name{font-weight:500;color:var(--text-muted);font-size:var(--font-adaptive-small);padding-bottom:.5em;border-bottom:1px solid var(--background-modifier-border)}:not(.mod-root) .workspace-leaf-content[data-type=reminder-list] main .reminder-group .reminder-list-item{line-height:1.3;font-size:var(--font-adaptive-small)}:not(.mod-root) .workspace-leaf-content[data-type=reminder-list] main .reminder-group .no-reminders{color:var(--text-faint)}:not(.mod-root) .workspace-leaf-content[data-type=reminder-list] main .reminder-group .reminder-time{font-family:var(--font-text);font-size:var(--font-adaptive-small)}:not(.mod-root) .workspace-leaf-content[data-type=reminder-list] main .reminder-group .reminder-file{color:var(--text-faint)}body .modal .dtchooser{background-color:transparent}body .modal .dtchooser .reminder-calendar .year-month{font-weight:400;font-size:var(--font-adaptive-normal);padding-bottom:10px}body .modal .dtchooser .reminder-calendar .year-month .month,body .modal .dtchooser .reminder-calendar .year-month .year{color:var(--text-normal)}body .modal .dtchooser .reminder-calendar .year-month .month-nav:first-child{background-color:currentColor;-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M12.707 5.293a1 1 0 010 1.414L9.414 10l3.293 3.293a1 1 0 01-1.414 1.414l-4-4a1 1 0 010-1.414l4-4a1 1 0 011.414 0z' clip-rule='evenodd' /%3E%3C/svg%3E")}body .modal .dtchooser .reminder-calendar .year-month .month-nav:last-child{background-color:currentColor;-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z' clip-rule='evenodd' /%3E%3C/svg%3E")}body .modal .dtchooser .reminder-calendar .year-month .month-nav{-webkit-mask-size:20px 20px;-webkit-mask-repeat:no-repeat;-webkit-mask-position:50% 50%;color:var(--text-faint);cursor:var(--cursor);border-radius:var(--radius-m);padding:0;width:30px;display:inline-block}body .modal .dtchooser .reminder-calendar .year-month .month-nav:hover{color:var(--text-muted)}body .modal .dtchooser .reminder-calendar th{padding:.5em 0;font-size:var(--font-adaptive-smallest);font-weight:500;text-transform:uppercase;letter-spacing:.1em}body .modal .dtchooser .reminder-calendar .calendar-date{transition:background-color .1s ease-in;padding:.3em 0;border-radius:var(--radius-m)}body .modal .dtchooser .reminder-calendar .calendar-date.is-selected,body .modal .dtchooser .reminder-calendar .calendar-date:hover{transition:background-color .1s ease-in;background-color:var(--background-modifier-hover)!important}body .modal .dtchooser .reminder-calendar .calendar-date.is-selected{font-weight:var(--bold-weight);color:var(--text-accent)!important}body .markdown-preview-view th,body .markdown-source-view.mod-cm6 .dataview.table-view-table thead.table-view-thead tr th,body .table-view-table>thead>tr>th{cursor:var(--cursor);background-image:none}.markdown-source-view.mod-cm6 th{background-repeat:no-repeat;background-position:right}.style-settings-container[data-level="2"]{background:var(--background-secondary);border:1px solid var(--ui1);border-radius:5px;padding:10px 20px;margin:2px 0 2px -20px}.workspace-leaf-content[data-type=style-settings] div[data-id=instructions] .setting-item-name{display:none}.workspace-leaf-content[data-type=style-settings] div[data-id=instructions] .setting-item-description{color:var(--text-normal);font-size:var(--font-adaptive-smaller);padding-bottom:.5em}.workspace-leaf-content[data-type=style-settings] .view-content{padding:var(--size-4-4) 0}.workspace-leaf-content[data-type=style-settings] .view-content>div{width:var(--line-width);max-width:var(--max-width);margin:0 auto}.workspace-leaf-content[data-type=style-settings] .style-settings-heading[data-level="0"] .setting-item-name{padding-left:17px}.workspace-leaf-content[data-type=style-settings] .setting-item{max-width:100%;margin:0 auto}.workspace-leaf-content[data-type=style-settings] .setting-item-name{position:relative}.workspace-leaf-content[data-type=style-settings] .style-settings-collapse-indicator{position:absolute;left:0}.setting-item-heading.style-settings-heading,.style-settings-container .style-settings-heading{cursor:var(--cursor)}.modal.mod-settings .setting-item .pickr button.pcr-button{box-shadow:none;border-radius:40px;height:24px;width:24px}.setting-item .pickr .pcr-button:after,.setting-item .pickr .pcr-button:before{border-radius:40px;box-shadow:none;border:none}.setting-item.setting-item-heading.style-settings-heading.is-collapsed{border-bottom:1px solid var(--background-modifier-border)}.setting-item.setting-item-heading.style-settings-heading{border:0;padding:10px 0 5px;margin-bottom:0}.setting-item .style-settings-export,.setting-item .style-settings-import{text-decoration:none;font-size:var(--font-ui-small);font-weight:500;color:var(--text-muted);margin:0;padding:2px 8px;border-radius:5px;cursor:var(--cursor)}.setting-item .style-settings-export:hover,.setting-item .style-settings-import:hover{background-color:var(--background-modifier-hover);color:var(--text-normal);cursor:var(--cursor)}.mod-root .workspace-leaf-content[data-type=style-settings] .style-settings-container .setting-item:not(.setting-item-heading){flex-direction:row;align-items:center;padding:.5em 0}.workspace-split:not(.mod-root) .workspace-leaf-content[data-type=style-settings] .setting-item-name{font-size:var(--font-adaptive-smaller)}.themed-color-wrapper>div+div{margin-top:0;margin-left:6px}.theme-light .themed-color-wrapper>.theme-light{background-color:transparent}.theme-light .themed-color-wrapper>.theme-dark{background-color:rgba(0,0,0,.8)}.theme-dark .themed-color-wrapper>.theme-dark{background-color:transparent}@media (max-width:400pt){.workspace-leaf-content[data-type=style-settings] .setting-item-name{font-size:var(--font-adaptive-small)}.workspace-leaf-content[data-type=style-settings] .setting-item-info:has(.search-input-container){width:100%;margin-right:0}}body .todoist-query-title{display:inline;font-size:var(--h4);font-variant:var(--h4-variant);letter-spacing:.02em;color:var(--h4-color);font-weight:var(--h4-weight);font-style:var(--h4-style)}body .is-live-preview .block-language-todoist{padding-left:0}ul.todoist-task-list>li.task-list-item .task-list-item-checkbox{margin:0}body .todoist-refresh-button{display:inline;float:right;background:0 0;padding:5px 6px 0;margin-right:0}body .is-live-preview .todoist-refresh-button{margin-right:30px}body .todoist-refresh-button:hover{box-shadow:none;background-color:var(--background-modifier-hover)}.todoist-refresh-button svg{width:15px;height:15px;opacity:var(--icon-muted)}ul.todoist-task-list{margin-left:-.25em}.is-live-preview ul.todoist-task-list{padding-left:0;margin-left:.5em;margin-block-start:0;margin-block-end:0}.contains-task-list.todoist-task-list .task-metadata{font-size:var(--font-adaptive-small);display:flex;color:var(--text-muted);justify-content:space-between;margin-left:.1em;margin-bottom:.25rem}.is-live-preview .contains-task-list.todoist-task-list .task-metadata{padding-left:calc(var(--checkbox-size) + .6em)}.todoist-task-list .task-date.task-overdue{color:var(--color-orange)}body .todoist-p1>input[type=checkbox]{border:1px solid var(--color-red)}body .todoist-p1>input[type=checkbox]:hover{opacity:.8}body .todoist-p2>input[type=checkbox]{border:1px solid var(--color-yellow)}body .todoist-p2>input[type=checkbox]:hover{opacity:.8}body .todoist-p3>input[type=checkbox]{border:1px solid var(--color-blue)}body .todoist-p3>input[type=checkbox]:hover{opacity:.8}body.theme-light{--color-axis-label:var(--tx1);--color-tick-label:var(--tx2);--color-dot-fill:var(--ax1);--color-line:var(--ui1)}.tracker-axis-label{font-family:var(--font-interface)}.tracker-axis{color:var(--ui2)}.tabs-manager .chat-view{--assistant-message-color:var(--background-primary);--padding-md:var(--size-4-2) var(--size-4-3);--padding-lg:var(--size-4-3) var(--size-4-3);--chat-box-color:var(--background-primary)}.tabs-manager .chat-view .ow-dialogue-timeline{padding:var(--size-4-4) var(--size-4-3) var(--size-4-8)}.tabs-manager .chat-view .ow-dialogue-timeline .ow-message-bubble .ow-content-wrapper{box-shadow:none;border-color:var(--background-modifier-border);border-radius:var(--radius-m)}.tabs-manager .chat-view .ow-dialogue-timeline .ow-message-bubble.ow-user-bubble .ow-content-wrapper{border-width:0;background-color:var(--interactive-accent)}.tabs-manager .chat-view .input-area .input-form .chat-box{border-radius:0;box-shadow:none;grid-row:1;grid-column:1/3;height:100px;border:none;padding:var(--size-4-3) var(--size-4-4) var(--size-4-2)}.tabs-manager .chat-view .input-area .input-form .chat-box:hover{height:100px}.tabs-manager .chat-view .input-area{padding:0;gap:0}.tabs-manager .chat-view .header{border-bottom:1px solid var(--background-modifier-border)}.tabs-manager .chat-view .input-form{border-top:1px solid var(--background-modifier-border)}.tabs-manager .chat-view .input-area .input-form .chat-box .info-bar span{color:var(--text-faint)}.tabs-manager .chat-view .input-area .input-form .btn-new-chat{display:none}.zoom-plugin-header{--link-color:var(--text-normal);--link-decoration:none;font-size:var(--font-ui-small);padding:0;justify-content:center;margin:var(--size-4-2) auto;max-width:var(--max-width)}.zoom-plugin-header>.zoom-plugin-title{text-decoration:none;max-width:15em;overflow:hidden}.zoom-plugin-header>.zoom-plugin-delimiter{color:var(--text-faint);padding:0 var(--size-4-1)}.theme-dark.minimal-atom-dark{--color-red-rgb:225,109,118;--color-orange-rgb:209,154,102;--color-yellow-rgb:206,193,103;--color-green-rgb:152,195,121;--color-cyan-rgb:88,182,194;--color-blue-rgb:98,175,239;--color-purple-rgb:198,120,222;--color-pink-rgb:225,109,118;--color-red:#e16d76;--color-orange:#d19a66;--color-yellow:#cec167;--color-green:#98c379;--color-cyan:#58b6c2;--color-blue:#62afef;--color-purple:#c678de;--color-pink:#e16d76}.theme-light.minimal-atom-light{--color-red-rgb:228,87,73;--color-orange-rgb:183,107,2;--color-yellow-rgb:193,131,2;--color-green-rgb:80,161,80;--color-cyan-rgb:13,151,179;--color-blue-rgb:98,175,239;--color-purple-rgb:166,38,164;--color-pink-rgb:228,87,73;--color-red:#e45749;--color-orange:#b76b02;--color-yellow:#c18302;--color-green:#50a150;--color-cyan:#0d97b3;--color-blue:#62afef;--color-purple:#a626a4;--color-pink:#e45749}.theme-light.minimal-atom-light{--base-h:106;--base-s:0%;--base-l:98%;--accent-h:231;--accent-s:76%;--accent-l:62%;--bg1:#fafafa;--bg2:#eaeaeb;--bg3:rgba(0,0,0,.1);--ui1:#dbdbdc;--ui2:#d8d8d9;--tx1:#232324;--tx2:#8e8e90;--tx3:#a0a1a8;--hl1:rgba(180,180,183,0.3);--hl2:rgba(209,154,102,0.35)}.theme-light.minimal-atom-light.minimal-light-white{--bg3:#eaeaeb}.theme-dark.minimal-atom-dark,.theme-light.minimal-atom-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-atom-light.minimal-light-contrast .titlebar,.theme-light.minimal-atom-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-atom-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-atom-light.minimal-light-contrast.minimal-status-off .status-bar{--base-h:220;--base-s:12%;--base-l:18%;--accent-h:220;--accent-s:86%;--accent-l:65%;--bg1:#282c34;--bg2:#21252c;--bg3:#3a3f4b;--divider-color:#181a1f;--tab-outline-color:#181a1f;--tx1:#d8dae1;--tx2:#898f9d;--tx3:#5d6370;--hl1:rgba(114,123,141,0.3);--hl2:rgba(209,154,102,0.3);--sp1:#fff}.theme-dark.minimal-atom-dark.minimal-dark-black{--base-d:5%;--bg3:#282c34;--divider-color:#282c34;--tab-outline-color:#282c34}.theme-light.minimal-ayu-light{--color-red-rgb:230,80,80;--color-orange-rgb:250,141,62;--color-yellow-rgb:242,174,73;--color-green-rgb:108,191,67;--color-cyan-rgb:76,191,153;--color-blue-rgb:57,158,230;--color-purple-rgb:163,122,204;--color-pink-rgb:255,115,131;--color-red:#e65050;--color-orange:#fa8d3e;--color-yellow:#f2ae49;--color-green:#6CBF43;--color-cyan:#4cbf99;--color-blue:#399ee6;--color-purple:#a37acc;--color-pink:#ff7383}.theme-dark.minimal-ayu-dark{--color-red-rgb:255,102,102;--color-orange-rgb:250,173,102;--color-yellow-rgb:255,209,55;--color-green-rgb:135,217,108;--color-cyan-rgb:149,230,203;--color-blue-rgb:115,208,255;--color-purple-rgb:223,191,255;--color-pink-rgb:242,121,131;--color-red:#ff6666;--color-orange:#ffad66;--color-yellow:#ffd137;--color-green:#87D96C;--color-cyan:#95e6cb;--color-blue:#73d0ff;--color-purple:#dfbfff;--color-pink:#f27983}.theme-light.minimal-ayu-light{--base-h:210;--base-s:17%;--base-l:98%;--accent-h:36;--accent-s:100%;--accent-l:50%;--bg1:#fff;--bg2:#f8f9fa;--bg3:rgba(209,218,224,0.5);--ui1:#E6EAED;--tx1:#5C6165;--tx2:#8A9199;--tx3:#AAAEB0;--hl1:rgba(3,91,214,0.15)}.theme-dark.minimal-ayu-dark,.theme-light.minimal-ayu-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-ayu-light.minimal-light-contrast .titlebar,.theme-light.minimal-ayu-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-ayu-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-ayu-light.minimal-light-contrast.minimal-status-off .status-bar{--base-h:222;--base-s:22%;--base-l:15%;--accent-h:35;--accent-s:100%;--accent-l:60%;--bg1:#232937;--bg2:#1E2431;--bg3:rgba(51,61,80,0.5);--ui1:#333C4A;--ui2:#333C4A;--ui3:#333C4A;--tx1:#cccac2;--tx2:#707A8C;--tx3:#495063;--hl1:rgba(64,159,255,0.25)}.theme-dark.minimal-ayu-dark.minimal-dark-black{--accent-h:40;--accent-s:75%;--accent-l:61%;--bg3:#0E1017;--tx1:#BFBDB6;--divider-color:#11151C;--tab-outline-color:#11151C}.theme-light.minimal-catppuccin-light{--color-red-rgb:230,69,83;--color-orange-rgb:254,100,12;--color-yellow-rgb:223,142,29;--color-green-rgb:64,160,43;--color-cyan-rgb:23,146,154;--color-blue-rgb:33,102,246;--color-purple-rgb:137,56,239;--color-pink-rgb:234,119,203;--color-red:#E64553;--color-orange:#FE640C;--color-yellow:#DF8E1D;--color-green:#40A02B;--color-cyan:#17929A;--color-blue:#2166F6;--color-purple:#8938EF;--color-pink:#EA77CB}.theme-dark.minimal-catppuccin-dark{--color-red-rgb:235,153,156;--color-orange-rgb:239,160,118;--color-yellow-rgb:229,200,144;--color-green-rgb:166,209,138;--color-cyan-rgb:129,200,190;--color-blue-rgb:140,170,238;--color-purple-rgb:202,158,230;--color-pink-rgb:244,185,229;--color-red:#EB999C;--color-orange:#EFA076;--color-yellow:#E5C890;--color-green:#A6D18A;--color-cyan:#81C8BE;--color-blue:#8CAAEE;--color-purple:#CA9EE6;--color-pink:#F4B9E5}.theme-light.minimal-catppuccin-light{--base-h:228;--base-s:20%;--base-l:95%;--accent-h:11;--accent-s:59%;--accent-l:67%;--bg1:#F0F1F5;--bg2:#DCE0E8;--bg3:hsla(228,11%,65%,.25);--ui1:#CCD0DA;--ui2:#BCC0CC;--ui3:#ACB0BE;--tx1:#4D4F69;--tx2:#5D5F77;--tx3:#8D8FA2;--hl1:rgba(172,176,190,.3);--hl2:rgba(223,142,29,.3)}.theme-light.minimal-catppuccin-light.minimal-light-tonal{--bg2:#DCE0E8}.theme-light.minimal-catppuccin-light.minimal-light-white{--bg3:#F0F1F5;--ui1:#DCE0E8}.theme-dark.minimal-catppuccin-dark,.theme-light.minimal-catppuccin-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-catppuccin-light.minimal-light-contrast .titlebar,.theme-light.minimal-catppuccin-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-catppuccin-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-catppuccin-light.minimal-light-contrast.minimal-status-off .status-bar{--base-h:229;--base-s:19%;--base-l:23%;--accent-h:10;--accent-s:57%;--accent-l:88%;--bg1:#303446;--bg2:#242634;--bg3:hsla(229,13%,52%,0.25);--ui1:#41455A;--ui2:#51576D;--ui3:#626880;--tx1:#C6D0F5;--tx2:#A6ADCE;--tx3:#848BA7;--sp1:#242634;--hl1:rgba(98,104,128,.5);--hl2:rgba(223,142,29,.4)}.theme-dark.minimal-catppuccin-dark.minimal-dark-black{--ui1:#303446;--hl2:rgba(223,142,29,.5)}.theme-dark.minimal-dracula-dark{--color-red-rgb:255,85,85;--color-orange-rgb:255,184,108;--color-yellow-rgb:241,250,140;--color-green-rgb:80,250,123;--color-cyan-rgb:139,233,253;--color-blue-rgb:98,114,164;--color-purple-rgb:189,147,249;--color-pink-rgb:255,121,198;--color-red:#ff5555;--color-orange:#ffb86c;--color-yellow:#f1fa8c;--color-green:#50fa7b;--color-cyan:#8be9fd;--color-blue:#6272a4;--color-purple:#bd93f9;--color-pink:#ff79c6}.theme-dark.minimal-dracula-dark,.theme-light.minimal-dracula-light.minimal-light-contrast .titlebar,.theme-light.minimal-dracula-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-dracula-light.minimal-light-contrast.minimal-status-off .status-bar{--base-h:232;--base-s:16%;--base-l:19%;--accent-h:265;--accent-s:89%;--accent-l:78%;--bg1:#282a37;--bg2:#21222c;--ui2:#44475a;--ui3:#6272a4;--tx1:#f8f8f2;--tx2:#949FBE;--tx3:#6272a4;--hl1:rgba(134, 140, 170, 0.3);--hl2:rgba(189, 147, 249, 0.35)}.theme-dark.minimal-dracula-dark.minimal-dark-black{--ui1:#282a36}.theme-dark.minimal-eink-dark,.theme-light.minimal-eink-light{--collapse-icon-color:var(--text-normal);--icon-color-active:var(--bg1);--icon-color-hover:var(--bg1);--icon-color-focused:var(--bg1);--icon-opacity:1;--indentation-guide-color:var(--tx1);--indentation-guide-color-active:var(--tx1);--indentation-guide-width-active:3px;--interactive-normal:var(--bg1);--input-shadow:0 0 0 1px var(--tx1);--link-unresolved-opacity:1;--link-unresolved-decoration-style:dashed;--link-unresolved-decoration-color:var(--tx1);--metadata-label-background-active:var(--bg1);--metadata-input-background-active:var(--bg1);--modal-border-color:var(--tx1);--modal-border-width:2px;--nav-item-color-hover:var(--bg1);--nav-item-color-active:var(--bg1);--prompt-border-color:var(--tx1);--prompt-border-width:2px;--calendar-dot-active:var(--bg1);--calendar-dot-today:var(--bg1);--calendar-text-active:var(--bg1);--tag-border-width:1.25px;--tag-background:transparent;--tag-background-hover:transparent;--tag-border-color:var(--tx1);--tag-border-color-hover:var(--tx1);--text-on-accent:var(--bg1);--text-on-accent-inverted:var(--bg1)}.theme-dark.minimal-eink-dark.tabs-modern,.theme-light.minimal-eink-light.tabs-modern{--minimal-tab-text-color-active:var(--bg1);--tab-text-color-focused-active-current:var(--bg1)}.theme-dark.minimal-eink-dark .suggestion-container,.theme-light.minimal-eink-light .suggestion-container{border-width:3px}.theme-dark.minimal-eink-dark .cm-s-obsidian span.cm-inline-code,.theme-dark.minimal-eink-dark .markdown-rendered code,.theme-light.minimal-eink-light .cm-s-obsidian span.cm-inline-code,.theme-light.minimal-eink-light .markdown-rendered code{font-weight:600}.theme-dark.minimal-eink-dark .metadata-property-icon,.theme-light.minimal-eink-light .metadata-property-icon{--icon-color-focused:var(--tx1)}.theme-dark.minimal-eink-dark .checkbox-container,.theme-light.minimal-eink-light .checkbox-container{background-color:var(--bg1);box-shadow:0 0 0 1px var(--tx1);--toggle-thumb-color:var(--tx1)}.theme-dark.minimal-eink-dark .checkbox-container.is-enabled,.theme-light.minimal-eink-light .checkbox-container.is-enabled{background-color:var(--tx1);--toggle-thumb-color:var(--bg1)}.theme-dark.minimal-eink-dark .cm-s-obsidian span.cm-formatting-highlight,.theme-dark.minimal-eink-dark .cm-s-obsidian span.cm-highlight,.theme-dark.minimal-eink-dark .community-item .suggestion-highlight,.theme-dark.minimal-eink-dark .dropdown:hover,.theme-dark.minimal-eink-dark .horizontal-tab-nav-item:hover,.theme-dark.minimal-eink-dark .markdown-rendered mark,.theme-dark.minimal-eink-dark .status-bar .plugin-sync:hover .sync-status-icon.mod-success,.theme-dark.minimal-eink-dark .status-bar .plugin-sync:hover .sync-status-icon.mod-working,.theme-dark.minimal-eink-dark .status-bar-item.mod-clickable:hover,.theme-dark.minimal-eink-dark .suggestion-item.is-selected,.theme-dark.minimal-eink-dark .text-icon-button:hover,.theme-dark.minimal-eink-dark .vertical-tab-nav-item:hover,.theme-dark.minimal-eink-dark button,.theme-dark.minimal-eink-dark select:hover,.theme-dark.minimal-eink-dark:not(.colorful-active) .horizontal-tab-nav-item.is-active,.theme-dark.minimal-eink-dark:not(.colorful-active) .vertical-tab-nav-item.is-active,.theme-light.minimal-eink-light .cm-s-obsidian span.cm-formatting-highlight,.theme-light.minimal-eink-light .cm-s-obsidian span.cm-highlight,.theme-light.minimal-eink-light .community-item .suggestion-highlight,.theme-light.minimal-eink-light .dropdown:hover,.theme-light.minimal-eink-light .horizontal-tab-nav-item:hover,.theme-light.minimal-eink-light .markdown-rendered mark,.theme-light.minimal-eink-light .status-bar .plugin-sync:hover .sync-status-icon.mod-success,.theme-light.minimal-eink-light .status-bar .plugin-sync:hover .sync-status-icon.mod-working,.theme-light.minimal-eink-light .status-bar-item.mod-clickable:hover,.theme-light.minimal-eink-light .suggestion-item.is-selected,.theme-light.minimal-eink-light .text-icon-button:hover,.theme-light.minimal-eink-light .vertical-tab-nav-item:hover,.theme-light.minimal-eink-light button,.theme-light.minimal-eink-light select:hover,.theme-light.minimal-eink-light:not(.colorful-active) .horizontal-tab-nav-item.is-active,.theme-light.minimal-eink-light:not(.colorful-active) .vertical-tab-nav-item.is-active{color:var(--bg1)}.theme-light.minimal-eink-light{--base-h:0;--base-s:0%;--base-l:100%;--accent-h:0;--accent-s:0%;--accent-l:0%;--ax3:#000;--bg1:#fff;--bg2:#fff;--bg3:#000;--ui1:#000;--ui2:#000;--ui3:#000;--tx1:#000;--tx2:#000;--tx3:#000;--hl1:#000;--hl2:#000;--sp1:#fff;--text-on-accent:#fff;--background-modifier-cover:rgba(235,235,235,1)}.theme-light.minimal-eink-light.minimal-light-white{--bg3:#fff}.theme-dark.minimal-eink-dark,.theme-light.minimal-eink-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-eink-light.minimal-light-contrast .titlebar,.theme-light.minimal-eink-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-eink-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-eink-light.minimal-light-contrast.minimal-status-off .status-bar{--base-h:0;--base-s:0%;--base-l:0%;--accent-h:0;--accent-s:0%;--accent-l:100%;--ax3:#fff;--bg1:#000;--bg2:#000;--bg3:#fff;--ui1:#fff;--ui2:#fff;--ui3:#fff;--tx1:#fff;--tx2:#fff;--tx3:#fff;--hl1:#fff;--hl2:#fff;--sp1:#000;--background-modifier-cover:rgba(20,20,20,1)}.theme-light.minimal-eink-light.minimal-light-tonal{--bg3:#bbb;--ui1:#bbb;--modal-border-color:var(--ui1);--prompt-border-color:var(--ui1)}.theme-dark.minimal-eink-dark.minimal-dark-tonal{--bg3:#444;--ui1:#444;--modal-border-color:var(--ui1);--prompt-border-color:var(--ui1)}.theme-light.minimal-everforest-light{--color-red-rgb:248,85,82;--color-orange-rgb:245,125,38;--color-yellow-rgb:223,160,0;--color-green-rgb:141,161,1;--color-cyan-rgb:53,167,124;--color-blue-rgb:56,148,196;--color-purple-rgb:223,105,186;--color-pink-rgb:223,105,186;--color-red:#f85552;--color-orange:#f57d26;--color-yellow:#dfa000;--color-green:#8da101;--color-cyan:#35a77c;--color-blue:#3795C5;--color-purple:#df69ba;--color-pink:#df69ba}.theme-dark.minimal-everforest-dark{--color-red-rgb:230,126,128;--color-orange-rgb:230,152,117;--color-yellow-rgb:219,188,127;--color-green-rgb:167,192,128;--color-cyan-rgb:131,192,146;--color-blue-rgb:127,187,179;--color-purple-rgb:223,105,186;--color-pink-rgb:223,105,186;--color-red:#e67e80;--color-orange:#e69875;--color-yellow:#dbbc7f;--color-green:#a7c080;--color-cyan:#83c092;--color-blue:#7fbbb3;--color-purple:#d699b6;--color-pink:#d699b6}.theme-light.minimal-everforest-light{--base-h:44;--base-s:87%;--base-l:94%;--accent-h:83;--accent-s:36%;--accent-l:53%;--bg1:#fdf6e3;--bg2:#efebd4;--bg3:rgba(226,222,198,.5);--ui1:#e0dcc7;--ui2:#bec5b2;--ui3:#bec5b2;--tx1:#5C6A72;--tx2:#829181;--tx3:#a6b0a0;--hl1:rgba(198,214,152,.4);--hl2:rgba(222,179,51,.3)}.theme-light.minimal-everforest-light.minimal-light-tonal{--bg2:#fdf6e3}.theme-light.minimal-everforest-light.minimal-light-white{--bg3:#f3efda;--ui1:#edead5}.theme-dark.minimal-everforest-dark,.theme-light.minimal-everforest-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-everforest-light.minimal-light-contrast .titlebar,.theme-light.minimal-everforest-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-everforest-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-everforest-light.minimal-light-contrast.minimal-status-off .status-bar{--base-h:203;--base-s:15%;--base-l:23%;--accent-h:81;--accent-s:34%;--accent-l:63%;--bg1:#2d353b;--bg2:#232a2e;--bg3:rgba(71,82,88,0.5);--ui1:#475258;--ui2:#4f585e;--ui3:#525c62;--tx1:#d3c6aa;--tx2:#9da9a0;--tx3:#7a8478;--hl1:rgba(134,70,93,.5);--hl2:rgba(147,185,96,.3)}.theme-dark.minimal-everforest-dark.minimal-dark-black{--hl1:rgba(134,70,93,.4);--ui1:#2b3339}.theme-light.minimal-flexoki-light{--color-red-rgb:175,48,41;--color-orange-rgb:188,82,21;--color-yellow-rgb:173,131,1;--color-green-rgb:102,128,11;--color-cyan-rgb:36,131,123;--color-blue-rgb:32,94,166;--color-purple-rgb:94,64,157;--color-pink-rgb:160,47,111;--color-red:#AF3029;--color-orange:#BC5215;--color-yellow:#AD8301;--color-green:#66800B;--color-cyan:#24837B;--color-blue:#205EA6;--color-purple:#5E409D;--color-pink:#A02F6F}.theme-dark.minimal-flexoki-dark{--color-red-rgb:209,77,65;--color-orange-rgb:218,112,44;--color-yellow-rgb:208,162,21;--color-green-rgb:135,154,57;--color-cyan-rgb:58,169,159;--color-blue-rgb:67,133,190;--color-purple-rgb:139,126,200;--color-pink-rgb:206,93,151;--color-red:#D14D41;--color-orange:#DA702C;--color-yellow:#D0A215;--color-green:#879A39;--color-cyan:#3AA99F;--color-blue:#4385BE;--color-purple:#8B7EC8;--color-pink:#CE5D97}.theme-light.minimal-flexoki-light{--base-h:48;--base-s:100%;--base-l:97%;--accent-h:175;--accent-s:57%;--accent-l:33%;--bg1:#FFFCF0;--bg2:#F2F0E5;--bg3:rgba(16,15,15,0.05);--ui1:#E6E4D9;--ui2:#DAD8CE;--ui3:#CECDC3;--tx1:#100F0F;--tx2:#6F6E69;--tx3:#B7B5AC;--hl1:rgba(187,220,206,0.3);--hl2:rgba(247,209,61,0.3)}.theme-light.minimal-flexoki-light.minimal-light-tonal{--bg2:#FFFCF0}.theme-dark.minimal-flexoki-dark,.theme-light.minimal-flexoki-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-flexoki-light.minimal-light-contrast .titlebar,.theme-light.minimal-flexoki-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-flexoki-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-flexoki-light.minimal-light-contrast.minimal-status-off .status-bar{--base-h:360;--base-s:3%;--base-l:6%;--accent-h:175;--accent-s:49%;--accent-l:45%;--bg1:#100F0F;--bg2:#1C1B1A;--bg3:rgba(254,252,240,0.05);--ui1:#282726;--ui2:#343331;--ui3:#403E3C;--tx1:#CECDC3;--tx2:#878580;--tx3:#575653;--hl1:rgba(30,95,91,0.3);--hl2:rgba(213,159,17,0.3)}.theme-dark.minimal-flexoki-dark.minimal-dark-black{--ui1:#1C1B1A}.theme-dark.minimal-gruvbox-dark,.theme-light.minimal-gruvbox-light{--color-red-rgb:204,36,29;--color-orange-rgb:214,93,14;--color-yellow-rgb:215,153,33;--color-green-rgb:152,151,26;--color-cyan-rgb:104,157,106;--color-blue-rgb:69,133,136;--color-purple-rgb:177,98,134;--color-pink-rgb:177,98,134;--color-red:#cc241d;--color-orange:#d65d0e;--color-yellow:#d79921;--color-green:#98971a;--color-cyan:#689d6a;--color-blue:#458588;--color-purple:#b16286;--color-pink:#b16286}.theme-light.minimal-gruvbox-light{--base-h:49;--base-s:92%;--base-l:89%;--accent-h:24;--accent-s:88%;--accent-l:45%;--bg1:#fcf2c7;--bg2:#f2e6bd;--bg3:#ebd9b3;--ui1:#ebdbb2;--ui2:#d5c4a1;--ui3:#bdae93;--tx1:#282828;--tx2:#7c7065;--tx3:#a89a85;--hl1:rgba(192,165,125,.3);--hl2:rgba(215,153,33,.4)}.theme-light.minimal-gruvbox-light.minimal-light-tonal{--bg2:#fcf2c7}.theme-light.minimal-gruvbox-light.minimal-light-white{--bg3:#faf5d7;--ui1:#f2e6bd}.theme-dark.minimal-gruvbox-dark,.theme-light.minimal-gruvbox-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-gruvbox-light.minimal-light-contrast .titlebar,.theme-light.minimal-gruvbox-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-gruvbox-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-gruvbox-light.minimal-light-contrast.minimal-status-off .status-bar{--accent-h:24;--accent-s:88%;--accent-l:45%;--bg1:#282828;--bg2:#1e2021;--bg3:#3d3836;--bg3:rgba(62,57,55,0.5);--ui1:#3c3836;--ui2:#504945;--ui3:#665c54;--tx1:#fbf1c7;--tx2:#bdae93;--tx3:#7c6f64;--hl1:rgba(173,149,139,0.3);--hl2:rgba(215,153,33,.4)}.theme-dark.minimal-gruvbox-dark.minimal-dark-black{--hl1:rgba(173,149,139,0.4);--ui1:#282828}.theme-dark.minimal-macos-dark,.theme-light.minimal-macos-light{--color-red-rgb:255,59,49;--color-orange-rgb:255,149,2;--color-yellow-rgb:255,204,0;--color-green-rgb:42,205,65;--color-cyan-rgb:2,199,190;--color-blue-rgb:2,122,255;--color-purple-rgb:176,81,222;--color-pink-rgb:255,46,85;--color-red:#ff3b31;--color-orange:#ff9502;--color-yellow:#ffcc00;--color-green:#2acd41;--color-cyan:#02c7be;--color-blue:#027aff;--color-purple:#b051de;--color-pink:#ff2e55}.theme-light.minimal-macos-light{--base-h:106;--base-s:0%;--base-l:94%;--accent-h:212;--accent-s:100%;--accent-l:50%;--bg1:#fff;--bg2:#f0f0f0;--bg3:rgba(0,0,0,.1);--ui1:#e7e7e7;--tx1:#454545;--tx2:#808080;--tx3:#b0b0b0;--hl1:#b3d7ff}.theme-light.minimal-macos-light.minimal-light-tonal{--bg1:#f0f0f0;--bg2:#f0f0f0}.theme-dark.minimal-macos-dark,.theme-light.minimal-macos-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-macos-light.minimal-light-contrast .titlebar,.theme-light.minimal-macos-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-macos-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-macos-light.minimal-light-contrast.minimal-status-off .status-bar{--base-h:106;--base-s:0%;--base-l:12%;--accent-h:212;--accent-s:100%;--accent-l:50%;--bg1:#1e1e1e;--bg2:#282828;--bg3:rgba(255,255,255,0.11);--divider-color:#000;--tab-outline-color:#000;--ui1:#373737;--ui2:#515151;--ui3:#595959;--tx1:#dcdcdc;--tx2:#8c8c8c;--tx3:#686868;--hl1:rgba(98,169,252,0.5);--sp1:#fff}.theme-dark.minimal-macos-dark.minimal-dark-black{--divider-color:#1e1e1e;--tab-outline-color:#1e1e1e}.theme-dark.minimal-nord-dark,.theme-light.minimal-nord-light{--color-red-rgb:191,97,106;--color-orange-rgb:208,138,112;--color-yellow-rgb:235,203,139;--color-green-rgb:163,190,140;--color-cyan-rgb:136,192,208;--color-blue-rgb:129,161,193;--color-purple-rgb:180,142,173;--color-pink-rgb:180,142,173;--color-red:#BF616A;--color-orange:#D08770;--color-yellow:#EBCB8B;--color-green:#A3BE8C;--color-cyan:#88C0D0;--color-blue:#81A1C1;--color-purple:#B48EAD;--color-pink:#B48EAD}.theme-light.minimal-nord-light{--base-h:221;--base-s:27%;--base-l:94%;--accent-h:213;--accent-s:32%;--accent-l:52%;--bg1:#fff;--bg2:#eceff4;--bg3:rgba(157,174,206,0.25);--ui1:#d8dee9;--ui2:#BBCADC;--ui3:#81a1c1;--tx1:#2e3440;--tx2:#7D8697;--tx3:#ADB1B8;--hl2:rgba(208, 135, 112, 0.35)}.theme-dark.minimal-nord-dark,.theme-light.minimal-nord-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-nord-light.minimal-light-contrast .titlebar,.theme-light.minimal-nord-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-nord-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-nord-light.minimal-light-contrast.minimal-status-off .status-bar{--base-h:220;--base-s:16%;--base-l:22%;--accent-h:213;--accent-s:32%;--accent-l:52%;--bg1:#2e3440;--bg2:#3b4252;--bg3:rgba(135,152,190,0.15);--ui1:#434c5e;--ui2:#58647b;--ui3:#58647b;--tx1:#d8dee9;--tx2:#9eafcc;--tx3:#4c566a;--hl1:rgba(129,142,180,0.3);--hl2:rgba(208, 135, 112, 0.35)}.theme-dark.minimal-nord-dark.minimal-dark-black{--ui1:#2e3440}.theme-light.minimal-notion-light{--base-h:39;--base-s:18%;--base-d:96%;--accent-h:197;--accent-s:71%;--accent-l:52%;--bg2:#f7f6f4;--bg3:#e8e7e4;--ui1:#ededec;--ui2:#dbdbda;--ui3:#aaa9a5;--tx1:#37352f;--tx2:#72706c;--tx3:#aaa9a5;--hl1:rgba(131,201,229,0.3);--link-weight:500}.theme-dark.minimal-notion-dark,.theme-light.minimal-notion-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-notion-light.minimal-light-contrast .titlebar,.theme-light.minimal-notion-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-notion-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-notion-light.minimal-light-contrast.minimal-status-off .status-bar{--base-h:203;--base-s:8%;--base-d:20%;--accent-h:197;--accent-s:71%;--accent-l:52%;--bg1:#2f3437;--bg2:#373c3f;--bg3:#4b5053;--ui1:#3e4245;--ui2:#585d5f;--ui3:#585d5f;--tx1:#ebebeb;--tx2:#909295;--tx3:#585d5f;--hl1:rgba(57,134,164,0.3);--link-weight:500}.theme-dark.minimal-notion-dark.minimal-dark-black{--base-d:5%;--bg3:#232729;--ui1:#2f3437}.theme-light.minimal-rose-pine-light{--color-red-rgb:180,99,122;--color-orange-rgb:215,130,125;--color-yellow-rgb:234,157,53;--color-green-rgb:40,105,131;--color-cyan-rgb:87,147,159;--color-blue-rgb:87,147,159;--color-purple-rgb:144,122,169;--color-pink-rgb:144,122,169;--color-red:#b4637a;--color-orange:#d7827e;--color-yellow:#ea9d34;--color-green:#286983;--color-cyan:#56949f;--color-blue:#56949f;--color-purple:#907aa9;--color-pink:#907aa9}.theme-dark.minimal-rose-pine-dark{--color-red-rgb:234,111,146;--color-orange-rgb:233,155,151;--color-yellow-rgb:246,193,119;--color-green-rgb:47,116,143;--color-cyan-rgb:157,207,215;--color-blue-rgb:157,207,215;--color-purple-rgb:196,167,231;--color-pink-rgb:196,167,231;--color-red:#eb6f92;--color-orange:#ea9a97;--color-yellow:#f6c177;--color-green:#31748f;--color-cyan:#9ccfd8;--color-blue:#9ccfd8;--color-purple:#c4a7e7;--color-pink:#c4a7e7}.theme-light.minimal-rose-pine-light{--base-h:32;--base-s:57%;--base-l:95%;--accent-h:3;--accent-s:53%;--accent-l:67%;--bg1:#fffaf3;--bg2:#faf4ed;--bg3:rgba(233,223,218,0.5);--ui1:#EAE3E1;--ui2:#dfdad9;--ui3:#cecacd;--tx1:#575279;--tx2:#797593;--tx3:#9893a5;--hl1:rgba(191,180,181,0.35)}.theme-dark.minimal-rose-pine-dark,.theme-light.minimal-rose-pine-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-rose-pine-light.minimal-light-contrast .titlebar,.theme-light.minimal-rose-pine-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-rose-pine-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-rose-pine-light.minimal-light-contrast.minimal-status-off .status-bar{--base-h:247;--base-s:23%;--base-l:15%;--accent-h:2;--accent-s:55%;--accent-l:83%;--bg1:#1f1d2e;--bg2:#191724;--bg3:rgba(68,66,86,0.5);--ui1:#312F41;--ui2:#403d52;--ui3:#524f67;--tx1:#e0def4;--tx2:#908caa;--tx3:#6e6a86;--hl1:rgba(126,121,155,0.35)}.theme-dark.minimal-rose-pine-dark.minimal-dark-black{--ui1:#21202e}.theme-dark.minimal-solarized-dark,.theme-light.minimal-solarized-light{--color-red-rgb:220,50,47;--color-orange-rgb:203,77,22;--color-yellow-rgb:181,137,0;--color-green-rgb:133,153,0;--color-cyan-rgb:42,161,152;--color-blue-rgb:38,139,210;--color-purple-rgb:108,113,196;--color-pink-rgb:211,54,130;--color-red:#dc322f;--color-orange:#cb4b16;--color-yellow:#b58900;--color-green:#859900;--color-cyan:#2aa198;--color-blue:#268bd2;--color-purple:#6c71c4;--color-pink:#d33682}.theme-light.minimal-solarized-light{--base-h:44;--base-s:87%;--base-l:94%;--accent-h:205;--accent-s:70%;--accent-l:48%;--bg1:#fdf6e3;--bg2:#eee8d5;--bg3:rgba(0,0,0,0.062);--ui1:#e9e1c8;--ui2:#d0cab8;--ui3:#d0cab8;--tx1:#073642;--tx2:#586e75;--tx3:#ABB2AC;--tx4:#586e75;--hl1:rgba(202,197,182,0.3);--hl2:rgba(203,75,22,0.3)}.theme-light.minimal-solarized-light.minimal-light-tonal{--bg2:#fdf6e3}.theme-dark.minimal-solarized-dark,.theme-light.minimal-solarized-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-solarized-light.minimal-light-contrast .titlebar,.theme-light.minimal-solarized-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-solarized-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-solarized-light.minimal-light-contrast.minimal-status-off .status-bar{--accent-h:205;--accent-s:70%;--accent-l:48%;--base-h:193;--base-s:98%;--base-l:11%;--bg1:#002b36;--bg2:#073642;--bg3:rgba(255,255,255,0.062);--ui1:#19414B;--ui2:#274850;--ui3:#31535B;--tx1:#93a1a1;--tx2:#657b83;--tx3:#31535B;--tx4:#657b83;--hl1:rgba(15,81,98,0.3);--hl2:rgba(203, 75, 22, 0.35)}.theme-dark.minimal-solarized-dark.minimal-dark-black{--hl1:rgba(15,81,98,0.55);--ui1:#002b36}.theme-dark.minimal-things-dark,.theme-light.minimal-things-light{--color-red-rgb:255,48,108;--color-orange-rgb:255,149,2;--color-yellow-rgb:255,213,0;--color-green-rgb:75,191,94;--color-cyan-rgb:73,174,164;--color-purple-rgb:176,81,222;--color-pink-rgb:255,46,85;--color-red:#FF306C;--color-orange:#ff9502;--color-yellow:#FFD500;--color-green:#4BBF5E;--color-cyan:#49AEA4;--color-purple:#b051de;--color-pink:#ff2e55}.theme-light.minimal-things-light{--color-blue-rgb:27,97,194;--color-blue:#1b61c2}.theme-dark.minimal-things-dark{--color-blue-rgb:77,149,247;--color-blue:#4d95f7}.theme-light.minimal-things-light{--accent-h:215;--accent-s:76%;--accent-l:43%;--bg1:white;--bg2:#f5f6f8;--bg3:rgba(162,177,187,0.25);--ui1:#eef0f4;--ui2:#D8DADD;--ui3:#c1c3c6;--tx1:#26272b;--tx2:#7D7F84;--tx3:#a9abb0;--hl1:#cae2ff}.theme-light.minimal-things-light.minimal-light-tonal{--ui1:#e6e8ec}.theme-light.minimal-things-light.minimal-light-white{--bg3:#f5f6f8}.theme-dark.minimal-things-dark,.theme-light.minimal-things-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-things-light.minimal-light-contrast .titlebar,.theme-light.minimal-things-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-things-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-things-light.minimal-light-contrast.minimal-status-off .status-bar{--base-h:218;--base-s:9%;--base-l:15%;--accent-h:215;--accent-s:91%;--accent-l:64%;--bg1:#24262a;--bg2:#202225;--bg3:#3d3f41;--divider-color:#17191c;--tab-outline-color:#17191c;--ui1:#3A3B3F;--ui2:#45464a;--ui3:#6c6e70;--tx1:#fbfbfb;--tx2:#CBCCCD;--tx3:#6c6e70;--hl1:rgba(40,119,236,0.35);--sp1:#fff}.theme-dark.minimal-things-dark.minimal-dark-black{--base-d:5%;--bg3:#24262a;--divider-color:#24262a;--tab-outline-color:#24262a} /* Plugin compatibility */ /* @plugins @@ -90,11 +90,11 @@ id: minimal-style settings: - id: instructions - title: Welcome 👋 + title: Documentation type: heading level: 2 collapsed: true - description: Use the Minimal Theme Settings plugin to access hotkeys, adjust features, select fonts, and choose from preset color schemes. Use the settings below for more granular customization. Visit minimal.guide for documentation. + description: Use the Minimal Theme Settings plugin to set hotkeys, adjust features, select fonts, and choose from preset color schemes. Use the settings below for more granular customization. Go to https://minimal.guide for documentation. - id: interface title: Interface colors @@ -1114,7 +1114,7 @@ settings: title: Image radius description: Rounded corners for images type: variable-number-slider - default: 0 + default: 4 min: 0 max: 16 step: 1 @@ -1421,6 +1421,46 @@ settings: format: hex default-light: '#' default-dark: '#' + - + id: properties + title: Properties + type: heading + level: 2 + collapsed: true + - + id: metadata-heading-off + title: Hide properties heading + description: Hide "Properties" heading above properties + type: class-toggle + default: false + - + id: metadata-add-property-off + title: Hide "Add property" button + description: Hide "Add property" button below properties + type: class-toggle + default: false + - + id: metadata-icons-off + title: Hide property icons + description: Hide icons next to property names + type: class-toggle + default: false + - + id: metadata-dividers + title: Property row lines + description: Display borders between properties + type: class-toggle + default: false + - + id: metadata-label-width + title: Property name width + description: Width for the name of the property + type: variable-number-slider + format: rem + default: 8 + min: 4 + max: 12 + step: 0.25 - id: sidebars title: Sidebars @@ -1429,7 +1469,7 @@ settings: collapsed: true - id: sidebar-lines-off - title: Disable sidebar relationship lines + title: Hide sidebar relationship lines description: Turns off lines in file navigation type: class-toggle - @@ -1816,13 +1856,13 @@ settings: title: Paragraph spacing description: Space between paragraphs in reading mode (Obsidian 1.3.7+) type: variable-text - default: 1.5em + default: 1.75rem - id: heading-spacing title: Heading spacing description: Space between paragraphs and headings in reading mode (Obsidian 1.3.7+) type: variable-text - default: 2.25rem + default: 2em - id: titles title: Titles diff --git a/Vault/.obsidian/workspace.json b/Vault/.obsidian/workspace.json index f0fb424..0585e2a 100644 --- a/Vault/.obsidian/workspace.json +++ b/Vault/.obsidian/workspace.json @@ -4,17 +4,17 @@ "type": "split", "children": [ { - "id": "8060cdf49dea58d2", + "id": "628828ce3ce38fcb", "type": "tabs", "children": [ { - "id": "efc6674b2f676532", + "id": "0327ea286bbb4c8b", "type": "leaf", "state": { "type": "markdown", "state": { "file": "Dashboard.md", - "mode": "preview", + "mode": "source", "source": false } } @@ -144,28 +144,43 @@ "daily-notes:Open today's daily note": false, "command-palette:Open command palette": false, "table-editor-obsidian:Advanced Tables Toolbar": false, + "templater-obsidian:Templater": false, "obsidian-excalidraw-plugin:Create new drawing": false, - "homepage:Open homepage": false, - "omnisearch:Omnisearch": false, "obsidian-book-search-plugin:Create new book note": false, - "templater-obsidian:Templater": false + "omnisearch:Omnisearch": false } }, - "active": "efc6674b2f676532", + "active": "0327ea286bbb4c8b", "lastOpenFiles": [ + "README.md", + "Dashboard.md", + "Element Structure and Formats.md", + "Concept Board/Concept Board.md", + "Projects/Top Secret Project/Meetings/2023-10-29 - Example Meeting Note.md", + "Projects/Top Secret Project/Meetings/All Meetings.md", + "Projects/Top Secret Project/Tasks.md", + "Projects/Top Secret Project/Home.md", + "_data_/templates/project/Project boilerplate page.md", + "_data_/templates/project/Project feature.md", + "_data_/templates/project/Project meeting.md", + "Spaces/Spaces Dashboard.md", + "Resources/Resources Dashboard.md", + "Projects/Projects.md", + "Personal/Personal Dashboard.md", + "Notes/Notes Dashboard.md", + "Learning/Learning Dashboard.md", + "Journal/Journal Dashboard.md", + "Spaces/Obsidian Development/Navigation with DataviewJS.md", + "Spaces/Obsidian Development/Navigation with Dataview and customJS.md", + "Spaces/Obsidian Development/Obsidian Development Dashboard.md", + "Spaces/Obsidian Development", + "Spaces/Untitled", + "Inbox/Inbox.md", + "Inbox", "Spaces/Trips/Trips Dashboard.md", "Spaces/Trips/Testasdf.md", "_data_/templates/general/Travel and Trip.md", - "Element Structure and Formats.md", "_data_/templates/general/Blank page.md", - "_data_/templates/general/Insert header 6.md", - "_data_/templates/general/Insert header 5.md", - "_data_/templates/general/Insert header 4.md", - "_data_/templates/general/Insert header 3.md", - "_data_/templates/general/Insert header 2.md", - "_data_/templates/general/Insert header 1.md", - "Dashboard.md", - "Inbox.md", "_data_/scripts/javascript/vaultplugins.js", "_data_/scripts/vaultplugins.js", "_data_/scripts/dataview/toc.js", @@ -173,30 +188,14 @@ "_data_/scripts/javascript/navbar.js", "_data_/scripts/javascript/get-upcoming-rocket-launches.js", "_data_/scripts/javascript/get-gnews.js", - "_data_/scripts/javascript/get-nasa-image-of-the-day.js", - "_data_/scripts/javascript", - "_data_/scripts/dataview", - "README.md", - "Notes/Notes Dashboard.md", - "_data_/pinned/Tasks.md", - "_data_/pinned/Sidebar Navigation.md", - "Projects/Projects.md", - "Projects/Top Secret Project/Home.md", "_data_/media/banners/banner-personal-01.jpg", "_data_/media/banners/cosmic-dawn-initiative.png", "_data_/media/banners/cosmic-dawn-initiative.png", "_data_/media/banners/banner-personal-02.jpg", "_data_/media/banners/banner-proprietary-01.jpg", "_data_/media/banners/banner-proprietary-02.jpg", - "Projects/Top Secret Project/Tasks.md", - "Projects/Top Secret Project/References.md", - "Projects/Top Secret Project/Notes/All Notes.md", - "Projects/Top Secret Project/Meetings/All Meetings.md", "_data_/media/dashboard-preview.png", "_data_/media/255020736-42c6f878-46e3-4602-9224-5d92918bef07.png", - "_data_/templates/development/get_page_title.md", - "_data_/templates/development/Index Space.md", - "_data_/templates/development/Dashboard list page.md", "_data_/media/profile-picture-placeholder.jpg", "_data_/media/example-image-02.png" ] diff --git a/Vault/Concept Board/Concept Board.md b/Vault/Concept Board/Concept Board.md index ab32db1..d268a71 100644 --- a/Vault/Concept Board/Concept Board.md +++ b/Vault/Concept Board/Concept Board.md @@ -9,9 +9,43 @@ include_in_navbar: true navbar_name: Concept Board tags: dashboard concept-board --- + ```dataviewjs -const {Navbar} = customJS; -await Navbar.createNavbar(app, dv); +let navbar = []; +let loadingMessage = dv.el("span", "**Loading navigation...**", {attr: {style: "font-size:13px; color:gray"}}); + +let allPages = dv.pages("#dashboard").sort(page => page.file.folder, "asc"); +let filteredPages = allPages.filter(p => + p.file.tags.values.includes("#dashboard") && p?.include_in_navbar == true +); + +for(let page of filteredPages){ + let navItem = ''; + let navName = 'Untitled'; + let navLink = ''; + + if(page.navbar_name === undefined){ + navName = page.file.name; + } else { + navName = page.navbar_name; + } + navLink = page.file.path; + + // Format the nav item link + if(dv.current().file.path === page.file.path){ + navItem = `**[[${navLink}|${navName}]]**` + } else { + navItem = `[[${navLink}|${navName}]]` + } + + navbar.push(navItem) +} + +dv.paragraph(navbar.join(' | ')) + +if(filteredPages.values.length > 0){ + loadingMessage.remove(); +} ``` # Concept Board Collection of short concepts and ideas, once a concept has been further developed it can be migrated into a project. @@ -65,6 +99,39 @@ if(dv.pages('"Concept Board/Drawings"').length > 0){ --- ```dataviewjs -const {Navbar} = customJS; -await Navbar.createNavbar(app, dv); +let navbar = []; +let loadingMessage = dv.el("span", "**Loading navigation...**", {attr: {style: "font-size:13px; color:gray"}}); + +let allPages = dv.pages("#dashboard").sort(page => page.file.folder, "asc"); +let filteredPages = allPages.filter(p => + p.file.tags.values.includes("#dashboard") && p?.include_in_navbar == true +); + +for(let page of filteredPages){ + let navItem = ''; + let navName = 'Untitled'; + let navLink = ''; + + if(page.navbar_name === undefined){ + navName = page.file.name; + } else { + navName = page.navbar_name; + } + navLink = page.file.path; + + // Format the nav item link + if(dv.current().file.path === page.file.path){ + navItem = `**[[${navLink}|${navName}]]**` + } else { + navItem = `[[${navLink}|${navName}]]` + } + + navbar.push(navItem) +} + +dv.paragraph(navbar.join(' | ')) + +if(filteredPages.values.length > 0){ + loadingMessage.remove(); +} ``` \ No newline at end of file diff --git a/Vault/Dashboard.md b/Vault/Dashboard.md index 3f67eed..ce8851a 100644 --- a/Vault/Dashboard.md +++ b/Vault/Dashboard.md @@ -4,6 +4,7 @@ include_in_navbar: true navbar_name: Dashboard tags: dashboard --- + **[[Dashboard|Dashboard]]** | [[Concept Board/Concept Board|Concept Board]] | [[Journal/Journal Dashboard|Journal]] | [[Learning/Learning Dashboard|Learning]] | [[Notes/Notes Dashboard|Notes]] | [[Personal/Personal Dashboard|Personal]] | [[Projects/Projects|Projects]] | [[Resources/Resources Dashboard|Resources]] | [[Spaces/Spaces Dashboard|Spaces]] # Dashboard >[!multi-column] diff --git a/Vault/Inbox.md b/Vault/Inbox/Inbox.md similarity index 100% rename from Vault/Inbox.md rename to Vault/Inbox/Inbox.md diff --git a/Vault/Journal/Journal Dashboard.md b/Vault/Journal/Journal Dashboard.md index a6810a0..a81b9f5 100644 --- a/Vault/Journal/Journal Dashboard.md +++ b/Vault/Journal/Journal Dashboard.md @@ -9,9 +9,43 @@ include_in_navbar: true navbar_name: Journal tags: dashboard journal --- + ```dataviewjs -const {Navbar} = customJS; -await Navbar.createNavbar(app, dv); +let navbar = []; +let loadingMessage = dv.el("span", "**Loading navigation...**", {attr: {style: "font-size:13px; color:gray"}}); + +let allPages = dv.pages("#dashboard").sort(page => page.file.folder, "asc"); +let filteredPages = allPages.filter(p => + p.file.tags.values.includes("#dashboard") && p?.include_in_navbar == true +); + +for(let page of filteredPages){ + let navItem = ''; + let navName = 'Untitled'; + let navLink = ''; + + if(page.navbar_name === undefined){ + navName = page.file.name; + } else { + navName = page.navbar_name; + } + navLink = page.file.path; + + // Format the nav item link + if(dv.current().file.path === page.file.path){ + navItem = `**[[${navLink}|${navName}]]**` + } else { + navItem = `[[${navLink}|${navName}]]` + } + + navbar.push(navItem) +} + +dv.paragraph(navbar.join(' | ')) + +if(filteredPages.values.length > 0){ + loadingMessage.remove(); +} ``` # Journal Entries Explore your collection of journal entries. @@ -39,6 +73,39 @@ for (let group of dv.pages('"Journal" and !#dashboard').groupBy(p => p.entry)) { --- ```dataviewjs -const {Navbar} = customJS; -await Navbar.createNavbar(app, dv); +let navbar = []; +let loadingMessage = dv.el("span", "**Loading navigation...**", {attr: {style: "font-size:13px; color:gray"}}); + +let allPages = dv.pages("#dashboard").sort(page => page.file.folder, "asc"); +let filteredPages = allPages.filter(p => + p.file.tags.values.includes("#dashboard") && p?.include_in_navbar == true +); + +for(let page of filteredPages){ + let navItem = ''; + let navName = 'Untitled'; + let navLink = ''; + + if(page.navbar_name === undefined){ + navName = page.file.name; + } else { + navName = page.navbar_name; + } + navLink = page.file.path; + + // Format the nav item link + if(dv.current().file.path === page.file.path){ + navItem = `**[[${navLink}|${navName}]]**` + } else { + navItem = `[[${navLink}|${navName}]]` + } + + navbar.push(navItem) +} + +dv.paragraph(navbar.join(' | ')) + +if(filteredPages.values.length > 0){ + loadingMessage.remove(); +} ``` \ No newline at end of file diff --git a/Vault/Learning/Learning Dashboard.md b/Vault/Learning/Learning Dashboard.md index ad0b48a..1e6681e 100644 --- a/Vault/Learning/Learning Dashboard.md +++ b/Vault/Learning/Learning Dashboard.md @@ -9,9 +9,43 @@ include_in_navbar: true navbar_name: Learning tags: dashboard learning --- + ```dataviewjs -const {Navbar} = customJS; -await Navbar.createNavbar(app, dv); +let navbar = []; +let loadingMessage = dv.el("span", "**Loading navigation...**", {attr: {style: "font-size:13px; color:gray"}}); + +let allPages = dv.pages("#dashboard").sort(page => page.file.folder, "asc"); +let filteredPages = allPages.filter(p => + p.file.tags.values.includes("#dashboard") && p?.include_in_navbar == true +); + +for(let page of filteredPages){ + let navItem = ''; + let navName = 'Untitled'; + let navLink = ''; + + if(page.navbar_name === undefined){ + navName = page.file.name; + } else { + navName = page.navbar_name; + } + navLink = page.file.path; + + // Format the nav item link + if(dv.current().file.path === page.file.path){ + navItem = `**[[${navLink}|${navName}]]**` + } else { + navItem = `[[${navLink}|${navName}]]` + } + + navbar.push(navItem) +} + +dv.paragraph(navbar.join(' | ')) + +if(filteredPages.values.length > 0){ + loadingMessage.remove(); +} ``` # Learning Courses, lectures, workshops, and anything related to learning. @@ -85,6 +119,39 @@ Learning/ --- ```dataviewjs -const {Navbar} = customJS; -await Navbar.createNavbar(app, dv); +let navbar = []; +let loadingMessage = dv.el("span", "**Loading navigation...**", {attr: {style: "font-size:13px; color:gray"}}); + +let allPages = dv.pages("#dashboard").sort(page => page.file.folder, "asc"); +let filteredPages = allPages.filter(p => + p.file.tags.values.includes("#dashboard") && p?.include_in_navbar == true +); + +for(let page of filteredPages){ + let navItem = ''; + let navName = 'Untitled'; + let navLink = ''; + + if(page.navbar_name === undefined){ + navName = page.file.name; + } else { + navName = page.navbar_name; + } + navLink = page.file.path; + + // Format the nav item link + if(dv.current().file.path === page.file.path){ + navItem = `**[[${navLink}|${navName}]]**` + } else { + navItem = `[[${navLink}|${navName}]]` + } + + navbar.push(navItem) +} + +dv.paragraph(navbar.join(' | ')) + +if(filteredPages.values.length > 0){ + loadingMessage.remove(); +} ``` \ No newline at end of file diff --git a/Vault/Notes/Notes Dashboard.md b/Vault/Notes/Notes Dashboard.md index 8a30b3c..25d0337 100644 --- a/Vault/Notes/Notes Dashboard.md +++ b/Vault/Notes/Notes Dashboard.md @@ -9,9 +9,43 @@ include_in_navbar: true navbar_name: Notes tags: dashboard note --- + ```dataviewjs -const {Navbar} = customJS; -await Navbar.createNavbar(app, dv); +let navbar = []; +let loadingMessage = dv.el("span", "**Loading navigation...**", {attr: {style: "font-size:13px; color:gray"}}); + +let allPages = dv.pages("#dashboard").sort(page => page.file.folder, "asc"); +let filteredPages = allPages.filter(p => + p.file.tags.values.includes("#dashboard") && p?.include_in_navbar == true +); + +for(let page of filteredPages){ + let navItem = ''; + let navName = 'Untitled'; + let navLink = ''; + + if(page.navbar_name === undefined){ + navName = page.file.name; + } else { + navName = page.navbar_name; + } + navLink = page.file.path; + + // Format the nav item link + if(dv.current().file.path === page.file.path){ + navItem = `**[[${navLink}|${navName}]]**` + } else { + navItem = `[[${navLink}|${navName}]]` + } + + navbar.push(navItem) +} + +dv.paragraph(navbar.join(' | ')) + +if(filteredPages.values.length > 0){ + loadingMessage.remove(); +} ``` # Notes Home Collection of general atomic notes. @@ -38,6 +72,39 @@ for (let group of dv.pages('"Notes" and !#dashboard').groupBy(p => p.note)) { --- ```dataviewjs -const {Navbar} = customJS; -await Navbar.createNavbar(app, dv); +let navbar = []; +let loadingMessage = dv.el("span", "**Loading navigation...**", {attr: {style: "font-size:13px; color:gray"}}); + +let allPages = dv.pages("#dashboard").sort(page => page.file.folder, "asc"); +let filteredPages = allPages.filter(p => + p.file.tags.values.includes("#dashboard") && p?.include_in_navbar == true +); + +for(let page of filteredPages){ + let navItem = ''; + let navName = 'Untitled'; + let navLink = ''; + + if(page.navbar_name === undefined){ + navName = page.file.name; + } else { + navName = page.navbar_name; + } + navLink = page.file.path; + + // Format the nav item link + if(dv.current().file.path === page.file.path){ + navItem = `**[[${navLink}|${navName}]]**` + } else { + navItem = `[[${navLink}|${navName}]]` + } + + navbar.push(navItem) +} + +dv.paragraph(navbar.join(' | ')) + +if(filteredPages.values.length > 0){ + loadingMessage.remove(); +} ``` \ No newline at end of file diff --git a/Vault/Personal/Personal Dashboard.md b/Vault/Personal/Personal Dashboard.md index 7a5fecb..2e84e75 100644 --- a/Vault/Personal/Personal Dashboard.md +++ b/Vault/Personal/Personal Dashboard.md @@ -8,9 +8,43 @@ include_in_navbar: true navbar_name: Personal tags: dashboard proprietary --- + ```dataviewjs -const {Navbar} = customJS; -await Navbar.createNavbar(app, dv); +let navbar = []; +let loadingMessage = dv.el("span", "**Loading navigation...**", {attr: {style: "font-size:13px; color:gray"}}); + +let allPages = dv.pages("#dashboard").sort(page => page.file.folder, "asc"); +let filteredPages = allPages.filter(p => + p.file.tags.values.includes("#dashboard") && p?.include_in_navbar == true +); + +for(let page of filteredPages){ + let navItem = ''; + let navName = 'Untitled'; + let navLink = ''; + + if(page.navbar_name === undefined){ + navName = page.file.name; + } else { + navName = page.navbar_name; + } + navLink = page.file.path; + + // Format the nav item link + if(dv.current().file.path === page.file.path){ + navItem = `**[[${navLink}|${navName}]]**` + } else { + navItem = `[[${navLink}|${navName}]]` + } + + navbar.push(navItem) +} + +dv.paragraph(navbar.join(' | ')) + +if(filteredPages.values.length > 0){ + loadingMessage.remove(); +} ``` # Personal Collection of personal notes. @@ -35,6 +69,39 @@ for (let group of dv.pages('"Proprietary" and !#dashboard').groupBy(p => p.file. --- ```dataviewjs -const {Navbar} = customJS; -await Navbar.createNavbar(app, dv); +let navbar = []; +let loadingMessage = dv.el("span", "**Loading navigation...**", {attr: {style: "font-size:13px; color:gray"}}); + +let allPages = dv.pages("#dashboard").sort(page => page.file.folder, "asc"); +let filteredPages = allPages.filter(p => + p.file.tags.values.includes("#dashboard") && p?.include_in_navbar == true +); + +for(let page of filteredPages){ + let navItem = ''; + let navName = 'Untitled'; + let navLink = ''; + + if(page.navbar_name === undefined){ + navName = page.file.name; + } else { + navName = page.navbar_name; + } + navLink = page.file.path; + + // Format the nav item link + if(dv.current().file.path === page.file.path){ + navItem = `**[[${navLink}|${navName}]]**` + } else { + navItem = `[[${navLink}|${navName}]]` + } + + navbar.push(navItem) +} + +dv.paragraph(navbar.join(' | ')) + +if(filteredPages.values.length > 0){ + loadingMessage.remove(); +} ``` \ No newline at end of file diff --git a/Vault/Projects/Projects.md b/Vault/Projects/Projects.md index 2e44d3f..9ade819 100644 --- a/Vault/Projects/Projects.md +++ b/Vault/Projects/Projects.md @@ -8,9 +8,43 @@ include_in_navbar: true navbar_name: Projects tags: dashboard projects --- + ```dataviewjs -const {Navbar} = customJS; -await Navbar.createNavbar(app, dv); +let navbar = []; +let loadingMessage = dv.el("span", "**Loading navigation...**", {attr: {style: "font-size:13px; color:gray"}}); + +let allPages = dv.pages("#dashboard").sort(page => page.file.folder, "asc"); +let filteredPages = allPages.filter(p => + p.file.tags.values.includes("#dashboard") && p?.include_in_navbar == true +); + +for(let page of filteredPages){ + let navItem = ''; + let navName = 'Untitled'; + let navLink = ''; + + if(page.navbar_name === undefined){ + navName = page.file.name; + } else { + navName = page.navbar_name; + } + navLink = page.file.path; + + // Format the nav item link + if(dv.current().file.path === page.file.path){ + navItem = `**[[${navLink}|${navName}]]**` + } else { + navItem = `[[${navLink}|${navName}]]` + } + + navbar.push(navItem) +} + +dv.paragraph(navbar.join(' | ')) + +if(filteredPages.values.length > 0){ + loadingMessage.remove(); +} ``` # Projects List of all current and past projects @@ -63,6 +97,39 @@ for (let group of dv.pages('"Projects" and #dashboard and !#projects').groupBy(p --- ```dataviewjs -const {Navbar} = customJS; -await Navbar.createNavbar(app, dv); +let navbar = []; +let loadingMessage = dv.el("span", "**Loading navigation...**", {attr: {style: "font-size:13px; color:gray"}}); + +let allPages = dv.pages("#dashboard").sort(page => page.file.folder, "asc"); +let filteredPages = allPages.filter(p => + p.file.tags.values.includes("#dashboard") && p?.include_in_navbar == true +); + +for(let page of filteredPages){ + let navItem = ''; + let navName = 'Untitled'; + let navLink = ''; + + if(page.navbar_name === undefined){ + navName = page.file.name; + } else { + navName = page.navbar_name; + } + navLink = page.file.path; + + // Format the nav item link + if(dv.current().file.path === page.file.path){ + navItem = `**[[${navLink}|${navName}]]**` + } else { + navItem = `[[${navLink}|${navName}]]` + } + + navbar.push(navItem) +} + +dv.paragraph(navbar.join(' | ')) + +if(filteredPages.values.length > 0){ + loadingMessage.remove(); +} ``` \ No newline at end of file diff --git a/Vault/Projects/Top Secret Project/Meetings/2023-10-29 - Example Meeting Note.md b/Vault/Projects/Top Secret Project/Meetings/2023-10-29 - Example Meeting Note.md new file mode 100644 index 0000000..869a97f --- /dev/null +++ b/Vault/Projects/Top Secret Project/Meetings/2023-10-29 - Example Meeting Note.md @@ -0,0 +1,28 @@ +--- +date_created: 2023-10-29 +date_modified: 2023-10-29 +document_type: meeting +project: Top Secret Project +tags: top-secret-project meeting +--- +[[Projects/Top Secret Project/Home|Home]] | [[Projects/Top Secret Project/Meetings/All Meetings|Meetings]] | [[Projects/Top Secret Project/Notes/All Notes|Notes]] | [[Projects/Top Secret Project/References|References]] +# 2023-10-29 - Example Meeting Note +**Date and Time** +Date: 2023-10-29 +Time: 04:14 pm + +**Overview** +Description:: Example Meeting Note + +**Attendees** +- SoRobby + +## Notes +- This is an example meeting note for reference... + +## Actions Items +*Add follow up actions / tasks* + + +--- +[[Projects/Top Secret Project/Home|Home]] | [[Projects/Top Secret Project/Meetings/All Meetings|Meetings]] | [[Projects/Top Secret Project/Notes/All Notes|Notes]] | [[Projects/Top Secret Project/References|References]] diff --git a/Vault/Projects/Top Secret Project/Tasks.md b/Vault/Projects/Top Secret Project/Tasks.md index d17cf5c..753499e 100644 --- a/Vault/Projects/Top Secret Project/Tasks.md +++ b/Vault/Projects/Top Secret Project/Tasks.md @@ -9,6 +9,7 @@ tags: top-secret-project tasks [[Projects/Top Secret Project/Home|Home]] | [[Projects/Top Secret Project/Meetings/All Meetings|Meetings]] | [[Projects/Top Secret Project/Notes/All Notes|Notes]] | [[Projects/Top Secret Project/References|References]] # Tasks *Add project related tasks here* +- [ ] Upload commands to the satellite to perform delta-v maneuver. --- [[Projects/Top Secret Project/Home|Home]] | [[Projects/Top Secret Project/Meetings/All Meetings|Meetings]] | [[Projects/Top Secret Project/Notes/All Notes|Notes]] | [[Projects/Top Secret Project/References|References]] \ No newline at end of file diff --git a/Vault/README.md b/Vault/README.md index 9153664..05a9b1d 100644 --- a/Vault/README.md +++ b/Vault/README.md @@ -201,8 +201,41 @@ The links displayed in the navigation bar are set by a combination of a page's t ```` ```dataviewjs -const {Navbar} = customJS; -await Navbar.createNavbar(app, dv); +let navbar = []; +let loadingMessage = dv.el("span", "**Loading navigation...**", {attr: {style: "font-size:13px; color:gray"}}); + +let allPages = dv.pages("#dashboard").sort(page => page.file.folder, "asc"); +let filteredPages = allPages.filter(p => + p.file.tags.values.includes("#dashboard") && p?.include_in_navbar == true +); + +for(let page of filteredPages){ + let navItem = ''; + let navName = 'Untitled'; + let navLink = ''; + + if(page.navbar_name === undefined){ + navName = page.file.name; + } else { + navName = page.navbar_name; + } + navLink = page.file.path; + + // Format the nav item link + if(dv.current().file.path === page.file.path){ + navItem = `**[[${navLink}|${navName}]]**` + } else { + navItem = `[[${navLink}|${navName}]]` + } + + navbar.push(navItem) +} + +dv.paragraph(navbar.join(' | ')) + +if(filteredPages.values.length > 0){ + loadingMessage.remove(); +} ``` ```` @@ -306,6 +339,7 @@ There are several DataviewJS and JavaScript components. 6. Theme Picker 7. Hover Editor 8. Periodic and Spaced +9. Automatically reveal active file ## Themes diff --git a/Vault/Resources/Resources Dashboard.md b/Vault/Resources/Resources Dashboard.md index 730f6f8..8ad98c0 100644 --- a/Vault/Resources/Resources Dashboard.md +++ b/Vault/Resources/Resources Dashboard.md @@ -9,9 +9,43 @@ include_in_navbar: true navbar_name: Resources tags: dashboard proprietary --- + ```dataviewjs -const {Navbar} = customJS; -await Navbar.createNavbar(app, dv); +let navbar = []; +let loadingMessage = dv.el("span", "**Loading navigation...**", {attr: {style: "font-size:13px; color:gray"}}); + +let allPages = dv.pages("#dashboard").sort(page => page.file.folder, "asc"); +let filteredPages = allPages.filter(p => + p.file.tags.values.includes("#dashboard") && p?.include_in_navbar == true +); + +for(let page of filteredPages){ + let navItem = ''; + let navName = 'Untitled'; + let navLink = ''; + + if(page.navbar_name === undefined){ + navName = page.file.name; + } else { + navName = page.navbar_name; + } + navLink = page.file.path; + + // Format the nav item link + if(dv.current().file.path === page.file.path){ + navItem = `**[[${navLink}|${navName}]]**` + } else { + navItem = `[[${navLink}|${navName}]]` + } + + navbar.push(navItem) +} + +dv.paragraph(navbar.join(' | ')) + +if(filteredPages.values.length > 0){ + loadingMessage.remove(); +} ``` # Resources Collection of Resources. @@ -26,6 +60,39 @@ for (let group of dv.pages('"Resources" and !#dashboard').groupBy(p => p.file.fo --- ```dataviewjs -const {Navbar} = customJS; -await Navbar.createNavbar(app, dv); +let navbar = []; +let loadingMessage = dv.el("span", "**Loading navigation...**", {attr: {style: "font-size:13px; color:gray"}}); + +let allPages = dv.pages("#dashboard").sort(page => page.file.folder, "asc"); +let filteredPages = allPages.filter(p => + p.file.tags.values.includes("#dashboard") && p?.include_in_navbar == true +); + +for(let page of filteredPages){ + let navItem = ''; + let navName = 'Untitled'; + let navLink = ''; + + if(page.navbar_name === undefined){ + navName = page.file.name; + } else { + navName = page.navbar_name; + } + navLink = page.file.path; + + // Format the nav item link + if(dv.current().file.path === page.file.path){ + navItem = `**[[${navLink}|${navName}]]**` + } else { + navItem = `[[${navLink}|${navName}]]` + } + + navbar.push(navItem) +} + +dv.paragraph(navbar.join(' | ')) + +if(filteredPages.values.length > 0){ + loadingMessage.remove(); +} ``` \ No newline at end of file diff --git a/Vault/Spaces/Obsidian Development/Navigation with Dataview and customJS.md b/Vault/Spaces/Obsidian Development/Navigation with Dataview and customJS.md new file mode 100644 index 0000000..7c6d7ea --- /dev/null +++ b/Vault/Spaces/Obsidian Development/Navigation with Dataview and customJS.md @@ -0,0 +1,8 @@ +> [!warning] Warning +> Using the customJS plugin can sometimes menu errors to occur when Obsidian loads the page. + +**Dataview Navigation** +```dataviewjs +const {Navbar} = customJS; +await Navbar.createNavbar(app, dv); +``` \ No newline at end of file diff --git a/Vault/Spaces/Obsidian Development/Navigation with DataviewJS.md b/Vault/Spaces/Obsidian Development/Navigation with DataviewJS.md new file mode 100644 index 0000000..5dc6e07 --- /dev/null +++ b/Vault/Spaces/Obsidian Development/Navigation with DataviewJS.md @@ -0,0 +1,41 @@ +The navigation bar will display any page with the tag of #dashboard with the meta property of `include_in_navbar=true`. + +```dataviewjs + +let navbar = []; +let loadingMessage = dv.el("span", "**Loading navigation...**", {attr: {style: "font-size:13px; color:gray"}}); + +let allPages = dv.pages("#dashboard").sort(page => page.file.folder, "asc"); +let filteredPages = allPages.filter(p => + p.file.tags.values.includes("#dashboard") && p?.include_in_navbar == true +); + +for(let page of filteredPages){ + let navItem = ''; + let navName = 'Untitled'; + let navLink = ''; + + if(page.navbar_name === undefined){ + navName = page.file.name; + } else { + navName = page.navbar_name; + } + navLink = page.file.path; + + // Format the nav item link + if(dv.current().file.path === page.file.path){ + navItem = `**[[${navLink}|${navName}]]**` + } else { + navItem = `[[${navLink}|${navName}]]` + } + + navbar.push(navItem) +} + +dv.paragraph(navbar.join(' | ')) + +if(filteredPages.values.length > 0){ + loadingMessage.remove(); +} + +``` \ No newline at end of file diff --git a/Vault/Spaces/Obsidian Development/Obsidian Development Dashboard.md b/Vault/Spaces/Obsidian Development/Obsidian Development Dashboard.md new file mode 100644 index 0000000..7d53cb4 --- /dev/null +++ b/Vault/Spaces/Obsidian Development/Obsidian Development Dashboard.md @@ -0,0 +1,30 @@ +--- +banner: "" +date_created: 2023-10-29 +date_modified: 2023-10-29 +description: Obsidian development, scripts, and testing of new ideas. +document_type: dashboard +tags: dashboard +--- +# Obsidian Development + +## Pages +```dataviewjs +let pages = dv.pages(`"${dv.current().file.folder}" and !"${dv.current().file.path}"`) +if(pages.length > 0){ +for(let group of dv.pages(`"${dv.current().file.folder}" and !"${dv.current().file.path}"`).groupBy(p => p.note)) { + dv.table(["Name", "Description", "Tags"], + group.rows + .sort(k => k.file.ctime, 'desc') + .map(k => [ + k.file.link, + k['description'], + dv.span(k.file.tags.values.toString().replaceAll(",", " ")) + ]))} +} else { + dv.el('div', 'No pages') +} + +``` + + diff --git a/Vault/Spaces/Spaces Dashboard.md b/Vault/Spaces/Spaces Dashboard.md index bc93a8e..42ec9d0 100644 --- a/Vault/Spaces/Spaces Dashboard.md +++ b/Vault/Spaces/Spaces Dashboard.md @@ -8,9 +8,43 @@ include_in_navbar: true navbar_name: Spaces tags: dashboard spaces --- + ```dataviewjs -const {Navbar} = customJS; -await Navbar.createNavbar(app, dv); +let navbar = []; +let loadingMessage = dv.el("span", "**Loading navigation...**", {attr: {style: "font-size:13px; color:gray"}}); + +let allPages = dv.pages("#dashboard").sort(page => page.file.folder, "asc"); +let filteredPages = allPages.filter(p => + p.file.tags.values.includes("#dashboard") && p?.include_in_navbar == true +); + +for(let page of filteredPages){ + let navItem = ''; + let navName = 'Untitled'; + let navLink = ''; + + if(page.navbar_name === undefined){ + navName = page.file.name; + } else { + navName = page.navbar_name; + } + navLink = page.file.path; + + // Format the nav item link + if(dv.current().file.path === page.file.path){ + navItem = `**[[${navLink}|${navName}]]**` + } else { + navItem = `[[${navLink}|${navName}]]` + } + + navbar.push(navItem) +} + +dv.paragraph(navbar.join(' | ')) + +if(filteredPages.values.length > 0){ + loadingMessage.remove(); +} ``` # Spaces ```button @@ -99,6 +133,39 @@ for (let group of dv.pages('"Spaces" and !#dashboard').groupBy(p => p.file.folde --- ```dataviewjs -const {Navbar} = customJS; -await Navbar.createNavbar(app, dv); +let navbar = []; +let loadingMessage = dv.el("span", "**Loading navigation...**", {attr: {style: "font-size:13px; color:gray"}}); + +let allPages = dv.pages("#dashboard").sort(page => page.file.folder, "asc"); +let filteredPages = allPages.filter(p => + p.file.tags.values.includes("#dashboard") && p?.include_in_navbar == true +); + +for(let page of filteredPages){ + let navItem = ''; + let navName = 'Untitled'; + let navLink = ''; + + if(page.navbar_name === undefined){ + navName = page.file.name; + } else { + navName = page.navbar_name; + } + navLink = page.file.path; + + // Format the nav item link + if(dv.current().file.path === page.file.path){ + navItem = `**[[${navLink}|${navName}]]**` + } else { + navItem = `[[${navLink}|${navName}]]` + } + + navbar.push(navItem) +} + +dv.paragraph(navbar.join(' | ')) + +if(filteredPages.values.length > 0){ + loadingMessage.remove(); +} ``` \ No newline at end of file diff --git a/Vault/_data_/templates/project/Project meeting.md b/Vault/_data_/templates/project/Project meeting.md index faeb51b..aa04a74 100644 --- a/Vault/_data_/templates/project/Project meeting.md +++ b/Vault/_data_/templates/project/Project meeting.md @@ -26,7 +26,7 @@ Time: <% tp.file.creation_date("hh:mm a") %> Description:: <% `${title}` %> <% tp.file.cursor(1) %> **Attendees** -- Robert Miller +- SoRobby ## Notes