You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

790 lines
3.0 MiB

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<!doctype html>
<!-- The following comment is called a MOTW comment and is necessary for the TiddlyIE Internet Explorer extension -->
<!-- saved from url=(0021)https://tiddlywiki.com -->
<html lang="en-GB">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<!--~~ Raw markup for the top of the head section ~~-->
<meta http-equiv="X-UA-Compatible" content="IE=Edge"/>
<meta name="application-name" content="TiddlyWiki" />
<meta name="generator" content="TiddlyWiki" />
<meta name="tiddlywiki-version" content="5.2.5" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
<meta name="mobile-web-app-capable" content="yes"/>
<meta name="format-detection" content="telephone=no" />
<meta name="copyright" content="TiddlyWiki created by Jeremy Ruston, (jeremy [at] jermolene [dot] com)
Copyright (c) 2004-2007, Jeremy Ruston
Copyright (c) 2007-2022, UnaMesa Association
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
* Neither the name of the copyright holder nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." />
<link id="faviconLink" rel="shortcut icon" href="favicon.ico">
<title>hackerspaceinventario
— inventario</title>
<!--~~ This is a Tiddlywiki file. The points of interest in the file are marked with this pattern ~~-->
<!--~~ Raw markup ~~-->
</head>
<body class="tc-body">
<!--~~ Raw markup for the top of the body section ~~-->
<!--~~ Static styles ~~-->
<div id="styleArea">
<style data-tiddler-title="$:/boot/boot.css" data-tiddler-type="text/css" type="text/css">.tc-error-form{font-family:sans-serif;color:#fff;z-index:20000;position:fixed;background-color:#ff4b4b;border:8px solid red;border-radius:8px;width:50%;margin-left:25%;margin-top:4em;padding:0 2em 1em 2em}.tc-error-form h1{text-align:center}.tc-error-prompt{text-align:center;color:#000}.tc-error-message{overflow:auto;max-height:40em;padding-right:1em;margin:1em 0;white-space:pre-line}.tc-password-wrapper{font-family:sans-serif;z-index:20000;position:fixed;text-align:center;width:200px;top:4em;left:50%;margin-left:-144px;padding:16px 16px 16px 16px;border-radius:8px}.tc-password-wrapper{color:#000;text-shadow:0 1px 0 rgba(255,255,255,0.5);background-color:#c5ebb7;border:8px solid #a4c598}.tc-password-wrapper form{text-align:left}.tc-password-wrapper h1{font-size:16px;line-height:20px;padding-bottom:16px}.tc-password-wrapper input{width:100%}</style>
</div>
<!--~~ Static content for Google and browsers without JavaScript ~~-->
<noscript>
<div id="splashArea">
<p>This <a class="tc-tiddlylink-external" href="https://tiddlywiki.com" rel="noopener noreferrer" target="_blank">TiddlyWiki</a> contains the following tiddlers:</p><p><ul>
<li>$:/_tw5.com-card-template</li>
<li>$:/_tw5.com-styles</li>
<li>$:/config/flibbles/relink-titles/custom</li>
<li>$:/config/flibbles/relink/fields/description</li>
<li>$:/config/flibbles/relink/fields/example-filter</li>
<li>$:/config/flibbles/relink/fields/example-list</li>
<li>$:/config/flibbles/relink/fields/example-title</li>
<li>$:/config/flibbles/relink/fields/example-wikitext</li>
<li>$:/config/flibbles/relink/fields/Frodo</li>
<li>$:/config/flibbles/relink/fields/relink.showcase</li>
<li>$:/config/flibbles/relink/macros/ul/tag</li>
<li>$:/config/HypotheticalButtons/Visibility/Frodo</li>
<li>$:/config/markdown/renderWikiTextPragma</li>
<li>$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/home</li>
<li>$:/config/PageControlButtons/Visibility/$:/plugins/tiddlywiki/markdown/new-markdown-button</li>
<li>$:/config/RelinkOnRename</li>
<li>$:/config/TiddlerInfo/Default</li>
<li>$:/config/TiddlerInfo/Mode</li>
<li>$:/config/ViewTemplateBodyFilters/system</li>
<li>$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/info</li>
<li>$:/core</li>
<li>$:/DefaultTiddlers</li>
<li>$:/Import</li>
<li>$:/isEncrypted</li>
<li>$:/keepstate/dynamictables/20200213/exmp01/style</li>
<li>$:/keepstate/dynamictables/Draft of 'Inventory'/style</li>
<li>$:/plugins/adithyab/cmplus</li>
<li>$:/plugins/danielo515/2click2edit</li>
<li>$:/plugins/felixhayashi/respawn</li>
<li>$:/plugins/felixhayashi/topstoryview</li>
<li>$:/plugins/flibbles/3rd-party</li>
<li>$:/plugins/flibbles/relink</li>
<li>$:/plugins/flibbles/relink-fieldnames</li>
<li>$:/plugins/flibbles/relink-markdown</li>
<li>$:/plugins/flibbles/relink-titles</li>
<li>$:/plugins/Gk0Wk/sidebar-resizer</li>
<li>$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced</li>
<li>$:/plugins/kookma/shiraz</li>
<li>$:/plugins/kookma/trashbin</li>
<li>$:/plugins/snowgoon88/edit-comptext</li>
<li>$:/plugins/sq/streams</li>
<li>$:/plugins/sq/streams-as-editor</li>
<li>$:/plugins/sq/streams-search</li>
<li>$:/plugins/tgrosinger/tw5-checklist</li>
<li>$:/plugins/tiddlywiki/codemirror</li>
<li>$:/plugins/tiddlywiki/codemirror-closebrackets</li>
<li>$:/plugins/tiddlywiki/codemirror-closetag</li>
<li>$:/plugins/tiddlywiki/codemirror-fullscreen</li>
<li>$:/plugins/tiddlywiki/codemirror-mode-css</li>
<li>$:/plugins/tiddlywiki/codemirror-mode-javascript</li>
<li>$:/plugins/tiddlywiki/codemirror-mode-markdown</li>
<li>$:/plugins/tiddlywiki/codemirror-mode-xml</li>
<li>$:/plugins/tiddlywiki/codemirror-search-replace</li>
<li>$:/plugins/tiddlywiki/highlight</li>
<li>$:/plugins/tiddlywiki/markdown</li>
<li>$:/plugins/tiddlywiki/railroad</li>
<li>$:/plugins/wikilabs/link-to-tabs</li>
<li>$:/SiteSubtitle</li>
<li>$:/SiteTitle</li>
<li>$:/state/advancedsearch/currentTab</li>
<li>$:/state/dynamictables/20200213/exmp01/edit-view-status</li>
<li>$:/state/dynamictables/20200213/exmp01/expand</li>
<li>$:/state/dynamictables/20200213/exmp01/sortby</li>
<li>$:/state/dynamictables/20200213/exmp03/expand</li>
<li>$:/state/dynamictables/Draft of 'Inventory'/sortby</li>
<li>$:/state/dynamictables/Inventory/expand</li>
<li>$:/state/showeditpreview</li>
<li>$:/state/sidebar</li>
<li>$:/state/tab--1498284803</li>
<li>$:/state/tab--1571042964</li>
<li>$:/state/tab--1963855381</li>
<li>$:/state/tab--694410614</li>
<li>$:/state/tab-1749438307</li>
<li>$:/state/tab/sidebar--595412856</li>
<li>$:/state/tab1-995636538</li>
<li>$:/state/tabs/controlpanel/toolbars-1345989671</li>
<li>$:/state/tag-manager/Types</li>
<li>$:/status/RequireReloadDueToPluginChange</li>
<li>$:/StoryList</li>
<li>$:/theme</li>
<li>$:/themes/tiddlywiki/snowwhite</li>
<li>$:/themes/tiddlywiki/vanilla</li>
<li>$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth</li>
<li>$:/themes/tiddlywiki/vanilla/options/sidebarlayout</li>
<li>$:/TitlesExample/Frodo</li>
<li>Attributes</li>
<li>azul</li>
<li>backreferences Operator</li>
<li>backreferences Operator (Examples)</li>
<li>BilboBaggins</li>
<li>Comments</li>
<li>Default Type</li>
<li>Demo/Field names</li>
<li>Demo/Fields</li>
<li>Demo/Filters</li>
<li>Demo/Images</li>
<li>Demo/Links</li>
<li>Demo/Macros</li>
<li>Demo/Markdown</li>
<li>Demo/Titles</li>
<li>Demo/Transcludes</li>
<li>Demo/Widgets</li>
<li>Disable Updating of modified</li>
<li>Documentation</li>
<li>Documentation/Attributes</li>
<li>Documentation/Fields</li>
<li>Documentation/Operators</li>
<li>Eärendil</li>
<li>Example/setting/Frodo</li>
<li>Example/setting/Rosie</li>
<li>Fieldname</li>
<li>Fieldnamelist</li>
<li>Fields</li>
<li>Filter</li>
<li>Filter Operators</li>
<li>Frodo.svg</li>
<li>Frodo/inventory</li>
<li>Frodo/stats</li>
<li>Frodo/stats/kills</li>
<li>getRelinkableTitles</li>
<li>getTiddlerRelinkBackreferences</li>
<li>getTiddlerRelinkReferences</li>
<li>Hackability</li>
<li>hackerspace--inventario</li>
<li>hackerspace--inventario--general</li>
<li>hackerspace--inventario--necesitados</li>
<li>Images</li>
<li>Inline Declarations</li>
<li>Lazy Loading</li>
<li>Links</li>
<li>List</li>
<li>Macros</li>
<li>Macros/hide</li>
<li>Macros/link-to-tab</li>
<li>Macros/operator-example</li>
<li>Macros/print-before-this</li>
<li>Macros/say-list</li>
<li>Macros/show-reference-button</li>
<li>Macros/ul</li>
<li>Markdown</li>
<li>Migration to V2</li>
<li>Migration to V2/relink-titles</li>
<li>Migration to V2/relinkoperator</li>
<li>Migration to V2/relinktextoperator</li>
<li>Migration to V2/relinkwikitextrule</li>
<li>Mithril</li>
<li>Operators</li>
<li>orphans Operator</li>
<li>orphans Operator (Examples)</li>
<li>Other plugins by Flibbles</li>
<li>Plugins</li>
<li>Plugins/Fieldnames</li>
<li>Plugins/Markdown</li>
<li>Plugins/Titles</li>
<li>Plugins/Titles/directory</li>
<li>Plugins/Titles/example.js</li>
<li>Plugins/Titles/lookup</li>
<li>Pragma</li>
<li>Reference</li>
<li>references Operator</li>
<li>references Operator (Examples)</li>
<li>Relink-titles Migration</li>
<li>report Operator</li>
<li>report Operator (Examples)</li>
<li>Roadmap</li>
<li>rojo</li>
<li>RSoD</li>
<li>Stylesheet.css</li>
<li>Suffixes</li>
<li>Templates/Button</li>
<li>Templates/Demo</li>
<li>Templates/Hello</li>
<li>Templates/now</li>
<li>Templates/Plugin</li>
<li>Templates/release-date</li>
<li>Templates/Type</li>
<li>Templates/Version</li>
<li>Templates/Version-button</li>
<li>Third Party Plugin Integration</li>
<li>Tiddler Type</li>
<li>TiddlerInfo Tab</li>
<li>Tiddlers to relink</li>
<li>Title</li>
<li>Transcludes</li>
<li>Types</li>
<li>verde</li>
<li>Versions</li>
<li>Versions/1.0.0</li>
<li>Versions/1.1.0</li>
<li>Versions/1.1.1</li>
<li>Versions/1.10.0</li>
<li>Versions/1.10.1</li>
<li>Versions/1.10.2</li>
<li>Versions/1.10.3</li>
<li>Versions/1.2.0</li>
<li>Versions/1.2.1</li>
<li>Versions/1.3.0</li>
<li>Versions/1.4.0</li>
<li>Versions/1.4.1</li>
<li>Versions/1.4.2</li>
<li>Versions/1.5.0</li>
<li>Versions/1.5.1</li>
<li>Versions/1.5.2</li>
<li>Versions/1.5.3</li>
<li>Versions/1.5.4</li>
<li>Versions/1.6.0</li>
<li>Versions/1.7.0</li>
<li>Versions/1.7.1</li>
<li>Versions/1.8.0</li>
<li>Versions/1.8.1</li>
<li>Versions/1.9.0</li>
<li>Versions/1.9.1</li>
<li>Versions/1.9.2</li>
<li>Versions/1.9.3</li>
<li>Versions/2.0.0</li>
<li>Versions/2.0.1</li>
<li>Versions/2.0.2</li>
<li>Versions/2.1.0</li>
<li>Versions/2.1.1</li>
<li>Versions/2.1.2</li>
<li>Versions/2.1.3</li>
<li>Versions/2.1.4</li>
<li>Versions/2.2.0</li>
<li>Versions/2.3.0</li>
<li>Versions/2.3.1</li>
<li>Whitelisting</li>
<li>Widgets with tiddler fields as attributes</li>
<li>Wikimethods</li>
<li>Wikitext</li>
</ul>
</p>
<style>
.tc-remove-when-wiki-loaded {display: none;}
</style>
</div>
</noscript>
<!--~~ Ordinary tiddlers ~~-->
<script class="tiddlywiki-tiddler-store" type="application/json">[
{"title":"$:/_tw5.com-card-template","created":"20200507002521489","modified":"20220719134613555","type":"text/vnd.tiddlywiki","text":"\u003C$macrocall $name=\"flex-card\" bordercolor={{!!color}} captionField=\"caption\" subtitle={{{ [{!!community-author}!is[blank]addprefix[by ]] }}}/>\n"},
{"title":"$:/_tw5.com-styles","created":"20200507002727378","modified":"20220719132112414","tags":"$:/tags/Stylesheet","type":"text/vnd.tiddlywiki","text":"\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline macrocallblock\n\n.tc-double-spaced-list li {\n\tpadding-bottom: .5em;\n\tpadding-top: .5em;\n}\n\n.tc-link-info-item {\n border: 1px solid #ebefcd;\n padding: 5px 10px;\n margin-bottom: 10px;\n background: \u003C\u003Ccolour code-background>>;\n font-size: 0.8em;\n line-height: 1.2;\n}\n\n.tc-link-info-item h1 {\n\tfont-weight: 500;\n\tfont-size: 16px;\t\n}\n\n.tc-scrollable-demo {\n\tborder: 1px solid \u003C\u003Ccolour message-border>>;\n\tbackground-color: \u003C\u003Ccolour message-background>>;\n\tpadding: 1em;\n\theight: 400px;\n\tposition: relative;\n\toverflow: auto;\n}\n\n.tc-improvement-banner {\n\tfont-size: 0.7em;\n\tbackground: #fcc;\n\tpadding-left: 5px;\n\tmargin-top: 6px;\n\tmargin-bottom: 12px;\n\t\u003C\u003Cbox-shadow \"2px 2px 2px rgba(0,0,0,0.4)\">>\n}\n\n@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\t\n\t.tc-improvement-banner {\n\t}\n\n}\n\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\n\t.tc-improvement-banner {\n\t\tmargin-right: -53px;\n\t\tmargin-left: -53px;\n\t}\n\n\t.tc-improvement-banner:before {\n\t\tdisplay: block;\n\t\tposition: absolute;\n\t\twidth: 0;\n\t\theight: 0;\n\t\tcontent: \" \";\n\t\tmargin-left: -5px;\n\t\tmargin-top: -10px;\n\t\tborder-top: 5px solid transparent;\n\t\tborder-left: 5px solid transparent;\n\t\tborder-right: 5px solid #C07E7E;\n\t\tborder-bottom: 5px solid #C07E7E;\n\t}\n\n}\n\n.tc-improvement-banner svg {\n\twidth: 1em;\n\theight: 1em;\n}\n\n\n\n.tc-wrapper-flex {\n\tdisplay: flex;\n}\n\n.tc-saving-sidebar {\n\tmargin: 0;\n\tpadding: 0;\n\tmin-width: 200px;\n\toverflow: auto;\n}\n\n.tc-saving-sidebar a {\n\tdisplay: block;\n}\n\n@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\t.tc-wrapper-flex {\n\t\tflex-direction: column;\n\t}\n\t.tc-saving-sidebar {\n\t\twidth: 100%;\n\t\theight: auto;\n\t}\n\t.tc-saving-sidebar a {\n\t\tfloat: left;\n\t}\n}\n\n.tc-saving-sidebar-category {\n\tmargin-bottom: 10px;\n}\n\n.tc-saving-sidebar-category-title {\n\tfont-weight: bold;\n\tmargin-bottom: 5px;\n\tfont-size: 16px;\n}\n\n.tc-saving-sidebar-category-item {\n\tmargin-left: 10px;\n}\n\n.tc-saving-introduction {\n\tdisplay: flex;\n\tjustify-content: center;\n\ttext-align: center;\n\talign-items: center;\n\tpadding: 4em;\n\tfont-style: italic;\n}\n\n.tc-cards {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tjustify-content: space-evenly;\n\twidth: 100%;\n\tpadding: 0.5em;\n\tbackground: \u003C\u003Ccolour background>>;\n\tborder-color: rgba(34,36,38,.15);\n\tbox-shadow: 0 2px 25px 0 rgb(34 36 38 / 5%) inset;\n}\n\n.tc-tiddlylink.tc-card {\n\tfont-weight: normal;\n\tmax-width: 100%;\n\tposition: relative;\n\tdisplay: flex;\n\tflex-direction: column;\n\tbackground: \u003C\u003Ccolour background>>;\n\tcolor: \u003C\u003Ccolour foreground>>;\n\twidth: 200px;\n\tmin-height: 0;\n\tpadding: 0 0 0.5em 0;\n\tmargin: 0.5em;\n\tborder: none;\n\tborder-radius: 8px;\n\tbox-shadow: 0 1px 3px 0 #d4d4d5, 0 0 0 1px #d4d4d5;\n\ttransition: box-shadow 0.3s ease,transform .3s ease;\n}\n\n@media (max-width: 500px) {\n\t\n\t.tc-cards {\n\t\tpadding: 0;\n\t}\n\n\t.tc-tiddlylink.tc-card {\n\t\tmargin: 0.25em;\n\t\twidth: 45%;\n\t}\n\n}\n\n.tc-tiddlylink.tc-card.tc-card-quote {\n\twidth: 320px;\n\tbox-shadow: none;\n\tbackground-color: #effdff;\n}\n\n.tc-card-accent {\n\tborder-top-left-radius: 8px;\n\tborder-top-right-radius: 8px;\n}\n\n.tc-tiddlylink.tc-card:hover {\n\tcolor: \u003C\u003Ccolour foreground>>;\n\tbackground: \u003C\u003Ccolour notification-background>>;\n\ttext-decoration: none;\n\tcursor: pointer;\n\tbox-shadow: 0 1px 5px 0 #bcbdbd, 0 0 0 1px #d4d4d5;\n\ttransform: translateY(-3px);\n}\n\n.tc-card-ribbon-wrapper {\n\tline-height: 0;\n\twidth: 75px;\n\theight: 75px;\n\tposition: absolute;\n\tright: 0;\n\toverflow: hidden;\n\ttop: 0;\n\tz-index: 849;\n\tpointer-events: none;\n}\n\n.tc-card-ribbon {\n\ttransition: top 0.3s ease-in-out;\n\ttop: 15px;\n\tright: -77px;\n\tposition: absolute;\n\ttransform: rotate(45deg);\n\tbackground-color: red;\n\tbox-shadow: 0px 0px 2px 0px rgb(0 0 0 / 50%);\n}\n\n.tc-tiddlylink.tc-card:hover .tc-card-ribbon {\n\ttop: -77px;\n}\n\n.tc-card-ribbon-inner {\n\tfont-size: 10px;\n\tline-height: 13px;\n\tfont-weight: 700;\n\tcolor: white;\n\ttext-decoration: none;\n\ttext-shadow: 0 -1px rgb(0 0 0 / 50%);\n\twidth: 200px;\n\tdisplay: inline-block;\n\tpadding: 2px 0;\n\ttext-align: center;\n}\n\n.tc-card-image {\n\tline-height: 0;\n\toverflow: hidden;\n}\n\n.tc-card-image img {\n\tborder-top-left-radius: 8px;\n\tborder-top-right-radius: 8px;\n\twidth: 100%;\n\ttransition: transform 0.3s ease-in-out;\n}\n\n.tc-tiddlylink.tc-card:hover .tc-card-image img {\n\ttransform: scale(1.05);\n}\n\n.tc-card-title {\n\tfont-size: 1.2em;\n\tline-height: 1.2;\n\tfont-weight: 600;\n\ttransition: color 0.3s ease-in-out;\n\tpadding: 0 10px;\n\tmargin: 0.5em 0;\n}\n\n.tc-card-subtitle,\n.tc-card-author {\n\tfont-size: 0.8em;\n\tline-height: 1.2;\n\tcolor: \u003C\u003Ccolour muted-foreground>>;\n\tpadding: 0 10px;\n\tmargin: 0.5em 0;\n\tfont-style: italic;\n}\n\n.tc-card-body {\n\tfont-size: 0.9em;\n\tline-height: 1.2;\n\tpadding: 0 10px;\n\tmargin: 0;\n}\n\n.tc-card-body-wrapper {\n\tposition: relative;\n}\n\n.tc-tiddlylink.tc-card.tc-card-quote .tc-card-body:before {\n\tfont-family: Georgia, serif;\n\tcolor: \u003C\u003Ccolour blockquote-bar>>;\n\tcontent: open-quote;\n\tfont-size: 5em;\n\tline-height: 1;\n\tfloat: left;\n}\n\n.tc-tiddlylink.tc-card.tc-card-quote .tc-card-body:after {\n\tfont-family: Georgia, serif;\n\tcolor: \u003C\u003Ccolour blockquote-bar>>;\n\tcontent: close-quote;\n\tfont-size: 5em;\n\tline-height: 1;\n\tfloat: right;\n}\n\n.tc-tiddlylink.tc-card .tc-card-body-clear {\n\tclear: both;\n}\n\n.tc-card-body > p {\n\tmargin: 0.25em 0;\n}\n\n.tc-card a:active, .tc-card a:focus, .tc-btn-download:active, .tc-btn-download:focus{\n\toutline: none; \n}\n\n.tc-btn-download {\n\tpadding: 10px 30px;\n\tborder-radius: 5px;\n\tbackground: \u003C\u003Ccolour \"download-background\">>;\n\tborder: none;\n\tbox-shadow: 1px 2px 2px 0 \u003C\u003Ccolour muted-foreground>>;\n\toverflow: hidden;\n\tcursor: pointer;\n\tfont-size: 1.2em;\n\tline-height: 1.4em;\n\tcolor: #fff;\n\tfill: #fff;\n}\n\n.tc-btn-download:active {\n\tbox-shadow: none;\n}\n\n/* WikiText rules */\n\n.multi-columns,\n.fourcolumns {\n\tdisplay: block;\n\tcolumn-count: 4;\n\tcolumn-gap: 1em;\n\t-moz-column-count: 4;\n\t-moz-column-gap: 1em;\n\t-webkit-column-count: 4;\n\t-webkit-column-gap: 1em;\n}\n\n@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\t.multi-columns {\n\t\tcolumn-count: 2;\n\t}\n}\n"},
{"title":"$:/config/flibbles/relink-titles/custom","text":"[removesuffix\u003CfromTiddler>match[Example/setting/]addsuffix\u003CtoTiddler>]\n"},
{"title":"$:/config/flibbles/relink/fields/description","text":"wikitext"},
{"title":"$:/config/flibbles/relink/fields/example-filter","text":"filter"},
{"title":"$:/config/flibbles/relink/fields/example-list","text":"list"},
{"title":"$:/config/flibbles/relink/fields/example-title","text":"title"},
{"title":"$:/config/flibbles/relink/fields/example-wikitext","text":"wikitext"},
{"title":"$:/config/flibbles/relink/fields/Frodo","text":"list"},
{"title":"$:/config/flibbles/relink/fields/relink.showcase","text":"fieldnamelist"},
{"title":"$:/config/flibbles/relink/macros/ul/tag","text":"title"},
{"title":"$:/config/HypotheticalButtons/Visibility/Frodo","text":"```\nshow\n```\n\n\u003C\u003C\u003C\nThis is a hypothetical settings tiddler for Frodo, kinda like the settings tiddlers for button visibility in Tiddlywiki.\n\nThis settings tiddler will rename along with Frodo because of the \u003C\u003Clink-to-config-tab $:/plugins/flibbles/relink-titles/configuration \"Relink-titles lookup rule\">>. See the \u003C\u003Clink-to-tab Plugins Plugins/Titles \"Relink-titles documentation\">> for more information.\n\u003C\u003C\u003C\n"},
{"title":"$:/config/markdown/renderWikiTextPragma","text":"\\rules only html image macrocallinline syslink transcludeinline wikilink filteredtranscludeblock macrocallblock transcludeblock superscript"},
{"title":"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/home","text":"show"},
{"title":"$:/config/PageControlButtons/Visibility/$:/plugins/tiddlywiki/markdown/new-markdown-button","text":"hide"},
{"title":"$:/config/RelinkOnRename","text":"yes"},
{"title":"$:/config/TiddlerInfo/Default","text":"$:/plugins/flibbles/relink/ui/TiddlerInfo/References"},
{"title":"$:/config/TiddlerInfo/Mode","text":"sticky"},
{"title":"$:/config/ViewTemplateBodyFilters/system","text":"[prefix[$:/boot/]] [prefix[$:/config/]] [prefix[$:/core/]!field:title[$:/core/readme]!field:title[$:/core/icon]] [prefix[$:/info/]] [prefix[$:/language/]] [prefix[$:/languages/]] [prefix[$:/snippets/]] [prefix[$:/state/]] [prefix[$:/status/]] [prefix[$:/info/]] [prefix[$:/temp/]] +[limit[1]then[$:/core/ui/ViewTemplate/body/code]] -[prefix[$:/config/Hypothetical]]"},
{"title":"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/info","text":"show"},
{"title":"$:/core","name":"Core","description":"TiddlyWiki5 core","author":"JeremyRuston","core-version":">=5.0.0","plugin-priority":"0","list":"readme","version":"5.2.5","plugin-type":"plugin","dependents":"","type":"application/json","text":"{\"tiddlers\":{\"$:/Acknowledgements\":{\"text\":\"TiddlyWiki incorporates code from these fine OpenSource projects:\\n\\n* [[The Stanford Javascript Crypto Library|http://bitwiseshiftleft.github.io/sjcl/]]\\n* [[The Jasmine JavaScript Test Framework|http://pivotal.github.io/jasmine/]]\\n* [[Normalize.css by Nicolas Gallagher|http://necolas.github.io/normalize.css/]]\\n\\nAnd media from these projects:\\n\\n* World flag icons from [[Wikipedia|http://commons.wikimedia.org/wiki/Category:SVG_flags_by_country]]\\n\"},\"$:/core/copyright.txt\":{\"type\":\"text/plain\",\"text\":\"TiddlyWiki created by Jeremy Ruston, (jeremy [at] jermolene [dot] com)\\n\\nCopyright (c) 2004-2007, Jeremy Ruston\\nCopyright (c) 2007-2022, UnaMesa Association\\nAll rights reserved.\\n\\nRedistribution and use in source and binary forms, with or without\\nmodification, are permitted provided that the following conditions are met:\\n\\n* Redistributions of source code must retain the above copyright notice, this\\n list of conditions and the following disclaimer.\\n\\n* Redistributions in binary form must reproduce the above copyright notice,\\n this list of conditions and the following disclaimer in the documentation\\n and/or other materials provided with the distribution.\\n\\n* Neither the name of the copyright holder nor the names of its\\n contributors may be used to endorse or promote products derived from\\n this software without specific prior written permission.\\n\\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'\\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\\nFOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\\nDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\\nSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\\nCAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\\nOR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\"},\"$:/core/icon\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cpath d=\\\"M64 0l54.56 32v64L64 128 9.44 96V32L64 0zm21.127 95.408c-3.578-.103-5.15-.094-6.974-3.152l-1.42.042c-1.653-.075-.964-.04-2.067-.097-1.844-.07-1.548-1.86-1.873-2.8-.52-3.202.687-6.43.65-9.632-.014-1.14-1.593-5.17-2.157-6.61-1.768.34-3.546.406-5.34.497-4.134-.01-8.24-.527-12.317-1.183-.8 3.35-3.16 8.036-1.21 11.44 2.37 3.52 4.03 4.495 6.61 4.707 2.572.212 3.16 3.18 2.53 4.242-.55.73-1.52.864-2.346 1.04l-1.65.08c-1.296-.046-2.455-.404-3.61-.955-1.93-1.097-3.925-3.383-5.406-5.024.345.658.55 1.938.24 2.53-.878 1.27-4.665 1.26-6.4.47-1.97-.89-6.73-7.162-7.468-11.86 1.96-3.78 4.812-7.07 6.255-11.186-3.146-2.05-4.83-5.384-4.61-9.16l.08-.44c-3.097.59-1.49.37-4.82.628-10.608-.032-19.935-7.37-14.68-18.774.34-.673.664-1.287 1.243-.994.466.237.4 1.18.166 2.227-3.005 13.627 11.67 13.732 20.69 11.21.89-.25 2.67-1.936 3.905-2.495 2.016-.91 4.205-1.282 6.376-1.55 5.4-.63 11.893 2.276 15.19 2.37 3.3.096 7.99-.805 10.87-.615 2.09.098 4.143.483 6.16 1.03 1.306-6.49 1.4-11.27 4.492-12.38 1.814.293 3.213 2.818 4.25 4.167 2.112-.086 4.12.46 6.115 1.066 3.61-.522 6.642-2.593 9.833-4.203-3.234 2.69-3.673 7.075-3.303 11.127.138 2.103-.444 4.386-1.164 6.54-1.348 3.507-3.95 7.204-6.97 7.014-1.14-.036-1.805-.695-2.653-1.4-.164 1.427-.81 2.7-1.434 3.96-1.44 2.797-5.203 4.03-8.687 7.016-3.484 2.985 1.114 13.65 2.23 15.594 1.114 1.94 4.226 2.652 3.02 4.406-.37.58-.936.785-1.54 1.01l-.82.11zm-40.097-8.85l.553.14c.694-.27 2.09.15 2.83.353-1.363-1.31-3.417-3.24-4.897-4.46-.485-1.47-.278-2.96-.174-4.46l.02-.123c-.582 1.205-1.322 2.376-1.72 3.645-.465 1.71 2.07 3.557 3.052 4.615l.336.3z\\\"fill-rule=evenodd/>\"},\"$:/core/images/add-comment\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-add-comment tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cpath d=\\\"M56 56H36a8 8 0 100 16h20v20a8 8 0 1016 0V72h20a8 8 0 100-16H72V36a8 8 0 10-16 0v20zm-12.595 58.362c-6.683 7.659-20.297 12.903-36.006 12.903-2.196 0-4.35-.102-6.451-.3 9.652-3.836 17.356-12.24 21.01-22.874C8.516 94.28 0 79.734 0 63.5 0 33.953 28.206 10 63 10s63 23.953 63 53.5S97.794 117 63 117c-6.841 0-13.428-.926-19.595-2.638z\\\"fill-rule=evenodd/>\"},\"$:/core/images/advanced-search-button\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-advanced-search-button tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cg fill-rule=evenodd>\u003Cpath d=\\\"M74.565 87.985A47.776 47.776 0 0148 96C21.49 96 0 74.51 0 48S21.49 0 48 0s48 21.49 48 48c0 9.854-2.97 19.015-8.062 26.636l34.347 34.347a9.443 9.443 0 010 13.36 9.446 9.446 0 01-13.36 0l-34.36-34.358zM48 80c17.673 0 32-14.327 32-32 0-17.673-14.327-32-32-32-17.673 0-32 14.327-32 32 0 17.673 14.327 32 32 32z\\\"/>\u003Ccircle cx=48 cy=48 r=8/>\u003Ccircle cx=28 cy=48 r=8/>\u003Ccircle cx=68 cy=48 r=8/>\"},\"$:/core/images/auto-height\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-auto-height tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cpath d=\\\"M67.987 114.356l-.029-14.477a4 4 0 00-2.067-3.494l-15.966-8.813-1.933 7.502H79.9c4.222 0 5.564-5.693 1.786-7.58L49.797 71.572 48.01 79.15h31.982c4.217 0 5.564-5.682 1.795-7.575L49.805 55.517l-1.795 7.575h31.982c4.212 0 5.563-5.67 1.805-7.57l-16.034-8.105 2.195 3.57V35.614l9.214 9.213a4 4 0 105.656-5.656l-16-16a4 4 0 00-5.656 0l-16 16a4 4 0 105.656 5.656l9.13-9.13v15.288a4 4 0 002.195 3.57l16.035 8.106 1.804-7.57H48.01c-4.217 0-5.564 5.682-1.795 7.574l31.982 16.059 1.795-7.575H48.01c-4.222 0-5.564 5.693-1.787 7.579l31.89 15.923 1.787-7.578H47.992c-4.133 0-5.552 5.504-1.933 7.501l15.966 8.813-2.067-3.494.029 14.436-9.159-9.158a4 4 0 00-5.656 5.656l16 16a4 4 0 005.656 0l16-16a4 4 0 10-5.656-5.656l-9.185 9.184zM16 20h96a4 4 0 100-8H16a4 4 0 100 8z\\\"/>\"},\"$:/core/images/blank\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-blank tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt/>\"},\"$:/core/images/bold\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-bold tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cpath d=\\\"M41.146 51.81V21.87h26.353c2.51 0 4.93.21 7.26.628 2.33.418 4.392 1.165 6.185 2.24 1.793 1.076 3.227 2.57 4.302 4.482 1.076 1.913 1.614 4.363 1.614 7.35 0 5.379-1.613 9.263-4.84 11.653-3.227 2.39-7.35 3.586-12.37 3.586H41.146zM13 0v128h62.028a65.45 65.45 0 0016.762-2.151c5.438-1.434 10.278-3.645 14.52-6.633 4.244-2.988 7.62-6.842 10.13-11.563 2.51-4.721 3.764-10.308 3.764-16.762 0-8.008-1.942-14.85-5.826-20.527-3.884-5.677-9.77-9.65-17.658-11.921 5.737-2.75 10.069-6.275 12.997-10.577 2.928-4.303 4.392-9.681 4.392-16.135 0-5.976-.986-10.995-2.958-15.059-1.972-4.063-4.75-7.32-8.336-9.77-3.585-2.45-7.888-4.213-12.907-5.289C84.888.538 79.33 0 73.235 0H13zm28.146 106.129V70.992H71.8c6.095 0 10.995 1.404 14.7 4.212 3.705 2.81 5.558 7.5 5.558 14.073 0 3.347-.568 6.096-1.703 8.247-1.136 2.151-2.66 3.854-4.572 5.11-1.912 1.254-4.123 2.15-6.633 2.688-2.51.538-5.139.807-7.888.807H41.146z\\\"fill-rule=evenodd/>\"},\"$:/core/images/cancel-button\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-cancel-button tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cpath d=\\\"M64 76.314l-16.97 16.97a7.999 7.999 0 01-11.314 0c-3.118-3.118-3.124-8.19 0-11.313L52.686 65l-16.97-16.97a7.999 7.999 0 010-11.314c3.118-3.118 8.19-3.124 11.313 0L64 53.686l16.97-16.97a7.999 7.999 0 0111.314 0c3.118 3.118 3.124 8.19 0 11.313L75.314 65l16.97 16.97a7.999 7.999 0 010 11.314c-3.118 3.118-8.19 3.124-11.313 0L64 76.314zM64 129c35.346 0 64-28.654 64-64 0-35.346-28.654-64-64-64C28.654 1 0 29.654 0 65c0 35.346 28.654 64 64 64zm0-16c26.51 0 48-21.49 48-48S90.51 17 64 17 16 38.49 16 65s21.49 48 48 48z\\\"fill-rule=evenodd/>\"},\"$:/core/images/chevron-down\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-chevron-down tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cg fill-rule=evenodd>\u003Cpath d=\\\"M64.053 85.456a7.889 7.889 0 01-5.6-2.316L2.473 27.16a7.92 7.92 0 010-11.196c3.086-3.085 8.105-3.092 11.196 0L64.05 66.344l50.382-50.382a7.92 7.92 0 0111.195 0c3.085 3.086 3.092 8.105 0 11.196l-55.98 55.98a7.892 7.892 0 01-5.595 2.317z\\\"/>\u003Cpath d=\\\"M64.053 124.069a7.889 7.889 0 01-5.6-2.316l-55.98-55.98a7.92 7.92 0 010-11.196c3.086-3.085 8.105-3.092 11.196 0l50.382 50.382 50.382-50.382a7.92 7.92 0 0111.195 0c3.085 3.086 3.092 8.104 0 11.196l-55.98 55.98a7.892 7.892 0 01-5.595 2.316z\\\"/>\"},\"$:/core/images/chevron-left\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-chevron-left tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cg fill-rule=evenodd>\u003Cpath d=\\\"M47.544 64.053c0-2.027.77-4.054 2.316-5.6l55.98-55.98a7.92 7.92 0 0111.196 0c3.085 3.086 3.092 8.105 0 11.196L66.656 64.05l50.382 50.382a7.92 7.92 0 010 11.195c-3.086 3.085-8.105 3.092-11.196 0l-55.98-55.98a7.892 7.892 0 01-2.317-5.595z\\\"/>\u003Cpath d=\\\"M8.931 64.053c0-2.027.77-4.054 2.316-5.6l55.98-55.98a7.92 7.92 0 0111.196 0c3.085 3.086 3.092 8.105 0 11.196L28.041 64.05l50.382 50.382a7.92 7.92 0 010 11.195c-3.086 3.085-8.104 3.092-11.196 0l-55.98-55.98a7.892 7.892 0 01-2.316-5.595z\\\"/>\"},\"$:/core/images/chevron-right\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-chevron-right tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cg fill-rule=evenodd>\u003Cpath d=\\\"M83.456 63.947c0 2.027-.77 4.054-2.316 5.6l-55.98 55.98a7.92 7.92 0 01-11.196 0c-3.085-3.086-3.092-8.105 0-11.196L64.344 63.95 13.963 13.567a7.92 7.92 0 010-11.195c3.086-3.085 8.105-3.092 11.196 0l55.98 55.98a7.892 7.892 0 012.317 5.595z\\\"/>\u003Cpath d=\\\"M122.069 63.947c0 2.027-.77 4.054-2.316 5.6l-55.98 55.98a7.92 7.92 0 01-11.196 0c-3.085-3.086-3.092-8.105 0-11.196l50.382-50.382-50.382-50.382a7.92 7.92 0 010-11.195c3.086-3.085 8.104-3.092 11.196 0l55.98 55.98a7.892 7.892 0 012.316 5.595z\\\"/>\"},\"$:/core/images/chevron-up\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-chevron-up tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cg fill-rule=evenodd>\u003Cpath d=\\\"M63.947 44.544c2.027 0 4.054.77 5.6 2.316l55.98 55.98a7.92 7.92 0 010 11.196c-3.086 3.085-8.105 3.092-11.196 0L63.95 63.656l-50.382 50.382a7.92 7.92 0 01-11.195 0c-3.085-3.086-3.092-8.105 0-11.196l55.98-55.98a7.892 7.892 0 015.595-2.317z\\\"/>\u003Cpath d=\\\"M63.947 5.931c2.027 0 4.054.77 5.6 2.316l55.98 55.98a7.92 7.92 0 010 11.196c-3.086 3.085-8.105 3.092-11.196 0L63.95 25.041 13.567 75.423a7.92 7.92 0 01-11.195 0c-3.085-3.086-3.092-8.104 0-11.196l55.98-55.98a7.892 7.892 0 015.595-2.316z\\\"/>\"},\"$:/core/images/clone-button\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-clone-button tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cg fill-rule=evenodd>\u003Cpath d=\\\"M32.265 96v24.002A7.996 7.996 0 0040.263 128h79.74a7.996 7.996 0 007.997-7.998v-79.74a7.996 7.996 0 00-7.998-7.997H96V48h12.859a2.99 2.99 0 012.994 2.994v57.865a2.99 2.99 0 01-2.994 2.994H50.994A2.99 2.99 0 0148 108.859V96H32.265z\\\"/>\u003Cpath d=\\\"M40 56h-7.993C27.588 56 24 52.418 24 48c0-4.41 3.585-8 8.007-8H40v-7.993C40 27.588 43.582 24 48 24c4.41 0 8 3.585 8 8.007V40h7.993C68.412 40 72 43.582 72 48c0 4.41-3.585 8-8.007 8H56v7.993C56 68.412 52.418 72 48 72c-4.41 0-8-3.585-8-8.007V56zM8 0C3.58 0 0 3.588 0 8v80c0 4.419 3.588 8 8 8h80c4.419 0 8-3.588 8-8V8c0-4.419-3.588-8-8-8H8zM19 16A2.997 2.997 0 0016 19.001v57.998A2.997 2.997 0 0019.001 80h57.998A2.997 2.997 0 0080 76.999V19.001A2.997 2.997 0 0076.999 16H19.001z\\\"/>\"},\"$:/core/images/close-all-button\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-close-all-button tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cg fill-rule=evenodd>\u003Cpath d=\\\"M28 111.314l-14.144 14.143a8 8 0 01-11.313-11.313L16.686 100 2.543 85.856a8 8 0 0111.313-11.313L28 88.686l14.144-14.143a8 8 0 0111.313 11.313L39.314 100l14.143 14.144a8 8 0 01-11.313 11.313L28 111.314zM28 39.314L13.856 53.457A8 8 0 012.543 42.144L16.686 28 2.543 13.856A8 8 0 0113.856 2.543L28 16.686 42.144 2.543a8 8 0 0111.313 11.313L39.314 28l14.143 14.144a8 8 0 01-11.313 11.313L28 39.314zM100 39.314L85.856 53.457a8 8 0 01-11.313-11.313L88.686 28 74.543 13.856A8 8 0 0185.856 2.543L100 16.686l14.144-14.143a8 8 0 0111.313 11.313L111.314 28l14.143 14.144a8 8 0 01-11.313 11.313L100 39.314zM100 111.314l-14.144 14.143a8 8 0 01-11.313-11.313L88.686 100 74.543 85.856a8 8 0 0111.313-11.313L100 88.686l14.144-14.143a8 8 0 0111.313 11.313L111.314 100l14.143 14.144a8 8 0 01-11.313 11.313L100 111.314z\\\"/>\"},\"$:/core/images/close-button\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-close-button tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cpath d=\\\"M65.086 75.41l-50.113 50.113c-3.121 3.121-8.192 3.126-11.316.002-3.118-3.118-3.123-8.19.002-11.316l50.114-50.114L3.659 13.982C.538 10.86.533 5.79 3.657 2.666c3.118-3.118 8.19-3.123 11.316.002l50.113 50.114L115.2 2.668c3.121-3.121 8.192-3.126 11.316-.002 3.118 3.118 3.123 8.19-.002 11.316L76.4 64.095l50.114 50.114c3.121 3.121 3.126 8.192.002 11.316-3.118 3.118-8.19 3.123-11.316-.002L65.086 75.409z\\\"fill-rule=evenodd/>\"},\"$:/core/images/close-others-button\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-close-others-button tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cpath d=\\\"M64 128c35.346 0 64-28.654 64-64 0-35.346-28.654-64-64-64C28.654 0 0 28.654 0 64c0 35.346 28.654 64 64 64zm0-16c26.51 0 48-21.49 48-48S90.51 16 64 16 16 37.49 16 64s21.49 48 48 48zm0-16c17.673 0 32-14.327 32-32 0-17.673-14.327-32-32-32-17.673 0-32 14.327-32 32 0 17.673 14.327 32 32 32zm0-16c8.837 0 16-7.163 16-16s-7.163-16-16-16-16 7.163-16 16 7.163 16 16 16z\\\"fill-rule=evenodd/>\"},\"$:/core/images/copy-clipboard\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-copy-clipboard tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cg fill-rule=evenodd>\u003Crect width=33 height=8 x=40 y=40 rx=4/>\u003Crect width=17 height=8 x=40 y=82 rx=4/>\u003Crect width=17 height=8 x=40 y=54 rx=4/>\u003Crect width=33 height=8 x=40 y=96 rx=4/>\u003Crect width=12 height=8 x=40 y=68 rx=4/>\u003Cpath d=\\\"M40 16H24c-4.419 0-8 3.59-8 8a8.031 8.031 0 000 .01v95.98a8.03 8.03 0 000 .01c0 4.41 3.581 8 8 8h80a7.975 7.975 0 005.652-2.34 7.958 7.958 0 002.348-5.652v-16.016c0-4.414-3.582-7.992-8-7.992-4.41 0-8 3.578-8 7.992V112H32V32h64v8.008C96 44.422 99.582 48 104 48c4.41 0 8-3.578 8-7.992V23.992a7.963 7.963 0 00-2.343-5.651A7.995 7.995 0 00104.001 16H88c0-4.41-3.585-8-8.007-8H48.007C43.588 8 40 11.582 40 16zm4-1.004A4.001 4.001 0 0148 11h32c2.21 0 4 1.797 4 3.996v4.008A4.001 4.001 0 0180 23H48c-2.21 0-4-1.797-4-3.996v-4.008z\\\"/>\u003Crect width=66 height=16 x=62 y=64 rx=8/>\u003Cpath d=\\\"M84.657 82.343l-16-16v11.314l16-16a8 8 0 10-11.314-11.314l-16 16a8 8 0 000 11.314l16 16a8 8 0 1011.314-11.314z\\\"/>\"},\"$:/core/images/delete-button\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-delete-button tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cg fill-rule=evenodd transform=translate(12)>\u003Crect width=105 height=16 y=11 rx=8/>\u003Crect width=48 height=16 x=28 rx=8/>\u003Crect width=16 height=112 x=8 y=16 rx=8/>\u003Crect width=88 height=16 x=8 y=112 rx=8/>\u003Crect width=16 height=112 x=80 y=16 rx=8/>\u003Crect width=16 height=112 x=56 y=16 rx=8/>\u003Crect width=16 height=112 x=32 y=16 rx=8/>\"},\"$:/core/images/done-button\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-done-button tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cpath d=\\\"M42.26 111.032c-2.051.001-4.103-.78-5.668-2.345L2.662 74.758a8 8 0 01-.005-11.32c3.118-3.117 8.192-3.12 11.32.007l28.278 28.278 72.124-72.124a8.002 8.002 0 0111.314-.001c3.118 3.118 3.124 8.19 0 11.315l-77.78 77.78a7.978 7.978 0 01-5.658 2.343z\\\"fill-rule=evenodd/>\"},\"$:/core/images/down-arrow\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-down-arrow tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cpath d=\\\"M64.177 100.069a7.889 7.889 0 01-5.6-2.316l-55.98-55.98a7.92 7.92 0 010-11.196c3.086-3.085 8.105-3.092 11.196 0l50.382 50.382 50.382-50.382a7.92 7.92 0 0111.195 0c3.086 3.086 3.092 8.104 0 11.196l-55.98 55.98a7.892 7.892 0 01-5.595 2.316z\\\"/>\"},\"$:/core/images/download-button\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-download-button tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cg fill-rule=evenodd>\u003Cpath d=\\\"M64 128c35.346 0 64-28.654 64-64 0-35.346-28.654-64-64-64C28.654 0 0 28.654 0 64c0 35.346 28.654 64 64 64zm0-16c26.51 0 48-21.49 48-48S90.51 16 64 16 16 37.49 16 64s21.49 48 48 48z\\\"class=tc-image-download-button-ring/>\u003Cpath d=\\\"M34.35 66.43l26.892 27.205a4.57 4.57 0 006.516 0L94.65 66.43a4.7 4.7 0 000-6.593 4.581 4.581 0 00-3.258-1.365h-8.46c-2.545 0-4.608-2.087-4.608-4.661v-15.15c0-2.575-2.063-4.662-4.608-4.662H55.284c-2.545 0-4.608 2.087-4.608 4.662v15.15c0 2.574-2.063 4.661-4.608 4.661h-8.46c-2.545 0-4.608 2.087-4.608 4.662a4.69 4.69 0 001.35 3.296z\\\"/>\"},\"$:/core/images/edit-button\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-edit-button tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cg fill-rule=evenodd>\u003Cpath d=\\\"M95.627 10.059l-5.656 5.657 11.313 11.313 5.657-5.656-11.314-11.314zm5.657-5.657l1.966-1.966c3.123-3.122 8.194-3.129 11.319-.005 3.117 3.118 3.122 8.192-.005 11.32l-1.966 1.965-11.314-11.314zm-16.97 16.97l-60.25 60.25a8.12 8.12 0 00-.322.342c-.1.087-.198.179-.295.275-5.735 5.735-10.702 22.016-10.702 22.016s16.405-5.09 22.016-10.702c.095-.096.186-.193.272-.292a8.12 8.12 0 00.345-.325l60.25-60.25-11.314-11.313zM35.171 124.19c6.788-.577 13.898-2.272 23.689-5.348 1.825-.573 3.57-1.136 6.336-2.04 16-5.226 21.877-6.807 28.745-7.146 8.358-.413 13.854 2.13 17.58 8.699a4 4 0 006.959-3.946c-5.334-9.406-13.745-13.296-24.933-12.744-7.875.39-14.057 2.052-30.835 7.533-2.739.894-4.46 1.45-6.25 2.012-19.46 6.112-30.77 7.072-39.597 1.747a4 4 0 10-4.132 6.85c6.333 3.82 13.754 5.12 22.438 4.383z\\\"/>\"},\"$:/core/images/erase\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-erase tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cpath d=\\\"M60.087 127.996l63.015-63.015c6.535-6.535 6.528-17.115-.003-23.646L99.466 17.702c-6.539-6.538-17.117-6.532-23.646-.003L4.898 88.62c-6.535 6.534-6.528 17.115.003 23.646l15.73 15.73h39.456zm-34.95-7.313l-14.324-14.325c-3.267-3.268-3.268-8.564-.008-11.824L46.269 59.07l35.462 35.462-26.15 26.15H25.137z\\\"fill-rule=evenodd/>\"},\"$:/core/images/excise\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-excise tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cpath d=\\\"M56 107.314l-2.343 2.343a8 8 0 11-11.314-11.314l16-16a8 8 0 0111.314 0l16 16a8 8 0 11-11.314 11.314L72 107.314v14.284c0 3.536-3.582 6.402-8 6.402s-8-2.866-8-6.402v-14.284zM0 40.007C0 35.585 3.59 32 8 32c4.418 0 8 3.588 8 8.007v31.986C16 76.415 12.41 80 8 80c-4.418 0-8-3.588-8-8.007V40.007zm32 0C32 35.585 35.59 32 40 32c4.418 0 8 3.588 8 8.007v31.986C48 76.415 44.41 80 40 80c-4.418 0-8-3.588-8-8.007V40.007zm48 0C80 35.585 83.59 32 88 32c4.418 0 8 3.588 8 8.007v31.986C96 76.415 92.41 80 88 80c-4.418 0-8-3.588-8-8.007V40.007zm-24-32C56 3.585 59.59 0 64 0c4.418 0 8 3.588 8 8.007v31.986C72 44.415 68.41 48 64 48c-4.418 0-8-3.588-8-8.007V8.007zm56 32c0-4.422 3.59-8.007 8-8.007 4.418 0 8 3.588 8 8.007v31.986c0 4.422-3.59 8.007-8 8.007-4.418 0-8-3.588-8-8.007V40.007z\\\"fill-rule=evenodd/>\"},\"$:/core/images/export-button\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-export-button tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cpath d=\\\"M8.003 128H119.993a7.984 7.984 0 005.664-2.349v.007A7.975 7.975 0 00128 120V56c0-4.418-3.59-8-8-8-4.418 0-8 3.58-8 8v56H16V56c0-4.418-3.59-8-8-8-4.418 0-8 3.58-8 8v64c0 4.418 3.59 8 8 8h.003zm48.62-100.689l-8.965 8.966c-3.125 3.125-8.195 3.13-11.319.005-3.118-3.118-3.122-8.192.005-11.319L58.962 2.346A7.986 7.986 0 0164.625 0l-.006.002c2.05-.001 4.102.78 5.666 2.344l22.618 22.617c3.124 3.125 3.129 8.195.005 11.319-3.118 3.118-8.192 3.122-11.319-.005l-8.965-8.966v61.256c0 4.411-3.582 8-8 8-4.41 0-8-3.582-8-8V27.311z\\\"fill-rule=evenodd/>\"},\"$:/core/images/file\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-file tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cpath d=\\\"M111.968 30.5H112V120a8 8 0 01-8 8H24a8 8 0 01-8-8V8a8 8 0 018-8h57v.02a7.978 7.978 0 015.998 2.337l22.627 22.627a7.975 7.975 0 012.343 5.516zM81 8H24v112h80V30.5H89c-4.418 0-8-3.578-8-8V8z\\\"/>\u003Crect width=64 height=8 x=32 y=36 rx=4/>\u003Crect width=64 height=8 x=32 y=52 rx=4/>\u003Crect width=64 height=8 x=32 y=68 rx=4/>\u003Crect width=64 height=8 x=32 y=84 rx=4/>\u003Crect width=64 height=8 x=32 y=100 rx=4/>\u003Crect width=40 height=8 x=32 y=20 rx=4/>\"},\"$:/core/images/fixed-height\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-fixed-height tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cpath d=\\\"M60 35.657l-9.172 9.171a4 4 0 11-5.656-5.656l16-16a4 4 0 015.656 0l16 16a4 4 0 01-5.656 5.656L68 35.657v57.686l9.172-9.171a4 4 0 115.656 5.656l-16 16a4 4 0 01-5.656 0l-16-16a4 4 0 115.656-5.656L60 93.343V35.657zM16 116h96a4 4 0 100-8H16a4 4 0 100 8zm0-96h96a4 4 0 100-8H16a4 4 0 100 8z\\\"fill-rule=evenodd/>\"},\"$:/core/images/fold-all-button\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-fold-all tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cg fill-rule=evenodd>\u003Crect width=128 height=16 rx=8/>\u003Crect width=128 height=16 y=64 rx=8/>\u003Cpath d=\\\"M64.03 20.004c-2.05 0-4.102.78-5.667 2.344L35.746 44.966c-3.125 3.124-3.13 8.194-.005 11.318 3.118 3.118 8.192 3.122 11.319-.005l16.965-16.965 16.966 16.965c3.124 3.125 8.194 3.13 11.318.005 3.118-3.118 3.122-8.191-.005-11.318L69.687 22.348a7.986 7.986 0 00-5.663-2.346zM64.03 85.002c-2.05-.001-4.102.78-5.667 2.344l-22.617 22.617c-3.125 3.125-3.13 8.195-.005 11.319 3.118 3.118 8.192 3.122 11.319-.005l16.965-16.966 16.966 16.966c3.124 3.125 8.194 3.13 11.318.005 3.118-3.118 3.122-8.192-.005-11.319L69.687 87.346A7.986 7.986 0 0064.024 85z\\\"/>\"},\"$:/core/images/fold-button\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-fold tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cg fill-rule=evenodd>\u003Crect width=128 height=16 rx=8/>\u003Cpath d=\\\"M64.03 25.004c-2.05 0-4.102.78-5.667 2.344L35.746 49.966c-3.125 3.124-3.13 8.194-.005 11.318 3.118 3.118 8.192 3.122 11.319-.005l16.965-16.965 16.966 16.965c3.124 3.125 8.194 3.13 11.318.005 3.118-3.118 3.122-8.191-.005-11.318L69.687 27.348a7.986 7.986 0 00-5.663-2.346zM64.005 67.379c-2.05 0-4.102.78-5.666 2.344L35.722 92.34c-3.125 3.125-3.13 8.195-.006 11.32 3.118 3.117 8.192 3.121 11.32-.006L64 86.69l16.965 16.965c3.125 3.125 8.195 3.13 11.319.005 3.118-3.118 3.122-8.192-.005-11.319L69.663 69.723A7.986 7.986 0 0064 67.377z\\\"/>\"},\"$:/core/images/fold-others-button\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-fold-others tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cg fill-rule=evenodd>\u003Crect width=128 height=16 y=56.031 rx=8/>\u003Cpath d=\\\"M86.632 79.976c-2.05 0-4.102.78-5.666 2.345L64 99.286 47.034 82.321a7.986 7.986 0 00-5.662-2.346l.005.001c-2.05 0-4.102.78-5.666 2.345l-22.618 22.617c-3.124 3.125-3.129 8.195-.005 11.319 3.118 3.118 8.192 3.122 11.319-.005l16.966-16.966 16.965 16.966a7.986 7.986 0 005.663 2.346l-.005-.002c2.05 0 4.102-.78 5.666-2.344l16.965-16.966 16.966 16.966c3.125 3.124 8.194 3.129 11.319.005 3.118-3.118 3.122-8.192-.005-11.319L92.289 82.321a7.986 7.986 0 00-5.663-2.346zM86.7 48.024c-2.05 0-4.102-.78-5.666-2.345L64.07 28.714 47.103 45.679a7.986 7.986 0 01-5.663 2.346l.005-.001c-2.05 0-4.101-.78-5.666-2.345L13.162 23.062c-3.125-3.125-3.13-8.195-.005-11.319 3.118-3.118 8.192-3.122 11.319.005L41.44 28.714l16.966-16.966a7.986 7.986 0 015.662-2.346l-.005.002c2.05 0 4.102.78 5.666 2.344l16.966 16.966 16.966-16.966c3.124-3.124 8.194-3.129 11.318-.005 3.118 3.118 3.122 8.192-.005 11.319L92.358 45.679a7.986 7.986 0 01-5.663 2.346z\\\"/>\"},\"$:/core/images/folder\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-folder tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cg fill-rule=evenodd>\u003Cpath d=\\\"M55.694 128H8C3.58 128 0 124.414 0 119.996V48.004C0 43.584 3.584 40 7.999 40H16v-8c0-4.418 3.578-8 8-8h32a8 8 0 018 8v8h40.001c4.418 0 7.999 3.586 7.999 8.004V59.83l-8-.082v-7.749A4 4 0 0099.997 48H56V36c0-2.21-1.793-4-4.004-4H28.004A4 4 0 0024 36v12H12.003A4 4 0 008 52v64a4 4 0 004.003 4h46.76l-3.069 8z\\\"/>\u003Cpath d=\\\"M23.873 55.5h96.003c4.417 0 7.004 4.053 5.774 9.063l-13.344 54.374c-1.228 5.005-5.808 9.063-10.223 9.063H6.08c-4.417 0-7.003-4.053-5.774-9.063L13.65 64.563c1.228-5.005 5.808-9.063 10.223-9.063zm1.78 8.5h87.994c2.211 0 3.504 2.093 2.891 4.666l-11.12 46.668c-.614 2.577-2.902 4.666-5.115 4.666H12.31c-2.211 0-3.504-2.093-2.891-4.666l11.12-46.668C21.152 66.09 23.44 64 25.653 64z\\\"/>\"},\"$:/core/images/full-screen-button\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-full-screen-button tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cpath d=\\\"M0 8a8 8 0 018-8h32a8 8 0 110 16H16v24a8 8 0 11-16 0V8zM128 120a8 8 0 01-8 8H88a8 8 0 110-16h24V88a8 8 0 1116 0v32zM8 128a8 8 0 01-8-8V88a8 8 0 1116 0v24h24a8 8 0 110 16H8zM120 0a8 8 0 018 8v32a8 8 0 11-16 0V16H88a8 8 0 110-16h32z\\\"/>\"},\"$:/core/images/github\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-github tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cpath d=\\\"M63.938 1.607c-35.336 0-63.994 28.69-63.994 64.084 0 28.312 18.336 52.329 43.768 60.802 3.202.59 4.37-1.388 4.37-3.088 0-1.518-.056-5.55-.087-10.897-17.802 3.871-21.558-8.591-21.558-8.591-2.911-7.404-7.108-9.375-7.108-9.375-5.81-3.973.44-3.895.44-3.895 6.424.453 9.803 6.606 9.803 6.606 5.709 9.791 14.981 6.963 18.627 5.322.582-4.138 2.236-6.963 4.063-8.564-14.211-1.617-29.153-7.117-29.153-31.672 0-6.995 2.495-12.718 6.589-17.195-.66-1.621-2.856-8.14.629-16.96 0 0 5.37-1.722 17.597 6.57 5.104-1.424 10.58-2.132 16.022-2.16 5.438.028 10.91.736 16.022 2.16 12.22-8.292 17.582-6.57 17.582-6.57 3.493 8.82 1.297 15.339.64 16.96 4.102 4.477 6.578 10.2 6.578 17.195 0 24.618-14.966 30.035-29.22 31.62 2.295 1.98 4.342 5.89 4.342 11.87 0 8.564-.079 15.476-.079 17.576 0 1.715 1.155 3.71 4.4 3.084 25.413-8.493 43.733-32.494 43.733-60.798 0-35.394-28.657-64.084-64.006-64.084\\\"fill-rule=evenodd/>\"},\"$:/core/images/gitter\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-gitter tc-image-button\\\"viewBox=\\\"0 0 18 25\\\"height=22pt>\u003Cpath d=\\\"M15 5h2v10h-2zM10 5h2v20h-2zM5 5h2v20H5zM0 0h2v15H0z\\\"/>\"},\"$:/core/images/globe\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-globe tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cg fill-rule=evenodd>\u003Cpath d=\\\"M72.811 37.128v2.554c0 2.196.978 6.881 0 8.832-1.466 2.928-4.65 3.54-6.394 5.867-1.182 1.577-4.618 10.601-3.69 12.92 3.969 9.922 11.534 3.187 17.962 9.293.864.821 2.887 2.273 3.296 3.296 3.29 8.223-7.576 15.009 3.757 26.3 1.245 1.24 3.813-3.817 4.079-4.614.852-2.563 6.725-5.45 9.088-7.053 2.02-1.37 4.873-2.667 6.328-4.745 2.27-3.244 1.48-7.514 3.098-10.745 2.139-4.274 3.828-9.635 5.998-13.966 3.898-7.781 4.721 2.093 5.067 2.439.358.357 1.011 0 1.517 0 .094 0 1.447.099 1.516 0 .65-.935-1.043-17.92-1.318-19.297-1.404-7.01-6.944-15.781-11.865-20.5-6.274-6.015-7.09-16.197-18.259-14.954-.204.022-5.084 10.148-7.777 13.512-3.728 4.657-2.47-4.153-6.526-4.153-.081 0-1.183-.103-1.253 0-.586.88-1.44 3.896-2.306 4.417-.265.16-1.722-.239-1.846 0-2.243 4.3 8.256 2.212 5.792 7.952-2.352 5.481-6.328-1.997-6.328 8.56M44.467 7.01c9.685 6.13.682 12.198 2.694 16.215 1.655 3.303 4.241 5.395 1.714 9.814-2.063 3.608-6.87 3.966-9.623 6.723-3.04 3.044-5.464 8.94-6.79 12.911-1.617 4.843 14.547 6.866 12.063 11.008-1.386 2.311-6.746 1.466-8.437.198-1.165-.873-3.593-.546-4.417-1.78-2.613-3.915-2.26-8.023-3.625-12.128-.938-2.822-6.313-2.12-7.844-.593-.523.522-.33 1.792-.33 2.505 0 5.285 7.12 3.316 7.12 6.46 0 14.636 3.927 6.534 11.14 11.336 10.036 6.683 7.844 7.303 14.946 14.404 3.673 3.673 7.741 3.686 9.425 9.294 1.602 5.331-9.327 5.339-11.716 7.448-1.123.991-2.813 4.146-4.219 4.615-1.792.598-3.234.496-4.944 1.78-2.427 1.82-3.9 4.932-4.02 4.81-2.148-2.147-3.52-15.479-3.89-18.257-.588-4.42-5.59-5.54-6.986-9.03-1.57-3.927 1.524-9.52-1.129-13.761-6.52-10.424-11.821-14.5-15.35-26.292-.942-3.148 3.342-6.529 4.877-8.833 1.877-2.816 2.662-5.854 4.746-8.635C22.147 24.19 40.855 9.461 43.857 8.635l.61-1.625z\\\"/>\u003Cpath d=\\\"M64 126c34.242 0 62-27.758 62-62 0-34.242-27.758-62-62-62C29.758 2 2 29.758 2 64c0 34.242 27.758 62 62 62zm0-6c30.928 0 56-25.072 56-56S94.928 8 64 8 8 33.072 8 64s25.072 56 56 56z\\\"/>\"},\"$:/core/images/heading-1\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-heading-1 tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cpath d=\\\"M14 30h13.25v30.104H61.7V30h13.25v75.684H61.7V71.552H27.25v34.132H14V30zm70.335 13.78c2.544 0 5.017-.212 7.42-.636 2.403-.424 4.576-1.13 6.52-2.12 1.942-.99 3.603-2.261 4.981-3.816 1.378-1.555 2.28-3.463 2.703-5.724h9.858v74.2h-13.25V53.32H84.335v-9.54z\\\"fill-rule=evenodd/>\"},\"$:/core/images/heading-2\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-heading-2 tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cpath d=\\\"M6 30h13.25v30.104H53.7V30h13.25v75.684H53.7V71.552H19.25v34.132H6V30zm119.52 75.684H74.85c.07-6.148 1.555-11.519 4.452-16.112 2.897-4.593 6.855-8.586 11.872-11.978a133.725 133.725 0 017.526-5.141 59.6 59.6 0 007.208-5.353c2.19-1.908 3.993-3.975 5.406-6.201 1.413-2.226 2.155-4.788 2.226-7.685 0-1.343-.159-2.774-.477-4.293a11.357 11.357 0 00-1.855-4.24c-.919-1.307-2.19-2.403-3.816-3.286-1.625-.883-3.745-1.325-6.36-1.325-2.403 0-4.399.477-5.989 1.431-1.59.954-2.862 2.261-3.816 3.922-.954 1.66-1.66 3.622-2.12 5.883-.46 2.261-.724 4.7-.795 7.314H76.23c0-4.099.548-7.897 1.643-11.395 1.095-3.498 2.738-6.519 4.93-9.063 2.19-2.544 4.857-4.54 8.002-5.989C93.95 30.724 97.606 30 101.775 30c4.523 0 8.303.742 11.342 2.226 3.039 1.484 5.494 3.357 7.367 5.618 1.873 2.261 3.198 4.717 3.975 7.367.777 2.65 1.166 5.176 1.166 7.579 0 2.968-.46 5.653-1.378 8.056a25.942 25.942 0 01-3.71 6.625 37.5 37.5 0 01-5.3 5.565 79.468 79.468 0 01-6.148 4.77 165.627 165.627 0 01-6.36 4.24 94.28 94.28 0 00-5.883 4.028c-1.802 1.343-3.374 2.738-4.717 4.187-1.343 1.449-2.261 2.986-2.756 4.611h36.146v10.812z\\\"fill-rule=evenodd/>\"},\"$:/core/images/heading-3\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-heading-3 tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cpath d=\\\"M6 30h13.25v30.104H53.7V30h13.25v75.684H53.7V71.552H19.25v34.132H6V30zm88.885 32.224c1.979.07 3.957-.07 5.936-.424 1.979-.353 3.745-.972 5.3-1.855a10.365 10.365 0 003.763-3.657c.954-1.555 1.431-3.463 1.431-5.724 0-3.18-1.078-5.724-3.233-7.632-2.155-1.908-4.929-2.862-8.32-2.862-2.12 0-3.958.424-5.513 1.272a11.318 11.318 0 00-3.869 3.445c-1.025 1.449-1.784 3.074-2.279 4.876a18.335 18.335 0 00-.636 5.565H75.381c.141-3.604.813-6.943 2.014-10.017 1.201-3.074 2.844-5.742 4.93-8.003 2.084-2.261 4.61-4.028 7.578-5.3C92.871 30.636 96.228 30 99.973 30a29.2 29.2 0 018.533 1.272c2.791.848 5.3 2.085 7.526 3.71s4.01 3.692 5.353 6.201c1.343 2.509 2.014 5.388 2.014 8.639 0 3.745-.848 7.014-2.544 9.805-1.696 2.791-4.346 4.823-7.95 6.095v.212c4.24.848 7.544 2.95 9.911 6.307s3.551 7.438 3.551 12.243c0 3.533-.707 6.696-2.12 9.487a21.538 21.538 0 01-5.724 7.102c-2.403 1.943-5.194 3.445-8.374 4.505-3.18 1.06-6.537 1.59-10.07 1.59-4.31 0-8.074-.618-11.289-1.855s-5.9-2.986-8.056-5.247c-2.155-2.261-3.798-4.982-4.929-8.162-1.13-3.18-1.731-6.713-1.802-10.6h12.084c-.141 4.523.972 8.286 3.34 11.289 2.366 3.003 5.917 4.505 10.652 4.505 4.028 0 7.402-1.148 10.123-3.445 2.72-2.297 4.081-5.565 4.081-9.805 0-2.897-.565-5.194-1.696-6.89a10.97 10.97 0 00-4.452-3.869c-1.837-.883-3.904-1.431-6.2-1.643a58.067 58.067 0 00-7.05-.212v-9.01z\\\"fill-rule=evenodd/>\"},\"$:/core/images/heading-4\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-heading-4 tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cpath d=\\\"M8 30h13.25v30.104H55.7V30h13.25v75.684H55.7V71.552H21.25v34.132H8V30zm76.59 48.548h22.471V45.9h-.212L84.59 78.548zm43.46 9.54h-9.54v17.596H107.06V88.088h-31.8V76.11l31.8-44.626h11.448v47.064h9.54v9.54z\\\"fill-rule=evenodd/>\"},\"$:/core/images/heading-5\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-heading-5 tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cpath d=\\\"M6 30h13.25v30.104H53.7V30h13.25v75.684H53.7V71.552H19.25v34.132H6V30zm77.755 1.484h38.372v10.812H92.765L88.95 61.164l.212.212c1.625-1.837 3.692-3.233 6.201-4.187 2.509-.954 5-1.431 7.473-1.431 3.675 0 6.96.618 9.858 1.855 2.897 1.237 5.335 2.968 7.314 5.194s3.48 4.858 4.505 7.897c1.025 3.039 1.537 6.325 1.537 9.858 0 2.968-.477 6.024-1.43 9.169a25.161 25.161 0 01-4.559 8.586c-2.085 2.58-4.752 4.7-8.003 6.36-3.25 1.66-7.137 2.491-11.66 2.491-3.604 0-6.943-.477-10.017-1.431-3.074-.954-5.777-2.385-8.109-4.293-2.332-1.908-4.187-4.258-5.565-7.049-1.378-2.791-2.138-6.06-2.279-9.805h12.084c.353 4.028 1.731 7.12 4.134 9.275 2.403 2.155 5.583 3.233 9.54 3.233 2.544 0 4.7-.424 6.466-1.272 1.767-.848 3.198-2.014 4.293-3.498 1.095-1.484 1.873-3.215 2.332-5.194.46-1.979.69-4.099.69-6.36 0-2.05-.284-4.01-.849-5.883-.565-1.873-1.413-3.516-2.544-4.929-1.13-1.413-2.597-2.544-4.399-3.392-1.802-.848-3.904-1.272-6.307-1.272-2.544 0-4.929.477-7.155 1.431-2.226.954-3.834 2.738-4.823 5.353H75.805l7.95-40.598z\\\"fill-rule=evenodd/>\"},\"$:/core/images/heading-6\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-heading-6 tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cpath d=\\\"M6 30h13.25v30.104H53.7V30h13.25v75.684H53.7V71.552H19.25v34.132H6V30zm106.587 20.246c-.283-3.039-1.36-5.494-3.233-7.367-1.873-1.873-4.399-2.809-7.579-2.809-2.19 0-4.08.406-5.67 1.219a12.435 12.435 0 00-4.029 3.233c-1.095 1.343-1.979 2.88-2.65 4.611a37.696 37.696 0 00-1.643 5.459 46.08 46.08 0 00-.9 5.671 722.213 722.213 0 00-.478 5.247l.212.212c1.625-2.968 3.87-5.176 6.731-6.625 2.862-1.449 5.954-2.173 9.275-2.173 3.675 0 6.96.636 9.858 1.908 2.897 1.272 5.353 3.021 7.367 5.247 2.014 2.226 3.551 4.858 4.611 7.897 1.06 3.039 1.59 6.325 1.59 9.858 0 3.604-.583 6.943-1.749 10.017-1.166 3.074-2.844 5.76-5.035 8.056-2.19 2.297-4.805 4.081-7.844 5.353-3.039 1.272-6.395 1.908-10.07 1.908-5.441 0-9.91-1.007-13.409-3.021-3.498-2.014-6.254-4.77-8.268-8.268-2.014-3.498-3.41-7.597-4.187-12.296-.777-4.7-1.166-9.77-1.166-15.211 0-4.452.477-8.94 1.431-13.462.954-4.523 2.526-8.639 4.717-12.349 2.19-3.71 5.07-6.731 8.64-9.063C92.676 31.166 97.075 30 102.304 30c2.968 0 5.76.495 8.374 1.484 2.615.99 4.93 2.367 6.943 4.134 2.014 1.767 3.657 3.887 4.93 6.36 1.271 2.473 1.978 5.23 2.12 8.268h-12.085zm-11.66 46.852c2.19 0 4.099-.442 5.724-1.325a12.869 12.869 0 004.081-3.445c1.095-1.413 1.908-3.056 2.438-4.929.53-1.873.795-3.798.795-5.777s-.265-3.887-.795-5.724c-.53-1.837-1.343-3.445-2.438-4.823-1.095-1.378-2.456-2.491-4.08-3.339-1.626-.848-3.534-1.272-5.725-1.272-2.19 0-4.116.406-5.777 1.219-1.66.813-3.056 1.908-4.187 3.286-1.13 1.378-1.979 2.986-2.544 4.823-.565 1.837-.848 3.78-.848 5.83 0 2.05.283 3.993.848 5.83.565 1.837 1.413 3.48 2.544 4.929a12.39 12.39 0 004.187 3.445c1.66.848 3.586 1.272 5.777 1.272z\\\"fill-rule=evenodd/>\"},\"$:/core/images/help\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-help tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cpath d=\\\"M36.055 111.441c-5.24 4.396-15.168 7.362-26.555 7.362-1.635 0-3.24-.06-4.806-.179 7.919-2.64 14.062-8.6 16.367-16.014C8.747 92.845 1.05 78.936 1.05 63.5c0-29.547 28.206-53.5 63-53.5s63 23.953 63 53.5-28.206 53.5-63 53.5c-10.055 0-19.56-2-27.994-5.559zm35.35-33.843a536.471 536.471 0 00.018-4.682 199.02 199.02 0 00-.023-3.042c.008-1.357.595-2.087 3.727-4.235.112-.077 1.085-.74 1.386-.948 3.093-2.133 5.022-3.786 6.762-6.187 2.34-3.228 3.558-7.077 3.558-11.649 0-13.292-9.86-21.952-21.455-21.952-11.103 0-22.499 9.609-24.066 22.295a6.023 6.023 0 1011.956 1.477c.806-6.527 6.972-11.726 12.11-11.726 5.265 0 9.408 3.64 9.408 9.906 0 3.634-1.1 5.153-5.111 7.919l-1.362.93c-2.682 1.84-4.227 3.1-5.7 4.931-2.109 2.62-3.242 5.717-3.258 9.314.013.892.02 1.86.022 2.981a470.766 470.766 0 01-.022 4.943 6.023 6.023 0 1012.046.12l.003-.395zm-6.027 24.499a7.529 7.529 0 100-15.058 7.529 7.529 0 000 15.058z\\\"fill-rule=evenodd/>\"},\"$:/core/images/home-button\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-home-button tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cpath d=\\\"M112.985 119.502c.01-.165.015-.331.015-.499V67.568c3.137 2.948 8.076 2.884 11.134-.174a7.999 7.999 0 00-.002-11.316L70.396 2.343A7.978 7.978 0 0064.734 0a7.957 7.957 0 00-5.656 2.343L33 28.42V8.007C33 3.585 29.41 0 25 0c-4.418 0-8 3.59-8 8.007V44.42L5.342 56.078c-3.125 3.125-3.12 8.198-.002 11.316a7.999 7.999 0 0011.316-.003l.344-.343v52.945a8.11 8.11 0 000 .007c0 4.418 3.588 8 8 8h80c4.419 0 8-3.59 8-8a8.11 8.11 0 00-.015-.498zM97 112V51.574L64.737 19.31 33 51.048V112h64z\\\"fill-rule=evenodd/>\"},\"$:/core/images/import-button\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-import-button tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cpath d=\\\"M114.832 60.436s3.235-3.27 6.921.417c3.686 3.686.231 7.14.231 7.14l-42.153 42.92s-30.765 32.367-58.798 4.333C-7 87.213 24.59 55.623 24.59 55.623L67.363 12.85s22.725-24.6 43.587-3.738c20.862 20.862-3.96 43.09-3.96 43.09l-35.04 35.04S49.903 112.546 36.426 99.07c-13.476-13.477 11.83-35.523 11.83-35.523l35.04-35.04s3.902-3.902 7.78-.023c3.879 3.878.118 7.921.118 7.921l-35.04 35.04s-13.212 13.212-8.872 17.551c4.34 4.34 16.77-9.653 16.77-9.653l35.04-35.04s16.668-14.598 3.966-27.3c-13.893-13.892-27.565 3.702-27.565 3.702l-42.91 42.91s-23.698 23.698-3.658 43.738 43.012-4.385 43.012-4.385l42.895-42.533z\\\"fill-rule=evenodd/>\"},\"$:/core/images/info-button\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-info-button tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cg fill-rule=evenodd transform=translate(.05)>\u003Cpath d=\\\"M64 128c35.346 0 64-28.654 64-64 0-35.346-28.654-64-64-64C28.654 0 0 28.654 0 64c0 35.346 28.654 64 64 64zm0-16c26.51 0 48-21.49 48-48S90.51 16 64 16 16 37.49 16 64s21.49 48 48 48z\\\"/>\u003Ccircle cx=64 cy=32 r=8/>\u003Crect width=16 height=56 x=56 y=48 rx=8/>\"},\"$:/core/images/italic\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-italic tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cpath d=\\\"M66.711 0h22.41L62.408 128H40z\\\"fill-rule=evenodd/>\"},\"$:/core/images/layout-button\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt height=22pt class=\\\"tc-image-layout-button tc-image-button\\\"viewBox=\\\"0 0 24 24\\\"stroke-width=1 stroke=none>\u003Cpath d=\\\"M0 0h24v24H0z\\\"fill=none/>\u003Crect x=2 y=2 width=7 height=7 rx=2/>\u003Crect x=2 y=13 width=7 height=9 rx=2/>\u003Crect x=12 y=2 width=10 height=20 rx=2/>\"},\"$:/core/images/left-arrow\":{\"created\":\"20150315234410875\",\"modified\":\"20150315235324760\",\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-left-arrow tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cpath d=\\\"M0 64.177c0-2.026.771-4.054 2.317-5.6l55.98-55.98a7.92 7.92 0 0111.195.001c3.086 3.085 3.092 8.104.001 11.195L19.111 64.175l50.382 50.382a7.92 7.92 0 010 11.195c-3.086 3.086-8.105 3.092-11.196.001l-55.98-55.98A7.892 7.892 0 010 64.177z\\\"/>\"},\"$:/core/images/line-width\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-line-width tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cpath d=\\\"M16 18h96a2 2 0 000-4H16a2 2 0 100 4zm0 17h96a4 4 0 100-8H16a4 4 0 100 8zm0 21h96a6 6 0 000-12H16a6 6 0 100 12zm0 29h96c5.523 0 10-4.477 10-10s-4.477-10-10-10H16c-5.523 0-10 4.477-10 10s4.477 10 10 10zm0 43h96c8.837 0 16-7.163 16-16s-7.163-16-16-16H16c-8.837 0-16 7.163-16 16s7.163 16 16 16z\\\"fill-rule=evenodd/>\"},\"$:/core/images/link\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-link tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cg fill-rule=evenodd>\u003Cpath d=\\\"M42.263 69.38a31.919 31.919 0 006.841 10.13c12.5 12.5 32.758 12.496 45.255 0l22.627-22.628c12.502-12.501 12.497-32.758 0-45.255-12.5-12.5-32.758-12.496-45.254 0L49.104 34.255a32.333 32.333 0 00-2.666 3.019 36.156 36.156 0 0121.94.334l14.663-14.663c6.25-6.25 16.382-6.254 22.632-.004 6.248 6.249 6.254 16.373-.004 22.631l-22.62 22.62c-6.25 6.25-16.381 6.254-22.631.004a15.93 15.93 0 01-4.428-8.433 11.948 11.948 0 00-7.59 3.48l-6.137 6.137z\\\"/>\u003Cpath d=\\\"M86.35 59.234a31.919 31.919 0 00-6.84-10.13c-12.5-12.5-32.758-12.497-45.255 0L11.627 71.732c-12.501 12.5-12.496 32.758 0 45.254 12.5 12.5 32.758 12.497 45.255 0L79.51 94.36a32.333 32.333 0 002.665-3.02 36.156 36.156 0 01-21.94-.333l-14.663 14.663c-6.25 6.25-16.381 6.253-22.63.004-6.25-6.249-6.255-16.374.003-22.632l22.62-22.62c6.25-6.25 16.381-6.253 22.631-.003a15.93 15.93 0 014.428 8.432 11.948 11.948 0 007.59-3.48l6.137-6.136z\\\"/>\"},\"$:/core/images/linkify\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-linkify-button tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cpath d=\\\"M17.031 31.919H9.048V96.85h7.983v6.92H0V25h17.031v6.919zm24.66 0h-7.983V96.85h7.983v6.92H24.66V25h17.03v6.919zM67.77 56.422l11.975-3.903 2.306 7.096-12.063 3.903 7.628 10.379-6.12 4.435-7.63-10.467-7.45 10.2-5.943-4.523L58.1 63.518 45.95 59.35l2.306-7.096 12.064 4.17V43.825h7.45v12.596zM86.31 96.85h7.982V31.92H86.31V25h17.031v78.77H86.31v-6.92zm24.659 0h7.983V31.92h-7.983V25H128v78.77h-17.031v-6.92z\\\"fill-rule=evenodd/>\"},\"$:/core/images/list-bullet\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-list-bullet tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cpath d=\\\"M11.636 40.273c6.427 0 11.637-5.21 11.637-11.637C23.273 22.21 18.063 17 11.636 17 5.21 17 0 22.21 0 28.636c0 6.427 5.21 11.637 11.636 11.637zm0 34.909c6.427 0 11.637-5.21 11.637-11.637 0-6.426-5.21-11.636-11.637-11.636C5.21 51.91 0 57.12 0 63.545c0 6.427 5.21 11.637 11.636 11.637zm0 34.909c6.427 0 11.637-5.21 11.637-11.636 0-6.427-5.21-11.637-11.637-11.637C5.21 86.818 0 92.028 0 98.455c0 6.426 5.21 11.636 11.636 11.636zM34.91 22.818H128v11.637H34.91V22.818zm0 34.91H128v11.636H34.91V57.727zm0 34.908H128v11.637H34.91V92.636z\\\"fill-rule=evenodd/>\"},\"$:/core/images/list-number\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-list-number tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cpath d=\\\"M33.84 22.356H128v11.77H33.84v-11.77zm0 35.31H128v11.77H33.84v-11.77zm0 35.311H128v11.77H33.84v-11.77zM.38 42.631v-2.223h.998c.826 0 1.445-.14 1.858-.42.413-.28.619-.948.619-2.002V22.769c0-1.442-.193-2.336-.58-2.683-.385-.347-1.477-.52-3.275-.52v-2.143c3.502-.147 6.252-.955 8.25-2.423h2.117v22.865c0 .921.15 1.575.449 1.963.3.387.949.58 1.948.58h.998v2.223H.38zm-.3 35.356v-1.902c7.19-6.554 10.786-12.58 10.786-18.08 0-1.562-.326-2.81-.979-3.744-.652-.934-1.524-1.402-2.616-1.402-.893 0-1.655.317-2.287.952-.633.634-.95 1.364-.95 2.192 0 .974.247 1.829.74 2.563.106.16.16.28.16.36 0 .147-.16.28-.48.4-.213.08-.752.308-1.618.681-.839.374-1.358.561-1.558.561-.24 0-.512-.37-.819-1.111A6.2 6.2 0 010 57.064c0-1.949.849-3.544 2.547-4.785 1.698-1.242 3.798-1.862 6.302-1.862 2.463 0 4.53.67 6.202 2.012 1.67 1.341 2.506 3.093 2.506 5.256a8.644 8.644 0 01-.849 3.724c-.566 1.201-1.92 3.053-4.064 5.556a165.471 165.471 0 01-6.272 6.938h11.445l-1.019 5.726h-2.117c.08-.28.12-.534.12-.76 0-.388-.1-.631-.3-.731-.2-.1-.599-.15-1.198-.15H.08zm12.124 19.207c1.745.04 3.236.637 4.474 1.792 1.239 1.154 1.858 2.773 1.858 4.855 0 2.99-1.132 5.393-3.396 7.208-2.263 1.815-5 2.723-8.209 2.723-2.01 0-3.669-.384-4.974-1.151C.652 111.853 0 110.849 0 109.607c0-.774.27-1.398.809-1.872.54-.474 1.128-.71 1.768-.71.639 0 1.162.2 1.568.6.406.4.782 1.055 1.128 1.962.466 1.268 1.239 1.902 2.317 1.902 1.265 0 2.287-.477 3.066-1.431.78-.955 1.169-2.686 1.169-5.196 0-1.709-.12-3.023-.36-3.944-.24-.921-.792-1.382-1.658-1.382-.586 0-1.185.307-1.797.921-.493.494-.932.741-1.319.741-.333 0-.602-.147-.809-.44-.206-.294-.31-.574-.31-.841 0-.32.104-.594.31-.821.207-.227.69-.594 1.449-1.102 2.876-1.922 4.314-4.017 4.314-6.287 0-1.188-.306-2.092-.919-2.713a3.001 3.001 0 00-2.217-.93c-.799 0-1.525.263-2.177.79-.653.528-.979 1.158-.979 1.892 0 .641.253 1.235.76 1.782.172.2.259.367.259.5 0 .121-.57.428-1.708.922-1.139.494-1.854.74-2.147.74-.413 0-.75-.333-1.009-1-.26-.668-.39-1.282-.39-1.842 0-1.749.93-3.224 2.787-4.425 1.858-1.202 3.965-1.802 6.322-1.802 2.064 0 3.851.447 5.363 1.341 1.511.895 2.267 2.116 2.267 3.664 0 1.362-.57 2.623-1.708 3.784a13.387 13.387 0 01-3.945 2.784z\\\"fill-rule=evenodd/>\"},\"$:/core/images/list\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-list tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cpath d=\\\"M87.748 128H23.999c-4.418 0-7.999-3.59-7.999-8.007V8.007C16 3.585 19.588 0 24 0h80c4.419 0 8 3.59 8 8.007V104H91.25c-.965 0-1.84.392-2.473 1.025a3.476 3.476 0 00-1.029 2.476V128zm8-.12l15.88-15.88h-15.88v15.88zM40 15.508A3.502 3.502 0 0143.5 12h55c1.933 0 3.5 1.561 3.5 3.509v.982A3.502 3.502 0 0198.5 20h-55a3.498 3.498 0 01-3.5-3.509v-.982zM32 22a6 6 0 100-12 6 6 0 000 12zm8 9.509A3.502 3.502 0 0143.5 28h55c1.933 0 3.5 1.561 3.5 3.509v.982A3.502 3.502 0 0198.5 36h-55a3.498 3.498 0 01-3.5-3.509v-.982zm0 16A3.502 3.502 0 0143.5 44h55c1.933 0 3.5 1.561 3.5 3.509v.982A3.502 3.502 0 0198.5 52h-55a3.498 3.498 0 01-3.5-3.509v-.982zm0 16A3.502 3.502 0 0143.5 60h55c1.933 0 3.5 1.561 3.5 3.509v.982A3.502 3.502 0 0198.5 68h-55a3.498 3.498 0 01-3.5-3.509v-.982zm0 16A3.502 3.502 0 0143.5 76h55c1.933 0 3.5 1.561 3.5 3.509v.982A3.502 3.502 0 0198.5 84h-55a3.498 3.498 0 01-3.5-3.509v-.982zm0 16A3.502 3.502 0 0143.5 92h55c1.933 0 3.5 1.561 3.5 3.509v.982A3.502 3.502 0 0198.5 100h-55a3.498 3.498 0 01-3.5-3.509v-.982zm0 16A3.505 3.505 0 0143.497 108h33.006A3.497 3.497 0 0180 111.509v.982A3.505 3.505 0 0176.503 116H43.497A3.497 3.497 0 0140 112.491v-.982zM32 38a6 6 0 100-12 6 6 0 000 12zm0 16a6 6 0 100-12 6 6 0 000 12zm0 16a6 6 0 100-12 6 6 0 000 12zm0 16a6 6 0 100-12 6 6 0 000 12zm0 16a6 6 0 100-12 6 6 0 000 12zm0 16a6 6 0 100-12 6 6 0 000 12z\\\"fill-rule=evenodd/>\"},\"$:/core/images/locked-padlock\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-locked-padlock tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cpath d=\\\"M96.472 64H105v32.01C105 113.674 90.674 128 73.001 128H56C38.318 128 24 113.677 24 96.01V64h8c.003-15.723.303-47.731 32.16-47.731 31.794 0 32.305 32.057 32.312 47.731zm-15.897 0H48.44c.002-16.287.142-32 15.719-32 15.684 0 16.977 16.136 16.415 32zM67.732 92.364A8.503 8.503 0 0064.5 76a8.5 8.5 0 00-3.498 16.25l-5.095 22.77H72.8l-5.07-22.656z\\\"fill-rule=evenodd/>\"},\"$:/core/images/mail\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-mail tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cpath d=\\\"M122.827 104.894a7.986 7.986 0 01-2.834.516H8.007c-.812 0-1.597-.12-2.335-.345l34.163-34.163 20.842 20.842a3.998 3.998 0 003.418 1.134 4.003 4.003 0 003.395-1.134L88.594 70.64c.075.09.155.176.24.26l33.993 33.994zm5.076-6.237c.064-.406.097-.823.097-1.247v-64c0-.669-.082-1.318-.237-1.94L94.23 65.006c.09.075.177.154.261.239l33.413 33.413zm-127.698.56A8.023 8.023 0 010 97.41v-64c0-.716.094-1.41.271-2.071l33.907 33.906L.205 99.218zM5.93 25.684a8.012 8.012 0 012.078-.273h111.986c.766 0 1.507.108 2.209.308L64.083 83.837 5.93 25.683z\\\"fill-rule=evenodd/>\"},\"$:/core/images/mastodon\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-mastodon tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\\n \u003Cpath d=\\\"M112.716,76.735C111.231,85.764 99.411,95.646 85.836,97.561C78.757,98.559 71.787,99.476 64.355,99.073C52.201,98.415 42.61,95.646 42.61,95.646C42.61,97.044 42.683,98.374 42.829,99.619C44.409,113.79 54.723,114.639 64.493,115.035C74.354,115.434 83.134,112.163 83.134,112.163L83.539,122.695C83.539,122.695 76.642,127.071 64.355,127.875C57.58,128.315 49.167,127.674 39.369,124.61C18.118,117.965 14.463,91.202 13.904,64.048C13.733,55.985 13.839,48.383 13.839,42.024C13.839,14.257 29.238,6.118 29.238,6.118C37.002,1.905 50.326,0.134 64.177,-0L64.517,-0C78.369,0.134 91.701,1.905 99.465,6.118C99.465,6.118 114.864,14.257 114.864,42.024C114.864,42.024 115.057,62.511 112.716,76.735ZM96.7,44.179C96.7,37.307 95.219,31.847 92.245,27.807C89.177,23.767 85.16,21.696 80.174,21.696C74.403,21.696 70.034,24.316 67.146,29.556L64.337,35.118L61.529,29.556C58.64,24.316 54.271,21.696 48.501,21.696C43.514,21.696 39.497,23.767 36.43,27.807C33.455,31.847 31.974,37.307 31.974,44.179L31.974,77.8L43.249,77.8L43.249,45.167C43.249,38.288 45.699,34.796 50.599,34.796C56.017,34.796 58.733,38.938 58.733,47.128L58.733,64.99L69.941,64.99L69.941,47.128C69.941,38.938 72.657,34.796 78.075,34.796C82.975,34.796 85.425,38.288 85.425,45.167L85.425,77.8L96.7,77.8L96.7,44.179Z\\\"/>\\n\u003C/svg>\\n\"},\"$:/core/images/menu-button\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-menu-button tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Crect width=128 height=16 y=16 rx=8/>\u003Crect width=128 height=16 y=56 rx=8/>\u003Crect width=128 height=16 y=96 rx=8/>\"},\"$:/core/images/minus-button\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-minus-button tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cpath d=\\\"M64 0c35.346 0 64 28.654 64 64 0 35.346-28.654 64-64 64-35.346 0-64-28.654-64-64C0 28.654 28.654 0 64 0zm.332 16c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48z\\\"/>\u003Crect width=80 height=16 x=24 y=56 rx=8/>\"},\"$:/core/images/mono-block\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-mono-block tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cpath d=\\\"M23.965 32.967h.357c.755 0 1.328.192 1.72.577.39.384.586.947.586 1.688 0 .824-.206 1.418-.618 1.782-.413.363-1.094.545-2.045.545h-6.31c-.965 0-1.65-.178-2.056-.535-.405-.356-.608-.954-.608-1.792 0-.811.203-1.391.608-1.74.406-.35 1.09-.525 2.055-.525h.734l-.86-2.453H8.471l-.902 2.453h.734c.95 0 1.632.178 2.044.535.413.356.619.933.619 1.73 0 .824-.206 1.418-.619 1.782-.412.363-1.094.545-2.044.545h-5.41c-.964 0-1.649-.182-2.054-.545-.406-.364-.608-.958-.608-1.782 0-.741.195-1.304.587-1.688.391-.385.964-.577 1.719-.577h.356l5.62-15.641H6.835c-.95 0-1.632-.182-2.044-.546-.412-.363-.619-.95-.619-1.76 0-.825.207-1.42.619-1.783.412-.363 1.094-.545 2.044-.545h7.863c1.244 0 2.118.67 2.62 2.013v.063l6.647 18.2zM12.98 17.326l-3.04 8.848h6.08l-3.04-8.848zm22.402 9.372v6.395h3.145c2.223 0 3.788-.245 4.697-.734.908-.49 1.362-1.307 1.362-2.453 0-1.16-.433-1.985-1.3-2.474-.866-.49-2.383-.734-4.55-.734h-3.354zm10.693-2.327c1.524.559 2.642 1.324 3.355 2.295.713.972 1.07 2.212 1.07 3.722 0 1.272-.308 2.432-.923 3.48-.615 1.049-1.496 1.909-2.642 2.58a7.499 7.499 0 01-2.254.849c-.832.174-2.01.262-3.533.262H30.202c-.922 0-1.583-.182-1.981-.545-.399-.364-.598-.958-.598-1.782 0-.741.189-1.304.566-1.688.378-.385.93-.577 1.657-.577h.356V17.326h-.356c-.727 0-1.28-.196-1.657-.587-.377-.392-.566-.965-.566-1.72 0-.81.203-1.401.608-1.771.406-.37 1.062-.556 1.971-.556h9.645c2.95 0 5.19.573 6.72 1.72 1.53 1.145 2.296 2.823 2.296 5.031 0 1.09-.234 2.052-.703 2.883-.468.832-1.163 1.513-2.086 2.045zM35.381 17.2v5.284h2.83c1.72 0 2.932-.203 3.638-.609.706-.405 1.06-1.09 1.06-2.054 0-.909-.319-1.573-.955-1.992-.636-.42-1.667-.63-3.093-.63h-3.48zm35.863-3.816c.28-.503.566-.86.86-1.07.293-.21.664-.314 1.111-.314.685 0 1.17.182 1.457.545.287.364.43.986.43 1.866l.042 5.452c0 .964-.157 1.614-.472 1.95-.314.335-.884.503-1.709.503-.587 0-1.037-.14-1.352-.42-.314-.28-.584-.796-.807-1.551-.364-1.328-.944-2.282-1.74-2.862-.797-.58-1.901-.87-3.313-.87-2.153 0-3.802.727-4.948 2.18-1.147 1.454-1.72 3.558-1.72 6.311 0 2.74.58 4.844 1.74 6.311 1.16 1.468 2.817 2.202 4.97 2.202 1.467 0 3.085-.49 4.854-1.468 1.768-.978 2.883-1.467 3.344-1.467.545 0 1.003.23 1.373.692.37.46.556 1.034.556 1.719 0 1.23-1.084 2.39-3.25 3.48-2.167 1.09-4.606 1.636-7.318 1.636-3.662 0-6.625-1.21-8.89-3.627-2.264-2.419-3.396-5.578-3.396-9.478 0-3.76 1.146-6.884 3.438-9.372 2.293-2.488 5.2-3.732 8.723-3.732.992 0 1.97.112 2.935.335.964.224 1.992.574 3.082 1.049zm10.22 19.583V17.326h-.356c-.755 0-1.328-.196-1.72-.587-.39-.392-.586-.965-.586-1.72 0-.81.21-1.401.629-1.771.42-.37 1.097-.556 2.034-.556h5.178c2.922 0 5.06.126 6.416.377 1.356.252 2.51.671 3.46 1.258 1.691 1.007 2.988 2.443 3.89 4.31.9 1.865 1.352 4.021 1.352 6.467 0 2.586-.514 4.847-1.541 6.783-1.028 1.936-2.485 3.4-4.372 4.393-.853.447-1.852.772-2.998.975-1.147.203-2.852.304-5.116.304h-6.269c-.965 0-1.65-.178-2.055-.535-.406-.356-.608-.954-.608-1.792 0-.741.195-1.304.587-1.688.391-.385.964-.577 1.72-.577h.356zm5.41-15.725v15.725h1.195c2.642 0 4.592-.646 5.85-1.94 1.258-1.292 1.887-3.28 1.887-5.965 0-2.641-.64-4.612-1.918-5.912-1.28-1.3-3.205-1.95-5.777-1.95-.335 0-.59.003-.765.01a7.992 7.992 0 00-.472.032zm35.067-.126h-9.75v5.368h3.69v-.252c0-.797.175-1.39.524-1.782.35-.392.88-.587 1.594-.587.629 0 1.142.178 1.54.534.4.357.598.808.598 1.353 0 .028.007.118.021.272.014.154.021.308.021.462v4.34c0 .936-.167 1.607-.503 2.013-.335.405-.88.608-1.635.608-.713 0-1.251-.19-1.615-.567-.363-.377-.545-.936-.545-1.677v-.377h-3.69v6.269h9.75v-2.495c0-.937.178-1.608.534-2.013.357-.405.94-.608 1.75-.608.798 0 1.367.2 1.71.597.342.399.513 1.073.513 2.024v5.074c0 .755-.146 1.258-.44 1.51-.293.251-.873.377-1.74.377h-17.172c-.923 0-1.583-.182-1.982-.545-.398-.364-.597-.958-.597-1.782 0-.741.189-1.304.566-1.688.377-.385.93-.577 1.656-.577h.357V17.326h-.357c-.712 0-1.261-.2-1.646-.598-.384-.398-.576-.968-.576-1.709 0-.81.203-1.401.608-1.771.405-.37 1.062-.556 1.97-.556h17.173c.853 0 1.43.13 1.73.388.3.258.45.772.45 1.54v4.698c0 .95-.174 1.631-.524 2.044-.35.412-.915.618-1.698.618-.81 0-1.394-.21-1.75-.629-.357-.419-.535-1.097-.535-2.033v-2.202zM19.77 47.641c.267-.504.55-.86.85-1.07.3-.21.675-.314 1.122-.314.685 0 1.17.181 1.457.545.287.363.43.985.43 1.866l.042 5.451c0 .965-.157 1.615-.472 1.95-.314.336-.891.504-1.73.504-.587 0-1.045-.144-1.373-.43-.329-.287-.598-.8-.807-1.541-.378-1.342-.958-2.3-1.74-2.873-.783-.573-1.88-.86-3.292-.86-2.153 0-3.799.727-4.938 2.181-1.14 1.454-1.709 3.557-1.709 6.311s.598 4.882 1.793 6.385C10.599 67.248 12.294 68 14.488 68c.503 0 1.077-.06 1.72-.179a23.809 23.809 0 002.264-.555v-3.313h-2.37c-.95 0-1.624-.175-2.023-.524-.398-.35-.597-.93-.597-1.74 0-.84.199-1.437.597-1.793.399-.357 1.073-.535 2.024-.535h7.569c.978 0 1.667.175 2.065.524.398.35.598.937.598 1.762 0 .74-.2 1.31-.598 1.708-.398.399-.975.598-1.73.598h-.335v5.242c0 .447-.05.758-.147.933-.098.174-.293.353-.587.534-.797.476-2.062.895-3.795 1.258a25.576 25.576 0 01-5.263.546c-3.662 0-6.625-1.21-8.89-3.628-2.264-2.418-3.397-5.577-3.397-9.477 0-3.76 1.147-6.884 3.44-9.372 2.292-2.488 5.199-3.732 8.721-3.732.979 0 1.954.112 2.925.335.972.224 2.003.573 3.093 1.049zm15.84 3.941v4.823h6.857v-4.823h-.336c-.754 0-1.331-.195-1.73-.587-.398-.391-.597-.964-.597-1.719 0-.825.206-1.419.619-1.782.412-.364 1.093-.545 2.044-.545h5.41c.95 0 1.624.181 2.023.545.398.363.597.957.597 1.782 0 .755-.192 1.328-.576 1.72-.385.39-.947.586-1.688.586h-.357v15.642h.357c.755 0 1.328.192 1.719.576.391.385.587.947.587 1.688 0 .825-.203 1.419-.608 1.782-.405.364-1.09.546-2.055.546h-5.41c-.964 0-1.649-.179-2.054-.535-.405-.357-.608-.954-.608-1.793 0-.74.2-1.303.598-1.688.398-.384.975-.576 1.73-.576h.335v-6.186h-6.856v6.186h.335c.755 0 1.331.192 1.73.576.398.385.597.947.597 1.688 0 .825-.206 1.419-.618 1.782-.412.364-1.094.546-2.044.546h-5.41c-.964 0-1.65-.179-2.055-.535-.405-.357-.608-.954-.608-1.793 0-.74.196-1.303.587-1.688.392-.384.965-.576 1.72-.576h.356V51.582h-.356c-.741 0-1.304-.195-1.688-.587-.385-.391-.577-.964-.577-1.719 0-.825.2-1.419.598-1.782.398-.364 1.073-.545 2.023-.545h5.41c.936 0 1.614.181 2.033.545.42.363.63.957.63 1.782 0 .755-.2 1.328-.598 1.72-.399.39-.975.586-1.73.586h-.335zm31.754 0v15.642h3.523c.95 0 1.632.178 2.044.534.412.357.618.933.618 1.73 0 .811-.21 1.402-.629 1.772-.419.37-1.097.556-2.033.556H58.433c-.95 0-1.632-.182-2.044-.546-.412-.363-.619-.957-.619-1.782 0-.81.203-1.39.608-1.74.406-.35 1.09-.524 2.055-.524h3.523V51.582h-3.523c-.95 0-1.632-.181-2.044-.545-.412-.363-.619-.95-.619-1.761 0-.825.203-1.412.608-1.761.406-.35 1.09-.524 2.055-.524h12.455c.992 0 1.684.174 2.075.524.392.35.587.936.587 1.761 0 .81-.202 1.398-.608 1.761-.405.364-1.09.545-2.054.545h-3.523zm30.496 0v11.994c0 1.873-.122 3.228-.367 4.067a5.876 5.876 0 01-1.227 2.244c-.74.852-1.768 1.495-3.082 1.929-1.314.433-2.893.65-4.738.65-1.3 0-2.555-.126-3.764-.378a16.843 16.843 0 01-3.491-1.132c-.615-.28-1.017-.643-1.206-1.09-.188-.448-.283-1.175-.283-2.18v-4.32c0-1.202.175-2.04.525-2.516.349-.475.957-.713 1.824-.713 1.244 0 1.929.915 2.054 2.747.014.321.035.566.063.733.168 1.622.545 2.73 1.133 3.324.587.594 1.523.89 2.81.89 1.593 0 2.714-.422 3.364-1.268.65-.845.975-2.386.975-4.623V51.582H88.93c-.95 0-1.632-.181-2.044-.545-.413-.363-.619-.95-.619-1.761 0-.825.2-1.412.598-1.761.398-.35 1.086-.524 2.065-.524h10.693c.979 0 1.667.174 2.065.524.399.35.598.936.598 1.761 0 .81-.206 1.398-.619 1.761-.412.364-1.093.545-2.044.545h-1.761zm14.644 0v6.353l6.48-6.478c-.728-.084-1.238-.29-1.531-.619-.294-.328-.44-.85-.44-1.562 0-.825.198-1.419.597-1.782.398-.364 1.073-.545 2.023-.545h5.137c.95 0 1.625.181 2.023.545.399.363.598.957.598 1.782 0 .769-.2 1.345-.598 1.73-.398.384-.982.576-1.75.576h-.483l-6.101 6.06c1.132.839 2.167 1.94 3.103 3.302.937 1.363 2.034 3.456 3.292 6.28h.692c.825 0 1.44.188 1.845.566.405.377.608.943.608 1.698 0 .825-.206 1.419-.619 1.782-.412.364-1.093.546-2.044.546h-2.579c-1.132 0-2.048-.762-2.746-2.286-.126-.28-.224-.503-.294-.67-.923-1.958-1.768-3.467-2.537-4.53a16.616 16.616 0 00-2.705-2.914l-1.97 1.887v3.92h.335c.755 0 1.331.193 1.73.577.398.385.597.947.597 1.688 0 .825-.206 1.419-.618 1.782-.413.364-1.094.546-2.045.546h-5.41c-.964 0-1.649-.179-2.054-.535-.405-.357-.608-.954-.608-1.793 0-.74.196-1.303.587-1.688.391-.384.965-.576 1.72-.576h.356V51.582h-.357c-.74 0-1.303-.195-1.687-.587-.385-.391-.577-.964-.577-1.719 0-.825.2-1.419.598-1.782.398-.364 1.072-.545 2.023-.545h5.41c.936 0 1.614.181 2.033.545.42.363.63.957.63 1.782 0 .755-.2 1.328-.598 1.72-.399.39-.975.586-1.73.586h-.336zM13.44 96.326l4.005-11.889c.251-.782.6-1.352 1.048-1.709.447-.356 1.041-.534 1.782-.534h3.271c.95 0 1.632.182 2.044.545.413.363.619.957.619 1.782 0 .755-.2 1.328-.598 1.72-.398.39-.975.587-1.73.587h-.335l.587 15.641h.357c.754 0 1.32.192 1.698.577.377.384.566.947.566 1.687 0 .825-.2 1.42-.598 1.783-.398.363-1.072.545-2.023.545h-4.718c-.95 0-1.624-.178-2.023-.535-.398-.356-.597-.954-.597-1.793 0-.74.192-1.303.576-1.687.385-.385.954-.577 1.709-.577h.335l-.293-12.79-3.061 9.52c-.224.712-.542 1.226-.954 1.54-.413.315-.982.472-1.709.472-.727 0-1.303-.157-1.73-.472-.426-.314-.751-.828-.975-1.54l-3.04-9.52-.294 12.79h.336c.755 0 1.324.192 1.709.577.384.384.576.947.576 1.687 0 .825-.202 1.42-.608 1.783-.405.363-1.076.545-2.013.545H2.621c-.937 0-1.608-.182-2.013-.545-.405-.364-.608-.958-.608-1.783 0-.74.192-1.303.577-1.687.384-.385.954-.577 1.708-.577h.336l.608-15.641h-.336c-.754 0-1.331-.196-1.73-.588-.398-.39-.597-.964-.597-1.719 0-.825.206-1.419.619-1.782.412-.363 1.093-.545 2.044-.545h3.27c.728 0 1.311.175 1.752.524.44.35.8.923 1.08 1.72l4.109 11.888zm30.454 2.054V86.828H42.74c-.922 0-1.583-.182-1.981-.546-.398-.363-.598-.95-.598-1.76 0-.812.2-1.402.598-1.773.398-.37 1.059-.555 1.981-.555h5.955c.909 0 1.566.185 1.97.555.406.37.609.961.609 1.772 0 .741-.192 1.31-.577 1.709-.384.398-.933.598-1.646.598h-.356v19.038c0 .657-.07 1.069-.21 1.237-.14.167-.454.251-.943.251h-2.097c-.67 0-1.143-.07-1.415-.21-.273-.14-.507-.384-.703-.733l-8.722-15.327v11.385h1.216c.909 0 1.559.175 1.95.524.392.35.587.93.587 1.74 0 .825-.199 1.42-.597 1.783-.399.363-1.045.545-1.94.545h-6.017c-.909 0-1.566-.182-1.971-.545-.406-.364-.608-.958-.608-1.783 0-.74.188-1.303.566-1.687.377-.385.936-.577 1.677-.577h.336V86.828h-.336c-.713 0-1.265-.2-1.656-.598-.392-.398-.587-.968-.587-1.709 0-.81.206-1.401.618-1.772.413-.37 1.066-.555 1.96-.555h3.44c.824 0 1.383.108 1.677.325.293.216.622.653.985 1.31l7.989 14.551zM64.66 86.366c-1.803 0-3.218.727-4.245 2.18-1.028 1.455-1.541 3.474-1.541 6.06 0 2.586.517 4.613 1.551 6.08 1.034 1.468 2.446 2.202 4.235 2.202 1.804 0 3.222-.73 4.257-2.19 1.034-1.461 1.551-3.492 1.551-6.092 0-2.586-.513-4.605-1.54-6.06-1.028-1.453-2.45-2.18-4.268-2.18zm0-4.864c3.44 0 6.27 1.23 8.492 3.69 2.223 2.46 3.334 5.598 3.334 9.414 0 3.844-1.104 6.99-3.313 9.436-2.208 2.446-5.046 3.669-8.513 3.669-3.424 0-6.255-1.234-8.491-3.701-2.237-2.467-3.355-5.602-3.355-9.404 0-3.83 1.108-6.971 3.323-9.424 2.216-2.454 5.057-3.68 8.523-3.68zM87.461 98.17v4.298h2.16c.908 0 1.555.175 1.94.524.384.35.576.93.576 1.74 0 .825-.196 1.42-.587 1.783-.392.363-1.035.545-1.93.545h-7.254c-.922 0-1.583-.182-1.981-.545-.399-.364-.598-.958-.598-1.783 0-.74.189-1.303.566-1.687.378-.385.93-.577 1.657-.577h.356V86.828h-.356c-.713 0-1.262-.2-1.646-.598-.385-.398-.577-.968-.577-1.709 0-.81.203-1.401.608-1.772.406-.37 1.063-.555 1.971-.555h8.66c3.424 0 6.014.657 7.768 1.97 1.754 1.315 2.631 3.25 2.631 5.809 0 2.697-.873 4.738-2.62 6.122-1.748 1.384-4.34 2.076-7.78 2.076h-3.564zm0-11.343v6.625h2.977c1.65 0 2.89-.28 3.722-.839.832-.559 1.248-1.397 1.248-2.516 0-1.048-.43-1.855-1.29-2.421-.86-.566-2.086-.85-3.68-.85h-2.977zm27.267 20.568l-1.636 1.636a12.37 12.37 0 011.772-.44c.58-.098 1.15-.147 1.709-.147 1.104 0 2.268.164 3.491.492 1.223.329 1.967.493 2.233.493.447 0 1.03-.15 1.75-.45.72-.301 1.206-.452 1.458-.452.517 0 .947.2 1.29.598.342.398.513.898.513 1.5 0 .796-.472 1.474-1.415 2.033-.944.56-2.1.839-3.47.839-.937 0-2.139-.22-3.607-.66-1.467-.441-2.53-.661-3.187-.661-.992 0-2.11.272-3.354.817-1.244.546-2.013.818-2.307.818a2.14 2.14 0 01-1.53-.597c-.42-.399-.63-.878-.63-1.437 0-.391.134-.807.4-1.247.265-.44.733-1.01 1.404-1.709l2.118-2.139c-2.335-.852-4.194-2.386-5.578-4.602-1.384-2.215-2.075-4.763-2.075-7.642 0-3.802 1.104-6.909 3.312-9.32 2.209-2.411 5.053-3.617 8.534-3.617 3.467 0 6.304 1.209 8.513 3.627 2.208 2.418 3.312 5.522 3.312 9.31 0 3.774-1.097 6.884-3.291 9.33-2.195 2.446-4.977 3.67-8.345 3.67a22.5 22.5 0 01-1.384-.043zm1.195-21.03c-1.803 0-3.218.727-4.246 2.18-1.027 1.455-1.54 3.474-1.54 6.06 0 2.586.516 4.613 1.55 6.08 1.035 1.468 2.447 2.202 4.236 2.202 1.803 0 3.222-.73 4.256-2.19 1.035-1.461 1.552-3.492 1.552-6.092 0-2.586-.514-4.605-1.541-6.06-1.028-1.453-2.45-2.18-4.267-2.18z\\\"fill-rule=evenodd/>\"},\"$:/core/images/mono-line\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-mono-line tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cpath d=\\\"M60.437 84.523h.908c1.922 0 3.381.489 4.378 1.468.997.979 1.495 2.411 1.495 4.298 0 2.1-.525 3.612-1.575 4.538-1.05.925-2.785 1.388-5.206 1.388h-16.07c-2.456 0-4.2-.454-5.232-1.361-1.032-.908-1.548-2.43-1.548-4.565 0-2.065.516-3.542 1.548-4.432 1.032-.89 2.776-1.334 5.232-1.334h1.869l-2.19-6.247H20.983l-2.296 6.247h1.87c2.42 0 4.155.453 5.205 1.361 1.05.908 1.575 2.376 1.575 4.405 0 2.1-.525 3.612-1.575 4.538-1.05.925-2.785 1.388-5.206 1.388H6.781c-2.456 0-4.2-.463-5.233-1.388C.516 93.9 0 92.389 0 90.289c0-1.887.498-3.32 1.495-4.298.997-.979 2.456-1.468 4.378-1.468h.908l14.308-39.83h-4.271c-2.42 0-4.156-.462-5.206-1.387-1.05-.926-1.575-2.42-1.575-4.485 0-2.1.525-3.613 1.575-4.538 1.05-.926 2.785-1.388 5.206-1.388h20.021c3.168 0 5.392 1.708 6.674 5.125v.16l16.924 46.343zm-27.976-39.83L24.72 67.225h15.483l-7.742-22.53zM89.506 68.56v16.284h8.008c5.66 0 9.646-.623 11.96-1.869 2.313-1.245 3.47-3.328 3.47-6.246 0-2.955-1.103-5.055-3.31-6.3-2.207-1.246-6.069-1.869-11.586-1.869h-8.542zm27.229-5.926c3.88 1.423 6.727 3.372 8.542 5.846 1.815 2.474 2.723 5.633 2.723 9.477 0 3.239-.783 6.193-2.35 8.862-1.565 2.67-3.808 4.859-6.726 6.567-1.709.997-3.622 1.718-5.74 2.163-2.118.445-5.116.667-8.996.667h-27.87c-2.349 0-4.03-.463-5.045-1.388-1.014-.926-1.521-2.438-1.521-4.538 0-1.887.48-3.32 1.441-4.298.961-.979 2.367-1.468 4.218-1.468h.907v-39.83h-.907c-1.851 0-3.257-.498-4.218-1.494-.961-.997-1.441-2.456-1.441-4.378 0-2.065.516-3.568 1.548-4.512 1.032-.943 2.705-1.414 5.018-1.414h24.56c7.51 0 13.214 1.459 17.111 4.377 3.898 2.92 5.847 7.19 5.847 12.814 0 2.776-.597 5.223-1.789 7.341-1.192 2.118-2.963 3.853-5.312 5.206zm-27.23-18.26v13.455h7.208c4.378 0 7.466-.516 9.264-1.549 1.797-1.032 2.696-2.776 2.696-5.232 0-2.313-.81-4.004-2.43-5.072-1.619-1.068-4.244-1.602-7.874-1.602h-8.863z\\\"fill-rule=evenodd/>\"},\"$:/core/images/new-button\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-new-button tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cpath d=\\\"M56 72H8.007C3.591 72 0 68.418 0 64c0-4.41 3.585-8 8.007-8H56V8.007C56 3.591 59.582 0 64 0c4.41 0 8 3.585 8 8.007V56h47.993c4.416 0 8.007 3.582 8.007 8 0 4.41-3.585 8-8.007 8H72v47.993c0 4.416-3.582 8.007-8 8.007-4.41 0-8-3.585-8-8.007V72z\\\"fill-rule=evenodd/>\"},\"$:/core/images/new-here-button\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-new-here-button tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cg fill-rule=evenodd>\u003Cpath d=\\\"M55.838 20.935l-3.572.938c-3.688.968-8.23 4.43-10.136 7.731L3.37 96.738c-1.905 3.3-.771 7.524 2.534 9.432l33.717 19.466c3.297 1.904 7.53.78 9.435-2.521l38.76-67.134c1.905-3.3 2.632-8.963 1.623-12.646L83.285 20.88c-1.009-3.68-4.821-5.884-8.513-4.915l-7.603 1.995.043.287c.524 3.394 2.053 7.498 4.18 11.55.418.163.829.36 1.23.59a8.864 8.864 0 014.438 8.169c.104.132.21.264.316.395l-.386.318a8.663 8.663 0 01-1.082 3.137c-2.42 4.192-7.816 5.608-12.051 3.163-4.12-2.379-5.624-7.534-3.476-11.671-2.177-4.394-3.788-8.874-4.543-12.964z\\\"/>\u003Cpath d=\\\"M69.554 44.76c-5.944-7.476-10.74-17.196-11.955-25.059-1.68-10.875 3.503-18.216 15.082-18.04 10.407.158 19.975 5.851 24.728 13.785 5.208 8.695 2.95 17.868-6.855 20.496l-2.037-7.601c4.232-1.134 4.999-4.248 2.24-8.853-3.37-5.626-10.465-9.848-18.146-9.965-6.392-.097-8.31 2.62-7.323 9.01.999 6.465 5.318 15.138 10.582 21.65l-.072.06c.559 1.553-4.17 6.44-5.938 4.888l-.005.004-.028-.034a1.323 1.323 0 01-.124-.135 2.618 2.618 0 01-.149-.205z\\\"/>\u003Crect width=16 height=48 x=96 y=80 rx=8/>\u003Crect width=48 height=16 x=80 y=96 rx=8/>\"},\"$:/core/images/new-image-button\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-new-image-button tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cpath d=\\\"M81.362 73.627l15.826-27.41a2.626 2.626 0 00-.962-3.59l-50.01-28.872a2.626 2.626 0 00-3.588.961L30.058 36.49l10.04-5.261c3.042-1.595 6.771.114 7.55 3.46l3.607 17.702 9.88.85a5.25 5.25 0 014.571 3.77c.034.115.1.344.199.671.165.553.353 1.172.562 1.843.595 1.914 1.23 3.85 1.872 5.678.207.588.412 1.156.614 1.701.625 1.685 1.209 3.114 1.725 4.207.255.54.485.977.726 1.427.214.212.547.425 1.011.622 1.141.482 2.784.74 4.657.758.864.008 1.71-.034 2.492-.11.448-.043.753-.085.871-.104.315-.053.625-.077.927-.076zM37.47 2.649A5.257 5.257 0 0144.649.725l63.645 36.746a5.257 5.257 0 011.923 7.178L73.47 108.294a5.257 5.257 0 01-7.177 1.923L2.649 73.47a5.257 5.257 0 01-1.924-7.177L37.471 2.649zm42.837 50.49a5.25 5.25 0 105.25-9.092 5.25 5.25 0 00-5.25 9.093zM96 112h-7.993c-4.419 0-8.007-3.582-8.007-8 0-4.41 3.585-8 8.007-8H96v-7.993C96 83.588 99.582 80 104 80c4.41 0 8 3.585 8 8.007V96h7.993c4.419 0 8.007 3.582 8.007 8 0 4.41-3.585 8-8.007 8H112v7.993c0 4.419-3.582 8.007-8 8.007-4.41 0-8-3.585-8-8.007V112zM33.347 51.791c7.428 7.948 9.01 10.69 7.449 13.394-1.56 2.703-13.838-2.328-16.094 1.58-2.256 3.908-.907 3.258-2.437 5.908l19.73 11.39s-5.605-8.255-4.235-10.628c2.515-4.356 8.77-1.256 10.365-4.019 2.414-4.181-5.103-9.639-14.778-17.625z\\\"fill-rule=evenodd/>\"},\"$:/core/images/new-journal-button\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-new-journal-button tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cg fill-rule=evenodd>\u003Cpath d=\\\"M102.545 112.818v11.818c0 1.306 1.086 2.364 2.425 2.364h6.06c1.34 0 2.425-1.058 2.425-2.364v-11.818h12.12c1.34 0 2.425-1.058 2.425-2.363v-5.91c0-1.305-1.085-2.363-2.424-2.363h-12.121V90.364c0-1.306-1.086-2.364-2.425-2.364h-6.06c-1.34 0-2.425 1.058-2.425 2.364v11.818h-12.12c-1.34 0-2.425 1.058-2.425 2.363v5.91c0 1.305 1.085 2.363 2.424 2.363h12.121zM60.016 4.965c-4.781-2.76-10.897-1.118-13.656 3.66L5.553 79.305A9.993 9.993 0 009.21 92.963l51.04 29.468c4.78 2.76 10.897 1.118 13.655-3.66l40.808-70.681a9.993 9.993 0 00-3.658-13.656L60.016 4.965zm-3.567 27.963a6 6 0 106-10.393 6 6 0 00-6 10.393zm31.697 17.928a6 6 0 106-10.392 6 6 0 00-6 10.392z\\\"/>\u003Ctext class=tc-fill-background font-family=Helvetica font-size=47.172 transform=\\\"rotate(30 25.742 95.82)\\\"font-weight=bold>\u003Ctspan x=42 y=77.485 text-anchor=middle>\u003C\u003Cnow DD>>\"},\"$:/core/images/opacity\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-opacity tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cg fill-rule=evenodd>\u003Cpath d=\\\"M102.362 65a51.595 51.595 0 01-1.942 6H82.584a35.867 35.867 0 002.997-6h16.78zm.472-2c.423-1.961.734-3.963.929-6H87.656a35.78 35.78 0 01-1.368 6h16.546zm-3.249 10a51.847 51.847 0 01-3.135 6H75.812a36.205 36.205 0 005.432-6h18.341zm-4.416 8c-1.424 2.116-3 4.12-4.71 6H60.46a35.843 35.843 0 0012.874-6h21.834zm-7.513-34h16.107C101.247 20.627 79.033 0 52 0 23.281 0 0 23.281 0 52c0 25.228 17.965 46.26 41.8 51h20.4a51.66 51.66 0 0015.875-6H39v-2h42.25a52.257 52.257 0 007.288-6H39v-2h4.539C27.739 83.194 16 68.968 16 52c0-19.882 16.118-36 36-36 18.186 0 33.222 13.484 35.656 31zm.22 2h16.039a52.823 52.823 0 010 6H87.877a36.483 36.483 0 000-6z\\\"/>\u003Cpath d=\\\"M76 128c28.719 0 52-23.281 52-52s-23.281-52-52-52-52 23.281-52 52 23.281 52 52 52zm0-16c19.882 0 36-16.118 36-36S95.882 40 76 40 40 56.118 40 76s16.118 36 36 36z\\\"/>\u003Cpath d=\\\"M37 58h53v4H37v-4zm3-8h53v4H40v-4zm0-8h53v4H40v-4zm-8 24h53v4H32v-4zm-2 8h53v4H30v-4zm-3 8h53v4H27v-4z\\\"/>\"},\"$:/core/images/open-window\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-open-window tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cg fill-rule=evenodd>\u003Cpath d=\\\"M16 112h88.994c3.87 0 7.006 3.59 7.006 8 0 4.418-3.142 8-7.006 8H7.006C3.136 128 0 124.41 0 120a9.321 9.321 0 010-.01V24.01C0 19.586 3.59 16 8 16c4.418 0 8 3.584 8 8.01V112z\\\"/>\u003Cpath d=\\\"M96 43.196V56a8 8 0 1016 0V24c0-4.41-3.585-8-8.007-8H72.007C67.588 16 64 19.582 64 24c0 4.41 3.585 8 8.007 8H84.57l-36.3 36.299a8 8 0 00-.001 11.316c3.117 3.117 8.19 3.123 11.316-.003L96 43.196zM32 7.999C32 3.581 35.588 0 40 0h80c4.419 0 8 3.588 8 8v80c0 4.419-3.588 8-8 8H40c-4.419 0-8-3.588-8-8V8z\\\"/>\"},\"$:/core/images/options-button\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-options-button tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cpath d=\\\"M110.488 76a47.712 47.712 0 01-5.134 12.384l6.724 6.724c3.123 3.123 3.132 8.192.011 11.313l-5.668 5.668c-3.12 3.12-8.186 3.117-11.313-.01l-6.724-6.725c-3.82 2.258-7.98 4-12.384 5.134v9.505c0 4.417-3.578 8.007-7.992 8.007h-8.016C55.58 128 52 124.415 52 119.993v-9.505a47.712 47.712 0 01-12.384-5.134l-6.724 6.725c-3.123 3.122-8.192 3.131-11.313.01l-5.668-5.668c-3.12-3.12-3.116-8.186.01-11.313l6.725-6.724c-2.257-3.82-4-7.98-5.134-12.384H8.007C3.591 76 0 72.422 0 68.01v-8.017C0 55.58 3.585 52 8.007 52h9.505a47.712 47.712 0 015.134-12.383l-6.724-6.725c-3.123-3.122-3.132-8.191-.011-11.312l5.668-5.669c3.12-3.12 8.186-3.116 11.313.01l6.724 6.725c3.82-2.257 7.98-4 12.384-5.134V8.007C52 3.591 55.578 0 59.992 0h8.016C72.42 0 76 3.585 76 8.007v9.505a47.712 47.712 0 0112.384 5.134l6.724-6.724c3.123-3.123 8.192-3.132 11.313-.01l5.668 5.668c3.12 3.12 3.116 8.186-.01 11.312l-6.725 6.725c2.257 3.82 4 7.979 5.134 12.383h9.505c4.416 0 8.007 3.578 8.007 7.992v8.017c0 4.411-3.585 7.991-8.007 7.991h-9.505zM64 96c17.673 0 32-14.327 32-32 0-17.673-14.327-32-32-32-17.673 0-32 14.327-32 32 0 17.673 14.327 32 32 32z\\\"fill-rule=evenodd/>\"},\"$:/core/images/paint\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-paint tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cpath d=\\\"M83.527 76.19C90.43 69.287 91.892 59 87.91 50.665l37.903-37.902c2.919-2.92 2.913-7.659 0-10.572a7.474 7.474 0 00-10.572 0L77.338 40.093c-8.335-3.982-18.622-2.521-25.526 4.383l31.715 31.715zm-2.643 2.644L49.169 47.119S8.506 81.243 0 80.282c0 0 3.782 5.592 6.827 8.039 14.024-5.69 37.326-24.6 37.326-24.6l.661.66S19.45 90.222 9.18 92.047c1.222 1.44 4.354 4.053 6.247 5.776 5.417-1.488 34.733-28.57 34.733-28.57l.661.66-32.407 31.022 5.285 5.286L56.106 75.2l.662.66s-27.864 30.536-28.684 32.432c0 0 6.032 6.853 7.569 7.824.702-2.836 27.884-33.485 27.884-33.485l.661.66s-20.597 23.755-24.964 36.732c3.21 3.549 7.5 5.137 10.926 6.298-2.19-11.817 30.724-47.487 30.724-47.487z\\\"fill-rule=evenodd/>\"},\"$:/core/images/palette\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-palette tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cpath d=\\\"M80.247 39.182a93.52 93.52 0 00-16.228-1.4C28.662 37.781 0 57.131 0 81.002c0 9.642 4.676 18.546 12.58 25.735C23.504 91.19 26.34 72.395 36.89 63.562c15.183-12.713 26.538-7.828 26.538-7.828l16.82-16.552zm26.535 9.655c13.049 7.913 21.257 19.392 21.257 32.166 0 9.35.519 17.411-11.874 25.08-10.797 6.681-3.824-6.536-11.844-10.898s-19.946 1.308-18.213 7.906c3.2 12.181 19.422 11.455 6.314 16.658-13.107 5.202-18.202 4.476-28.403 4.476-7.821 0-15.315-.947-22.243-2.68 9.844-4.197 27.88-12.539 33.354-19.456C82.788 92.409 87.37 80 83.324 72.484c-.194-.359 11.215-11.668 23.458-23.647zM1.134 123.867l-.66.002c33.479-14.94 22.161-64.226 58.818-64.226.317 1.418.644 2.944 1.062 4.494-25.907-4.166-23.567 48.031-59.22 59.73zm.713-.007c38.872-.506 78.152-22.347 78.152-44.813-9.27 0-14.073-3.48-16.816-7.942-16.597-7.003-30.365 45.715-61.336 52.755zm65.351-64.008c-4.45 4.115 4.886 16.433 11.318 11.318l45.27-45.27c11.317-11.318 0-22.635-11.318-11.318-11.317 11.318-33.518 34.405-45.27 45.27z\\\"fill-rule=evenodd/>\"},\"$:/core/images/permalink-button\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-permalink-button tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cpath d=\\\"M80.483 48l-7.387 32h-25.58l7.388-32h25.58zm3.694-16l5.624-24.358c.993-4.303 5.29-6.996 9.596-6.002 4.296.992 6.988 5.293 5.994 9.602L100.598 32h3.403c4.41 0 7.999 3.582 7.999 8 0 4.41-3.581 8-8 8h-7.096l-7.387 32H104c4.41 0 7.999 3.582 7.999 8 0 4.41-3.581 8-8 8H85.824l-5.624 24.358c-.993 4.303-5.29 6.996-9.596 6.002-4.296-.992-6.988-5.293-5.994-9.602L69.402 96h-25.58L38.2 120.358c-.993 4.303-5.29 6.996-9.596 6.002-4.296-.992-6.988-5.293-5.994-9.602L27.402 96h-3.403C19.59 96 16 92.418 16 88c0-4.41 3.581-8 8-8h7.096l7.387-32H24C19.59 48 16 44.418 16 40c0-4.41 3.581-8 8-8h18.177l5.624-24.358c.993-4.303 5.29-6.996 9.596-6.002 4.296.992 6.988 5.293 5.994 9.602L58.598 32h25.58z\\\"fill-rule=evenodd/>\"},\"$:/core/images/permaview-button\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-permaview-button tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cpath d=\\\"M81.483 48l-1.846 8h-5.58l1.847-8h5.58zm3.694-16l5.624-24.358c.993-4.303 5.29-6.996 9.596-6.002 4.296.992 6.988 5.293 5.994 9.602L101.598 32h2.403c4.41 0 7.999 3.582 7.999 8 0 4.41-3.581 8-8 8h-6.096l-1.847 8h7.944c4.41 0 7.999 3.582 7.999 8 0 4.41-3.581 8-8 8H92.364l-1.846 8H104c4.41 0 7.999 3.582 7.999 8 0 4.41-3.581 8-8 8H86.824l-5.624 24.358c-.993 4.303-5.29 6.996-9.596 6.002-4.296-.992-6.988-5.293-5.994-9.602L70.402 96h-5.58L59.2 120.358c-.993 4.303-5.29 6.996-9.596 6.002-4.296-.992-6.988-5.293-5.994-9.602L48.402 96h-5.58L37.2 120.358c-.993 4.303-5.29 6.996-9.596 6.002-4.296-.992-6.988-5.293-5.994-9.602L26.402 96h-2.403C19.59 96 16 92.418 16 88c0-4.41 3.581-8 8-8h6.096l1.847-8h-7.944C19.59 72 16 68.418 16 64c0-4.41 3.581-8 8-8h11.637l1.846-8H24C19.59 48 16 44.418 16 40c0-4.41 3.581-8 8-8h17.177l5.624-24.358c.993-4.303 5.29-6.996 9.596-6.002 4.296.992 6.988 5.293 5.994 9.602L57.598 32h5.58L68.8 7.642c.993-4.303 5.29-6.996 9.596-6.002 4.296.992 6.988 5.293 5.994 9.602L79.598 32h5.58zM53.904 48l-1.847 8h5.58l1.846-8h-5.579zm22.039 24l-1.847 8h-5.58l1.847-8h5.58zm-27.58 0l-1.846 8h5.579l1.847-8h-5.58z\\\"fill-rule=evenodd/>\"},\"$:/core/images/picture\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-picture tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cpath d=\\\"M112 68.233v-48.23A4.001 4.001 0 00107.997 16H20.003A4.001 4.001 0 0016 20.003v38.31l9.241-14.593c2.8-4.422 9.023-5.008 12.6-1.186l18.247 20.613 13.687-6.407a8 8 0 018.903 1.492 264.97 264.97 0 002.92 2.739 249.44 249.44 0 006.798 6.066 166.5 166.5 0 002.106 1.778c2.108 1.747 3.967 3.188 5.482 4.237.748.518 1.383.92 2.044 1.33.444.117 1.046.144 1.809.05 1.873-.233 4.238-1.144 6.723-2.547a36.016 36.016 0 003.205-2.044c.558-.4.93-.686 1.07-.802.376-.31.765-.577 1.165-.806zM0 8.007A8.01 8.01 0 018.007 0h111.986A8.01 8.01 0 01128 8.007v111.986a8.01 8.01 0 01-8.007 8.007H8.007A8.01 8.01 0 010 119.993V8.007zM95 42a8 8 0 100-16 8 8 0 000 16zM32 76c15.859 4.83 20.035 7.244 20.035 12S32 95.471 32 102.347c0 6.876 1.285 4.99 1.285 9.653H68s-13.685-6.625-13.685-10.8c0-7.665 10.615-8.34 10.615-13.2 0-7.357-14.078-8.833-32.93-12z\\\"fill-rule=evenodd/>\"},\"$:/core/images/plugin-generic-language\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt viewBox=\\\"0 0 128 128\\\"class=\\\"tc-image-plugin-generic-language tc-image-button\\\"height=22pt>\u003Cpath d=\\\"M61.207 68.137c-4.324 2.795-6.999 6.656-6.999 10.921 0 7.906 9.19 14.424 21.042 15.336 2.162 3.902 8.598 6.785 16.318 7.01-5.126-1.125-9.117-3.742-10.62-7.01C92.805 93.487 102 86.967 102 79.059c0-8.53-10.699-15.445-23.896-15.445-6.599 0-12.572 1.729-16.897 4.524zm12.794-14.158c-4.324 2.795-10.298 4.524-16.897 4.524-2.619 0-5.14-.272-7.497-.775-3.312 2.25-8.383 3.69-14.067 3.69l-.255-.002c4.119-.892 7.511-2.747 9.478-5.13-6.925-2.704-11.555-7.617-11.555-13.228 0-8.53 10.699-15.445 23.896-15.445C70.301 27.613 81 34.528 81 43.058c0 4.265-2.675 8.126-6.999 10.921zM64 0l54.56 32v64L64 128 9.44 96V32L64 0z\\\"fill-rule=evenodd/>\"},\"$:/core/images/plugin-generic-plugin\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt viewBox=\\\"0 0 128 128\\\"class=\\\"tc-image-plugin-generic-plugin tc-image-button\\\"height=22pt>\u003Cpath d=\\\"M40.397 76.446V95.34h14.12l-.001-.005a6.912 6.912 0 005.364-11.593l.046-.023a6.912 6.912 0 119.979.526l.086.055a6.914 6.914 0 004.408 10.948l-.023.092h21.32V75.568l-.15.038a6.912 6.912 0 00-11.593-5.364l-.022-.046a6.912 6.912 0 11.526-9.979l.055-.086a6.914 6.914 0 0010.948-4.408c.079.018.158.038.236.059v-15.74h-21.32l.023-.094a6.914 6.914 0 01-4.408-10.947 10.23 10.23 0 00-.086-.055 6.912 6.912 0 10-9.979-.526l-.046.023a6.912 6.912 0 01-5.364 11.593l.001.005h-14.12v12.847A6.912 6.912 0 0129.5 59.843l-.054.086a6.912 6.912 0 10-.526 9.979l.023.046a6.912 6.912 0 0111.455 6.492zM64 0l54.56 32v64L64 128 9.44 96V32L64 0z\\\"fill-rule=evenodd/>\"},\"$:/core/images/plugin-generic-theme\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt viewBox=\\\"0 0 128 128\\\"class=\\\"tc-image-plugin-generic-theme tc-image-button\\\"height=22pt>\u003Cpath d=\\\"M29.408 91.472L51.469 69.41l-.004-.005a2.22 2.22 0 01.004-3.146c.87-.87 2.281-.872 3.147-.005l9.465 9.464a2.22 2.22 0 01-.005 3.147c-.87.87-2.28.871-3.147.005l-.005-.005-22.061 22.062a6.686 6.686 0 11-9.455-9.455zM60.802 66.38c-2.436-2.704-4.465-5.091-5.817-6.869-6.855-9.014-10.313-4.268-14.226 0-3.913 4.268 1.03 7.726-2.683 10.741-3.713 3.015-3.484 4.06-9.752-1.455-6.267-5.516-6.7-7.034-3.823-10.181 2.877-3.147 5.281 1.808 11.159-3.785 5.877-5.593.94-10.55.94-10.55s12.237-25.014 28.588-23.167c16.351 1.848-6.186-2.392-11.792 17.226-2.4 8.4.447 6.42 4.998 9.968 1.394 1.086 6.03 4.401 11.794 8.685l20.677-20.676 1.615-4.766 7.84-4.689 3.151 3.152-4.688 7.84-4.766 1.615-20.224 20.223c12.663 9.547 28.312 22.146 28.312 26.709 0 7.217-3.071 11.526-9.535 9.164-4.693-1.715-18.768-15.192-28.753-25.897l-2.893 2.893-3.151-3.152 3.029-3.029zM63.953 0l54.56 32v64l-54.56 32-54.56-32V32l54.56-32z\\\"fill-rule=evenodd/>\"},\"$:/core/images/plus-button\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-plus-button tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cpath d=\\\"M64-.333c35.346 0 64 28.654 64 64 0 35.346-28.654 64-64 64-35.346 0-64-28.654-64-64 0-35.346 28.654-64 64-64zM64 16c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48z\\\"/>\u003Crect width=80 height=16 x=24 y=56 rx=8/>\u003Crect width=16 height=80 x=56 y=24 rx=8/>\"},\"$:/core/images/preview-closed\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-preview-closed tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cg fill-rule=evenodd>\u003Cpath d=\\\"M.088 64a7.144 7.144 0 001.378 5.458C16.246 88.818 39.17 100.414 64 100.414c24.83 0 47.753-11.596 62.534-30.956A7.144 7.144 0 00127.912 64C110.582 78.416 88.304 87.086 64 87.086 39.696 87.086 17.418 78.416.088 64z\\\"/>\u003Crect width=4 height=16 x=62 y=96 rx=4/>\u003Crect width=4 height=16 x=78 y=93 transform=\\\"rotate(-5 80 101)\\\"rx=4/>\u003Crect width=4 height=16 x=46 y=93 transform=\\\"rotate(5 48 101)\\\"rx=4/>\u003Crect width=4 height=16 x=30 y=88 transform=\\\"rotate(10 32 96)\\\"rx=4/>\u003Crect width=4 height=16 x=94 y=88 transform=\\\"rotate(-10 96 96)\\\"rx=4/>\u003Crect width=4 height=16 x=110 y=80 transform=\\\"rotate(-20 112 88)\\\"rx=4/>\u003Crect width=4 height=16 x=14 y=80 transform=\\\"rotate(20 16 88)\\\"rx=4/>\"},\"$:/core/images/preview-open\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-preview-open tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cg fill-rule=evenodd>\u003Cpath d=\\\"M64.11 99.588c-24.83 0-47.754-11.596-62.534-30.957a7.148 7.148 0 010-8.675C16.356 40.596 39.28 29 64.11 29c24.83 0 47.753 11.596 62.534 30.956a7.148 7.148 0 010 8.675c-14.78 19.36-37.703 30.957-62.534 30.957zm46.104-32.007c1.44-1.524 1.44-3.638 0-5.162C99.326 50.9 82.439 44 64.147 44S28.968 50.9 18.08 62.42c-1.44 1.523-1.44 3.637 0 5.16C28.968 79.1 45.855 86 64.147 86s35.179-6.9 46.067-18.42z\\\"/>\u003Cpath d=\\\"M63.5 88C76.479 88 87 77.479 87 64.5S76.479 41 63.5 41 40 51.521 40 64.5 50.521 88 63.5 88z\\\"/>\"},\"$:/core/images/print-button\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-print-button tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cg fill-rule=evenodd>\u003Cpath d=\\\"M112 71V30.5h-.032c-.035-2-.816-3.99-2.343-5.516L86.998 2.357A7.978 7.978 0 0081 .02V0H24a8 8 0 00-8 8v63h8V8h57v14.5c0 4.422 3.582 8 8 8h15V71h8z\\\"/>\u003Crect width=64 height=8 x=32 y=36 rx=4/>\u003Crect width=64 height=8 x=32 y=52 rx=4/>\u003Crect width=40 height=8 x=32 y=20 rx=4/>\u003Cpath d=\\\"M0 80.005C0 71.165 7.156 64 16 64h96c8.836 0 16 7.155 16 16.005v31.99c0 8.84-7.156 16.005-16 16.005H16c-8.836 0-16-7.155-16-16.005v-31.99zM104 96a8 8 0 100-16 8 8 0 000 16z\\\"/>\"},\"$:/core/images/quote\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-quote tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cpath d=\\\"M51.219 117.713V62.199H27.427c0-8.891 1.683-16.401 5.047-22.53 3.365-6.127 9.613-10.754 18.745-13.878V2c-7.45.961-14.36 3.184-20.728 6.669-6.368 3.484-11.835 7.87-16.401 13.157C9.524 27.113 5.98 33.241 3.456 40.21.933 47.18-.21 54.63.03 62.56v55.153H51.22zm76.781 0V62.199h-23.791c0-8.891 1.682-16.401 5.046-22.53 3.365-6.127 9.613-10.754 18.745-13.878V2c-7.45.961-14.359 3.184-20.727 6.669-6.369 3.484-11.836 7.87-16.402 13.157-4.566 5.287-8.11 11.415-10.634 18.384-2.523 6.97-3.665 14.42-3.424 22.35v55.153H128z\\\"fill-rule=evenodd/>\"},\"$:/core/images/refresh-button\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-refresh-button tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cpath d=\\\"M106.369 39.433c10.16 20.879 6.57 46.764-10.771 64.106-21.87 21.87-57.327 21.87-79.196 0-21.87-21.87-21.87-57.326 0-79.196a8 8 0 1111.314 11.314c-15.621 15.62-15.621 40.947 0 56.568 15.62 15.621 40.947 15.621 56.568 0C97.72 78.79 99.6 58.175 89.924 42.73l-6.44 12.264a8 8 0 11-14.166-7.437L84.435 18.76a8 8 0 0110.838-3.345l28.873 15.345a8 8 0 11-7.51 14.129l-10.267-5.457zm-8.222-12.368c-.167-.19-.336-.38-.506-.57l.96-.296-.454.866z\\\"fill-rule=evenodd/>\"},\"$:/core/images/right-arrow\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-right-arrow tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cpath d=\\\"M99.069 64.173c0 2.027-.77 4.054-2.316 5.6l-55.98 55.98a7.92 7.92 0 01-11.196 0c-3.085-3.086-3.092-8.105 0-11.196l50.382-50.382-50.382-50.382a7.92 7.92 0 010-11.195c3.086-3.085 8.104-3.092 11.196 0l55.98 55.98a7.892 7.892 0 012.316 5.595z\\\"/>\"},\"$:/core/images/rotate-left\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-rotate-left tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cg fill-rule=evenodd>\u003Crect width=32 height=80 rx=8/>\u003Crect width=80 height=32 x=48 y=96 rx=8/>\u003Cpath d=\\\"M61.32 36.65c19.743 2.45 35.023 19.287 35.023 39.693a4 4 0 01-8 0c0-15.663-11.254-28.698-26.117-31.46l3.916 3.916a4 4 0 11-5.657 5.657L49.172 43.142a4 4 0 010-5.657l11.313-11.313a4 4 0 115.657 5.656l-4.821 4.822z\\\"/>\"},\"$:/core/images/save-button\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-save-button tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cpath d=\\\"M120.783 34.33c4.641 8.862 7.266 18.948 7.266 29.646 0 35.347-28.653 64-64 64-35.346 0-64-28.653-64-64 0-35.346 28.654-64 64-64 18.808 0 35.72 8.113 47.43 21.03l2.68-2.68c3.13-3.13 8.197-3.132 11.321-.008 3.118 3.118 3.121 8.193-.007 11.32l-4.69 4.691zm-12.058 12.058a47.876 47.876 0 013.324 17.588c0 26.51-21.49 48-48 48s-48-21.49-48-48 21.49-48 48-48c14.39 0 27.3 6.332 36.098 16.362L58.941 73.544 41.976 56.578c-3.127-3.127-8.201-3.123-11.32-.005-3.123 3.124-3.119 8.194.006 11.319l22.617 22.617a7.992 7.992 0 005.659 2.347c2.05 0 4.101-.783 5.667-2.349l44.12-44.12z\\\"fill-rule=evenodd/>\"},\"$:/core/images/size\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-size tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cpath d=\\\"M92.343 26l-9.171 9.172a4 4 0 105.656 5.656l16-16a4 4 0 000-5.656l-16-16a4 4 0 10-5.656 5.656L92.343 18H22a4 4 0 00-4 4v70.343l-9.172-9.171a4 4 0 10-5.656 5.656l16 16a4 4 0 005.656 0l16-16a4 4 0 10-5.656-5.656L26 92.343V22l-4 4h70.343zM112 52v64l4-4H52a4 4 0 100 8h64a4 4 0 004-4V52a4 4 0 10-8 0z\\\"/>\"},\"$:/core/images/spiral\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-spiral tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cpath d=\\\"M64.534 68.348c3.39 0 6.097-2.62 6.476-5.968l-4.755-.538 4.75.583c.377-3.07-1.194-6.054-3.89-7.78-2.757-1.773-6.34-2.01-9.566-.7-3.46 1.403-6.14 4.392-7.35 8.148l-.01.026c-1.3 4.08-.72 8.64 1.58 12.52 2.5 4.2 6.77 7.2 11.76 8.27 5.37 1.15 11.11-.05 15.83-3.31 5.04-3.51 8.46-9.02 9.45-15.3 1.05-6.7-.72-13.63-4.92-19.19l.02.02c-4.42-5.93-11.2-9.82-18.78-10.78-7.96-1.01-16.13 1.31-22.59 6.43-6.81 5.39-11.18 13.41-12.11 22.26-.98 9.27 1.87 18.65 7.93 26.02 6.32 7.69 15.6 12.56 25.74 13.48 10.54.96 21.15-2.42 29.45-9.4l.01-.01c8.58-7.25 13.94-17.78 14.86-29.21.94-11.84-2.96-23.69-10.86-32.9-8.19-9.5-19.95-15.36-32.69-16.27-13.16-.94-26.24 3.49-36.34 12.34l.01-.01c-10.41 9.08-16.78 22.1-17.68 36.15-.93 14.44 4.03 28.77 13.79 39.78 10.03 11.32 24.28 18.2 39.6 19.09 15.73.92 31.31-4.56 43.24-15.234 12.23-10.954 19.61-26.44 20.5-43.074a4.785 4.785 0 00-4.52-5.03 4.778 4.778 0 00-5.03 4.52c-.75 14.1-7 27.2-17.33 36.45-10.03 8.98-23.11 13.58-36.3 12.81-12.79-.75-24.67-6.48-33-15.89-8.07-9.11-12.17-20.94-11.41-32.827.74-11.52 5.942-22.15 14.43-29.54l.01-.01c8.18-7.17 18.74-10.75 29.35-9.998 10.21.726 19.6 5.41 26.11 12.96 6.24 7.273 9.32 16.61 8.573 25.894-.718 8.9-4.88 17.064-11.504 22.66l.01-.007c-6.36 5.342-14.44 7.92-22.425 7.19-7.604-.68-14.52-4.314-19.21-10.027-4.44-5.4-6.517-12.23-5.806-18.94.67-6.3 3.76-11.977 8.54-15.766 4.46-3.54 10.05-5.128 15.44-4.44 5.03.63 9.46 3.18 12.32 7.01l.02.024c2.65 3.5 3.75 7.814 3.1 11.92-.59 3.71-2.58 6.925-5.45 8.924-2.56 1.767-5.61 2.403-8.38 1.81-2.42-.516-4.42-1.92-5.53-3.79-.93-1.56-1.15-3.3-.69-4.75l-4.56-1.446L59.325 65c.36-1.12 1.068-1.905 1.84-2.22.25-.103.48-.14.668-.13.06.006.11.015.14.025.01 0 .01 0-.01-.01a1.047 1.047 0 01-.264-.332c-.15-.29-.23-.678-.18-1.11l-.005.04c.15-1.332 1.38-2.523 3.035-2.523-2.65 0-4.79 2.144-4.79 4.787s2.14 4.785 4.78 4.785z\\\"/>\"},\"$:/core/images/stamp\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-stamp tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cpath d=\\\"M49.733 64H16.01C11.584 64 8 67.583 8 72.003V97h112V72.003A8 8 0 00111.99 64H78.267A22.813 22.813 0 0175.5 53.077c0-6.475 2.687-12.324 7.009-16.497A22.818 22.818 0 0087 22.952C87 10.276 76.703 0 64 0S41 10.276 41 22.952c0 5.103 1.669 9.817 4.491 13.628 4.322 4.173 7.009 10.022 7.009 16.497 0 3.954-1.002 7.675-2.767 10.923zM8 104h112v8H8v-8z\\\"fill-rule=evenodd/>\"},\"$:/core/images/star-filled\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-star-filled tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cpath d=\\\"M61.836 96.823l37.327 27.287c2.72 1.99 6.379-.69 5.343-3.912L90.29 75.988l-1.26 3.91 37.285-27.345c2.718-1.993 1.32-6.327-2.041-6.33l-46.113-.036 3.3 2.416L67.176 4.416c-1.04-3.221-5.563-3.221-6.604 0L46.29 48.603l3.3-2.416-46.113.036c-3.362.003-4.759 4.337-2.04 6.33L38.72 79.898l-1.26-3.91-14.216 44.21c-1.036 3.223 2.622 5.901 5.343 3.912l37.326-27.287h-4.078z\\\"/>\"},\"$:/core/images/storyview-classic\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-storyview-classic tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cpath d=\\\"M8.007 0A8.01 8.01 0 000 8.007v111.986A8.01 8.01 0 008.007 128h111.986a8.01 8.01 0 008.007-8.007V8.007A8.01 8.01 0 00119.993 0H8.007zm15.992 16C19.581 16 16 19.578 16 23.992v16.016C16 44.422 19.588 48 24 48h80c4.419 0 8-3.578 8-7.992V23.992c0-4.414-3.588-7.992-8-7.992H24zm0 48C19.581 64 16 67.59 16 72c0 4.418 3.588 8 8 8h80c4.419 0 8-3.59 8-8 0-4.418-3.588-8-8-8H24zm0 32C19.581 96 16 99.59 16 104c0 4.418 3.588 8 8 8h80c4.419 0 8-3.59 8-8 0-4.418-3.588-8-8-8H24z\\\"fill-rule=evenodd/>\"},\"$:/core/images/storyview-pop\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-storyview-pop tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cpath d=\\\"M8.007 0A8.01 8.01 0 000 8.007v111.986A8.01 8.01 0 008.007 128h111.986a8.01 8.01 0 008.007-8.007V8.007A8.01 8.01 0 00119.993 0H8.007zm15.992 16C19.581 16 16 19.578 16 23.992v16.016C16 44.422 19.588 48 24 48h80c4.419 0 8-3.578 8-7.992V23.992c0-4.414-3.588-7.992-8-7.992H24zm-7.99 40C11.587 56 8 59.578 8 63.992v16.016C8 84.422 11.584 88 16.01 88h95.98c4.424 0 8.01-3.578 8.01-7.992V63.992c0-4.414-3.584-7.992-8.01-7.992H16.01zM24 96C19.581 96 16 99.59 16 104c0 4.418 3.588 8 8 8h80c4.419 0 8-3.59 8-8 0-4.418-3.588-8-8-8H24zm0-32C19.581 64 16 67.59 16 72c0 4.418 3.588 8 8 8h80c4.419 0 8-3.59 8-8 0-4.418-3.588-8-8-8H24z\\\"fill-rule=evenodd/>\"},\"$:/core/images/storyview-zoomin\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-storyview-zoomin tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cpath d=\\\"M8.007 0A8.01 8.01 0 000 8.007v111.986A8.01 8.01 0 008.007 128h111.986a8.01 8.01 0 008.007-8.007V8.007A8.01 8.01 0 00119.993 0H8.007zm15.992 16A8 8 0 0016 24.009V71.99C16 76.414 19.588 80 24 80h80a8 8 0 008-8.009V24.01c0-4.423-3.588-8.009-8-8.009H24z\\\"fill-rule=evenodd/>\"},\"$:/core/images/strikethrough\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-strikethrough tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cg fill-rule=evenodd>\u003Cpath d=\\\"M92.794 38.726h15.422c-.229-6.74-1.514-12.538-3.856-17.393-2.342-4.855-5.54-8.881-9.596-12.08-4.055-3.199-8.767-5.54-14.136-7.025C75.258.743 69.433 0 63.15 0a62.76 62.76 0 00-16.364 2.142C41.474 3.57 36.733 5.74 32.564 8.653c-4.17 2.913-7.511 6.626-10.025 11.138-2.513 4.512-3.77 9.853-3.77 16.022 0 5.597 1.115 10.252 3.342 13.965 2.228 3.712 5.198 6.74 8.91 9.081 3.713 2.342 7.911 4.227 12.595 5.655a194.641 194.641 0 0014.308 3.77c4.855 1.085 9.624 2.142 14.308 3.17 4.683 1.028 8.881 2.37 12.594 4.027 3.713 1.656 6.683 3.798 8.91 6.425 2.228 2.628 3.342 6.055 3.342 10.281 0 4.456-.914 8.111-2.742 10.967a19.953 19.953 0 01-7.197 6.768c-2.97 1.657-6.311 2.828-10.024 3.513a60.771 60.771 0 01-11.052 1.028c-4.57 0-9.025-.571-13.366-1.713-4.34-1.143-8.139-2.913-11.394-5.312-3.256-2.4-5.884-5.455-7.883-9.168-1.999-3.712-2.998-8.139-2.998-13.28H15c0 7.426 1.342 13.852 4.027 19.278 2.684 5.426 6.34 9.881 10.966 13.365 4.627 3.484 9.996 6.083 16.107 7.797 6.112 1.713 12.595 2.57 19.449 2.57 5.597 0 11.223-.657 16.878-1.97 5.655-1.314 10.767-3.428 15.336-6.34 4.57-2.914 8.31-6.683 11.224-11.31 2.913-4.626 4.37-10.195 4.37-16.707 0-6.054-1.115-11.08-3.342-15.079-2.228-3.998-5.198-7.31-8.91-9.938-3.713-2.627-7.911-4.712-12.595-6.254a170.83 170.83 0 00-14.308-4.027 549.669 549.669 0 00-14.308-3.17c-4.683-.971-8.881-2.2-12.594-3.684-3.713-1.485-6.683-3.399-8.91-5.74-2.228-2.342-3.342-5.398-3.342-9.168 0-3.998.771-7.34 2.313-10.024 1.543-2.685 3.599-4.826 6.17-6.426 2.57-1.599 5.51-2.741 8.824-3.427a49.767 49.767 0 0110.11-1.028c8.453 0 15.393 1.97 20.819 5.912 5.426 3.94 8.596 10.31 9.51 19.106z\\\"/>\u003Cpath d=\\\"M5 54h118v16H5z\\\"/>\"},\"$:/core/images/subscript\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-subscript tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cpath d=\\\"M2.272 16h19.91l21.649 33.675L66.414 16h18.708L53.585 61.969l33.809 49.443H67.082L43.296 74.93l-24.187 36.48H0L33.808 61.97 2.272 16zM127.91 128.412H85.328c.059-5.168 1.306-9.681 3.741-13.542 2.435-3.86 5.761-7.216 9.978-10.066a112.388 112.388 0 016.325-4.321 50.09 50.09 0 006.058-4.499c1.841-1.603 3.356-3.34 4.543-5.211 1.188-1.871 1.812-4.024 1.871-6.46 0-1.128-.133-2.33-.4-3.607a9.545 9.545 0 00-1.56-3.564c-.772-1.098-1.84-2.019-3.207-2.761-1.366-.743-3.148-1.114-5.345-1.114-2.02 0-3.697.4-5.033 1.203-1.337.801-2.406 1.9-3.208 3.296-.801 1.396-1.395 3.044-1.781 4.944-.386 1.9-.609 3.95-.668 6.147H86.486c0-3.445.46-6.637 1.38-9.577.921-2.94 2.302-5.478 4.143-7.617 1.841-2.138 4.083-3.815 6.726-5.033 2.643-1.217 5.716-1.826 9.22-1.826 3.802 0 6.979.623 9.533 1.87 2.554 1.248 4.617 2.822 6.191 4.722 1.574 1.9 2.688 3.965 3.341 6.192.653 2.227.98 4.35.98 6.37 0 2.494-.386 4.75-1.158 6.77a21.803 21.803 0 01-3.118 5.568 31.516 31.516 0 01-4.454 4.677 66.788 66.788 0 01-5.167 4.009 139.198 139.198 0 01-5.346 3.563 79.237 79.237 0 00-4.944 3.386c-1.514 1.128-2.836 2.3-3.964 3.518-1.129 1.218-1.9 2.51-2.317 3.876h30.379v9.087z\\\"fill-rule=evenodd/>\"},\"$:/core/images/superscript\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-superscript tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cpath d=\\\"M2.272 16h19.91l21.649 33.675L66.414 16h18.708L53.585 61.969l33.809 49.443H67.082L43.296 74.93l-24.187 36.48H0L33.808 61.97 2.272 16zM127.91 63.412H85.328c.059-5.168 1.306-9.681 3.741-13.542 2.435-3.86 5.761-7.216 9.978-10.066a112.388 112.388 0 016.325-4.321 50.09 50.09 0 006.058-4.499c1.841-1.603 3.356-3.34 4.543-5.211 1.188-1.871 1.812-4.024 1.871-6.46 0-1.128-.133-2.33-.4-3.607a9.545 9.545 0 00-1.56-3.564c-.772-1.098-1.84-2.019-3.207-2.761-1.366-.743-3.148-1.114-5.345-1.114-2.02 0-3.697.4-5.033 1.203-1.337.801-2.406 1.9-3.208 3.296-.801 1.396-1.395 3.044-1.781 4.944-.386 1.9-.609 3.95-.668 6.147H86.486c0-3.445.46-6.637 1.38-9.577.921-2.94 2.302-5.478 4.143-7.617 1.841-2.138 4.083-3.815 6.726-5.033 2.643-1.217 5.716-1.826 9.22-1.826 3.802 0 6.979.623 9.533 1.87 2.554 1.248 4.617 2.822 6.191 4.722 1.574 1.9 2.688 3.965 3.341 6.192.653 2.227.98 4.35.98 6.37 0 2.494-.386 4.75-1.158 6.77a21.803 21.803 0 01-3.118 5.568 31.516 31.516 0 01-4.454 4.677 66.788 66.788 0 01-5.167 4.009 139.198 139.198 0 01-5.346 3.563 79.237 79.237 0 00-4.944 3.386c-1.514 1.128-2.836 2.3-3.964 3.518-1.129 1.218-1.9 2.51-2.317 3.876h30.379v9.087z\\\"fill-rule=evenodd/>\"},\"$:/core/images/tag-button\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-tag-button tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cg fill-rule=evenodd>\u003Cpath d=\\\"M18.164 47.66l.004 4.105c.003 3.823 2.19 9.097 4.885 11.792l61.85 61.85c2.697 2.697 7.068 2.69 9.769-.01L125.767 94.3a6.903 6.903 0 00.01-9.77L63.928 22.683c-2.697-2.697-7.976-4.88-11.796-4.881l-27.076-.007a6.902 6.902 0 00-6.91 6.91l.008 9.96.287.033c3.73.411 8.489-.044 13.365-1.153a9.702 9.702 0 0111.14-3.662l.291-.13.128.285a9.7 9.7 0 013.3 2.17c3.796 3.796 3.801 9.945.012 13.734-3.618 3.618-9.386 3.777-13.204.482-5.365 1.122-10.674 1.596-15.309 1.237z\\\"/>\u003Cpath d=\\\"M47.633 39.532l.023.051c-9.689 4.356-21.584 6.799-30.396 5.828C5.273 44.089-1.028 36.43 2.443 24.078 5.562 12.976 14.3 4.361 24.047 1.548c10.68-3.083 19.749 1.968 19.749 13.225h-8.623c0-4.859-3.078-6.573-8.735-4.94-6.91 1.995-13.392 8.383-15.694 16.577-1.915 6.818.417 9.653 7.46 10.43 7.126.785 17.531-1.352 25.917-5.121l.027.06.036-.017c1.76-.758 6.266 6.549 3.524 7.74a2.8 2.8 0 01-.075.03z\\\"/>\"},\"$:/core/images/theme-button\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-theme-button tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cg fill-rule=evenodd>\u003Cpath d=\\\"M55.854 66.945a122.626 122.626 0 01-3.9-4.819c-11.064-14.548-16.645-6.888-22.96 0-6.315 6.888 1.664 12.47-4.33 17.335-5.993 4.866-5.623 6.552-15.737-2.35-10.115-8.9-10.815-11.351-6.172-16.43 4.644-5.08 8.524 2.918 18.01-6.108 9.485-9.026 1.517-17.026 1.517-17.026S42.03-2.824 68.42.157c26.39 2.982-9.984-3.86-19.031 27.801-3.874 13.556.72 10.362 8.066 16.087 1.707 1.33 6.428 4.732 12.671 9.318-6.129 5.879-11.157 10.669-14.273 13.582zm11.641 12.947c16.013 17.036 37.742 37.726 45.117 40.42 10.432 3.813 15.388-3.141 15.388-14.79 0-7.151-23.83-26.542-43.924-41.769-7.408 7.156-13.376 12.953-16.58 16.139z\\\"/>\u003Cpath d=\\\"M11.069 109.828L46.31 74.587a3.56 3.56 0 115.037-5.032l15.098 15.098a3.56 3.56 0 11-5.032 5.037l-35.24 35.241c-4.171 4.17-10.933 4.17-15.104 0-4.17-4.17-4.17-10.933 0-15.103zM124.344 6.622l5.034 5.034-7.49 12.524-7.613 2.58L61.413 79.62l-5.034-5.034 52.861-52.862 2.58-7.614 12.524-7.49z\\\"/>\"},\"$:/core/images/timestamp-off\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-timestamp-off tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cg fill-rule=evenodd>\u003Cpath d=\\\"M58.25 11C26.08 11 0 37.082 0 69.25s26.08 58.25 58.25 58.25c32.175 0 58.25-26.082 58.25-58.25S90.425 11 58.25 11zm0 100.5C34.914 111.5 16 92.586 16 69.25 16 45.92 34.914 27 58.25 27s42.25 18.92 42.25 42.25c0 23.336-18.914 42.25-42.25 42.25zM49.704 10a5 5 0 010-10H66.69a5 5 0 015 5c.006 2.757-2.238 5-5 5H49.705z\\\"/>\u003Cpath d=\\\"M58.25 35.88c-18.777 0-33.998 15.224-33.998 33.998 0 18.773 15.22 34.002 33.998 34.002 18.784 0 34.002-15.23 34.002-34.002 0-18.774-15.218-33.998-34.002-33.998zm-3.03 50.123H44.196v-34H55.22v34zm16.976 0H61.17v-34h11.025v34z\\\"/>\"},\"$:/core/images/timestamp-on\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-timestamp-on tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cg fill-rule=evenodd>\u003Cpath d=\\\"M58.25 11C26.08 11 0 37.082 0 69.25s26.08 58.25 58.25 58.25c32.175 0 58.25-26.082 58.25-58.25S90.425 11 58.25 11zm0 100.5C34.914 111.5 16 92.586 16 69.25 16 45.92 34.914 27 58.25 27s42.25 18.92 42.25 42.25c0 23.336-18.914 42.25-42.25 42.25zM49.704 10a5 5 0 010-10H66.69a5 5 0 015 5c.006 2.757-2.238 5-5 5H49.705z\\\"/>\u003Cpath d=\\\"M13.41 27.178a5.005 5.005 0 01-7.045-.613 5.008 5.008 0 01.616-7.047l9.95-8.348a5 5 0 016.429 7.661l-9.95 8.348zm89.573 0a5.005 5.005 0 007.045-.613 5.008 5.008 0 00-.616-7.047l-9.95-8.348a5 5 0 00-6.428 7.661l9.95 8.348zM65.097 71.072c0 3.826-3.09 6.928-6.897 6.928-3.804.006-6.9-3.102-6.903-6.928 0 0 4.76-39.072 6.903-39.072s6.897 39.072 6.897 39.072z\\\"/>\"},\"$:/core/images/tip\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-tip tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cpath d=\\\"M64 128.242c35.346 0 64-28.654 64-64 0-35.346-28.654-64-64-64-35.346 0-64 28.654-64 64 0 35.346 28.654 64 64 64zm11.936-36.789c-.624 4.129-5.73 7.349-11.936 7.349-6.206 0-11.312-3.22-11.936-7.349C54.33 94.05 58.824 95.82 64 95.82c5.175 0 9.67-1.769 11.936-4.366zm0 4.492c-.624 4.13-5.73 7.349-11.936 7.349-6.206 0-11.312-3.22-11.936-7.349 2.266 2.597 6.76 4.366 11.936 4.366 5.175 0 9.67-1.769 11.936-4.366zm0 4.456c-.624 4.129-5.73 7.349-11.936 7.349-6.206 0-11.312-3.22-11.936-7.349 2.266 2.597 6.76 4.366 11.936 4.366 5.175 0 9.67-1.769 11.936-4.366zm0 4.492c-.624 4.13-5.73 7.349-11.936 7.349-6.206 0-11.312-3.22-11.936-7.349 2.266 2.597 6.76 4.366 11.936 4.366 5.175 0 9.67-1.769 11.936-4.366zM64.3 24.242c11.618 0 23.699 7.82 23.699 24.2S75.92 71.754 75.92 83.576c0 5.873-5.868 9.26-11.92 9.26s-12.027-3.006-12.027-9.26C51.973 71.147 40 65.47 40 48.442s12.683-24.2 24.301-24.2z\\\"fill-rule=evenodd/>\"},\"$:/core/images/transcludify\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-transcludify-button tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cpath d=\\\"M0 59.482c.591 0 1.36-.089 2.306-.266a10.417 10.417 0 002.75-.932 6.762 6.762 0 002.306-1.907c.651-.828.976-1.863.976-3.104V35.709c0-2.01.414-3.74 1.242-5.19.828-1.448 1.833-2.66 3.016-3.636s2.425-1.7 3.726-2.173c1.3-.473 2.424-.71 3.37-.71h8.073v7.451h-4.88c-1.241 0-2.232.207-2.97.621-.74.414-1.302.932-1.686 1.552a4.909 4.909 0 00-.71 1.996c-.089.71-.133 1.39-.133 2.04v16.677c0 1.715-.325 3.134-.976 4.258-.65 1.123-1.434 2.025-2.35 2.705-.917.68-1.863 1.168-2.839 1.464-.976.296-1.818.473-2.528.532v.178c.71.059 1.552.207 2.528.443.976.237 1.922.68 2.839 1.33.916.651 1.7 1.583 2.35 2.795.65 1.212.976 2.853.976 4.923v16.144c0 .65.044 1.33.133 2.04.089.71.325 1.375.71 1.996.384.621.946 1.139 1.685 1.553.74.414 1.73.62 2.972.62h4.879v7.452h-8.073c-.946 0-2.07-.237-3.37-.71-1.301-.473-2.543-1.197-3.726-2.173-1.183-.976-2.188-2.188-3.016-3.637-.828-1.449-1.242-3.179-1.242-5.19V74.119c0-1.42-.325-2.572-.976-3.46-.65-.886-1.419-1.581-2.306-2.084a8.868 8.868 0 00-2.75-1.02C1.36 67.377.591 67.288 0 67.288v-7.806zm24.66 0c.591 0 1.36-.089 2.306-.266a10.417 10.417 0 002.75-.932 6.762 6.762 0 002.306-1.907c.65-.828.976-1.863.976-3.104V35.709c0-2.01.414-3.74 1.242-5.19.828-1.448 1.833-2.66 3.016-3.636s2.425-1.7 3.726-2.173c1.3-.473 2.424-.71 3.37-.71h8.073v7.451h-4.88c-1.241 0-2.232.207-2.97.621-.74.414-1.302.932-1.686 1.552a4.909 4.909 0 00-.71 1.996c-.089.71-.133 1.39-.133 2.04v16.677c0 1.715-.325 3.134-.976 4.258-.65 1.123-1.434 2.025-2.35 2.705-.917.68-1.863 1.168-2.839 1.464-.976.296-1.818.473-2.528.532v.178c.71.059 1.552.207 2.528.443.976.237 1.922.68 2.839 1.33.916.651 1.7 1.583 2.35 2.795.65 1.212.976 2.853.976 4.923v16.144c0 .65.044 1.33.133 2.04.089.71.325 1.375.71 1.996.384.621.946 1.139 1.685 1.553.74.414 1.73.62 2.972.62h4.879v7.452h-8.073c-.946 0-2.07-.237-3.37-.71-1.301-.473-2.543-1.197-3.726-2.173-1.183-.976-2.188-2.188-3.016-3.637-.828-1.449-1.242-3.179-1.242-5.19V74.119c0-1.42-.325-2.572-.976-3.46-.65-.886-1.419-1.581-2.306-2.084a8.868 8.868 0 00-2.75-1.02c-.946-.177-1.715-.266-2.306-.266v-7.806zm43.965-3.538L80.6 52.041l2.306 7.097-12.063 3.903 7.628 10.378-6.12 4.435-7.63-10.467-7.45 10.201-5.943-4.524 7.628-10.023-12.152-4.17 2.306-7.096 12.064 4.17V43.347h7.451v12.596zm34.425 11.344c-.65 0-1.449.089-2.395.266-.946.177-1.863.488-2.75.931a6.356 6.356 0 00-2.262 1.908c-.62.828-.931 1.862-.931 3.104v17.564c0 2.01-.414 3.74-1.242 5.189-.828 1.449-1.833 2.661-3.016 3.637s-2.425 1.7-3.726 2.173c-1.3.473-2.424.71-3.37.71h-8.073v-7.451h4.88c1.241 0 2.232-.207 2.97-.621.74-.414 1.302-.932 1.686-1.553a4.9 4.9 0 00.71-1.995c.089-.71.133-1.39.133-2.04V72.432c0-1.715.325-3.134.976-4.258.65-1.124 1.434-2.01 2.35-2.661.917-.65 1.863-1.124 2.839-1.42.976-.295 1.818-.502 2.528-.62v-.178c-.71-.059-1.552-.207-2.528-.443-.976-.237-1.922-.68-2.839-1.33-.916-.651-1.7-1.583-2.35-2.795-.65-1.212-.976-2.853-.976-4.923V37.66c0-.651-.044-1.331-.133-2.04a4.909 4.909 0 00-.71-1.997c-.384-.62-.946-1.138-1.685-1.552-.74-.414-1.73-.62-2.972-.62h-4.879V24h8.073c.946 0 2.07.237 3.37.71 1.301.473 2.543 1.197 3.726 2.173 1.183.976 2.188 2.188 3.016 3.637.828 1.449 1.242 3.178 1.242 5.189v16.943c0 1.419.31 2.572.931 3.46a6.897 6.897 0 002.262 2.084 8.868 8.868 0 002.75 1.02c.946.177 1.745.266 2.395.266v7.806zm24.66 0c-.65 0-1.449.089-2.395.266-.946.177-1.863.488-2.75.931a6.356 6.356 0 00-2.262 1.908c-.62.828-.931 1.862-.931 3.104v17.564c0 2.01-.414 3.74-1.242 5.189-.828 1.449-1.833 2.661-3.016 3.637s-2.425 1.7-3.726 2.173c-1.3.473-2.424.71-3.37.71h-8.073v-7.451h4.88c1.241 0 2.232-.207 2.97-.621.74-.414 1.302-.932 1.686-1.553a4.9 4.9 0 00.71-1.995c.089-.71.133-1.39.133-2.04V72.432c0-1.715.325-3.134.976-4.258.65-1.124 1.434-2.01 2.35-2.661.917-.65 1.863-1.124 2.839-1.42.976-.295 1.818-.502 2.528-.62v-.178c-.71-.059-1.552-.207-2.528-.443-.976-.237-1.922-.68-2.839-1.33-.916-.651-1.7-1.583-2.35-2.795-.65-1.212-.976-2.853-.976-4.923V37.66c0-.651-.044-1.331-.133-2.04a4.909 4.909 0 00-.71-1.997c-.384-.62-.946-1.138-1.685-1.552-.74-.414-1.73-.62-2.972-.62h-4.879V24h8.073c.946 0 2.07.237 3.37.71 1.301.473 2.543 1.197 3.726 2.173 1.183.976 2.188 2.188 3.016 3.637.828 1.449 1.242 3.178 1.242 5.189v16.943c0 1.419.31 2.572.931 3.46a6.897 6.897 0 002.262 2.084 8.868 8.868 0 002.75 1.02c.946.177 1.745.266 2.395.266v7.806z\\\"fill-rule=evenodd/>\"},\"$:/core/images/twitter\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-twitter tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cpath d=\\\"M41.626 115.803A73.376 73.376 0 012 104.235c2.022.238 4.08.36 6.166.36 12.111 0 23.258-4.117 32.105-11.023-11.312-.208-20.859-7.653-24.148-17.883a25.98 25.98 0 0011.674-.441C15.971 72.881 7.061 62.474 7.061 49.997c0-.108 0-.216.002-.323a25.824 25.824 0 0011.709 3.22c-6.936-4.617-11.5-12.5-11.5-21.433 0-4.719 1.274-9.142 3.5-12.945 12.75 15.579 31.797 25.83 53.281 26.904-.44-1.884-.67-3.85-.67-5.868 0-14.22 11.575-25.75 25.852-25.75a25.865 25.865 0 0118.869 8.132 51.892 51.892 0 0016.415-6.248c-1.93 6.012-6.029 11.059-11.366 14.246A51.844 51.844 0 00128 25.878a52.428 52.428 0 01-12.9 13.33c.05 1.104.075 2.214.075 3.33 0 34.028-26 73.265-73.549 73.265\\\"fill-rule=evenodd/>\"},\"$:/core/images/underline\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-underline tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cpath d=\\\"M7 117.421h114.248V128H7v-10.579zm97.871-18.525V0h-16.26v55.856c0 4.463-.605 8.576-1.816 12.338-1.212 3.762-3.03 7.046-5.452 9.851-2.423 2.806-5.452 4.974-9.086 6.504-3.635 1.53-7.939 2.296-12.912 2.296-6.25 0-11.159-1.786-14.73-5.356-3.57-3.571-5.356-8.417-5.356-14.538V0H23v65.038c0 5.356.542 10.234 1.626 14.633 1.084 4.4 2.965 8.194 5.643 11.382 2.678 3.188 6.185 5.643 10.52 7.365 4.337 1.721 9.756 2.582 16.26 2.582 7.27 0 13.582-1.435 18.938-4.304 5.356-2.87 9.755-7.365 13.199-13.486h.382v15.686h15.303z\\\"fill-rule=evenodd/>\"},\"$:/core/images/unfold-all-button\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-unfold-all tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cg fill-rule=evenodd>\u003Crect width=128 height=16 rx=8/>\u003Crect width=128 height=16 y=64 rx=8/>\u003Cpath d=\\\"M63.945 60.624c-2.05 0-4.101-.78-5.666-2.345L35.662 35.662c-3.125-3.125-3.13-8.195-.005-11.319 3.118-3.118 8.192-3.122 11.319.005L63.94 41.314l16.966-16.966c3.124-3.124 8.194-3.129 11.318-.005 3.118 3.118 3.122 8.192-.005 11.319L69.603 58.279a7.986 7.986 0 01-5.663 2.346zM64.004 124.565c-2.05 0-4.102-.78-5.666-2.345L35.721 99.603c-3.125-3.125-3.13-8.195-.005-11.319 3.118-3.118 8.191-3.122 11.318.005L64 105.255l16.966-16.966c3.124-3.124 8.194-3.129 11.318-.005 3.118 3.118 3.122 8.192-.005 11.319L69.662 122.22a7.986 7.986 0 01-5.663 2.346z\\\"/>\"},\"$:/core/images/unfold-button\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-unfold tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cg fill-rule=evenodd>\u003Crect width=128 height=16 rx=8/>\u003Cpath d=\\\"M63.945 63.624c-2.05 0-4.101-.78-5.666-2.345L35.662 38.662c-3.125-3.125-3.13-8.195-.005-11.319 3.118-3.118 8.192-3.122 11.319.005L63.94 44.314l16.966-16.966c3.124-3.124 8.194-3.129 11.318-.005 3.118 3.118 3.122 8.192-.005 11.319L69.603 61.279a7.986 7.986 0 01-5.663 2.346zM64.004 105.682c-2.05.001-4.102-.78-5.666-2.344L35.721 80.721c-3.125-3.125-3.13-8.195-.005-11.319 3.118-3.118 8.191-3.122 11.318.005L64 86.373l16.966-16.966c3.124-3.125 8.194-3.13 11.318-.005 3.118 3.118 3.122 8.192-.005 11.319l-22.617 22.617a7.986 7.986 0 01-5.663 2.346z\\\"/>\"},\"$:/core/images/unlocked-padlock\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-unlocked-padlock tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cpath d=\\\"M48.627 64H105v32.01C105 113.674 90.674 128 73.001 128H56C38.318 128 24 113.677 24 96.01V64h6.136c-10.455-12.651-27.364-35.788-4.3-55.142 24.636-20.672 45.835 4.353 55.777 16.201 9.943 11.85-2.676 22.437-12.457 9.892-9.78-12.545-21.167-24.146-33.207-14.043-12.041 10.104-1.757 22.36 8.813 34.958 2.467 2.94 3.641 5.732 3.865 8.134zm19.105 28.364A8.503 8.503 0 0064.5 76a8.5 8.5 0 00-3.498 16.25l-5.095 22.77H72.8l-5.07-22.656z\\\"fill-rule=evenodd/>\"},\"$:/core/images/up-arrow\":{\"created\":\"20150316000544368\",\"modified\":\"20150316000831867\",\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-up-arrow tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cpath d=\\\"M63.892.281c2.027 0 4.054.77 5.6 2.316l55.98 55.98a7.92 7.92 0 010 11.196c-3.086 3.085-8.104 3.092-11.196 0L63.894 19.393 13.513 69.774a7.92 7.92 0 01-11.196 0c-3.085-3.086-3.092-8.105 0-11.196l55.98-55.98A7.892 7.892 0 0163.893.28z\\\"/>\"},\"$:/core/images/video\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-video tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cpath d=\\\"M64 12c-34.91 0-55.273 2.917-58.182 5.833C2.91 20.75 0 41.167 0 64.5c0 23.333 2.91 43.75 5.818 46.667C8.728 114.083 29.091 117 64 117c34.91 0 55.273-2.917 58.182-5.833C125.09 108.25 128 87.833 128 64.5c0-23.333-2.91-43.75-5.818-46.667C119.272 14.917 98.909 12 64 12zm-9.084 32.618c-3.813-2.542-6.905-.879-6.905 3.698v31.368c0 4.585 3.099 6.235 6.905 3.698l22.168-14.779c3.813-2.542 3.806-6.669 0-9.206L54.916 44.618z\\\"fill-rule=evenodd/>\"},\"$:/core/images/warning\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-warning tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\u003Cpath d=\\\"M57.072 11c3.079-5.333 10.777-5.333 13.856 0l55.426 96c3.079 5.333-.77 12-6.928 12H8.574c-6.158 0-10.007-6.667-6.928-12l55.426-96zM64 37c-4.418 0-8 3.582-8 7.994v28.012C56 77.421 59.59 81 64 81c4.418 0 8-3.582 8-7.994V44.994C72 40.579 68.41 37 64 37zm0 67a8 8 0 100-16 8 8 0 000 16z\\\"fill-rule=evenodd/>\"},\"$:/language/Buttons/AdvancedSearch/Caption\":{\"text\":\"advanced search\"},\"$:/language/Buttons/AdvancedSearch/Hint\":{\"text\":\"Advanced search\"},\"$:/language/Buttons/Cancel/Caption\":{\"text\":\"cancel\"},\"$:/language/Buttons/Cancel/Hint\":{\"text\":\"Discard changes to this tiddler\"},\"$:/language/Buttons/Clone/Caption\":{\"text\":\"clone\"},\"$:/language/Buttons/Clone/Hint\":{\"text\":\"Clone this tiddler\"},\"$:/language/Buttons/Close/Caption\":{\"text\":\"close\"},\"$:/language/Buttons/Close/Hint\":{\"text\":\"Close this tiddler\"},\"$:/language/Buttons/CloseAll/Caption\":{\"text\":\"close all\"},\"$:/language/Buttons/CloseAll/Hint\":{\"text\":\"Close all tiddlers\"},\"$:/language/Buttons/CloseOthers/Caption\":{\"text\":\"close others\"},\"$:/language/Buttons/CloseOthers/Hint\":{\"text\":\"Close other tiddlers\"},\"$:/language/Buttons/ControlPanel/Caption\":{\"text\":\"control panel\"},\"$:/language/Buttons/ControlPanel/Hint\":{\"text\":\"Open control panel\"},\"$:/language/Buttons/CopyToClipboard/Caption\":{\"text\":\"copy to clipboard\"},\"$:/language/Buttons/CopyToClipboard/Hint\":{\"text\":\"Copy this text to the clipboard\"},\"$:/language/Buttons/Delete/Caption\":{\"text\":\"delete\"},\"$:/language/Buttons/Delete/Hint\":{\"text\":\"Delete this tiddler\"},\"$:/language/Buttons/DeleteTiddlers/Caption\":{\"text\":\"delete tiddlers\"},\"$:/language/Buttons/DeleteTiddlers/Hint\":{\"text\":\"Delete tiddlers\"},\"$:/language/Buttons/Edit/Caption\":{\"text\":\"edit\"},\"$:/language/Buttons/Edit/Hint\":{\"text\":\"Edit this tiddler\"},\"$:/language/Buttons/Encryption/Caption\":{\"text\":\"encryption\"},\"$:/language/Buttons/Encryption/Hint\":{\"text\":\"Set or clear a password for saving this wiki\"},\"$:/language/Buttons/Encryption/ClearPassword/Caption\":{\"text\":\"clear password\"},\"$:/language/Buttons/Encryption/ClearPassword/Hint\":{\"text\":\"Clear the password and save this wiki without encryption\"},\"$:/language/Buttons/Encryption/SetPassword/Caption\":{\"text\":\"set password\"},\"$:/language/Buttons/Encryption/SetPassword/Hint\":{\"text\":\"Set a password for saving this wiki with encryption\"},\"$:/language/Buttons/ExportPage/Caption\":{\"text\":\"export all\"},\"$:/language/Buttons/ExportPage/Hint\":{\"text\":\"Export all tiddlers\"},\"$:/language/Buttons/ExportTiddler/Caption\":{\"text\":\"export tiddler\"},\"$:/language/Buttons/ExportTiddler/Hint\":{\"text\":\"Export tiddler\"},\"$:/language/Buttons/ExportTiddlers/Caption\":{\"text\":\"export tiddlers\"},\"$:/language/Buttons/ExportTiddlers/Hint\":{\"text\":\"Export tiddlers\"},\"$:/language/Buttons/SidebarSearch/Hint\":{\"text\":\"Select the sidebar search field\"},\"$:/language/Buttons/Fold/Caption\":{\"text\":\"fold tiddler\"},\"$:/language/Buttons/Fold/Hint\":{\"text\":\"Fold the body of this tiddler\"},\"$:/language/Buttons/Fold/FoldBar/Caption\":{\"text\":\"fold-bar\"},\"$:/language/Buttons/Fold/FoldBar/Hint\":{\"text\":\"Optional bars to fold and unfold tiddlers\"},\"$:/language/Buttons/Unfold/Caption\":{\"text\":\"unfold tiddler\"},\"$:/language/Buttons/Unfold/Hint\":{\"text\":\"Unfold the body of this tiddler\"},\"$:/language/Buttons/FoldOthers/Caption\":{\"text\":\"fold other tiddlers\"},\"$:/language/Buttons/FoldOthers/Hint\":{\"text\":\"Fold the bodies of other opened tiddlers\"},\"$:/language/Buttons/FoldAll/Caption\":{\"text\":\"fold all tiddlers\"},\"$:/language/Buttons/FoldAll/Hint\":{\"text\":\"Fold the bodies of all opened tiddlers\"},\"$:/language/Buttons/UnfoldAll/Caption\":{\"text\":\"unfold all tiddlers\"},\"$:/language/Buttons/UnfoldAll/Hint\":{\"text\":\"Unfold the bodies of all opened tiddlers\"},\"$:/language/Buttons/FullScreen/Caption\":{\"text\":\"full-screen\"},\"$:/language/Buttons/FullScreen/Hint\":{\"text\":\"Enter or leave full-screen mode\"},\"$:/language/Buttons/Help/Caption\":{\"text\":\"help\"},\"$:/language/Buttons/Help/Hint\":{\"text\":\"Show help panel\"},\"$:/language/Buttons/Import/Caption\":{\"text\":\"import\"},\"$:/language/Buttons/Import/Hint\":{\"text\":\"Import many types of file including text, image, TiddlyWiki or JSON\"},\"$:/language/Buttons/Info/Caption\":{\"text\":\"info\"},\"$:/language/Buttons/Info/Hint\":{\"text\":\"Show information for this tiddler\"},\"$:/language/Buttons/Home/Caption\":{\"text\":\"home\"},\"$:/language/Buttons/Home/Hint\":{\"text\":\"Open the default tiddlers\"},\"$:/language/Buttons/Language/Caption\":{\"text\":\"language\"},\"$:/language/Buttons/Language/Hint\":{\"text\":\"Choose the user interface language\"},\"$:/language/Buttons/LayoutSwitcher/Hint\":{\"text\":\"Open layout switcher\"},\"$:/language/Buttons/LayoutSwitcher/Caption\":{\"text\":\"layout\"},\"$:/language/Buttons/Manager/Caption\":{\"text\":\"tiddler manager\"},\"$:/language/Buttons/Manager/Hint\":{\"text\":\"Open tiddler manager\"},\"$:/language/Buttons/More/Caption\":{\"text\":\"more\"},\"$:/language/Buttons/More/Hint\":{\"text\":\"More actions\"},\"$:/language/Buttons/NewHere/Caption\":{\"text\":\"new here\"},\"$:/language/Buttons/NewHere/Hint\":{\"text\":\"Create a new tiddler tagged with this one\"},\"$:/language/Buttons/NewJournal/Caption\":{\"text\":\"new journal\"},\"$:/language/Buttons/NewJournal/Hint\":{\"text\":\"Create a new journal tiddler\"},\"$:/language/Buttons/NewJournalHere/Caption\":{\"text\":\"new journal here\"},\"$:/language/Buttons/NewJournalHere/Hint\":{\"text\":\"Create a new journal tiddler tagged with this one\"},\"$:/language/Buttons/NewImage/Caption\":{\"text\":\"new image\"},\"$:/language/Buttons/NewImage/Hint\":{\"text\":\"Create a new image tiddler\"},\"$:/language/Buttons/NewMarkdown/Caption\":{\"text\":\"new Markdown tiddler\"},\"$:/language/Buttons/NewMarkdown/Hint\":{\"text\":\"Create a new Markdown tiddler\"},\"$:/language/Buttons/NewTiddler/Caption\":{\"text\":\"new tiddler\"},\"$:/language/Buttons/NewTiddler/Hint\":{\"text\":\"Create a new tiddler\"},\"$:/language/Buttons/OpenWindow/Caption\":{\"text\":\"open in new window\"},\"$:/language/Buttons/OpenWindow/Hint\":{\"text\":\"Open tiddler in new window\"},\"$:/language/Buttons/Palette/Caption\":{\"text\":\"palette\"},\"$:/language/Buttons/Palette/Hint\":{\"text\":\"Choose the colour palette\"},\"$:/language/Buttons/Permalink/Caption\":{\"text\":\"permalink\"},\"$:/language/Buttons/Permalink/Hint\":{\"text\":\"Set browser address bar to a direct link to this tiddler\"},\"$:/language/Buttons/Permaview/Caption\":{\"text\":\"permaview\"},\"$:/language/Buttons/Permaview/Hint\":{\"text\":\"Set browser address bar to a direct link to all the tiddlers in this story\"},\"$:/language/Buttons/Print/Caption\":{\"text\":\"print page\"},\"$:/language/Buttons/Print/Hint\":{\"text\":\"Print the current page\"},\"$:/language/Buttons/Refresh/Caption\":{\"text\":\"refresh\"},\"$:/language/Buttons/Refresh/Hint\":{\"text\":\"Perform a full refresh of the wiki\"},\"$:/language/Buttons/Save/Caption\":{\"text\":\"ok\"},\"$:/language/Buttons/Save/Hint\":{\"text\":\"Confirm changes to this tiddler\"},\"$:/language/Buttons/SaveWiki/Caption\":{\"text\":\"save changes\"},\"$:/language/Buttons/SaveWiki/Hint\":{\"text\":\"Save changes\"},\"$:/language/Buttons/StoryView/Caption\":{\"text\":\"storyview\"},\"$:/language/Buttons/StoryView/Hint\":{\"text\":\"Choose the story visualisation\"},\"$:/language/Buttons/HideSideBar/Caption\":{\"text\":\"hide sidebar\"},\"$:/language/Buttons/HideSideBar/Hint\":{\"text\":\"Hide sidebar\"},\"$:/language/Buttons/ShowSideBar/Caption\":{\"text\":\"show sidebar\"},\"$:/language/Buttons/ShowSideBar/Hint\":{\"text\":\"Show sidebar\"},\"$:/language/Buttons/TagManager/Caption\":{\"text\":\"tag manager\"},\"$:/language/Buttons/TagManager/Hint\":{\"text\":\"Open tag manager\"},\"$:/language/Buttons/Timestamp/Caption\":{\"text\":\"timestamps\"},\"$:/language/Buttons/Timestamp/Hint\":{\"text\":\"Choose whether modifications update timestamps\"},\"$:/language/Buttons/Timestamp/On/Caption\":{\"text\":\"timestamps are on\"},\"$:/language/Buttons/Timestamp/On/Hint\":{\"text\":\"Update timestamps when tiddlers are modified\"},\"$:/language/Buttons/Timestamp/Off/Caption\":{\"text\":\"timestamps are off\"},\"$:/language/Buttons/Timestamp/Off/Hint\":{\"text\":\"Don't update timestamps when tiddlers are modified\"},\"$:/language/Buttons/Theme/Caption\":{\"text\":\"theme\"},\"$:/language/Buttons/Theme/Hint\":{\"text\":\"Choose the display theme\"},\"$:/language/Buttons/Bold/Caption\":{\"text\":\"bold\"},\"$:/language/Buttons/Bold/Hint\":{\"text\":\"Apply bold formatting to selection\"},\"$:/language/Buttons/Clear/Caption\":{\"text\":\"clear\"},\"$:/language/Buttons/Clear/Hint\":{\"text\":\"Clear image to solid colour\"},\"$:/language/Buttons/EditorHeight/Caption\":{\"text\":\"editor height\"},\"$:/language/Buttons/EditorHeight/Caption/Auto\":{\"text\":\"Automatically adjust height to fit content\"},\"$:/language/Buttons/EditorHeight/Caption/Fixed\":{\"text\":\"Fixed height:\"},\"$:/language/Buttons/EditorHeight/Hint\":{\"text\":\"Choose the height of the text editor\"},\"$:/language/Buttons/Excise/Caption\":{\"text\":\"excise\"},\"$:/language/Buttons/Excise/Caption/Excise\":{\"text\":\"Perform excision\"},\"$:/language/Buttons/Excise/Caption/MacroName\":{\"text\":\"Macro name:\"},\"$:/language/Buttons/Excise/Caption/NewTitle\":{\"text\":\"Title of new tiddler:\"},\"$:/language/Buttons/Excise/Caption/Replace\":{\"text\":\"Replace excised text with:\"},\"$:/language/Buttons/Excise/Caption/Replace/Macro\":{\"text\":\"macro\"},\"$:/language/Buttons/Excise/Caption/Replace/Link\":{\"text\":\"link\"},\"$:/language/Buttons/Excise/Caption/Replace/Transclusion\":{\"text\":\"transclusion\"},\"$:/language/Buttons/Excise/Caption/Tag\":{\"text\":\"Tag new tiddler with the title of this tiddler\"},\"$:/language/Buttons/Excise/Caption/TiddlerExists\":{\"text\":\"Warning: tiddler already exists\"},\"$:/language/Buttons/Excise/Hint\":{\"text\":\"Excise the selected text into a new tiddler\"},\"$:/language/Buttons/Heading1/Caption\":{\"text\":\"heading 1\"},\"$:/language/Buttons/Heading1/Hint\":{\"text\":\"Apply heading level 1 formatting to lines containing selection\"},\"$:/language/Buttons/Heading2/Caption\":{\"text\":\"heading 2\"},\"$:/language/Buttons/Heading2/Hint\":{\"text\":\"Apply heading level 2 formatting to lines containing selection\"},\"$:/language/Buttons/Heading3/Caption\":{\"text\":\"heading 3\"},\"$:/language/Buttons/Heading3/Hint\":{\"text\":\"Apply heading level 3 formatting to lines containing selection\"},\"$:/language/Buttons/Heading4/Caption\":{\"text\":\"heading 4\"},\"$:/language/Buttons/Heading4/Hint\":{\"text\":\"Apply heading level 4 formatting to lines containing selection\"},\"$:/language/Buttons/Heading5/Caption\":{\"text\":\"heading 5\"},\"$:/language/Buttons/Heading5/Hint\":{\"text\":\"Apply heading level 5 formatting to lines containing selection\"},\"$:/language/Buttons/Heading6/Caption\":{\"text\":\"heading 6\"},\"$:/language/Buttons/Heading6/Hint\":{\"text\":\"Apply heading level 6 formatting to lines containing selection\"},\"$:/language/Buttons/Italic/Caption\":{\"text\":\"italic\"},\"$:/language/Buttons/Italic/Hint\":{\"text\":\"Apply italic formatting to selection\"},\"$:/language/Buttons/LineWidth/Caption\":{\"text\":\"line width\"},\"$:/language/Buttons/LineWidth/Hint\":{\"text\":\"Set line width for painting\"},\"$:/language/Buttons/Link/Caption\":{\"text\":\"link\"},\"$:/language/Buttons/Link/Hint\":{\"text\":\"Create wikitext link\"},\"$:/language/Buttons/Linkify/Caption\":{\"text\":\"wikilink\"},\"$:/language/Buttons/Linkify/Hint\":{\"text\":\"Wrap selection in square brackets\"},\"$:/language/Buttons/ListBullet/Caption\":{\"text\":\"bulleted list\"},\"$:/language/Buttons/ListBullet/Hint\":{\"text\":\"Apply bulleted list formatting to lines containing selection\"},\"$:/language/Buttons/ListNumber/Caption\":{\"text\":\"numbered list\"},\"$:/language/Buttons/ListNumber/Hint\":{\"text\":\"Apply numbered list formatting to lines containing selection\"},\"$:/language/Buttons/MonoBlock/Caption\":{\"text\":\"monospaced block\"},\"$:/language/Buttons/MonoBlock/Hint\":{\"text\":\"Apply monospaced block formatting to lines containing selection\"},\"$:/language/Buttons/MonoLine/Caption\":{\"text\":\"monospaced\"},\"$:/language/Buttons/MonoLine/Hint\":{\"text\":\"Apply monospaced character formatting to selection\"},\"$:/language/Buttons/Opacity/Caption\":{\"text\":\"opacity\"},\"$:/language/Buttons/Opacity/Hint\":{\"text\":\"Set painting opacity\"},\"$:/language/Buttons/Paint/Caption\":{\"text\":\"paint colour\"},\"$:/language/Buttons/Paint/Hint\":{\"text\":\"Set painting colour\"},\"$:/language/Buttons/Picture/Caption\":{\"text\":\"picture\"},\"$:/language/Buttons/Picture/Hint\":{\"text\":\"Insert picture\"},\"$:/language/Buttons/Preview/Caption\":{\"text\":\"preview\"},\"$:/language/Buttons/Preview/Hint\":{\"text\":\"Show preview pane\"},\"$:/language/Buttons/PreviewType/Caption\":{\"text\":\"preview type\"},\"$:/language/Buttons/PreviewType/Hint\":{\"text\":\"Choose preview type\"},\"$:/language/Buttons/Quote/Caption\":{\"text\":\"quote\"},\"$:/language/Buttons/Quote/Hint\":{\"text\":\"Apply quoted text formatting to lines containing selection\"},\"$:/language/Buttons/RotateLeft/Caption\":{\"text\":\"rotate left\"},\"$:/language/Buttons/RotateLeft/Hint\":{\"text\":\"Rotate image left by 90 degrees\"},\"$:/language/Buttons/Size/Caption\":{\"text\":\"image size\"},\"$:/language/Buttons/Size/Caption/Height\":{\"text\":\"Height:\"},\"$:/language/Buttons/Size/Caption/Resize\":{\"text\":\"Resize image\"},\"$:/language/Buttons/Size/Caption/Width\":{\"text\":\"Width:\"},\"$:/language/Buttons/Size/Hint\":{\"text\":\"Set image size\"},\"$:/language/Buttons/Stamp/Caption\":{\"text\":\"stamp\"},\"$:/language/Buttons/Stamp/Caption/New\":{\"text\":\"Add your own\"},\"$:/language/Buttons/Stamp/Hint\":{\"text\":\"Insert a preconfigured snippet of text\"},\"$:/language/Buttons/Stamp/New/Title\":{\"text\":\"Name as shown in menu\"},\"$:/language/Buttons/Stamp/New/Text\":{\"text\":\"Text of snippet. (Remember to add a descriptive title in the caption field).\"},\"$:/language/Buttons/Strikethrough/Caption\":{\"text\":\"strikethrough\"},\"$:/language/Buttons/Strikethrough/Hint\":{\"text\":\"Apply strikethrough formatting to selection\"},\"$:/language/Buttons/Subscript/Caption\":{\"text\":\"subscript\"},\"$:/language/Buttons/Subscript/Hint\":{\"text\":\"Apply subscript formatting to selection\"},\"$:/language/Buttons/Superscript/Caption\":{\"text\":\"superscript\"},\"$:/language/Buttons/Superscript/Hint\":{\"text\":\"Apply superscript formatting to selection\"},\"$:/language/Buttons/ToggleSidebar/Hint\":{\"text\":\"Toggle the sidebar visibility\"},\"$:/language/Buttons/Transcludify/Caption\":{\"text\":\"transclusion\"},\"$:/language/Buttons/Transcludify/Hint\":{\"text\":\"Wrap selection in curly brackets\"},\"$:/language/Buttons/Underline/Caption\":{\"text\":\"underline\"},\"$:/language/Buttons/Underline/Hint\":{\"text\":\"Apply underline formatting to selection\"},\"$:/language/ControlPanel/Advanced/Caption\":{\"text\":\"Advanced\"},\"$:/language/ControlPanel/Advanced/Hint\":{\"text\":\"Internal information about this TiddlyWiki\"},\"$:/language/ControlPanel/Appearance/Caption\":{\"text\":\"Appearance\"},\"$:/language/ControlPanel/Appearance/Hint\":{\"text\":\"Ways to customise the appearance of your TiddlyWiki.\"},\"$:/language/ControlPanel/Basics/AnimDuration/Prompt\":{\"text\":\"Animation duration\"},\"$:/language/ControlPanel/Basics/AutoFocus/Prompt\":{\"text\":\"Default focus field for new tiddlers\"},\"$:/language/ControlPanel/Basics/Caption\":{\"text\":\"Basics\"},\"$:/language/ControlPanel/Basics/DefaultTiddlers/BottomHint\":{\"text\":\"Use &#91;&#91;double square brackets&#93;&#93; for titles with spaces. Or you can choose to {{retain story ordering||$:/snippets/retain-story-ordering-button}}\"},\"$:/language/ControlPanel/Basics/DefaultTiddlers/Prompt\":{\"text\":\"Default tiddlers\"},\"$:/language/ControlPanel/Basics/DefaultTiddlers/TopHint\":{\"text\":\"Choose which tiddlers are displayed at startup\"},\"$:/language/ControlPanel/Basics/Language/Prompt\":{\"text\":\"Hello! Current language:\"},\"$:/language/ControlPanel/Basics/NewJournal/Title/Prompt\":{\"text\":\"Title of new journal tiddlers\"},\"$:/language/ControlPanel/Basics/NewJournal/Text/Prompt\":{\"text\":\"Text for new journal tiddlers\"},\"$:/language/ControlPanel/Basics/NewJournal/Tags/Prompt\":{\"text\":\"Tags for new journal tiddlers\"},\"$:/language/ControlPanel/Basics/NewTiddler/Title/Prompt\":{\"text\":\"Title of new tiddlers\"},\"$:/language/ControlPanel/Basics/NewTiddler/Tags/Prompt\":{\"text\":\"Tags for new tiddlers\"},\"$:/language/ControlPanel/Basics/OverriddenShadowTiddlers/Prompt\":{\"text\":\"Number of overridden shadow tiddlers\"},\"$:/language/ControlPanel/Basics/RemoveTags\":{\"text\":\"Update to current format\"},\"$:/language/ControlPanel/Basics/RemoveTags/Hint\":{\"text\":\"Update the tags configuration to the latest format\"},\"$:/language/ControlPanel/Basics/ShadowTiddlers/Prompt\":{\"text\":\"Number of shadow tiddlers\"},\"$:/language/ControlPanel/Basics/Subtitle/Prompt\":{\"text\":\"Subtitle\"},\"$:/language/ControlPanel/Basics/SystemTiddlers/Prompt\":{\"text\":\"Number of system tiddlers\"},\"$:/language/ControlPanel/Basics/Tags/Prompt\":{\"text\":\"Number of tags\"},\"$:/language/ControlPanel/Basics/Tiddlers/Prompt\":{\"text\":\"Number of tiddlers\"},\"$:/language/ControlPanel/Basics/Title/Prompt\":{\"text\":\"Title of this ~TiddlyWiki\"},\"$:/language/ControlPanel/Basics/Username/Prompt\":{\"text\":\"Username for signing edits\"},\"$:/language/ControlPanel/Basics/Version/Prompt\":{\"text\":\"~TiddlyWiki version\"},\"$:/language/ControlPanel/Cascades/Caption\":{\"text\":\"Cascades\"},\"$:/language/ControlPanel/Cascades/Hint\":{\"text\":\"These global rules are used to dynamically choose certain templates. The result of the cascade is the result of the first filter in the sequence that returns a result\"},\"$:/language/ControlPanel/Cascades/TagPrompt\":{\"text\":\"Filters tagged \u003C$macrocall tag={{!!title}}$name=tag/>\"},\"$:/language/ControlPanel/EditorTypes/Caption\":{\"text\":\"Editor Types\"},\"$:/language/ControlPanel/EditorTypes/Editor/Caption\":{\"text\":\"Editor\"},\"$:/language/ControlPanel/EditorTypes/Hint\":{\"text\":\"These tiddlers determine which editor is used to edit specific tiddler types.\"},\"$:/language/ControlPanel/EditorTypes/Type/Caption\":{\"text\":\"Type\"},\"$:/language/ControlPanel/EditTemplateBody/Caption\":{\"text\":\"Edit Template Body\"},\"$:/language/ControlPanel/EditTemplateBody/Hint\":{\"text\":\"This rule cascade is used by the default edit template to dynamically choose the template for editing the body of a tiddler.\"},\"$:/language/ControlPanel/FieldEditor/Caption\":{\"text\":\"Field Editor\"},\"$:/language/ControlPanel/FieldEditor/Hint\":{\"text\":\"This rules cascade is used to dynamically choose the template for rendering a tiddler field based on its name. It is used within the Edit Template.\"},\"$:/language/ControlPanel/Info/Caption\":{\"text\":\"Info\"},\"$:/language/ControlPanel/Info/Hint\":{\"text\":\"Information about this TiddlyWiki\"},\"$:/language/ControlPanel/KeyboardShortcuts/Add/Prompt\":{\"text\":\"Type shortcut here\"},\"$:/language/ControlPanel/KeyboardShortcuts/Add/Caption\":{\"text\":\"add shortcut\"},\"$:/language/ControlPanel/KeyboardShortcuts/Caption\":{\"text\":\"Keyboard Shortcuts\"},\"$:/language/ControlPanel/KeyboardShortcuts/Hint\":{\"text\":\"Manage keyboard shortcut assignments\"},\"$:/language/ControlPanel/KeyboardShortcuts/NoShortcuts/Caption\":{\"text\":\"No keyboard shortcuts assigned\"},\"$:/language/ControlPanel/KeyboardShortcuts/Remove/Hint\":{\"text\":\"remove keyboard shortcut\"},\"$:/language/ControlPanel/KeyboardShortcuts/Platform/All\":{\"text\":\"All platforms\"},\"$:/language/ControlPanel/KeyboardShortcuts/Platform/Mac\":{\"text\":\"Macintosh platform only\"},\"$:/language/ControlPanel/KeyboardShortcuts/Platform/NonMac\":{\"text\":\"Non-Macintosh platforms only\"},\"$:/language/ControlPanel/KeyboardShortcuts/Platform/Linux\":{\"text\":\"Linux platform only\"},\"$:/language/ControlPanel/KeyboardShortcuts/Platform/NonLinux\":{\"text\":\"Non-Linux platforms only\"},\"$:/language/ControlPanel/KeyboardShortcuts/Platform/Windows\":{\"text\":\"Windows platform only\"},\"$:/language/ControlPanel/KeyboardShortcuts/Platform/NonWindows\":{\"text\":\"Non-Windows platforms only\"},\"$:/language/ControlPanel/LayoutSwitcher/Caption\":{\"text\":\"Layout\"},\"$:/language/ControlPanel/LoadedModules/Caption\":{\"text\":\"Loaded Modules\"},\"$:/language/ControlPanel/LoadedModules/Hint\":{\"text\":\"These are the currently loaded tiddler modules linked to their source tiddlers. Any italicised modules lack a source tiddler, typically because they were setup during the boot process.\"},\"$:/language/ControlPanel/Palette/Caption\":{\"text\":\"Palette\"},\"$:/language/ControlPanel/Palette/Editor/Clone/Caption\":{\"text\":\"clone\"},\"$:/language/ControlPanel/Palette/Editor/Clone/Prompt\":{\"text\":\"It is recommended that you clone this shadow palette before editing it\"},\"$:/language/ControlPanel/Palette/Editor/Delete/Hint\":{\"text\":\"delete this entry from the current palette\"},\"$:/language/ControlPanel/Palette/Editor/Names/External/Show\":{\"text\":\"Show color names that are not part of the current palette\"},\"$:/language/ControlPanel/Palette/Editor/Prompt/Modified\":{\"text\":\"This shadow palette has been modified\"},\"$:/language/ControlPanel/Palette/Editor/Prompt\":{\"text\":\"Editing\"},\"$:/language/ControlPanel/Palette/Editor/Reset/Caption\":{\"text\":\"reset\"},\"$:/language/ControlPanel/Palette/HideEditor/Caption\":{\"text\":\"hide editor\"},\"$:/language/ControlPanel/Palette/Prompt\":{\"text\":\"Current palette:\"},\"$:/language/ControlPanel/Palette/ShowEditor/Caption\":{\"text\":\"show editor\"},\"$:/language/ControlPanel/Parsing/Caption\":{\"text\":\"Parsing\"},\"$:/language/ControlPanel/Parsing/Hint\":{\"text\":\"Here you can globally disable/enable wiki parser rules. For changes to take effect, save and reload your wiki. Disabling certain parser rules can prevent \u003C$text text=TiddlyWiki/> from functioning correctly. Use [[safe mode|https://tiddlywiki.com/#SafeMode]] to restore normal operation.\"},\"$:/language/ControlPanel/Parsing/Block/Caption\":{\"text\":\"Block Parse Rules\"},\"$:/language/ControlPanel/Parsing/Inline/Caption\":{\"text\":\"Inline Parse Rules\"},\"$:/language/ControlPanel/Parsing/Pragma/Caption\":{\"text\":\"Pragma Parse Rules\"},\"$:/language/ControlPanel/Plugins/Add/Caption\":{\"text\":\"Get more plugins\"},\"$:/language/ControlPanel/Plugins/Add/Hint\":{\"text\":\"Install plugins from the official library\"},\"$:/language/ControlPanel/Plugins/AlreadyInstalled/Hint\":{\"text\":\"This plugin is already installed at version \u003C$text text=\u003C\u003CinstalledVersion>>/>\"},\"$:/language/ControlPanel/Plugins/AlsoRequires\":{\"text\":\"Also requires:\"},\"$:/language/ControlPanel/Plugins/Caption\":{\"text\":\"Plugins\"},\"$:/language/ControlPanel/Plugins/Disable/Caption\":{\"text\":\"disable\"},\"$:/language/ControlPanel/Plugins/Disable/Hint\":{\"text\":\"Disable this plugin when reloading page\"},\"$:/language/ControlPanel/Plugins/Disabled/Status\":{\"text\":\"(disabled)\"},\"$:/language/ControlPanel/Plugins/Downgrade/Caption\":{\"text\":\"downgrade\"},\"$:/language/ControlPanel/Plugins/Empty/Hint\":{\"text\":\"None\"},\"$:/language/ControlPanel/Plugins/Enable/Caption\":{\"text\":\"enable\"},\"$:/language/ControlPanel/Plugins/Enable/Hint\":{\"text\":\"Enable this plugin when reloading page\"},\"$:/language/ControlPanel/Plugins/Install/Caption\":{\"text\":\"install\"},\"$:/language/ControlPanel/Plugins/Installed/Hint\":{\"text\":\"Currently installed plugins:\"},\"$:/language/ControlPanel/Plugins/Languages/Caption\":{\"text\":\"Languages\"},\"$:/language/ControlPanel/Plugins/Languages/Hint\":{\"text\":\"Language pack plugins\"},\"$:/language/ControlPanel/Plugins/NoInfoFound/Hint\":{\"text\":\"No ''\\\"\u003C$text text=\u003C\u003CcurrentTab>>/>\\\"'' found\"},\"$:/language/ControlPanel/Plugins/NotInstalled/Hint\":{\"text\":\"This plugin is not currently installed\"},\"$:/language/ControlPanel/Plugins/OpenPluginLibrary\":{\"text\":\"Open plugin library\"},\"$:/language/ControlPanel/Plugins/ClosePluginLibrary\":{\"text\":\"Close plugin library\"},\"$:/language/ControlPanel/Plugins/PluginWillRequireReload\":{\"text\":\"(requires reload)\"},\"$:/language/ControlPanel/Plugins/Plugins/Caption\":{\"text\":\"Plugins\"},\"$:/language/ControlPanel/Plugins/Plugins/Hint\":{\"text\":\"Plugins\"},\"$:/language/ControlPanel/Plugins/Reinstall/Caption\":{\"text\":\"reinstall\"},\"$:/language/ControlPanel/Plugins/Themes/Caption\":{\"text\":\"Themes\"},\"$:/language/ControlPanel/Plugins/Themes/Hint\":{\"text\":\"Theme plugins\"},\"$:/language/ControlPanel/Plugins/Update/Caption\":{\"text\":\"update\"},\"$:/language/ControlPanel/Plugins/Updates/Caption\":{\"text\":\"Updates\"},\"$:/language/ControlPanel/Plugins/Updates/Hint\":{\"text\":\"Available updates to installed plugins\"},\"$:/language/ControlPanel/Plugins/Updates/UpdateAll/Caption\":{\"text\":\"Update \u003C\u003Cupdate-count>> plugins\"},\"$:/language/ControlPanel/Plugins/SubPluginPrompt\":{\"text\":\"With \u003C\u003Ccount>> sub-plugins available\"},\"$:/language/ControlPanel/Saving/Caption\":{\"text\":\"Saving\"},\"$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Description\":{\"text\":\"Permit automatic saving for the download saver\"},\"$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Hint\":{\"text\":\"Enable Autosave for Download Saver\"},\"$:/language/ControlPanel/Saving/DownloadSaver/Caption\":{\"text\":\"Download Saver\"},\"$:/language/ControlPanel/Saving/DownloadSaver/Hint\":{\"text\":\"These settings apply to the HTML5-compatible download saver\"},\"$:/language/ControlPanel/Saving/General/Caption\":{\"text\":\"General\"},\"$:/language/ControlPanel/Saving/General/Hint\":{\"text\":\"These settings apply to all the loaded savers\"},\"$:/language/ControlPanel/Saving/Hint\":{\"text\":\"Settings used for saving the entire TiddlyWiki as a single file via a saver module\"},\"$:/language/ControlPanel/Saving/GitService/Branch\":{\"text\":\"Target branch for saving\"},\"$:/language/ControlPanel/Saving/GitService/CommitMessage\":{\"text\":\"Saved by TiddlyWiki\"},\"$:/language/ControlPanel/Saving/GitService/Description\":{\"text\":\"These settings are only used when saving to \u003C\u003Cservice-name>>\"},\"$:/language/ControlPanel/Saving/GitService/Filename\":{\"text\":\"Filename of target file (e.g. `index.html`)\"},\"$:/language/ControlPanel/Saving/GitService/Path\":{\"text\":\"Path to target file (e.g. `/wiki/`)\"},\"$:/language/ControlPanel/Saving/GitService/Repo\":{\"text\":\"Target repository (e.g. `Jermolene/TiddlyWiki5`)\"},\"$:/language/ControlPanel/Saving/GitService/ServerURL\":{\"text\":\"Server API URL\"},\"$:/language/ControlPanel/Saving/GitService/UserName\":{\"text\":\"Username\"},\"$:/language/ControlPanel/Saving/GitService/GitHub/Caption\":{\"text\":\"~GitHub Saver\"},\"$:/language/ControlPanel/Saving/GitService/GitHub/Password\":{\"text\":\"Password, OAUTH token, or personal access token (see [[GitHub help page|https://help.github.com/en/articles/creating-a-personal-access-token-for-the-command-line]] for details)\"},\"$:/language/ControlPanel/Saving/GitService/GitLab/Caption\":{\"text\":\"~GitLab Saver\"},\"$:/language/ControlPanel/Saving/GitService/GitLab/Password\":{\"text\":\"Personal access token for API (see [[GitLab help page|https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html]] for details)\"},\"$:/language/ControlPanel/Saving/GitService/Gitea/Caption\":{\"text\":\"Gitea Saver\"},\"$:/language/ControlPanel/Saving/GitService/Gitea/Password\":{\"text\":\"Personal access token for API (via Giteas web interface: `Settings | Applications | Generate New Token`)\"},\"$:/language/ControlPanel/Saving/TiddlySpot/Advanced/Heading\":{\"text\":\"Advanced Settings\"},\"$:/language/ControlPanel/Saving/TiddlySpot/BackupDir\":{\"text\":\"Backup Directory\"},\"$:/language/ControlPanel/Saving/TiddlySpot/ControlPanel\":{\"text\":\"~TiddlySpot Control Panel\"},\"$:/language/ControlPanel/Saving/TiddlySpot/Backups\":{\"text\":\"Backups\"},\"$:/language/ControlPanel/Saving/TiddlySpot/Caption\":{\"text\":\"~TiddlySpot Saver\"},\"$:/language/ControlPanel/Saving/TiddlySpot/Description\":{\"text\":\"These settings are only used when saving to [[TiddlySpot|http://tiddlyspot.com]], [[TiddlyHost|https://tiddlyhost.com]], or a compatible remote server. See [[here|https://github.com/simonbaird/tiddlyhost/wiki/TiddlySpot-Saver-configuration-for-Tiddlyhost-and-Tiddlyspot]] for information on ~TiddlySpot and ~TiddlyHost saving configuration.\"},\"$:/language/ControlPanel/Saving/TiddlySpot/Filename\":{\"text\":\"Upload Filename\"},\"$:/language/ControlPanel/Saving/TiddlySpot/Heading\":{\"text\":\"~TiddlySpot\"},\"$:/language/ControlPanel/Saving/TiddlySpot/Hint\":{\"text\":\"//The server URL defaults to `http://\u003Cwikiname>.tiddlyspot.com/store.cgi` and can be changed to use a custom server address, e.g. `http://example.com/store.php`.\"},\"$:/language/ControlPanel/Saving/TiddlySpot/Password\":{\"text\":\"Password\"},\"$:/language/ControlPanel/Saving/TiddlySpot/ReadOnly\":{\"text\":\"Note that [[TiddlySpot|http://tiddlyspot.com]] no longer allows the creation of new sites. For new sites, you can use [[TiddlyHost|https://tiddlyhost.com]], a new hosting service that replaces ~TiddlySpot.\"},\"$:/language/ControlPanel/Saving/TiddlySpot/ServerURL\":{\"text\":\"Server URL\"},\"$:/language/ControlPanel/Saving/TiddlySpot/UploadDir\":{\"text\":\"Upload Directory\"},\"$:/language/ControlPanel/Saving/TiddlySpot/UserName\":{\"text\":\"Wiki Name\"},\"$:/language/ControlPanel/Settings/AutoSave/Caption\":{\"text\":\"Autosave\"},\"$:/language/ControlPanel/Settings/AutoSave/Disabled/Description\":{\"text\":\"Do not save changes automatically\"},\"$:/language/ControlPanel/Settings/AutoSave/Enabled/Description\":{\"text\":\"Save changes automatically\"},\"$:/language/ControlPanel/Settings/AutoSave/Hint\":{\"text\":\"Attempt to automatically save changes during editing when using a supporting saver\"},\"$:/language/ControlPanel/Settings/CamelCase/Caption\":{\"text\":\"Camel Case Wiki Links\"},\"$:/language/ControlPanel/Settings/CamelCase/Hint\":{\"text\":\"You can globally disable automatic linking of ~CamelCase phrases. Requires reload to take effect\"},\"$:/language/ControlPanel/Settings/CamelCase/Description\":{\"text\":\"Enable automatic ~CamelCase linking\"},\"$:/language/ControlPanel/Settings/Caption\":{\"text\":\"Settings\"},\"$:/language/ControlPanel/Settings/EditorToolbar/Caption\":{\"text\":\"Editor Toolbar\"},\"$:/language/ControlPanel/Settings/EditorToolbar/Hint\":{\"text\":\"Enable or disable the editor toolbar:\"},\"$:/language/ControlPanel/Settings/EditorToolbar/Description\":{\"text\":\"Show editor toolbar\"},\"$:/language/ControlPanel/Settings/InfoPanelMode/Caption\":{\"text\":\"Tiddler Info Panel Mode\"},\"$:/language/ControlPanel/Settings/InfoPanelMode/Hint\":{\"text\":\"Control when the tiddler info panel closes:\"},\"$:/language/ControlPanel/Settings/InfoPanelMode/Popup/Description\":{\"text\":\"Tiddler info panel closes automatically\"},\"$:/language/ControlPanel/Settings/InfoPanelMode/Sticky/Description\":{\"text\":\"Tiddler info panel stays open until explicitly closed\"},\"$:/language/ControlPanel/Settings/Hint\":{\"text\":\"These settings let you customise the behaviour of TiddlyWiki.\"},\"$:/language/ControlPanel/Settings/NavigationAddressBar/Caption\":{\"text\":\"Navigation Address Bar\"},\"$:/language/ControlPanel/Settings/NavigationAddressBar/Hint\":{\"text\":\"Behaviour of the browser address bar when navigating to a tiddler:\"},\"$:/language/ControlPanel/Settings/NavigationAddressBar/No/Description\":{\"text\":\"Do not update the address bar\"},\"$:/language/ControlPanel/Settings/NavigationAddressBar/Permalink/Description\":{\"text\":\"Include the target tiddler\"},\"$:/language/ControlPanel/Settings/NavigationAddressBar/Permaview/Description\":{\"text\":\"Include the target tiddler and the current story sequence\"},\"$:/language/ControlPanel/Settings/NavigationHistory/Caption\":{\"text\":\"Navigation History\"},\"$:/language/ControlPanel/Settings/NavigationHistory/Hint\":{\"text\":\"Update browser history when navigating to a tiddler:\"},\"$:/language/ControlPanel/Settings/NavigationHistory/No/Description\":{\"text\":\"Do not update history\"},\"$:/language/ControlPanel/Settings/NavigationHistory/Yes/Description\":{\"text\":\"Update history\"},\"$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/Caption\":{\"text\":\"Permalink/permaview Mode\"},\"$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/Hint\":{\"text\":\"Choose how permalink/permaview is handled:\"},\"$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/CopyToClipboard/Description\":{\"text\":\"Copy permalink/permaview URL to clipboard\"},\"$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/UpdateAddressBar/Description\":{\"text\":\"Update address bar with permalink/permaview URL\"},\"$:/language/ControlPanel/Settings/PerformanceInstrumentation/Caption\":{\"text\":\"Performance Instrumentation\"},\"$:/language/ControlPanel/Settings/PerformanceInstrumentation/Hint\":{\"text\":\"Displays performance statistics in the browser developer console. Requires reload to take effect\"},\"$:/language/ControlPanel/Settings/PerformanceInstrumentation/Description\":{\"text\":\"Enable performance instrumentation\"},\"$:/language/ControlPanel/Settings/ToolbarButtonStyle/Caption\":{\"text\":\"Toolbar Button Style\"},\"$:/language/ControlPanel/Settings/ToolbarButtonStyle/Hint\":{\"text\":\"Choose the style for toolbar buttons:\"},\"$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Borderless\":{\"text\":\"Borderless\"},\"$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Boxed\":{\"text\":\"Boxed\"},\"$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Rounded\":{\"text\":\"Rounded\"},\"$:/language/ControlPanel/Settings/ToolbarButtons/Caption\":{\"text\":\"Toolbar Buttons\"},\"$:/language/ControlPanel/Settings/ToolbarButtons/Hint\":{\"text\":\"Default toolbar button appearance:\"},\"$:/language/ControlPanel/Settings/ToolbarButtons/Icons/Description\":{\"text\":\"Include icon\"},\"$:/language/ControlPanel/Settings/ToolbarButtons/Text/Description\":{\"text\":\"Include text\"},\"$:/language/ControlPanel/Settings/DefaultSidebarTab/Caption\":{\"text\":\"Default Sidebar Tab\"},\"$:/language/ControlPanel/Settings/DefaultSidebarTab/Hint\":{\"text\":\"Specify which sidebar tab is displayed by default\"},\"$:/language/ControlPanel/Settings/DefaultMoreSidebarTab/Caption\":{\"text\":\"Default More Sidebar Tab\"},\"$:/language/ControlPanel/Settings/DefaultMoreSidebarTab/Hint\":{\"text\":\"Specify which More sidebar tab is displayed by default\"},\"$:/language/ControlPanel/Settings/LinkToBehaviour/Caption\":{\"text\":\"Tiddler Opening Behaviour\"},\"$:/language/ControlPanel/Settings/LinkToBehaviour/InsideRiver/Hint\":{\"text\":\"Navigation from //within// the story river\"},\"$:/language/ControlPanel/Settings/LinkToBehaviour/OutsideRiver/Hint\":{\"text\":\"Navigation from //outside// the story river\"},\"$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAbove\":{\"text\":\"Open above the current tiddler\"},\"$:/language/ControlPanel/Settings/LinkToBehaviour/OpenBelow\":{\"text\":\"Open below the current tiddler\"},\"$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtTop\":{\"text\":\"Open at the top of the story river\"},\"$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtBottom\":{\"text\":\"Open at the bottom of the story river\"},\"$:/language/ControlPanel/Settings/TitleLinks/Caption\":{\"text\":\"Tiddler Titles\"},\"$:/language/ControlPanel/Settings/TitleLinks/Hint\":{\"text\":\"Optionally display tiddler titles as links\"},\"$:/language/ControlPanel/Settings/TitleLinks/No/Description\":{\"text\":\"Do not display tiddler titles as links\"},\"$:/language/ControlPanel/Settings/TitleLinks/Yes/Description\":{\"text\":\"Display tiddler titles as links\"},\"$:/language/ControlPanel/Settings/MissingLinks/Caption\":{\"text\":\"Wiki Links\"},\"$:/language/ControlPanel/Settings/MissingLinks/Hint\":{\"text\":\"Choose whether to link to tiddlers that do not exist yet\"},\"$:/language/ControlPanel/Settings/MissingLinks/Description\":{\"text\":\"Enable links to missing tiddlers\"},\"$:/language/ControlPanel/StoryTiddler/Caption\":{\"text\":\"Story Tiddler\"},\"$:/language/ControlPanel/StoryTiddler/Hint\":{\"text\":\"This rule cascade is used to dynamically choose the template for displaying a tiddler in the story river.\"},\"$:/language/ControlPanel/StoryView/Caption\":{\"text\":\"Story View\"},\"$:/language/ControlPanel/StoryView/Prompt\":{\"text\":\"Current view:\"},\"$:/language/ControlPanel/Stylesheets/Caption\":{\"text\":\"Stylesheets\"},\"$:/language/ControlPanel/Stylesheets/Expand/Caption\":{\"text\":\"Expand All\"},\"$:/language/ControlPanel/Stylesheets/Hint\":{\"text\":\"This is the rendered CSS of the current stylesheet tiddlers tagged with \u003C\u003Ctag\\\"$:/tags/Stylesheet\\\">>\"},\"$:/language/ControlPanel/Stylesheets/Restore/Caption\":{\"text\":\"Restore\"},\"$:/language/ControlPanel/Theme/Caption\":{\"text\":\"Theme\"},\"$:/language/ControlPanel/Theme/Prompt\":{\"text\":\"Current theme:\"},\"$:/language/ControlPanel/TiddlerFields/Caption\":{\"text\":\"Tiddler Fields\"},\"$:/language/ControlPanel/TiddlerFields/Hint\":{\"text\":\"This is the full set of TiddlerFields in use in this wiki (including system tiddlers but excluding shadow tiddlers).\"},\"$:/language/ControlPanel/TiddlerColour/Caption\":{\"text\":\"Tiddler Colour\"},\"$:/language/ControlPanel/TiddlerColour/Hint\":{\"text\":\"This rules cascade is used to dynamically choose the colour for a tiddler (used for the icon and the associated tag pill).\"},\"$:/language/ControlPanel/TiddlerIcon/Caption\":{\"text\":\"Tiddler Icon\"},\"$:/language/ControlPanel/TiddlerIcon/Hint\":{\"text\":\"This rules cascade is used to dynamically choose the icon for a tiddler.\"},\"$:/language/ControlPanel/Toolbars/Caption\":{\"text\":\"Toolbars\"},\"$:/language/ControlPanel/Toolbars/EditToolbar/Caption\":{\"text\":\"Edit Toolbar\"},\"$:/language/ControlPanel/Toolbars/EditToolbar/Hint\":{\"text\":\"Choose which buttons are displayed for tiddlers in edit mode. Drag and drop to change the ordering\"},\"$:/language/ControlPanel/Toolbars/Hint\":{\"text\":\"Select which toolbar buttons are displayed\"},\"$:/language/ControlPanel/Toolbars/PageControls/Caption\":{\"text\":\"Page Toolbar\"},\"$:/language/ControlPanel/Toolbars/PageControls/Hint\":{\"text\":\"Choose which buttons are displayed on the main page toolbar. Drag and drop to change the ordering\"},\"$:/language/ControlPanel/Toolbars/EditorToolbar/Caption\":{\"text\":\"Editor Toolbar\"},\"$:/language/ControlPanel/Toolbars/EditorToolbar/Hint\":{\"text\":\"Choose which buttons are displayed in the editor toolbar. Note that some buttons will only appear when editing tiddlers of a certain type. Drag and drop to change the ordering\"},\"$:/language/ControlPanel/Toolbars/ViewToolbar/Caption\":{\"text\":\"View Toolbar\"},\"$:/language/ControlPanel/Toolbars/ViewToolbar/Hint\":{\"text\":\"Choose which buttons are displayed for tiddlers in view mode. Drag and drop to change the ordering\"},\"$:/language/ControlPanel/Tools/Download/Full/Caption\":{\"text\":\"Download full wiki\"},\"$:/language/ControlPanel/ViewTemplateBody/Caption\":{\"text\":\"View Template Body\"},\"$:/language/ControlPanel/ViewTemplateBody/Hint\":{\"text\":\"This rule cascade is used by the default view template to dynamically choose the template for displaying the body of a tiddler.\"},\"$:/language/ControlPanel/ViewTemplateTitle/Caption\":{\"text\":\"View Template Title\"},\"$:/language/ControlPanel/ViewTemplateTitle/Hint\":{\"text\":\"This rule cascade is used by the default view template to dynamically choose the template for displaying the title of a tiddler.\"},\"$:/language/Date/DaySuffix/1\":{\"text\":\"st\"},\"$:/language/Date/DaySuffix/2\":{\"text\":\"nd\"},\"$:/language/Date/DaySuffix/3\":{\"text\":\"rd\"},\"$:/language/Date/DaySuffix/4\":{\"text\":\"th\"},\"$:/language/Date/DaySuffix/5\":{\"text\":\"th\"},\"$:/language/Date/DaySuffix/6\":{\"text\":\"th\"},\"$:/language/Date/DaySuffix/7\":{\"text\":\"th\"},\"$:/language/Date/DaySuffix/8\":{\"text\":\"th\"},\"$:/language/Date/DaySuffix/9\":{\"text\":\"th\"},\"$:/language/Date/DaySuffix/10\":{\"text\":\"th\"},\"$:/language/Date/DaySuffix/11\":{\"text\":\"th\"},\"$:/language/Date/DaySuffix/12\":{\"text\":\"th\"},\"$:/language/Date/DaySuffix/13\":{\"text\":\"th\"},\"$:/language/Date/DaySuffix/14\":{\"text\":\"th\"},\"$:/language/Date/DaySuffix/15\":{\"text\":\"th\"},\"$:/language/Date/DaySuffix/16\":{\"text\":\"th\"},\"$:/language/Date/DaySuffix/17\":{\"text\":\"th\"},\"$:/language/Date/DaySuffix/18\":{\"text\":\"th\"},\"$:/language/Date/DaySuffix/19\":{\"text\":\"th\"},\"$:/language/Date/DaySuffix/20\":{\"text\":\"th\"},\"$:/language/Date/DaySuffix/21\":{\"text\":\"st\"},\"$:/language/Date/DaySuffix/22\":{\"text\":\"nd\"},\"$:/language/Date/DaySuffix/23\":{\"text\":\"rd\"},\"$:/language/Date/DaySuffix/24\":{\"text\":\"th\"},\"$:/language/Date/DaySuffix/25\":{\"text\":\"th\"},\"$:/language/Date/DaySuffix/26\":{\"text\":\"th\"},\"$:/language/Date/DaySuffix/27\":{\"text\":\"th\"},\"$:/language/Date/DaySuffix/28\":{\"text\":\"th\"},\"$:/language/Date/DaySuffix/29\":{\"text\":\"th\"},\"$:/language/Date/DaySuffix/30\":{\"text\":\"th\"},\"$:/language/Date/DaySuffix/31\":{\"text\":\"st\"},\"$:/language/Date/Long/Day/0\":{\"text\":\"Sunday\"},\"$:/language/Date/Long/Day/1\":{\"text\":\"Monday\"},\"$:/language/Date/Long/Day/2\":{\"text\":\"Tuesday\"},\"$:/language/Date/Long/Day/3\":{\"text\":\"Wednesday\"},\"$:/language/Date/Long/Day/4\":{\"text\":\"Thursday\"},\"$:/language/Date/Long/Day/5\":{\"text\":\"Friday\"},\"$:/language/Date/Long/Day/6\":{\"text\":\"Saturday\"},\"$:/language/Date/Long/Month/1\":{\"text\":\"January\"},\"$:/language/Date/Long/Month/2\":{\"text\":\"February\"},\"$:/language/Date/Long/Month/3\":{\"text\":\"March\"},\"$:/language/Date/Long/Month/4\":{\"text\":\"April\"},\"$:/language/Date/Long/Month/5\":{\"text\":\"May\"},\"$:/language/Date/Long/Month/6\":{\"text\":\"June\"},\"$:/language/Date/Long/Month/7\":{\"text\":\"July\"},\"$:/language/Date/Long/Month/8\":{\"text\":\"August\"},\"$:/language/Date/Long/Month/9\":{\"text\":\"September\"},\"$:/language/Date/Long/Month/10\":{\"text\":\"October\"},\"$:/language/Date/Long/Month/11\":{\"text\":\"November\"},\"$:/language/Date/Long/Month/12\":{\"text\":\"December\"},\"$:/language/Date/Period/am\":{\"text\":\"am\"},\"$:/language/Date/Period/pm\":{\"text\":\"pm\"},\"$:/language/Date/Short/Day/0\":{\"text\":\"Sun\"},\"$:/language/Date/Short/Day/1\":{\"text\":\"Mon\"},\"$:/language/Date/Short/Day/2\":{\"text\":\"Tue\"},\"$:/language/Date/Short/Day/3\":{\"text\":\"Wed\"},\"$:/language/Date/Short/Day/4\":{\"text\":\"Thu\"},\"$:/language/Date/Short/Day/5\":{\"text\":\"Fri\"},\"$:/language/Date/Short/Day/6\":{\"text\":\"Sat\"},\"$:/language/Date/Short/Month/1\":{\"text\":\"Jan\"},\"$:/language/Date/Short/Month/2\":{\"text\":\"Feb\"},\"$:/language/Date/Short/Month/3\":{\"text\":\"Mar\"},\"$:/language/Date/Short/Month/4\":{\"text\":\"Apr\"},\"$:/language/Date/Short/Month/5\":{\"text\":\"May\"},\"$:/language/Date/Short/Month/6\":{\"text\":\"Jun\"},\"$:/language/Date/Short/Month/7\":{\"text\":\"Jul\"},\"$:/language/Date/Short/Month/8\":{\"text\":\"Aug\"},\"$:/language/Date/Short/Month/9\":{\"text\":\"Sep\"},\"$:/language/Date/Short/Month/10\":{\"text\":\"Oct\"},\"$:/language/Date/Short/Month/11\":{\"text\":\"Nov\"},\"$:/language/Date/Short/Month/12\":{\"text\":\"Dec\"},\"$:/language/RelativeDate/Future/Days\":{\"text\":\"\u003C\u003Cperiod>> days from now\"},\"$:/language/RelativeDate/Future/Hours\":{\"text\":\"\u003C\u003Cperiod>> hours from now\"},\"$:/language/RelativeDate/Future/Minutes\":{\"text\":\"\u003C\u003Cperiod>> minutes from now\"},\"$:/language/RelativeDate/Future/Months\":{\"text\":\"\u003C\u003Cperiod>> months from now\"},\"$:/language/RelativeDate/Future/Second\":{\"text\":\"1 second from now\"},\"$:/language/RelativeDate/Future/Seconds\":{\"text\":\"\u003C\u003Cperiod>> seconds from now\"},\"$:/language/RelativeDate/Future/Years\":{\"text\":\"\u003C\u003Cperiod>> years from now\"},\"$:/language/RelativeDate/Past/Days\":{\"text\":\"\u003C\u003Cperiod>> days ago\"},\"$:/language/RelativeDate/Past/Hours\":{\"text\":\"\u003C\u003Cperiod>> hours ago\"},\"$:/language/RelativeDate/Past/Minutes\":{\"text\":\"\u003C\u003Cperiod>> minutes ago\"},\"$:/language/RelativeDate/Past/Months\":{\"text\":\"\u003C\u003Cperiod>> months ago\"},\"$:/language/RelativeDate/Past/Second\":{\"text\":\"1 second ago\"},\"$:/language/RelativeDate/Past/Seconds\":{\"text\":\"\u003C\u003Cperiod>> seconds ago\"},\"$:/language/RelativeDate/Past/Years\":{\"text\":\"\u003C\u003Cperiod>> years ago\"},\"$:/language/Docs/ModuleTypes/allfilteroperator\":{\"text\":\"A sub-operator for the ''all'' filter operator.\"},\"$:/language/Docs/ModuleTypes/animation\":{\"text\":\"Animations that may be used with the RevealWidget.\"},\"$:/language/Docs/ModuleTypes/authenticator\":{\"text\":\"Defines how requests are authenticated by the built-in HTTP server.\"},\"$:/language/Docs/ModuleTypes/bitmapeditoroperation\":{\"text\":\"A bitmap editor toolbar operation.\"},\"$:/language/Docs/ModuleTypes/command\":{\"text\":\"Commands that can be executed under Node.js.\"},\"$:/language/Docs/ModuleTypes/config\":{\"text\":\"Data to be inserted into `$tw.config`.\"},\"$:/language/Docs/ModuleTypes/filteroperator\":{\"text\":\"Individual filter operator methods.\"},\"$:/language/Docs/ModuleTypes/global\":{\"text\":\"Global data to be inserted into `$tw`.\"},\"$:/language/Docs/ModuleTypes/info\":{\"text\":\"Publishes system information via the [[$:/temp/info-plugin]] pseudo-plugin.\"},\"$:/language/Docs/ModuleTypes/isfilteroperator\":{\"text\":\"Operands for the ''is'' filter operator.\"},\"$:/language/Docs/ModuleTypes/library\":{\"text\":\"Generic module type for general purpose JavaScript modules.\"},\"$:/language/Docs/ModuleTypes/macro\":{\"text\":\"JavaScript macro definitions.\"},\"$:/language/Docs/ModuleTypes/parser\":{\"text\":\"Parsers for different content types.\"},\"$:/language/Docs/ModuleTypes/route\":{\"text\":\"Defines how individual URL patterns are handled by the built-in HTTP server.\"},\"$:/language/Docs/ModuleTypes/saver\":{\"text\":\"Savers handle different methods for saving files from the browser.\"},\"$:/language/Docs/ModuleTypes/startup\":{\"text\":\"Startup functions.\"},\"$:/language/Docs/ModuleTypes/storyview\":{\"text\":\"Story views customise the animation and behaviour of list widgets.\"},\"$:/language/Docs/ModuleTypes/texteditoroperation\":{\"text\":\"A text editor toolbar operation.\"},\"$:/language/Docs/ModuleTypes/tiddlerdeserializer\":{\"text\":\"Converts different content types into tiddlers.\"},\"$:/language/Docs/ModuleTypes/tiddlerfield\":{\"text\":\"Defines the behaviour of an individual tiddler field.\"},\"$:/language/Docs/ModuleTypes/tiddlermethod\":{\"text\":\"Adds methods to the `$tw.Tiddler` prototype.\"},\"$:/language/Docs/ModuleTypes/upgrader\":{\"text\":\"Applies upgrade processing to tiddlers during an upgrade/import.\"},\"$:/language/Docs/ModuleTypes/utils\":{\"text\":\"Adds methods to `$tw.utils`.\"},\"$:/language/Docs/ModuleTypes/utils-browser\":{\"text\":\"Adds browser-specific methods to `$tw.utils`.\"},\"$:/language/Docs/ModuleTypes/utils-node\":{\"text\":\"Adds Node.js-specific methods to `$tw.utils`.\"},\"$:/language/Docs/ModuleTypes/widget\":{\"text\":\"Widgets encapsulate DOM rendering and refreshing.\"},\"$:/language/Docs/ModuleTypes/wikimethod\":{\"text\":\"Adds methods to `$tw.Wiki`.\"},\"$:/language/Docs/ModuleTypes/wikirule\":{\"text\":\"Individual parser rules for the main WikiText parser.\"},\"$:/language/Docs/PaletteColours/alert-background\":{\"text\":\"Alert background\"},\"$:/language/Docs/PaletteColours/alert-border\":{\"text\":\"Alert border\"},\"$:/language/Docs/PaletteColours/alert-highlight\":{\"text\":\"Alert highlight\"},\"$:/language/Docs/PaletteColours/alert-muted-foreground\":{\"text\":\"Alert muted foreground\"},\"$:/language/Docs/PaletteColours/background\":{\"text\":\"General background\"},\"$:/language/Docs/PaletteColours/blockquote-bar\":{\"text\":\"Blockquote bar\"},\"$:/language/Docs/PaletteColours/button-background\":{\"text\":\"Default button background\"},\"$:/language/Docs/PaletteColours/button-border\":{\"text\":\"Default button border\"},\"$:/language/Docs/PaletteColours/button-foreground\":{\"text\":\"Default button foreground\"},\"$:/language/Docs/PaletteColours/dirty-indicator\":{\"text\":\"Unsaved changes indicator\"},\"$:/language/Docs/PaletteColours/code-background\":{\"text\":\"Code background\"},\"$:/language/Docs/PaletteColours/code-border\":{\"text\":\"Code border\"},\"$:/language/Docs/PaletteColours/code-foreground\":{\"text\":\"Code foreground\"},\"$:/language/Docs/PaletteColours/download-background\":{\"text\":\"Download button background\"},\"$:/language/Docs/PaletteColours/download-foreground\":{\"text\":\"Download button foreground\"},\"$:/language/Docs/PaletteColours/dragger-background\":{\"text\":\"Dragger background\"},\"$:/language/Docs/PaletteColours/dragger-foreground\":{\"text\":\"Dragger foreground\"},\"$:/language/Docs/PaletteColours/dropdown-background\":{\"text\":\"Dropdown background\"},\"$:/language/Docs/PaletteColours/dropdown-border\":{\"text\":\"Dropdown border\"},\"$:/language/Docs/PaletteColours/dropdown-tab-background-selected\":{\"text\":\"Dropdown tab background for selected tabs\"},\"$:/language/Docs/PaletteColours/dropdown-tab-background\":{\"text\":\"Dropdown tab background\"},\"$:/language/Docs/PaletteColours/dropzone-background\":{\"text\":\"Dropzone background\"},\"$:/language/Docs/PaletteColours/external-link-background-hover\":{\"text\":\"External link background hover\"},\"$:/language/Docs/PaletteColours/external-link-background-visited\":{\"text\":\"External link background visited\"},\"$:/language/Docs/PaletteColours/external-link-background\":{\"text\":\"External link background\"},\"$:/language/Docs/PaletteColours/external-link-foreground-hover\":{\"text\":\"External link foreground hover\"},\"$:/language/Docs/PaletteColours/external-link-foreground-visited\":{\"text\":\"External link foreground visited\"},\"$:/language/Docs/PaletteColours/external-link-foreground\":{\"text\":\"External link foreground\"},\"$:/language/Docs/PaletteColours/foreground\":{\"text\":\"General foreground\"},\"$:/language/Docs/PaletteColours/menubar-background\":{\"text\":\"Menu bar background\"},\"$:/language/Docs/PaletteColours/menubar-foreground\":{\"text\":\"Menu bar foreground\"},\"$:/language/Docs/PaletteColours/message-background\":{\"text\":\"Message box background\"},\"$:/language/Docs/PaletteColours/message-border\":{\"text\":\"Message box border\"},\"$:/language/Docs/PaletteColours/message-foreground\":{\"text\":\"Message box foreground\"},\"$:/language/Docs/PaletteColours/modal-backdrop\":{\"text\":\"Modal backdrop\"},\"$:/language/Docs/PaletteColours/modal-background\":{\"text\":\"Modal background\"},\"$:/language/Docs/PaletteColours/modal-border\":{\"text\":\"Modal border\"},\"$:/language/Docs/PaletteColours/modal-footer-background\":{\"text\":\"Modal footer background\"},\"$:/language/Docs/PaletteColours/modal-footer-border\":{\"text\":\"Modal footer border\"},\"$:/language/Docs/PaletteColours/modal-header-border\":{\"text\":\"Modal header border\"},\"$:/language/Docs/PaletteColours/muted-foreground\":{\"text\":\"General muted foreground\"},\"$:/language/Docs/PaletteColours/notification-background\":{\"text\":\"Notification background\"},\"$:/language/Docs/PaletteColours/notification-border\":{\"text\":\"Notification border\"},\"$:/language/Docs/PaletteColours/page-background\":{\"text\":\"Page background\"},\"$:/language/Docs/PaletteColours/pre-background\":{\"text\":\"Preformatted code background\"},\"$:/language/Docs/PaletteColours/pre-border\":{\"text\":\"Preformatted code border\"},\"$:/language/Docs/PaletteColours/primary\":{\"text\":\"General primary\"},\"$:/language/Docs/PaletteColours/select-tag-background\":{\"text\":\"`\u003Cselect>` element background\"},\"$:/language/Docs/PaletteColours/select-tag-foreground\":{\"text\":\"`\u003Cselect>` element text\"},\"$:/language/Docs/PaletteColours/sidebar-button-foreground\":{\"text\":\"Sidebar button foreground\"},\"$:/language/Docs/PaletteColours/sidebar-controls-foreground-hover\":{\"text\":\"Sidebar controls foreground hover\"},\"$:/language/Docs/PaletteColours/sidebar-controls-foreground\":{\"text\":\"Sidebar controls foreground\"},\"$:/language/Docs/PaletteColours/sidebar-foreground-shadow\":{\"text\":\"Sidebar foreground shadow\"},\"$:/language/Docs/PaletteColours/sidebar-foreground\":{\"text\":\"Sidebar foreground\"},\"$:/language/Docs/PaletteColours/sidebar-muted-foreground-hover\":{\"text\":\"Sidebar muted foreground hover\"},\"$:/language/Docs/PaletteColours/sidebar-muted-foreground\":{\"text\":\"Sidebar muted foreground\"},\"$:/language/Docs/PaletteColours/sidebar-tab-background-selected\":{\"text\":\"Sidebar tab background for selected tabs\"},\"$:/language/Docs/PaletteColours/sidebar-tab-background\":{\"text\":\"Sidebar tab background\"},\"$:/language/Docs/PaletteColours/sidebar-tab-border-selected\":{\"text\":\"Sidebar tab border for selected tabs\"},\"$:/language/Docs/PaletteColours/sidebar-tab-border\":{\"text\":\"Sidebar tab border\"},\"$:/language/Docs/PaletteColours/sidebar-tab-divider\":{\"text\":\"Sidebar tab divider\"},\"$:/language/Docs/PaletteColours/sidebar-tab-foreground-selected\":{\"text\":\"Sidebar tab foreground for selected tabs\"},\"$:/language/Docs/PaletteColours/sidebar-tab-foreground\":{\"text\":\"Sidebar tab foreground\"},\"$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground-hover\":{\"text\":\"Sidebar tiddler link foreground hover\"},\"$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground\":{\"text\":\"Sidebar tiddler link foreground\"},\"$:/language/Docs/PaletteColours/site-title-foreground\":{\"text\":\"Site title foreground\"},\"$:/language/Docs/PaletteColours/static-alert-foreground\":{\"text\":\"Static alert foreground\"},\"$:/language/Docs/PaletteColours/tab-background-selected\":{\"text\":\"Tab background for selected tabs\"},\"$:/language/Docs/PaletteColours/tab-background\":{\"text\":\"Tab background\"},\"$:/language/Docs/PaletteColours/tab-border-selected\":{\"text\":\"Tab border for selected tabs\"},\"$:/language/Docs/PaletteColours/tab-border\":{\"text\":\"Tab border\"},\"$:/language/Docs/PaletteColours/tab-divider\":{\"text\":\"Tab divider\"},\"$:/language/Docs/PaletteColours/tab-foreground-selected\":{\"text\":\"Tab foreground for selected tabs\"},\"$:/language/Docs/PaletteColours/tab-foreground\":{\"text\":\"Tab foreground\"},\"$:/language/Docs/PaletteColours/table-border\":{\"text\":\"Table border\"},\"$:/language/Docs/PaletteColours/table-footer-background\":{\"text\":\"Table footer background\"},\"$:/language/Docs/PaletteColours/table-header-background\":{\"text\":\"Table header background\"},\"$:/language/Docs/PaletteColours/tag-background\":{\"text\":\"Tag background\"},\"$:/language/Docs/PaletteColours/tag-foreground\":{\"text\":\"Tag foreground\"},\"$:/language/Docs/PaletteColours/tiddler-background\":{\"text\":\"Tiddler background\"},\"$:/language/Docs/PaletteColours/tiddler-border\":{\"text\":\"Tiddler border\"},\"$:/language/Docs/PaletteColours/tiddler-controls-foreground-hover\":{\"text\":\"Tiddler controls foreground hover\"},\"$:/language/Docs/PaletteColours/tiddler-controls-foreground-selected\":{\"text\":\"Tiddler controls foreground for selected controls\"},\"$:/language/Docs/PaletteColours/tiddler-controls-foreground\":{\"text\":\"Tiddler controls foreground\"},\"$:/language/Docs/PaletteColours/tiddler-editor-background\":{\"text\":\"Tiddler editor background\"},\"$:/language/Docs/PaletteColours/tiddler-editor-border-image\":{\"text\":\"Tiddler editor border image\"},\"$:/language/Docs/PaletteColours/tiddler-editor-border\":{\"text\":\"Tiddler editor border\"},\"$:/language/Docs/PaletteColours/tiddler-editor-fields-even\":{\"text\":\"Tiddler editor background for even fields\"},\"$:/language/Docs/PaletteColours/tiddler-editor-fields-odd\":{\"text\":\"Tiddler editor background for odd fields\"},\"$:/language/Docs/PaletteColours/tiddler-info-background\":{\"text\":\"Tiddler info panel background\"},\"$:/language/Docs/PaletteColours/tiddler-info-border\":{\"text\":\"Tiddler info panel border\"},\"$:/language/Docs/PaletteColours/tiddler-info-tab-background\":{\"text\":\"Tiddler info panel tab background\"},\"$:/language/Docs/PaletteColours/tiddler-link-background\":{\"text\":\"Tiddler link background\"},\"$:/language/Docs/PaletteColours/tiddler-link-foreground\":{\"text\":\"Tiddler link foreground\"},\"$:/language/Docs/PaletteColours/tiddler-subtitle-foreground\":{\"text\":\"Tiddler subtitle foreground\"},\"$:/language/Docs/PaletteColours/tiddler-title-foreground\":{\"text\":\"Tiddler title foreground\"},\"$:/language/Docs/PaletteColours/toolbar-new-button\":{\"text\":\"Toolbar 'new tiddler' button foreground\"},\"$:/language/Docs/PaletteColours/toolbar-options-button\":{\"text\":\"Toolbar 'options' button foreground\"},\"$:/language/Docs/PaletteColours/toolbar-save-button\":{\"text\":\"Toolbar 'save' button foreground\"},\"$:/language/Docs/PaletteColours/toolbar-info-button\":{\"text\":\"Toolbar 'info' button foreground\"},\"$:/language/Docs/PaletteColours/toolbar-edit-button\":{\"text\":\"Toolbar 'edit' button foreground\"},\"$:/language/Docs/PaletteColours/toolbar-close-button\":{\"text\":\"Toolbar 'close' button foreground\"},\"$:/language/Docs/PaletteColours/toolbar-delete-button\":{\"text\":\"Toolbar 'delete' button foreground\"},\"$:/language/Docs/PaletteColours/toolbar-cancel-button\":{\"text\":\"Toolbar 'cancel' button foreground\"},\"$:/language/Docs/PaletteColours/toolbar-done-button\":{\"text\":\"Toolbar 'done' button foreground\"},\"$:/language/Docs/PaletteColours/untagged-background\":{\"text\":\"Untagged pill background\"},\"$:/language/Docs/PaletteColours/very-muted-foreground\":{\"text\":\"Very muted foreground\"},\"$:/language/EditTemplate/Caption\":{\"text\":\"Editor\"},\"$:/language/EditTemplate/Body/External/Hint\":{\"text\":\"This tiddler shows content stored outside of the main TiddlyWiki file. You can edit the tags and fields but cannot directly edit the content itself\"},\"$:/language/EditTemplate/Body/Placeholder\":{\"text\":\"Type the text for this tiddler\"},\"$:/language/EditTemplate/Body/Preview/Type/Output\":{\"text\":\"output\"},\"$:/language/EditTemplate/Body/Preview/Type/DiffShadow\":{\"text\":\"differences from shadow (if any)\"},\"$:/language/EditTemplate/Body/Preview/Type/DiffCurrent\":{\"text\":\"differences from current\"},\"$:/language/EditTemplate/Field/Remove/Caption\":{\"text\":\"remove field\"},\"$:/language/EditTemplate/Field/Remove/Hint\":{\"text\":\"Remove field\"},\"$:/language/EditTemplate/Field/Dropdown/Caption\":{\"text\":\"field list\"},\"$:/language/EditTemplate/Field/Dropdown/Hint\":{\"text\":\"Show field list\"},\"$:/language/EditTemplate/Fields/Add/Button\":{\"text\":\"add\"},\"$:/language/EditTemplate/Fields/Add/Button/Hint\":{\"text\":\"Add the new field to the tiddler\"},\"$:/language/EditTemplate/Fields/Add/Name/Placeholder\":{\"text\":\"field name\"},\"$:/language/EditTemplate/Fields/Add/Prompt\":{\"text\":\"Add a new field:\"},\"$:/language/EditTemplate/Fields/Add/Value/Placeholder\":{\"text\":\"field value\"},\"$:/language/EditTemplate/Fields/Add/Dropdown/System\":{\"text\":\"System fields\"},\"$:/language/EditTemplate/Fields/Add/Dropdown/User\":{\"text\":\"User fields\"},\"$:/language/EditTemplate/Shadow/Warning\":{\"text\":\"This is a shadow tiddler. Any changes you make will override the default version from the plugin \u003C\u003CpluginLink>>\"},\"$:/language/EditTemplate/Shadow/OverriddenWarning\":{\"text\":\"This is a modified shadow tiddler. You can revert to the default version in the plugin \u003C\u003CpluginLink>> by deleting this tiddler\"},\"$:/language/EditTemplate/Tags/Add/Button\":{\"text\":\"add\"},\"$:/language/EditTemplate/Tags/Add/Button/Hint\":{\"text\":\"add tag\"},\"$:/language/EditTemplate/Tags/Add/Placeholder\":{\"text\":\"tag name\"},\"$:/language/EditTemplate/Tags/ClearInput/Caption\":{\"text\":\"clear input\"},\"$:/language/EditTemplate/Tags/ClearInput/Hint\":{\"text\":\"Clear tag input\"},\"$:/language/EditTemplate/Tags/Dropdown/Caption\":{\"text\":\"tag list\"},\"$:/language/EditTemplate/Tags/Dropdown/Hint\":{\"text\":\"Show tag list\"},\"$:/language/EditTemplate/Title/BadCharacterWarning\":{\"text\":\"Warning: avoid using any of the characters \u003C\u003Cbad-chars>> in tiddler titles\"},\"$:/language/EditTemplate/Title/Exists/Prompt\":{\"text\":\"Target tiddler already exists\"},\"$:/language/EditTemplate/Title/Relink/Prompt\":{\"text\":\"Update ''\u003C$text text=\u003C\u003CfromTitle>>/>'' to ''\u003C$text text=\u003C\u003CtoTitle>>/>'' in the //tags// and //list// fields of other tiddlers\"},\"$:/language/EditTemplate/Title/References/Prompt\":{\"text\":\"The following references to this tiddler will not be automatically updated:\"},\"$:/language/EditTemplate/Type/Dropdown/Caption\":{\"text\":\"content type list\"},\"$:/language/EditTemplate/Type/Dropdown/Hint\":{\"text\":\"Show content type list\"},\"$:/language/EditTemplate/Type/Delete/Caption\":{\"text\":\"delete content type\"},\"$:/language/EditTemplate/Type/Delete/Hint\":{\"text\":\"Delete content type\"},\"$:/language/EditTemplate/Type/Placeholder\":{\"text\":\"content type\"},\"$:/language/EditTemplate/Type/Prompt\":{\"text\":\"Type:\"},\"$:/language/Exporters/StaticRiver\":{\"text\":\"Static HTML\"},\"$:/language/Exporters/JsonFile\":{\"text\":\"JSON file\"},\"$:/language/Exporters/CsvFile\":{\"text\":\"CSV file\"},\"$:/language/Exporters/TidFile\":{\"text\":\"\\\".tid\\\" file\"},\"$:/language/Docs/Fields/_canonical_uri\":{\"text\":\"The full URI of an external image tiddler\"},\"$:/language/Docs/Fields/bag\":{\"text\":\"The name of the bag from which a tiddler came\"},\"$:/language/Docs/Fields/caption\":{\"text\":\"The text to be displayed on a tab or button\"},\"$:/language/Docs/Fields/code-body\":{\"text\":\"The view template will display the tiddler as code if set to ''yes\"},\"$:/language/Docs/Fields/color\":{\"text\":\"The CSS color value associated with a tiddler\"},\"$:/language/Docs/Fields/component\":{\"text\":\"The name of the component responsible for an [[alert tiddler|AlertMechanism]]\"},\"$:/language/Docs/Fields/current-tiddler\":{\"text\":\"Used to cache the top tiddler in a [[history list|HistoryMechanism]]\"},\"$:/language/Docs/Fields/created\":{\"text\":\"The date a tiddler was created\"},\"$:/language/Docs/Fields/creator\":{\"text\":\"The name of the person who created a tiddler\"},\"$:/language/Docs/Fields/dependents\":{\"text\":\"For a plugin, lists the dependent plugin titles\"},\"$:/language/Docs/Fields/description\":{\"text\":\"The descriptive text for a plugin, or a modal dialogue\"},\"$:/language/Docs/Fields/draft.of\":{\"text\":\"For draft tiddlers, contains the title of the tiddler of which this is a draft\"},\"$:/language/Docs/Fields/draft.title\":{\"text\":\"For draft tiddlers, contains the proposed new title of the tiddler\"},\"$:/language/Docs/Fields/footer\":{\"text\":\"The footer text for a modal\"},\"$:/language/Docs/Fields/hide-body\":{\"text\":\"The view template will hide bodies of tiddlers if set to ''yes\"},\"$:/language/Docs/Fields/icon\":{\"text\":\"The title of the tiddler containing the icon associated with a tiddler\"},\"$:/language/Docs/Fields/library\":{\"text\":\"Indicates that a tiddler should be saved as a JavaScript library if set to ''yes\"},\"$:/language/Docs/Fields/list\":{\"text\":\"An ordered list of tiddler titles associated with a tiddler\"},\"$:/language/Docs/Fields/list-before\":{\"text\":\"If set, the title of a tiddler before which this tiddler should be added to the ordered list of tiddler titles, or at the start of the list if this field is present but empty\"},\"$:/language/Docs/Fields/list-after\":{\"text\":\"If set, the title of the tiddler after which this tiddler should be added to the ordered list of tiddler titles, or at the end of the list if this field is present but empty\"},\"$:/language/Docs/Fields/modified\":{\"text\":\"The date and time at which a tiddler was last modified\"},\"$:/language/Docs/Fields/modifier\":{\"text\":\"The tiddler title associated with the person who last modified a tiddler\"},\"$:/language/Docs/Fields/name\":{\"text\":\"The human readable name associated with a plugin tiddler\"},\"$:/language/Docs/Fields/plugin-priority\":{\"text\":\"A numerical value indicating the priority of a plugin tiddler\"},\"$:/language/Docs/Fields/plugin-type\":{\"text\":\"The type of plugin in a plugin tiddler\"},\"$:/language/Docs/Fields/revision\":{\"text\":\"The revision of the tiddler held at the server\"},\"$:/language/Docs/Fields/released\":{\"text\":\"Date of a TiddlyWiki release\"},\"$:/language/Docs/Fields/source\":{\"text\":\"The source URL associated with a tiddler\"},\"$:/language/Docs/Fields/subtitle\":{\"text\":\"The subtitle text for a modal\"},\"$:/language/Docs/Fields/tags\":{\"text\":\"A list of tags associated with a tiddler\"},\"$:/language/Docs/Fields/text\":{\"text\":\"The body text of a tiddler\"},\"$:/language/Docs/Fields/throttle.refresh\":{\"text\":\"If present, throttles refreshes of this tiddler\"},\"$:/language/Docs/Fields/title\":{\"text\":\"The unique name of a tiddler\"},\"$:/language/Docs/Fields/toc-link\":{\"text\":\"Suppresses the tiddler's link in a Table of Contents tree if set to ''no\"},\"$:/language/Docs/Fields/type\":{\"text\":\"The content type of a tiddler\"},\"$:/language/Docs/Fields/version\":{\"text\":\"Version information for a plugin\"},\"$:/language/Docs/Fields/_is_skinny\":{\"text\":\"If present, indicates that the tiddler text field must be loaded from the server\"},\"$:/language/Filters/AllTiddlers\":{\"text\":\"All tiddlers except system tiddlers\"},\"$:/language/Filters/RecentSystemTiddlers\":{\"text\":\"Recently modified tiddlers, including system tiddlers\"},\"$:/language/Filters/RecentTiddlers\":{\"text\":\"Recently modified tiddlers\"},\"$:/language/Filters/AllTags\":{\"text\":\"All tags except system tags\"},\"$:/language/Filters/Missing\":{\"text\":\"Missing tiddlers\"},\"$:/language/Filters/Drafts\":{\"text\":\"Draft tiddlers\"},\"$:/language/Filters/Orphans\":{\"text\":\"Orphan tiddlers\"},\"$:/language/Filters/SystemTiddlers\":{\"text\":\"System tiddlers\"},\"$:/language/Filters/ShadowTiddlers\":{\"text\":\"Shadow tiddlers\"},\"$:/language/Filters/OverriddenShadowTiddlers\":{\"text\":\"Overridden shadow tiddlers\"},\"$:/language/Filters/SessionTiddlers\":{\"text\":\"Tiddlers modified since the wiki was loaded\"},\"$:/language/Filters/SystemTags\":{\"text\":\"System tags\"},\"$:/language/Filters/StoryList\":{\"text\":\"Tiddlers in the story river, excluding \u003C$text text=\\\"$:/AdvancedSearch\\\"/>\"},\"$:/language/Filters/TypedTiddlers\":{\"text\":\"Non wiki-text tiddlers\"},\"GettingStarted\":{\"text\":\"\\\\define lingo-base()$:/language/ControlPanel/Basics/\\nWelcome to ~TiddlyWiki and the ~TiddlyWiki community\\n\\nBefore you start storing important information in ~TiddlyWiki it is vital to make sure that you can reliably save changes. See https://tiddlywiki.com/#GettingStarted for details\\n\\n!! Set up this ~TiddlyWiki\\n\\n\u003Cdiv class=tc-control-panel>\\n\\n| \u003C$link to=\\\"$:/SiteTitle\\\">\u003C\u003Clingo Title/Prompt>>\u003C/$link>|\u003C$edit-text tiddler=\\\"$:/SiteTitle\\\"default=\\\"\\\"tag=input/> |\\n| \u003C$link to=\\\"$:/SiteSubtitle\\\">\u003C\u003Clingo Subtitle/Prompt>>\u003C/$link>|\u003C$edit-text tiddler=\\\"$:/SiteSubtitle\\\"default=\\\"\\\"tag=input/> |\\n|^ \u003C$link to=\\\"$:/DefaultTiddlers\\\">\u003C\u003Clingo DefaultTiddlers/Prompt>>\u003C/$link>\u003Cbr>\u003C\u003Clingo DefaultTiddlers/TopHint>>|\u003C$edit tiddler=\\\"$:/DefaultTiddlers\\\"tag=textarea/>\u003Cbr>//\u003C\u003Clingo DefaultTiddlers/BottomHint>>// |\\n|tc-table-no-border tc-first-col-min-width tc-first-link-nowrap|k\\n\u003C/div>See the [[control panel|$:/ControlPanel]] for more options.\\n\"},\"$:/language/Help/build\":{\"description\":\"Automatically run configured commands\",\"text\":\"Build the specified build targets for the current wiki. If no build targets are specified then all available targets will be built.\\n\\n```\\n--build \u003Ctarget> [\u003Ctarget> ...]\\n```\\n\\nBuild targets are defined in the `tiddlywiki.info` file of a wiki folder.\"},\"$:/language/Help/clearpassword\":{\"description\":\"Clear a password for subsequent crypto operations\",\"text\":\"Clear the password for subsequent crypto operations\\n\\n```\\n--clearpassword\"},\"$:/language/Help/commands\":{\"description\":\"Run commands returned from a filter\",\"text\":\"Sequentially run the command tokens returned from a filter\\n\\n```\\n--commands \u003Cfilter>\\n```\\n\\nExamples\\n\\n```\\n--commands \\\"[enlist{$:/build-commands-as-text}]\\\"\\n```\\n\\n```\\n--commands \\\"[{$:/build-commands-as-json}jsonindexes[]] :map[{$:/build-commands-as-json}jsonget\u003CcurrentTiddler>]\\\"\"},\"$:/language/Help/default\":{\"text\":\"\\\\define commandTitle()$:/language/Help/$(command)$\\n```\\nusage: tiddlywiki [\u003Cwikifolder>] [--\u003Ccommand> [\u003Cargs>...]...]\\n```\\n\\nAvailable commands:\\n\\n\u003Cul>\u003C$list filter=[commands[]sort[title]] variable=command>\u003Cli>\u003C$link to=\u003C\u003CcommandTitle>>>\u003C$macrocall $type=\\\"text/plain\\\"$output=\\\"text/plain\\\"$name=command/>\u003C/$link>: \u003C$transclude tiddler=\u003C\u003CcommandTitle>>field=description/>\u003C/li>\u003C/$list>\u003C/ul>\\n\\nTo get detailed help on a command:\\n\\n```\\ntiddlywiki --help \u003Ccommand>\"},\"$:/language/Help/deletetiddlers\":{\"description\":\"Deletes a group of tiddlers\",\"text\":\"\u003C\u003C.from-version 5.1.20>> Deletes a group of tiddlers identified by a filter.\\n\\n```\\n--deletetiddlers \u003Cfilter>\"},\"$:/language/Help/editions\":{\"description\":\"Lists the available editions of TiddlyWiki\",\"text\":\"Lists the names and descriptions of the available editions. You can create a new wiki of a specified edition with the `--init` command.\\n\\n```\\n--editions\"},\"$:/language/Help/fetch\":{\"description\":\"Fetch tiddlers from wiki by URL\",\"text\":\"Fetch one or more files over HTTP/HTTPS, and import the tiddlers matching a filter, optionally transforming the incoming titles.\\n\\n```\\n--fetch file \u003Curl> \u003Cimport-filter> \u003Ctransform-filter>\\n--fetch files \u003Curl-filter> \u003Cimport-filter> \u003Ctransform-filter>\\n--fetch raw-file \u003Curl> \u003Ctransform-filter>\\n--fetch raw-files \u003Curl-filter> \u003Ctransform-filter>\\n```\\n\\nThe \\\"file\\\" and \\\"files\\\" variants fetch the specified files and attempt to import the tiddlers within them (the same processing as if the files were dragged into the browser window). The \\\"raw-file\\\" and \\\"raw-files\\\" variants fetch the specified files and then store the raw file data in tiddlers, without applying the import logic.\\n\\nWith the \\\"file\\\" and \\\"raw-file\\\" variants only a single file is fetched and the first parameter is the URL of the file to read.\\n\\nWith the \\\"files\\\" and \\\"raw-files\\\" variants, multiple files are fetched and the first parameter is a filter yielding a list of URLs of the files to read. For example, given a set of tiddlers tagged \\\"remote-server\\\" that have a field \\\"url\\\" the filter `[tag[remote-server]get[url]]` will retrieve all the available URLs.\\n\\nFor the \\\"file\\\" and \\\"files\\\" variants, the `\u003Cimport-filter>` parameter specifies a filter determining which tiddlers are imported. It defaults to `[all[tiddlers]]` if not provided.\\n\\nFor all variants, the `\u003Ctransform-filter>` parameter specifies an optional filter that transforms the titles of the imported tiddlers. For example, `[addprefix[$:/myimports/]]` would add the prefix `$:/myimports/` to each title.\\n\\nPreceding the `--fetch` command with `--verbose` will output progress information during the import.\\n\\nNote that TiddlyWiki will not fetch an older version of an already loaded plugin.\\n\\nThe following example retrieves all the non-system tiddlers from https://tiddlywiki.com and saves them to a JSON file:\\n\\n```\\ntiddlywiki --verbose --fetch file \\\"https://tiddlywiki.com/\\\" \\\"[!is[system]]\\\" \\\"\\\" --rendertiddler \\\"$:/core/templates/exporters/JsonFile\\\" output.json text/plain \\\"\\\" exportFilter \\\"[!is[system]]\\\"\\n```\\n\\nThe following example retrieves the \\\"favicon\\\" file from tiddlywiki.com and saves it in a file called \\\"output.ico\\\". Note that the intermediate tiddler \\\"Icon Tiddler\\\" is quoted in the \\\"--fetch\\\" command because it is being used as a transformation filter to replace the default title, while there are no quotes for the \\\"--savetiddler\\\" command because it is being used directly as a title.\\n\\n```\\ntiddlywiki --verbose --fetch raw-file \\\"https://tiddlywiki.com/favicon.ico\\\" \\\"[[Icon Tiddler]]\\\" --savetiddler \\\"Icon Tiddler\\\" output.ico\"},\"$:/language/Help/help\":{\"description\":\"Display help for TiddlyWiki commands\",\"text\":\"Displays help text for a command:\\n\\n```\\n--help [\u003Ccommand>]\\n```\\n\\nIf the command name is omitted then a list of available commands is displayed.\\n\"},\"$:/language/Help/import\":{\"description\":\"Import tiddlers from a file\",\"text\":\"Import tiddlers from TiddlyWiki (`.html`), `.tiddler`, `.tid`, `.json` or other local files. The deserializer must be explicitly specified, unlike the `load` command which infers the deserializer from the file extension.\\n\\n```\\n--import \u003Cfilepath> \u003Cdeserializer> [\u003Ctitle>] [\u003Cencoding>]\\n```\\n\\nThe deserializers in the core include:\\n\\n* application/javascript\\n* application/json\\n* application/x-tiddler\\n* application/x-tiddler-html-div\\n* application/x-tiddlers\\n* text/html\\n* text/plain\\n\\nThe title of the imported tiddler defaults to the filename.\\n\\nThe encoding defaults to \\\"utf8\\\", but can be \\\"base64\\\" for importing binary files.\\n\\nNote that TiddlyWiki will not import an older version of an already loaded plugin.\\n\"},\"$:/language/Help/init\":{\"description\":\"Initialise a new wiki folder\",\"text\":\"Initialise an empty [[WikiFolder|WikiFolders]] with a copy of the specified edition.\\n\\n```\\n--init \u003Cedition> [\u003Cedition> ...]\\n```\\n\\nFor example:\\n\\n```\\ntiddlywiki ./MyWikiFolder --init empty\\n```\\n\\nNote:\\n\\n* The wiki folder directory will be created if necessary\\n* The \\\"edition\\\" defaults to ''empty''\\n* The init command will fail if the wiki folder is not empty\\n* The init command removes any `includeWikis` definitions in the edition's `tiddlywiki.info` file\\n* When multiple editions are specified, editions initialised later will overwrite any files shared with earlier editions (so, the final `tiddlywiki.info` file will be copied from the last edition)\\n* `--editions` returns a list of available editions\\n\"},\"$:/language/Help/listen\":{\"description\":\"Provides an HTTP server interface to TiddlyWiki\",\"text\":\"Serves a wiki over HTTP.\\n\\nThe listen command uses NamedCommandParameters:\\n\\n```\\n--listen [\u003Cname>=\u003Cvalue>]...\\n```\\n\\nAll parameters are optional with safe defaults, and can be specified in any order. The recognised parameters are:\\n\\n* ''host'' - optional hostname to serve from (defaults to \\\"127.0.0.1\\\" aka \\\"localhost\\\")\\n* ''path-prefix'' - optional prefix for paths\\n* ''port'' - port number on which to listen; non-numeric values are interpreted as a system environment variable from which the port number is extracted (defaults to \\\"8080\\\")\\n* ''credentials'' - pathname of credentials CSV file (relative to wiki folder)\\n* ''anon-username'' - the username for signing edits for anonymous users\\n* ''username'' - optional username for basic authentication\\n* ''password'' - optional password for basic authentication\\n* ''authenticated-user-header'' - optional name of header to be used for trusted authentication\\n* ''readers'' - comma-separated list of principals allowed to read from this wiki\\n* ''writers'' - comma-separated list of principals allowed to write to this wiki\\n* ''csrf-disable'' - set to \\\"yes\\\" to disable CSRF checks (defaults to \\\"no\\\")\\n* ''root-tiddler'' - the tiddler to serve at the root (defaults to \\\"$:/core/save/all\\\")\\n* ''root-render-type'' - the content type to which the root tiddler should be rendered (defaults to \\\"text/plain\\\")\\n* ''root-serve-type'' - the content type with which the root tiddler should be served (defaults to \\\"text/html\\\")\\n* ''tls-cert'' - pathname of TLS certificate file (relative to wiki folder)\\n* ''tls-key'' - pathname of TLS key file (relative to wiki folder)\\n* ''debug-level'' - optional debug level; set to \\\"debug\\\" to view request details (defaults to \\\"none\\\")\\n* ''gzip'' - set to \\\"yes\\\" to enable gzip compression for some http endpoints (defaults to \\\"no\\\")\\n* ''use-browser-cache'' - set to \\\"yes\\\" to allow the browser to cache responses to save bandwidth (defaults to \\\"no\\\")\\n\\nFor information on opening up your instance to the entire local network, and possible security concerns, see the WebServer tiddler at TiddlyWiki.com.\"},\"$:/language/Help/load\":{\"description\":\"Load tiddlers from a file\",\"text\":\"Load tiddlers from TiddlyWiki (`.html`), `.tiddler`, `.tid`, `.json` or other local files. The processing applied to incoming files is determined by the file extension. Use the alternative `import` command if you need to specify the deserializer and encoding explicitly.\\n\\n```\\n--load \u003Cfilepath> [noerror]\\n--load \u003Cdirpath> [noerror]\\n```\\n\\nBy default, the load command raises an error if no tiddlers are found. The error can be suppressed by providing the optional \\\"noerror\\\" parameter.\\n\\nTo load tiddlers from an encrypted TiddlyWiki file you should first specify the password with the PasswordCommand. For example:\\n\\n```\\ntiddlywiki ./MyWiki --password pa55w0rd --load my_encrypted_wiki.html\\n```\\n\\nNote that TiddlyWiki will not load an older version of an already loaded plugin.\\n\"},\"$:/language/Help/makelibrary\":{\"description\":\"Construct library plugin required by upgrade process\",\"text\":\"Constructs the `$:/UpgradeLibrary` tiddler for the upgrade process.\\n\\nThe upgrade library is formatted as an ordinary plugin tiddler with the plugin type `library`. It contains a copy of each of the plugins, themes and language packs available within the TiddlyWiki5 repository.\\n\\nThis command is intended for internal use; it is only relevant to users constructing a custom upgrade procedure.\\n\\n```\\n--makelibrary \u003Ctitle>\\n```\\n\\nThe title argument defaults to `$:/UpgradeLibrary`.\\n\"},\"$:/language/Help/notfound\":{\"text\":\"No such help item\"},\"$:/language/Help/output\":{\"description\":\"Set the base output directory for subsequent commands\",\"text\":\"Sets the base output directory for subsequent commands. The default output directory is the `output` subdirectory of the edition directory.\\n\\n```\\n--output \u003Cpathname>\\n```\\n\\nIf the specified pathname is relative then it is resolved relative to the current working directory. For example `--output .` sets the output directory to the current working directory.\"},\"$:/language/Help/password\":{\"description\":\"Set a password for subsequent crypto operations\",\"text\":\"Set a password for subsequent crypto operations\\n\\n```\\n--password \u003Cpassword>\\n```\\n\\n''Note'': This should not be used for serving TiddlyWiki with password protection. Instead, see the password option under the [[ServerCommand]].\\n\"},\"$:/language/Help/render\":{\"description\":\"Renders individual tiddlers to files\",\"text\":\"Render individual tiddlers identified by a filter and save the results to the specified files.\\n\\nOptionally, the title of a template tiddler can be specified. In this case, instead of directly rendering each tiddler, the template tiddler is rendered with the \\\"currentTiddler\\\" variable set to the title of the tiddler that is being rendered.\\n\\nA name and value for an additional variable may optionally also be specified.\\n\\n```\\n--render \u003Ctiddler-filter> [\u003Cfilename-filter>] [\u003Crender-type>] [\u003Ctemplate>] [ [\u003Cname>] [\u003Cvalue>] ]*\\n```\\n\\n* ''tiddler-filter'': A filter identifying the tiddler(s) to be rendered\\n* ''filename-filter'': Optional filter transforming tiddler titles into pathnames. If omitted, defaults to `[is[tiddler]addsuffix[.html]]`, which uses the unchanged tiddler title as the filename\\n* ''render-type'': Optional render type: `text/html` (the default) returns the full HTML text and `text/plain` just returns the text content (ie it ignores HTML tags and other unprintable material)\\n* ''template'': Optional template through which each tiddler is rendered\\n* ''name'': Name of optional variables\\n* ''value'': Value of optional variables\\n\\nBy default, the filename is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\\n\\nNotes:\\n\\n* The output directory is not cleared of any existing files\\n* Any missing directories in the path to the filename are automatically created.\\n* When referring to a tiddler with spaces in its title, take care to use both the quotes required by your shell and also TiddlyWiki's double square brackets: `--render \\\"[[Motovun Jack.jpg]]\\\"`\\n* The filename filter is evaluated with the selected items being set to the title of the tiddler currently being rendered, allowing the title to be used as the basis for computing the filename. For example `[encodeuricomponent[]addprefix[static/]]` applies URI encoding to each title, and then adds the prefix `static/`\\n* Multiple ''name''/''value'' pairs can be used to pass more than one variable\\n* The `--render` command is a more flexible replacement for both the `--rendertiddler` and `--rendertiddlers` commands, which are deprecated\\n\\nExamples:\\n\\n* `--render '[!is[system]]' '[encodeuricomponent[]addprefix[tiddlers/]addsuffix[.html]]'` -- renders all non-system tiddlers as files in the subdirectory \\\"tiddlers\\\" with URL-encoded titles and the extension HTML\\n* `--render '.' 'tiddlers.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' '[tag[HelloThere]]'` -- renders the tiddlers tagged \\\"HelloThere\\\" to a JSON file named \\\"tiddlers.json\\\"\\n\"},\"$:/language/Help/rendertiddler\":{\"description\":\"Render an individual tiddler as a specified ContentType\",\"text\":\"(Note: The `--rendertiddler` command is deprecated in favour of the new, more flexible `--render` command)\\n\\nRender an individual tiddler as a specified ContentType, defaulting to `text/html` and save it to the specified filename.\\n\\nOptionally the title of a template tiddler can be specified, in which case the template tiddler is rendered with the \\\"currentTiddler\\\" variable set to the tiddler that is being rendered (the first parameter value).\\n\\nA name and value for an additional variable may optionally also be specified.\\n\\n```\\n--rendertiddler \u003Ctitle> \u003Cfilename> [\u003Ctype>] [\u003Ctemplate>] [\u003Cname>] [\u003Cvalue>]\\n```\\n\\nBy default, the filename is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\\n\\nAny missing directories in the path to the filename are automatically created.\\n\\nFor example, the following command saves all tiddlers matching the filter `[tag[done]]` to a JSON file titled `output.json` by employing the core template `$:/core/templates/exporters/JsonFile`.\\n\\n```\\n--rendertiddler \\\"$:/core/templates/exporters/JsonFile\\\" output.json text/plain \\\"\\\" exportFilter \\\"[tag[done]]\\\"\"},\"$:/language/Help/rendertiddlers\":{\"description\":\"Render tiddlers matching a filter to a specified ContentType\",\"text\":\"(Note: The `--rendertiddlers` command is deprecated in favour of the new, more flexible `--render` command)\\n\\nRender a set of tiddlers matching a filter to separate files of a specified ContentType (defaults to `text/html`) and extension (defaults to `.html`).\\n\\n```\\n--rendertiddlers '\u003Cfilter>' \u003Ctemplate> \u003Cpathname> [\u003Ctype>] [\u003Cextension>] [\\\"noclean\\\"]\\n```\\n\\nFor example:\\n\\n```\\n--rendertiddlers '[!is[system]]' $:/core/templates/static.tiddler.html ./static text/plain\\n```\\n\\nBy default, the pathname is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\\n\\nAny files in the target directory are deleted unless the ''noclean'' flag is specified. The target directory is recursively created if it is missing.\\n\"},\"$:/language/Help/save\":{\"description\":\"Saves individual raw tiddlers to files\",\"text\":\"Saves individual tiddlers identified by a filter in their raw text or binary format to the specified files.\\n\\n```\\n--save \u003Ctiddler-filter> \u003Cfilename-filter>\\n```\\n\\n* ''tiddler-filter'': A filter identifying the tiddler(s) to be saved\\n* ''filename-filter'': Optional filter transforming tiddler titles into pathnames. If omitted, defaults to `[is[tiddler]]`, which uses the unchanged tiddler title as the filename\\n\\nBy default, the filename is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\\n\\nNotes:\\n\\n* The output directory is not cleared of any existing files\\n* Any missing directories in the path to the filename are automatically created.\\n* When saving a tiddler with spaces in its title, take care to use both the quotes required by your shell and also TiddlyWiki's double square brackets: `--save \\\"[[Motovun Jack.jpg]]\\\"`\\n* The filename filter is evaluated with the selected items being set to the title of the tiddler currently being saved, allowing the title to be used as the basis for computing the filename. For example `[encodeuricomponent[]addprefix[static/]]` applies URI encoding to each title, and then adds the prefix `static/`\\n* The `--save` command is a more flexible replacement for both the `--savetiddler` and `--savetiddlers` commands, which are deprecated\\n\\nExamples:\\n\\n* `--save \\\"[!is[system]is[image]]\\\" \\\"[encodeuricomponent[]addprefix[tiddlers/]]\\\"` -- saves all non-system image tiddlers as files in the subdirectory \\\"tiddlers\\\" with URL-encoded titles\\n\"},\"$:/language/Help/savetiddler\":{\"description\":\"Saves a raw tiddler to a file\",\"text\":\"(Note: The `--savetiddler` command is deprecated in favour of the new, more flexible `--save` command)\\n\\nSaves an individual tiddler in its raw text or binary format to the specified filename.\\n\\n```\\n--savetiddler \u003Ctitle> \u003Cfilename>\\n```\\n\\nBy default, the filename is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\\n\\nAny missing directories in the path to the filename are automatically created.\\n\"},\"$:/language/Help/savetiddlers\":{\"description\":\"Saves a group of raw tiddlers to a directory\",\"text\":\"(Note: The `--savetiddlers` command is deprecated in favour of the new, more flexible `--save` command)\\n\\nSaves a group of tiddlers in their raw text or binary format to the specified directory.\\n\\n```\\n--savetiddlers \u003Cfilter> \u003Cpathname> [\\\"noclean\\\"]\\n```\\n\\nBy default, the pathname is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\\n\\nThe output directory is cleared of existing files before saving the specified files. The deletion can be disabled by specifying the ''noclean'' flag.\\n\\nAny missing directories in the pathname are automatically created.\\n\"},\"$:/language/Help/savewikifolder\":{\"description\":\"Saves a wiki to a new wiki folder\",\"text\":\"\u003C\u003C.from-version 5.1.20>> Saves the current wiki as a wiki folder, including tiddlers, plugins and configuration:\\n\\n```\\n--savewikifolder \u003Cwikifolderpath> [\u003Cfilter>]\\n```\\n\\n* The target wiki folder must be empty or non-existent\\n* The filter specifies which tiddlers should be included. It is optional, defaulting to `[all[tiddlers]]`\\n* Plugins from the official plugin library are replaced with references to those plugins in the `tiddlywiki.info` file\\n* Custom plugins are unpacked into their own folder\\n\\nA common usage is to convert a TiddlyWiki HTML file into a wiki folder:\\n\\n```\\ntiddlywiki --load ./mywiki.html --savewikifolder ./mywikifolder\"},\"$:/language/Help/server\":{\"description\":\"Provides an HTTP server interface to TiddlyWiki (deprecated in favour of the new listen command)\",\"text\":\"Legacy command to serve a wiki over HTTP.\\n\\n```\\n--server \u003Cport> \u003Croot-tiddler> \u003Croot-render-type> \u003Croot-serve-type> \u003Cusername> \u003Cpassword> \u003Chost> \u003Cpath-prefix> \u003Cdebug-level>\\n```\\n\\nThe parameters are:\\n\\n* ''port'' - port number on which to listen; non-numeric values are interpreted as a system environment variable from which the port number is extracted (defaults to \\\"8080\\\")\\n* ''root-tiddler'' - the tiddler to serve at the root (defaults to \\\"$:/core/save/all\\\")\\n* ''root-render-type'' - the content type to which the root tiddler should be rendered (defaults to \\\"text/plain\\\")\\n* ''root-serve-type'' - the content type with which the root tiddler should be served (defaults to \\\"text/html\\\")\\n* ''username'' - the default username for signing edits\\n* ''password'' - optional password for basic authentication\\n* ''host'' - optional hostname to serve from (defaults to \\\"127.0.0.1\\\" aka \\\"localhost\\\")\\n* ''path-prefix'' - optional prefix for paths\\n* ''debug-level'' - optional debug level; set to \\\"debug\\\" to view request details (defaults to \\\"none\\\")\\n\\nIf the password parameter is specified then the browser will prompt the user for the username and password. Note that the password is transmitted in plain text so this implementation should only be used on a trusted network or over HTTPS.\\n\\nFor example:\\n\\n```\\n--server 8080 $:/core/save/all text/plain text/html MyUserName passw0rd\\n```\\n\\nThe username and password can be specified as empty strings if you need to set the hostname or pathprefix and don't want to require a password.\\n\\n```\\n--server 8080 $:/core/save/all text/plain text/html \\\"\\\" \\\"\\\" 192.168.0.245\\n```\\n\\nUsing an address like this exposes your system to the local network. For information on opening up your instance to the entire local network, and possible security concerns, see the WebServer tiddler at TiddlyWiki.com.\\n\\nTo run multiple TiddlyWiki servers at the same time you'll need to put each one on a different port. It can be useful to use an environment variable to pass the port number to the Node.js process. This example references an environment variable called \\\"MY_PORT_NUMBER\\\":\\n\\n```\\n--server MY_PORT_NUMBER $:/core/save/all text/plain text/html MyUserName passw0rd\"},\"$:/language/Help/setfield\":{\"description\":\"Prepares external tiddlers for use\",\"text\":\"//Note that this command is experimental and may change or be replaced before being finalised//\\n\\nSets the specified field of a group of tiddlers to the result of wikifying a template tiddler with the `currentTiddler` variable set to the tiddler.\\n\\n```\\n--setfield \u003Cfilter> \u003Cfieldname> \u003Ctemplatetitle> \u003Crendertype>\\n```\\n\\nThe parameters are:\\n\\n* ''filter'' - filter identifying the tiddlers to be affected\\n* ''fieldname'' - the field to modify (defaults to \\\"text\\\")\\n* ''templatetitle'' - the tiddler to wikify into the specified field. If blank or missing then the specified field is deleted\\n* ''rendertype'' - the text type to render (defaults to \\\"text/plain\\\"; \\\"text/html\\\" can be used to include HTML tags)\\n\"},\"$:/language/Help/unpackplugin\":{\"description\":\"Unpack the payload tiddlers from a plugin\",\"text\":\"Extract the payload tiddlers from a plugin, creating them as ordinary tiddlers:\\n\\n```\\n--unpackplugin \u003Ctitle>\"},\"$:/language/Help/verbose\":{\"description\":\"Triggers verbose output mode\",\"text\":\"Triggers verbose output, useful for debugging\\n\\n```\\n--verbose\"},\"$:/language/Help/version\":{\"description\":\"Displays the version number of TiddlyWiki\",\"text\":\"Displays the version number of TiddlyWiki.\\n\\n```\\n--version\"},\"$:/language/Import/Editor/Import/Heading\":{\"text\":\"Import images and insert them into the editor.\"},\"$:/language/Import/Imported/Hint\":{\"text\":\"The following tiddlers were imported:\"},\"$:/language/Import/Listing/Cancel/Caption\":{\"text\":\"Cancel\"},\"$:/language/Import/Listing/Cancel/Warning\":{\"text\":\"Do you wish to cancel the import?\"},\"$:/language/Import/Listing/Hint\":{\"text\":\"These tiddlers are ready to import:\"},\"$:/language/Import/Listing/Import/Caption\":{\"text\":\"Import\"},\"$:/language/Import/Listing/Select/Caption\":{\"text\":\"Select\"},\"$:/language/Import/Listing/Status/Caption\":{\"text\":\"Status\"},\"$:/language/Import/Listing/Title/Caption\":{\"text\":\"Title\"},\"$:/language/Import/Listing/Preview\":{\"text\":\"Preview:\"},\"$:/language/Import/Listing/Preview/Text\":{\"text\":\"Text\"},\"$:/language/Import/Listing/Preview/TextRaw\":{\"text\":\"Text (Raw)\"},\"$:/language/Import/Listing/Preview/Fields\":{\"text\":\"Fields\"},\"$:/language/Import/Listing/Preview/Diff\":{\"text\":\"Diff\"},\"$:/language/Import/Listing/Preview/DiffFields\":{\"text\":\"Diff (Fields)\"},\"$:/language/Import/Listing/Rename/Tooltip\":{\"text\":\"Rename tiddler before importing\"},\"$:/language/Import/Listing/Rename/Prompt\":{\"text\":\"Rename to:\"},\"$:/language/Import/Listing/Rename/ConfirmRename\":{\"text\":\"Rename tiddler\"},\"$:/language/Import/Listing/Rename/CancelRename\":{\"text\":\"Cancel\"},\"$:/language/Import/Listing/Rename/OverwriteWarning\":{\"text\":\"A tiddler with this title already exists.\"},\"$:/language/Import/Upgrader/Plugins/Suppressed/Incompatible\":{\"text\":\"Blocked incompatible or obsolete plugin.\"},\"$:/language/Import/Upgrader/Plugins/Suppressed/Version\":{\"text\":\"Blocked plugin (due to incoming \u003C\u003Cincoming>> not being newer than existing \u003C\u003Cexisting>>).\"},\"$:/language/Import/Upgrader/Plugins/Upgraded\":{\"text\":\"Upgraded plugin from \u003C\u003Cincoming>> to \u003C\u003Cupgraded>>.\"},\"$:/language/Import/Upgrader/State/Suppressed\":{\"text\":\"Blocked temporary state tiddler.\"},\"$:/language/Import/Upgrader/System/Disabled\":{\"text\":\"Disabled system tiddler.\"},\"$:/language/Import/Upgrader/System/Suppressed\":{\"text\":\"Blocked system tiddler.\"},\"$:/language/Import/Upgrader/System/Warning\":{\"text\":\"Core module tiddler.\"},\"$:/language/Import/Upgrader/System/Alert\":{\"text\":\"You are about to import a tiddler that will overwrite a core module tiddler. This is not recommended as it may make the system unstable.\"},\"$:/language/Import/Upgrader/ThemeTweaks/Created\":{\"text\":\"Migrated theme tweak from \u003C$text text=\u003C\u003Cfrom>>/>.\"},\"$:/language/Import/Upgrader/Tiddler/Disabled\":{\"text\":\"Disabled tiddler.\"},\"$:/language/Import/Upgrader/Tiddler/Selected\":{\"text\":\"Selected tiddler.\"},\"$:/language/Import/Upgrader/Tiddler/Unselected\":{\"text\":\"Unselected tiddler.\"},\"$:/language/AboveStory/ClassicPlugin/Warning\":{\"text\":\"It looks like you are trying to load a plugin designed for ~TiddlyWiki Classic. Please note that [[these plugins do not work with TiddlyWiki version 5.x.x|https://tiddlywiki.com/#TiddlyWikiClassic]]. ~TiddlyWiki Classic plugins detected:\"},\"$:/language/BinaryWarning/Prompt\":{\"text\":\"This tiddler contains binary data\"},\"$:/language/ClassicWarning/Hint\":{\"text\":\"This tiddler is written in TiddlyWiki Classic wiki text format, which is not fully compatible with TiddlyWiki version 5. See https://tiddlywiki.com/static/Upgrading.html for more details.\"},\"$:/language/ClassicWarning/Upgrade/Caption\":{\"text\":\"upgrade\"},\"$:/language/CloseAll/Button\":{\"text\":\"close all\"},\"$:/language/ColourPicker/Recent\":{\"text\":\"Recent:\"},\"$:/language/ConfirmCancelTiddler\":{\"text\":\"Do you wish to discard changes to the tiddler \\\"\u003C$text text=\u003C\u003Ctitle>>/>\\\"?\"},\"$:/language/ConfirmDeleteTiddler\":{\"text\":\"Do you wish to delete the tiddler \\\"\u003C$text text=\u003C\u003Ctitle>>/>\\\"?\"},\"$:/language/ConfirmDeleteTiddlers\":{\"text\":\"Are you sure you wish to delete \u003C\u003CresultCount>> tiddler(s)?\"},\"$:/language/ConfirmOverwriteTiddler\":{\"text\":\"Do you wish to overwrite the tiddler \\\"\u003C$text text=\u003C\u003Ctitle>>/>\\\"?\"},\"$:/language/ConfirmEditShadowTiddler\":{\"text\":\"You are about to edit a ShadowTiddler. Any changes will override the default system making future upgrades non-trivial. Are you sure you want to edit \\\"\u003C$text text=\u003C\u003Ctitle>>/>\\\"?\"},\"$:/language/ConfirmAction\":{\"text\":\"Do you wish to proceed?\"},\"$:/language/Count\":{\"text\":\"count\"},\"$:/language/DefaultNewTiddlerTitle\":{\"text\":\"New Tiddler\"},\"$:/language/Diffs/CountMessage\":{\"text\":\"\u003C\u003Cdiff-count>> differences\"},\"$:/language/DropMessage\":{\"text\":\"Drop now (or use the 'Escape' key to cancel)\"},\"$:/language/Encryption/Cancel\":{\"text\":\"Cancel\"},\"$:/language/Encryption/ConfirmClearPassword\":{\"text\":\"Do you wish to clear the password? This will remove the encryption applied when saving this wiki\"},\"$:/language/Encryption/PromptSetPassword\":{\"text\":\"Set a new password for this TiddlyWiki\"},\"$:/language/Encryption/Username\":{\"text\":\"Username\"},\"$:/language/Encryption/Password\":{\"text\":\"Password\"},\"$:/language/Encryption/RepeatPassword\":{\"text\":\"Repeat password\"},\"$:/language/Encryption/PasswordNoMatch\":{\"text\":\"Passwords do not match\"},\"$:/language/Encryption/SetPassword\":{\"text\":\"Set password\"},\"$:/language/Error/Caption\":{\"text\":\"Error\"},\"$:/language/Error/Filter\":{\"text\":\"Filter error\"},\"$:/language/Error/FilterSyntax\":{\"text\":\"Syntax error in filter expression\"},\"$:/language/Error/FilterRunPrefix\":{\"text\":\"Filter Error: Unknown prefix for filter run\"},\"$:/language/Error/IsFilterOperator\":{\"text\":\"Filter Error: Unknown operand for the 'is' filter operator\"},\"$:/language/Error/FormatFilterOperator\":{\"text\":\"Filter Error: Unknown suffix for the 'format' filter operator\"},\"$:/language/Error/LoadingPluginLibrary\":{\"text\":\"Error loading plugin library\"},\"$:/language/Error/NetworkErrorAlert\":{\"text\":\"`\u003Ch2>''Network Error''\u003C/h2>It looks like the connection to the server has been lost. This may indicate a problem with your network connection. Please attempt to restore network connectivity before continuing.\u003Cbr>\u003Cbr>''Any unsaved changes will be automatically synchronised when connectivity is restored''.\"},\"$:/language/Error/PutEditConflict\":{\"text\":\"File changed on server\"},\"$:/language/Error/PutForbidden\":{\"text\":\"Permission denied\"},\"$:/language/Error/PutUnauthorized\":{\"text\":\"Authentication required\"},\"$:/language/Error/RecursiveTransclusion\":{\"text\":\"Recursive transclusion error in transclude widget\"},\"$:/language/Error/RetrievingSkinny\":{\"text\":\"Error retrieving skinny tiddler list\"},\"$:/language/Error/SavingToTWEdit\":{\"text\":\"Error saving to TWEdit\"},\"$:/language/Error/WhileSaving\":{\"text\":\"Error while saving\"},\"$:/language/Error/XMLHttpRequest\":{\"text\":\"XMLHttpRequest error code\"},\"$:/language/InternalJavaScriptError/Title\":{\"text\":\"Internal JavaScript Error\"},\"$:/language/InternalJavaScriptError/Hint\":{\"text\":\"Well, this is embarrassing. It is recommended that you restart TiddlyWiki by refreshing your browser\"},\"$:/language/LayoutSwitcher/Description\":{\"text\":\"Open the layout switcher\"},\"$:/language/LazyLoadingWarning\":{\"text\":\"\u003Cp>Trying to load external content from ''\u003C$text text={{!!_canonical_uri}}/>''\u003C/p>\u003Cp>If this message doesn't disappear, either the tiddler content type doesn't match the type of the external content, or you may be using a browser that doesn't support external content for wikis loaded as standalone files. See https://tiddlywiki.com/#ExternalText\"},\"$:/language/LoginToTiddlySpace\":{\"text\":\"Login to TiddlySpace\"},\"$:/language/Manager/Controls/FilterByTag/None\":{\"text\":\"(none)\"},\"$:/language/Manager/Controls/FilterByTag/Prompt\":{\"text\":\"Filter by tag:\"},\"$:/language/Manager/Controls/Order/Prompt\":{\"text\":\"Reverse order\"},\"$:/language/Manager/Controls/Search/Placeholder\":{\"text\":\"Search\"},\"$:/language/Manager/Controls/Search/Prompt\":{\"text\":\"Search:\"},\"$:/language/Manager/Controls/Show/Option/Tags\":{\"text\":\"tags\"},\"$:/language/Manager/Controls/Show/Option/Tiddlers\":{\"text\":\"tiddlers\"},\"$:/language/Manager/Controls/Show/Prompt\":{\"text\":\"Show:\"},\"$:/language/Manager/Controls/Sort/Prompt\":{\"text\":\"Sort by:\"},\"$:/language/Manager/Item/Colour\":{\"text\":\"Colour\"},\"$:/language/Manager/Item/Fields\":{\"text\":\"Fields\"},\"$:/language/Manager/Item/Icon/None\":{\"text\":\"(none)\"},\"$:/language/Manager/Item/Icon\":{\"text\":\"Icon\"},\"$:/language/Manager/Item/RawText\":{\"text\":\"Raw text\"},\"$:/language/Manager/Item/Tags\":{\"text\":\"Tags\"},\"$:/language/Manager/Item/Tools\":{\"text\":\"Tools\"},\"$:/language/Manager/Item/WikifiedText\":{\"text\":\"Wikified text\"},\"$:/language/MissingTiddler/Hint\":{\"text\":\"Missing tiddler \\\"\u003C$text text={{!!title}}/>\\\" -- click {{||$:/core/ui/Buttons/edit}} to create\"},\"$:/language/No\":{\"text\":\"No\"},\"$:/language/OfficialPluginLibrary\":{\"text\":\"Official ~TiddlyWiki Plugin Library\"},\"$:/language/OfficialPluginLibrary/Hint\":{\"text\":\"The official ~TiddlyWiki plugin library at tiddlywiki.com. Plugins, themes and language packs are maintained by the core team.\"},\"$:/language/PageTemplate/Description\":{\"text\":\"the default ~TiddlyWiki layout\"},\"$:/language/PageTemplate/Name\":{\"text\":\"Default ~PageTemplate\"},\"$:/language/PluginReloadWarning\":{\"text\":\"Please save {{$:/core/ui/Buttons/save-wiki}} and reload {{$:/core/ui/Buttons/refresh}} to allow changes to ~JavaScript plugins to take effect\"},\"$:/language/RecentChanges/DateFormat\":{\"text\":\"DDth MMM YYYY\"},\"$:/language/Shortcuts/Input/AdvancedSearch/Hint\":{\"text\":\"Open the ~AdvancedSearch panel from within the sidebar search field\"},\"$:/language/Shortcuts/Input/Accept/Hint\":{\"text\":\"Accept the selected item\"},\"$:/language/Shortcuts/Input/AcceptVariant/Hint\":{\"text\":\"Accept the selected item (variant)\"},\"$:/language/Shortcuts/Input/Cancel/Hint\":{\"text\":\"Clear the input field\"},\"$:/language/Shortcuts/Input/Down/Hint\":{\"text\":\"Select the next item\"},\"$:/language/Shortcuts/Input/Tab-Left/Hint\":{\"text\":\"Select the previous Tab\"},\"$:/language/Shortcuts/Input/Tab-Right/Hint\":{\"text\":\"Select the next Tab\"},\"$:/language/Shortcuts/Input/Up/Hint\":{\"text\":\"Select the previous item\"},\"$:/language/Shortcuts/SidebarLayout/Hint\":{\"text\":\"Change the sidebar layout\"},\"$:/language/Switcher/Subtitle/theme\":{\"text\":\"Switch Theme\"},\"$:/language/Switcher/Subtitle/layout\":{\"text\":\"Switch Layout\"},\"$:/language/Switcher/Subtitle/language\":{\"text\":\"Switch Language\"},\"$:/language/Switcher/Subtitle/palette\":{\"text\":\"Switch Palette\"},\"$:/language/SystemTiddler/Tooltip\":{\"text\":\"This is a system tiddler\"},\"$:/language/SystemTiddlers/Include/Prompt\":{\"text\":\"Include system tiddlers\"},\"$:/language/TagManager/Colour/Heading\":{\"text\":\"Colour\"},\"$:/language/TagManager/Count/Heading\":{\"text\":\"Count\"},\"$:/language/TagManager/Icon/Heading\":{\"text\":\"Icon\"},\"$:/language/TagManager/Icons/None\":{\"text\":\"None\"},\"$:/language/TagManager/Info/Heading\":{\"text\":\"Info\"},\"$:/language/TagManager/Tag/Heading\":{\"text\":\"Tag\"},\"$:/language/Tiddler/DateFormat\":{\"text\":\"DDth MMM YYYY at hh12:0mmam\"},\"$:/language/UnsavedChangesWarning\":{\"text\":\"You have unsaved changes in TiddlyWiki\"},\"$:/language/Yes\":{\"text\":\"Yes\"},\"$:/language/Modals/Download\":{\"subtitle\":\"Download changes\",\"footer\":\"\u003C$button message=\\\"tm-close-tiddler\\\">Close\u003C/$button>\",\"help\":\"https://tiddlywiki.com/static/DownloadingChanges.html\",\"text\":\"Your browser only supports manual saving.\\n\\nTo save your modified wiki, right click on the download link below and select \\\"Download file\\\" or \\\"Save file\\\", and then choose the folder and filename.\\n\\n//You can marginally speed things up by clicking the link with the control key (Windows) or the options/alt key (Mac OS X). You will not be prompted for the folder or filename, but your browser is likely to give it an unrecognisable name -- you may need to rename the file to include an `.html` extension before you can do anything useful with it.//\\n\\nOn smartphones that do not allow files to be downloaded you can instead bookmark the link, and then sync your bookmarks to a desktop computer from where the wiki can be saved normally.\\n\"},\"$:/language/Modals/SaveInstructions\":{\"subtitle\":\"Save your work\",\"footer\":\"\u003C$button message=\\\"tm-close-tiddler\\\">Close\u003C/$button>\",\"help\":\"https://tiddlywiki.com/static/SavingChanges.html\",\"text\":\"Your changes to this wiki need to be saved as a ~TiddlyWiki HTML file.\\n\\n!!! Desktop browsers\\n\\n# Select ''Save As'' from the ''File'' menu\\n# Choose a filename and location\\n#* Some browsers also require you to explicitly specify the file saving format as ''Webpage, HTML only'' or similar\\n# Close this tab\\n\\n!!! Smartphone browsers\\n\\n# Create a bookmark to this page\\n#* If you've got iCloud or Google Sync set up then the bookmark will automatically sync to your desktop where you can open it and save it as above\\n# Close this tab\\n\\n//If you open the bookmark again in Mobile Safari you will see this message again. If you want to go ahead and use the file, just click the ''close'' button below//\\n\"},\"$:/config/NewJournal/Title\":{\"text\":\"DDth MMM YYYY\"},\"$:/config/NewJournal/Text\":{\"text\":\"\"},\"$:/config/NewJournal/Tags\":{\"text\":\"Journal\\n\"},\"$:/language/Notifications/Save/Done\":{\"text\":\"Saved wiki\"},\"$:/language/Notifications/Save/Starting\":{\"text\":\"Starting to save wiki\"},\"$:/language/Notifications/CopiedToClipboard/Succeeded\":{\"text\":\"Copied to clipboard!\"},\"$:/language/Notifications/CopiedToClipboard/Failed\":{\"text\":\"Failed to copy to clipboard!\"},\"$:/language/Search/DefaultResults/Caption\":{\"text\":\"List\"},\"$:/language/Search/Filter/Caption\":{\"text\":\"Filter\"},\"$:/language/Search/Filter/Hint\":{\"text\":\"Search via a [[filter expression|https://tiddlywiki.com/static/Filters.html]]\"},\"$:/language/Search/Filter/Matches\":{\"text\":\"//\u003Csmall>\u003C\u003CresultCount>> matches\"},\"$:/language/Search/Matches\":{\"text\":\"//\u003Csmall>\u003C\u003CresultCount>> matches\"},\"$:/language/Search/Matches/All\":{\"text\":\"All matches:\"},\"$:/language/Search/Matches/Title\":{\"text\":\"Title matches:\"},\"$:/language/Search/Search\":{\"text\":\"Search\"},\"$:/language/Search/Search/TooShort\":{\"text\":\"Search text too short\"},\"$:/language/Search/Shadows/Caption\":{\"text\":\"Shadows\"},\"$:/language/Search/Shadows/Hint\":{\"text\":\"Search for shadow tiddlers\"},\"$:/language/Search/Shadows/Matches\":{\"text\":\"//\u003Csmall>\u003C\u003CresultCount>> matches\"},\"$:/language/Search/Standard/Caption\":{\"text\":\"Standard\"},\"$:/language/Search/Standard/Hint\":{\"text\":\"Search for standard tiddlers\"},\"$:/language/Search/Standard/Matches\":{\"text\":\"//\u003Csmall>\u003C\u003CresultCount>> matches\"},\"$:/language/Search/System/Caption\":{\"text\":\"System\"},\"$:/language/Search/System/Hint\":{\"text\":\"Search for system tiddlers\"},\"$:/language/Search/System/Matches\":{\"text\":\"//\u003Csmall>\u003C\u003CresultCount>> matches\"},\"$:/language/SideBar/Caption\":{\"text\":\"Sidebar\"},\"$:/language/SideBar/All/Caption\":{\"text\":\"All\"},\"$:/language/SideBar/Contents/Caption\":{\"text\":\"Contents\"},\"$:/language/SideBar/Drafts/Caption\":{\"text\":\"Drafts\"},\"$:/language/SideBar/Explorer/Caption\":{\"text\":\"Explorer\"},\"$:/language/SideBar/Missing/Caption\":{\"text\":\"Missing\"},\"$:/language/SideBar/More/Caption\":{\"text\":\"More\"},\"$:/language/SideBar/Open/Caption\":{\"text\":\"Open\"},\"$:/language/SideBar/Orphans/Caption\":{\"text\":\"Orphans\"},\"$:/language/SideBar/Recent/Caption\":{\"text\":\"Recent\"},\"$:/language/SideBar/Shadows/Caption\":{\"text\":\"Shadows\"},\"$:/language/SideBar/System/Caption\":{\"text\":\"System\"},\"$:/language/SideBar/Tags/Caption\":{\"text\":\"Tags\"},\"$:/language/SideBar/Tags/Untagged/Caption\":{\"text\":\"untagged\"},\"$:/language/SideBar/Tools/Caption\":{\"text\":\"Tools\"},\"$:/language/SideBar/Types/Caption\":{\"text\":\"Types\"},\"$:/SiteSubtitle\":{\"text\":\"a non-linear personal web notebook\"},\"$:/SiteTitle\":{\"text\":\"My ~TiddlyWiki\"},\"$:/language/Snippets/ListByTag\":{\"tags\":\"$:/tags/TextEditor/Snippet\",\"caption\":\"List of tiddlers by tag\",\"text\":\"\u003C\u003Clist-links [tag[task]sort[title]]>>\"},\"$:/language/Snippets/MacroDefinition\":{\"tags\":\"$:/tags/TextEditor/Snippet\",\"caption\":\"Macro definition\",\"text\":\"\\\\define macroName(param1:\\\"default value\\\"param2)Text of the macro\"},\"$:/language/Snippets/Table4x3\":{\"tags\":\"$:/tags/TextEditor/Snippet\",\"caption\":\"Table with 4 columns by 3 rows\",\"text\":\"|! |!Alpha |!Beta |!Gamma |!Delta |\\n|!One | | | | |\\n|!Two | | | | |\\n|!Three | | | | |\"},\"$:/language/Snippets/TableOfContents\":{\"tags\":\"$:/tags/TextEditor/Snippet\",\"caption\":\"Table of Contents\",\"text\":\"\u003Cdiv class=tc-table-of-contents>\\n\\n\u003C\u003Ctoc-selective-expandable TableOfContents>>\"},\"$:/language/ThemeTweaks/ThemeTweaks\":{\"text\":\"Theme Tweaks\"},\"$:/language/ThemeTweaks/ThemeTweaks/Hint\":{\"text\":\"You can tweak certain aspects of the ''Vanilla'' theme.\"},\"$:/language/ThemeTweaks/Options\":{\"text\":\"Options\"},\"$:/language/ThemeTweaks/Options/SidebarLayout\":{\"text\":\"Sidebar layout\"},\"$:/language/ThemeTweaks/Options/SidebarLayout/Fixed-Fluid\":{\"text\":\"Fixed story, fluid sidebar\"},\"$:/language/ThemeTweaks/Options/SidebarLayout/Fluid-Fixed\":{\"text\":\"Fluid story, fixed sidebar\"},\"$:/language/ThemeTweaks/Options/StickyTitles\":{\"text\":\"Sticky titles\"},\"$:/language/ThemeTweaks/Options/StickyTitles/Hint\":{\"text\":\"Causes tiddler titles to \\\"stick\\\" to the top of the browser window\"},\"$:/language/ThemeTweaks/Options/CodeWrapping\":{\"text\":\"Wrap long lines in code blocks\"},\"$:/language/ThemeTweaks/Settings\":{\"text\":\"Settings\"},\"$:/language/ThemeTweaks/Settings/FontFamily\":{\"text\":\"Font family\"},\"$:/language/ThemeTweaks/Settings/CodeFontFamily\":{\"text\":\"Code font family\"},\"$:/language/ThemeTweaks/Settings/EditorFontFamily\":{\"text\":\"Editor font family\"},\"$:/language/ThemeTweaks/Settings/BackgroundImage\":{\"text\":\"Page background image\"},\"$:/language/ThemeTweaks/Settings/BackgroundImageAttachment\":{\"text\":\"Page background image attachment\"},\"$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Scroll\":{\"text\":\"Scroll with tiddlers\"},\"$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Fixed\":{\"text\":\"Fixed to window\"},\"$:/language/ThemeTweaks/Settings/BackgroundImageSize\":{\"text\":\"Page background image size\"},\"$:/language/ThemeTweaks/Settings/BackgroundImageSize/Auto\":{\"text\":\"Auto\"},\"$:/language/ThemeTweaks/Settings/BackgroundImageSize/Cover\":{\"text\":\"Cover\"},\"$:/language/ThemeTweaks/Settings/BackgroundImageSize/Contain\":{\"text\":\"Contain\"},\"$:/language/ThemeTweaks/Metrics\":{\"text\":\"Sizes\"},\"$:/language/ThemeTweaks/Metrics/FontSize\":{\"text\":\"Font size\"},\"$:/language/ThemeTweaks/Metrics/LineHeight\":{\"text\":\"Line height\"},\"$:/language/ThemeTweaks/Metrics/BodyFontSize\":{\"text\":\"Font size for tiddler body\"},\"$:/language/ThemeTweaks/Metrics/BodyLineHeight\":{\"text\":\"Line height for tiddler body\"},\"$:/language/ThemeTweaks/Metrics/StoryLeft\":{\"text\":\"Story left position\"},\"$:/language/ThemeTweaks/Metrics/StoryLeft/Hint\":{\"text\":\"how far the left margin of the story river\u003Cbr>(tiddler area) is from the left of the page\"},\"$:/language/ThemeTweaks/Metrics/StoryTop\":{\"text\":\"Story top position\"},\"$:/language/ThemeTweaks/Metrics/StoryTop/Hint\":{\"text\":\"how far the top margin of the story river\u003Cbr>is from the top of the page\"},\"$:/language/ThemeTweaks/Metrics/StoryRight\":{\"text\":\"Story right\"},\"$:/language/ThemeTweaks/Metrics/StoryRight/Hint\":{\"text\":\"how far the left margin of the sidebar \u003Cbr>is from the left of the page\"},\"$:/language/ThemeTweaks/Metrics/StoryWidth\":{\"text\":\"Story width\"},\"$:/language/ThemeTweaks/Metrics/StoryWidth/Hint\":{\"text\":\"the overall width of the story river\"},\"$:/language/ThemeTweaks/Metrics/TiddlerWidth\":{\"text\":\"Tiddler width\"},\"$:/language/ThemeTweaks/Metrics/TiddlerWidth/Hint\":{\"text\":\"within the story river\"},\"$:/language/ThemeTweaks/Metrics/SidebarBreakpoint\":{\"text\":\"Sidebar breakpoint\"},\"$:/language/ThemeTweaks/Metrics/SidebarBreakpoint/Hint\":{\"text\":\"the minimum page width at which the story\u003Cbr>river and sidebar will appear side by side\"},\"$:/language/ThemeTweaks/Metrics/SidebarWidth\":{\"text\":\"Sidebar width\"},\"$:/language/ThemeTweaks/Metrics/SidebarWidth/Hint\":{\"text\":\"the width of the sidebar in fluid-fixed layout\"},\"$:/language/TiddlerInfo/Advanced/Caption\":{\"text\":\"Advanced\"},\"$:/language/TiddlerInfo/Advanced/PluginInfo/Empty/Hint\":{\"text\":\"none\"},\"$:/language/TiddlerInfo/Advanced/PluginInfo/Heading\":{\"text\":\"Plugin Details\"},\"$:/language/TiddlerInfo/Advanced/PluginInfo/Hint\":{\"text\":\"This plugin contains the following shadow tiddlers:\"},\"$:/language/TiddlerInfo/Advanced/ShadowInfo/Heading\":{\"text\":\"Shadow Status\"},\"$:/language/TiddlerInfo/Advanced/ShadowInfo/NotShadow/Hint\":{\"text\":\"The tiddler \u003C$link to=\u003C\u003CinfoTiddler>>>\u003C$text text=\u003C\u003CinfoTiddler>>/>\u003C/$link> is not a shadow tiddler\"},\"$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Hint\":{\"text\":\"The tiddler \u003C$link to=\u003C\u003CinfoTiddler>>>\u003C$text text=\u003C\u003CinfoTiddler>>/>\u003C/$link> is a shadow tiddler\"},\"$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Source\":{\"text\":\"It is defined in the plugin \u003C$link to=\u003C\u003CpluginTiddler>>>\u003C$text text=\u003C\u003CpluginTiddler>>/>\"},\"$:/language/TiddlerInfo/Advanced/ShadowInfo/OverriddenShadow/Hint\":{\"text\":\"It is overridden by an ordinary tiddler\"},\"$:/language/TiddlerInfo/Fields/Caption\":{\"text\":\"Fields\"},\"$:/language/TiddlerInfo/List/Caption\":{\"text\":\"List\"},\"$:/language/TiddlerInfo/List/Empty\":{\"text\":\"This tiddler does not have a list\"},\"$:/language/TiddlerInfo/Listed/Caption\":{\"text\":\"Listed\"},\"$:/language/TiddlerInfo/Listed/Empty\":{\"text\":\"This tiddler is not listed by any others\"},\"$:/language/TiddlerInfo/References/Caption\":{\"text\":\"Backlinks\"},\"$:/language/TiddlerInfo/References/Empty\":{\"text\":\"No tiddlers link to this one\"},\"$:/language/TiddlerInfo/Tagging/Caption\":{\"text\":\"Tagging\"},\"$:/language/TiddlerInfo/Tagging/Empty\":{\"text\":\"No tiddlers are tagged with this one\"},\"$:/language/TiddlerInfo/Tools/Caption\":{\"text\":\"Tools\"},\"$:/language/Docs/Types/application/javascript\":{\"description\":\"JavaScript code\",\"name\":\"application/javascript\",\"group\":\"Developer\",\"group-sort\":\"2\"},\"$:/language/Docs/Types/application/json\":{\"description\":\"JSON data\",\"name\":\"application/json\",\"group\":\"Developer\",\"group-sort\":\"2\"},\"$:/language/Docs/Types/application/x-tiddler-dictionary\":{\"description\":\"Data dictionary\",\"name\":\"application/x-tiddler-dictionary\",\"group\":\"Developer\",\"group-sort\":\"2\"},\"$:/language/Docs/Types/image/gif\":{\"description\":\"GIF image\",\"name\":\"image/gif\",\"group\":\"Image\",\"group-sort\":\"1\"},\"$:/language/Docs/Types/image/jpeg\":{\"description\":\"JPEG image\",\"name\":\"image/jpeg\",\"group\":\"Image\",\"group-sort\":\"1\"},\"$:/language/Docs/Types/image/png\":{\"description\":\"PNG image\",\"name\":\"image/png\",\"group\":\"Image\",\"group-sort\":\"1\"},\"$:/language/Docs/Types/image/svg+xml\":{\"description\":\"Structured Vector Graphics image\",\"name\":\"image/svg+xml\",\"group\":\"Image\",\"group-sort\":\"1\"},\"$:/language/Docs/Types/image/x-icon\":{\"description\":\"ICO format icon file\",\"name\":\"image/x-icon\",\"group\":\"Image\",\"group-sort\":\"1\"},\"$:/language/Docs/Types/text/css\":{\"description\":\"Static stylesheet\",\"name\":\"text/css\",\"group\":\"Developer\",\"group-sort\":\"2\"},\"$:/language/Docs/Types/text/html\":{\"description\":\"HTML markup\",\"name\":\"text/html\",\"group\":\"Text\",\"group-sort\":\"0\"},\"$:/language/Docs/Types/text/plain\":{\"description\":\"Plain text\",\"name\":\"text/plain\",\"group\":\"Text\",\"group-sort\":\"0\"},\"$:/language/Docs/Types/text/vnd.tiddlywiki\":{\"description\":\"TiddlyWiki 5\",\"name\":\"text/vnd.tiddlywiki\",\"group\":\"Text\",\"group-sort\":\"0\"},\"$:/language/Docs/Types/text/x-tiddlywiki\":{\"description\":\"TiddlyWiki Classic\",\"name\":\"text/x-tiddlywiki\",\"group\":\"Text\",\"group-sort\":\"0\"},\"$:/languages/en-GB/icon\":{\"type\":\"image/svg+xml\",\"text\":\"\u003Csvg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 60 30\\\" width=\\\"1200\\\" height=\\\"600\\\">\\n\u003CclipPath id=\\\"t\\\">\\n\\t\u003Cpath d=\\\"M30,15 h30 v15 z v15 h-30 z h-30 v-15 z v-15 h30 z\\\"/>\\n\u003C/clipPath>\\n\u003Cpath d=\\\"M0,0 v30 h60 v-30 z\\\" fill=\\\"#00247d\\\"/>\\n\u003Cpath d=\\\"M0,0 L60,30 M60,0 L0,30\\\" stroke=\\\"#fff\\\" stroke-width=\\\"6\\\"/>\\n\u003Cpath d=\\\"M0,0 L60,30 M60,0 L0,30\\\" clip-path=\\\"url(#t)\\\" stroke=\\\"#cf142b\\\" stroke-width=\\\"4\\\"/>\\n\u003Cpath d=\\\"M30,0 v30 M0,15 h60\\\" stroke=\\\"#fff\\\" stroke-width=\\\"10\\\"/>\\n\u003Cpath d=\\\"M30,0 v30 M0,15 h60\\\" stroke=\\\"#cf142b\\\" stroke-width=\\\"6\\\"/>\\n\u003C/svg>\\n\"},\"$:/languages/en-GB\":{\"name\":\"en-GB\",\"description\":\"English (British)\",\"author\":\"JeremyRuston\",\"core-version\":\">=5.0.0\\\"\",\"text\":\"Stub pseudo-plugin for the default language\"},\"$:/core/modules/commander.js\":{\"text\":\"!function(){'use strict';function t(t,e,n,o){var s=require('path');this.commandTokens=t,this.nextToken=0,this.callback=e,this.wiki=n,this.streams=o,this.outputPath=s.resolve($tw.boot.wikiPath,$tw.config.wikiOutputSubDir)}t.prototype.log=function(t){this.verbose&&this.streams.output.write(t+'\\\\n')},t.prototype.write=function(t){this.verbose&&this.streams.output.write(t)},t.prototype.addCommandTokens=function(t){t=t.slice(0);t.unshift(0),t.unshift(this.nextToken),Array.prototype.splice.apply(this.commandTokens,t)},t.prototype.execute=function(){this.executeNextCommand()},t.prototype.executeNextCommand=function(){var e=this;if(this.nextToken>=this.commandTokens.length)this.callback(null);else if('--'!==(t=this.commandTokens[this.nextToken++]).substr(0,2))this.callback('Missing command: '+t);else{for(var t=t.substr(2),n=[];this.nextToken\u003Cthis.commandTokens.length&&'--'!==this.commandTokens[this.nextToken].substr(0,2);)n.push(this.commandTokens[this.nextToken++]);var o,s=$tw.commands[t];if(s){if(this.verbose&&this.streams.output.write('Executing command: '+t+' '+n.join(' ')+'\\\\n'),s.info.namedParameterMode&&'string'==typeof(n=this.extractNamedParameters(n,s.info.mandatoryParameters)))return this.callback(n);s.info.synchronous?(o=new s.Command(n,this).execute())?this.callback(o):this.executeNextCommand():(o=new s.Command(n,this,function(t){t?e.callback(t):e.executeNextCommand()}).execute())&&this.callback(o)}else this.callback('Unknown command: '+t)}},t.prototype.extractNamedParameters=function(t,e){e=e||[];var n=[],o=Object.create(null);return $tw.utils.each(t,function(t){var e=t.indexOf('=');e\u003C1&&n.push('malformed named parameter: \\\\''+t+'\\\\''),o[t.slice(0,e)]=$tw.utils.trim(t.slice(e+1))}),$tw.utils.each(e,function(t){$tw.utils.hop(o,t)||n.push('missing mandatory parameter: \\\\''+t+'\\\\'')}),0\u003Cn.length?n.join(' and\\\\n'):o},t.initCommands=function(t){t=t||'command',$tw.commands={},$tw.modules.forEachModuleOfType(t,function(t,e){var n,o=$tw.commands[e.info.name]={};for(n in e)$tw.utils.hop(e,n)&&(o[n]=e[n])})},exports.Commander=t}();\",\"type\":\"application/javascript\",\"module-type\":\"global\"},\"$:/core/modules/commands/build.js\":{\"text\":\"!function(){'use strict';exports.info={name:'build',synchronous:!0};function t(t,n){this.params=t,this.commander=n}t.prototype.execute=function(){var t=$tw.boot.wikiInfo.build;if(!t)return'No build targets defined';for(var n=0\u003Cthis.params.length?this.params:Object.keys(t),e=0;e\u003Cn.length;e++){var o=n[e],r=t[o];if(!r)return'Build target \\\\''+o+'\\\\' not found';this.commander.addCommandTokens(r)}return null},exports.Command=t}();\",\"type\":\"application/javascript\",\"module-type\":\"command\"},\"$:/core/modules/commands/clearpassword.js\":{\"text\":\"!function(){'use strict';exports.info={name:'clearpassword',synchronous:!0};function t(t,n,o){this.params=t,this.commander=n,this.callback=o}t.prototype.execute=function(){return $tw.crypto.setPassword(null),null},exports.Command=t}();\",\"type\":\"application/javascript\",\"module-type\":\"command\"},\"$:/core/modules/commands/commands.js\":{\"text\":\"!function(){'use strict';exports.info={name:'commands',synchronous:!0};function e(e,n){this.params=e,this.commander=n}e.prototype.execute=function(){var e,n=this.params[0];return n?0===(e=this.commander.wiki.filterTiddlers(n)).length?'No tiddlers found for filter \\\\''+n+'\\\\'':(this.commander.addCommandTokens(e),null):'No filter specified'},exports.Command=e}();\",\"type\":\"application/javascript\",\"module-type\":\"command\"},\"$:/core/modules/commands/deletetiddlers.js\":{\"text\":\"!function(){'use strict';exports.info={name:'deletetiddlers',synchronous:!0};function t(t,e,i){this.params=t,this.commander=e,this.callback=i}t.prototype.execute=function(){var e,t;return this.params.length\u003C1?'Missing filter':(e=this.commander.wiki,t=this.params[0],t=e.filterTiddlers(t),$tw.utils.each(t,function(t){e.deleteTiddler(t)}),null)},exports.Command=t}();\",\"type\":\"application/javascript\",\"module-type\":\"command\"},\"$:/core/modules/commands/editions.js\":{\"text\":\"!function(){'use strict';exports.info={name:'editions',synchronous:!0};function t(t,n){this.params=t,this.commander=n}t.prototype.execute=function(){var e=this,t=(this.commander.streams.output.write('Available editions:\\\\n\\\\n'),$tw.utils.getEditionInfo());return $tw.utils.each(t,function(t,n){e.commander.streams.output.write(' '+n+': '+t.description+'\\\\n')}),this.commander.streams.output.write('\\\\n'),null},exports.Command=t}();\",\"type\":\"application/javascript\",\"module-type\":\"command\"},\"$:/core/modules/commands/fetch.js\":{\"text\":\"!function(){'use strict';exports.info={name:'fetch',synchronous:!1};function t(t,r,e){this.params=t,this.commander=r,this.callback=e}t.prototype.execute=function(){if(this.params.length\u003C2)return'Missing subcommand and url';switch(this.params[0]){case'raw-file':return this.fetchFiles({raw:!0,url:this.params[1],transformFilter:this.params[2]||'',callback:this.callback});case'file':return this.fetchFiles({url:this.params[1],importFilter:this.params[2],transformFilter:this.params[3]||'',callback:this.callback});case'raw-files':return this.fetchFiles({raw:!0,urlFilter:this.params[1],transformFilter:this.params[2]||'',callback:this.callback});case'files':return this.fetchFiles({urlFilter:this.params[1],importFilter:this.params[2],transformFilter:this.params[3]||'',callback:this.callback})}return null},t.prototype.fetchFiles=function(r){var e,i=this;if(r.url)e=[r.url];else{if(!r.urlFilter)return'Missing URL';e=this.commander.wiki.filterTiddlers(r.urlFilter)}var s=0,a=function(t){if(t)return r.callback(t);s\u003Ce.length?i.fetchFile(e[s++],r,a):r.callback(null)};return a(null),null},t.prototype.fetchFile=function(i,s,a,l){var n;return 10\u003Cl?a('Error too many redirects retrieving '+i):(n=this,('https://'===i.substr(0,8)?require('https'):require('http')).get(i).on('response',function(t){var r=(t.headers['content-type']||'').split(';')[0],e=[];n.commander.write('Reading '+i+': '),t.on('data',function(t){e.push(t),n.commander.write('.')}),t.on('end',function(){if(n.commander.write('\\\\n'),200!==t.statusCode)return 302===t.statusCode||303===t.statusCode||307===t.statusCode?n.fetchFile(t.headers.location,s,a,l+1):a('Error '+t.statusCode+' retrieving '+i);n.processBody(Buffer.concat(e),r,s,i),a(null)}),t.on('error',function(t){console.log('Error on GET request: '+t),a(t)})}),null)},t.prototype.processBody=function(t,r,s,e){var i,a=this,l=new $tw.Wiki,n=(s.raw?(i=(i=r?$tw.config.contentTypeInfo[r]:null)?i.encoding:'utf8',l.addTiddler(new $tw.Tiddler({title:e,type:r,text:t.toString(i)}))):(e=this.commander.wiki.deserializeTiddlers(r||'text/html',t.toString('utf8'),{}),$tw.utils.each(e,function(t){l.addTiddler(new $tw.Tiddler(t))})),l.filterTiddlers(s.importFilter||'[all[tiddlers]]')),o=0;l.each(function(t,r){var e,i;-1!==n.indexOf(r)&&(s.transformFilter?(i=(l.filterTiddlers(s.transformFilter,null,a.commander.wiki.makeTiddlerIterator([r]))||[''])[0])&&(a.commander.log('Importing '+r+' as '+i),e=new $tw.Tiddler(t,{title:i})):(a.commander.log('Importing '+r),e=t),a.commander.wiki.importTiddler(e),o++)}),a.commander.log('Imported '+o+' tiddlers')},exports.Command=t}();\",\"type\":\"application/javascript\",\"module-type\":\"command\"},\"$:/core/modules/commands/help.js\":{\"text\":\"!function(){'use strict';exports.info={name:'help',synchronous:!0};function e(e,t){this.params=e,this.commander=t}e.prototype.execute=function(){var e=this.params[0]||'default',t='$:/language/Help/';this.commander.wiki.getTiddler(t+e)||(e='notfound'),t=(t=this.commander.wiki.renderTiddler('text/plain-formatted',t+e)).replace(/^(\\\\r?\\\\n)*/g,''),this.commander.streams.output.write(t)},exports.Command=e}();\",\"type\":\"application/javascript\",\"module-type\":\"command\"},\"$:/core/modules/commands/import.js\":{\"text\":\"!function(){'use strict';exports.info={name:'import',synchronous:!0};function e(e,i,r){this.params=e,this.commander=i,this.callback=r}e.prototype.execute=function(){var e,i,r,t,a=this,s=require('fs');require('path');return this.params.length\u003C2?'Missing parameters':(t=a.params[0],e=a.params[1],i=a.params[2]||t,r=a.params[3]||'utf8',s=s.readFileSync(t,r),t=this.commander.wiki.deserializeTiddlers(null,s,{title:i},{deserializer:e}),$tw.utils.each(t,function(e){a.commander.wiki.importTiddler(new $tw.Tiddler(e))}),this.commander.log(t.length+' tiddler(s) imported'),null)},exports.Command=e}();\",\"type\":\"application/javascript\",\"module-type\":\"command\"},\"$:/core/modules/commands/init.js\":{\"text\":\"!function(){'use strict';exports.info={name:'init',synchronous:!0};function t(t,i){this.params=t,this.commander=i}t.prototype.execute=function(){var t=require('fs');require('path');if($tw.boot.wikiTiddlersPath||$tw.utils.isDirectory($tw.boot.wikiPath)&&!$tw.utils.isDirectoryEmpty($tw.boot.wikiPath))return'Wiki folder is not empty';for(var i=0\u003Cthis.params.length?this.params:['empty'],e=0;e\u003Ci.length;e++){var r=i[e],o=$tw.findLibraryItem(r,$tw.getLibraryItemSearchPaths($tw.config.editionsPath,$tw.config.editionsEnvVar));if(!$tw.utils.isDirectory(o))return'Edition \\\\''+r+'\\\\' not found';o=$tw.utils.copyDirectory(o,$tw.boot.wikiPath);if(o)return o;this.commander.streams.output.write('Copied edition \\\\''+r+'\\\\' to '+$tw.boot.wikiPath+'\\\\n')}var n=$tw.boot.wikiPath+'/tiddlywiki.info',s=$tw.utils.parseJSONSafe(t.readFileSync(n));return delete s.includeWikis,t.writeFileSync(n,JSON.stringify(s,null,$tw.config.preferences.jsonSpaces)),null},exports.Command=t}();\",\"type\":\"application/javascript\",\"module-type\":\"command\"},\"$:/core/modules/commands/listen.js\":{\"text\":\"!function(){'use strict';function e(e,i,r){this.params=e,this.commander=i,this.callback=r}var i=require('$:/core/modules/server/server.js').Server;exports.info={name:'listen',synchronous:!0,namedParameterMode:!0,mandatoryParameters:[]};e.prototype.execute=function(){$tw.boot.wikiTiddlersPath||$tw.utils.warning('Warning: Wiki folder \\\\''+$tw.boot.wikiPath+'\\\\' does not exist or is missing a tiddlywiki.info file'),this.server=new i({wiki:this.commander.wiki,variables:this.params});var e=this.server.listen();return $tw.hooks.invokeHook('th-server-command-post-start',this.server,e,'tiddlywiki'),null},exports.Command=e}();\",\"type\":\"application/javascript\",\"module-type\":\"command\"},\"$:/core/modules/commands/load.js\":{\"text\":\"!function(){'use strict';exports.info={name:'load',synchronous:!1};function t(t,i,r){this.params=t,this.commander=i,this.callback=r}t.prototype.execute=function(){var t,i,r=this;require('fs'),require('path');return this.params.length\u003C1?'Missing filename':(t=$tw.loadTiddlersFromPath(r.params[0]),i=0,$tw.utils.each(t,function(t){$tw.utils.each(t.tiddlers,function(t){r.commander.wiki.importTiddler(new $tw.Tiddler(t)),i++})}),i||'noerror'===r.params[1]?r.callback(null):r.callback('No tiddlers found in file \\\"'+r.params[0]+'\\\"'),null)},exports.Command=t}();\",\"type\":\"application/javascript\",\"module-type\":\"command\"},\"$:/core/modules/commands/makelibrary.js\":{\"text\":\"!function(){'use strict';exports.info={name:'makelibrary',synchronous:!0};function t(t,e,i){this.params=t,this.commander=e,this.callback=i}t.prototype.execute=function(){function t(t){for(var e=$tw.utils.getSubdirectories(t)||[],i=0;i\u003Ce.length;i++)$tw.boot.excludeRegExp.test(e[i])||n(r.resolve(t,'./'+e[i]))}var e=this.commander.wiki,r=(require('fs'),require('path')),i=this.params[0]||'$:/UpgradeLibrary',a={},n=function(t){for(var e=$tw.utils.getSubdirectories(t)||[],i=0;i\u003Ce.length;i++)$tw.boot.excludeRegExp.test(e[i])||(s=$tw.loadPluginFolder(r.resolve(t,'./'+e[i])))&&s.title&&(a[s.title]=s)},s=($tw.utils.each($tw.getLibraryItemSearchPaths($tw.config.pluginsPath,$tw.config.pluginsEnvVar),t),$tw.utils.each($tw.getLibraryItemSearchPaths($tw.config.themesPath,$tw.config.themesEnvVar),t),$tw.utils.each($tw.getLibraryItemSearchPaths($tw.config.languagesPath,$tw.config.languagesEnvVar),n),{title:i,type:'application/json','plugin-type':'library',text:JSON.stringify({tiddlers:a})});return e.addTiddler(new $tw.Tiddler(s)),null},exports.Command=t}();\",\"type\":\"application/javascript\",\"module-type\":\"command\"},\"$:/core/modules/commands/output.js\":{\"text\":\"!function(){'use strict';exports.info={name:'output',synchronous:!0};function t(t,s,e){this.params=t,this.commander=s,this.callback=e}t.prototype.execute=function(){require('fs');var t=require('path');return this.params.length\u003C1?'Missing output path':(this.commander.outputPath=t.resolve(process.cwd(),this.params[0]),null)},exports.Command=t}();\",\"type\":\"application/javascript\",\"module-type\":\"command\"},\"$:/core/modules/commands/password.js\":{\"text\":\"!function(){'use strict';exports.info={name:'password',synchronous:!0};function s(s,t,n){this.params=s,this.commander=t,this.callback=n}s.prototype.execute=function(){return this.params.length\u003C1?'Missing password':($tw.crypto.setPassword(this.params[0]),null)},exports.Command=s}();\",\"type\":\"application/javascript\",\"module-type\":\"command\"},\"$:/core/modules/commands/render.js\":{\"text\":\"!function(){'use strict';function e(e,t,r){this.params=e,this.commander=t,this.callback=r}require('$:/core/modules/widgets/widget.js'),exports.info={name:'render',synchronous:!0};e.prototype.execute=function(){if(this.params.length\u003C1)return'Missing tiddler filter';for(var i=this,s=require('fs'),n=require('path'),a=this.commander.wiki,e=this.params[0],l=this.params[1]||'[is[tiddler]addsuffix[.html]]',d=this.params[2]||'text/html',o=this.params[3],t=this.params.slice(4),e=a.filterTiddlers(e),c=Object.create(null);2\u003C=t.length;)c[t[0]]=t[1],t=t.slice(2);return $tw.utils.each(e,function(e){var t=n.resolve(i.commander.outputPath,a.filterTiddlers(l,$tw.rootWidget,a.makeTiddlerIterator([e]))[0]),r=(i.commander.verbose&&console.log('Rendering \\\"'+e+'\\\" to \\\"'+t+'\\\"'),a.parseTiddler(o||e)),r=a.makeWidget(r,{variables:$tw.utils.extend({},c,{currentTiddler:e,storyTiddler:e})}),e=$tw.fakeDocument.createElement('div'),r=(r.render(e,null),'text/html'===d?e.innerHTML:e.textContent);$tw.utils.createFileDirectories(t),s.writeFileSync(t,r,'utf8')}),null},exports.Command=e}();\",\"type\":\"application/javascript\",\"module-type\":\"command\"},\"$:/core/modules/commands/rendertiddler.js\":{\"text\":\"!function(){'use strict';exports.info={name:'rendertiddler',synchronous:!1};function t(t,r,e){this.params=t,this.commander=r,this.callback=e}t.prototype.execute=function(){var r,t,e,i,s,a,n,m,o;return this.params.length\u003C2?'Missing filename':(r=this,t=require('fs'),i=require('path'),e=this.params[0],i=i.resolve(this.commander.outputPath,this.params[1]),s=this.params[2]||'text/html',a=this.params[3],n=this.params[4],m=this.params[5],o={},$tw.utils.createFileDirectories(i),a&&(o.currentTiddler=e,o.storyTiddler=e,e=a),n&&m&&(o[n]=m),t.writeFile(i,this.commander.wiki.renderTiddler(s,e,{variables:o}),'utf8',function(t){r.callback(t)}),null)},exports.Command=t}();\",\"type\":\"application/javascript\",\"module-type\":\"command\"},\"$:/core/modules/commands/rendertiddlers.js\":{\"text\":\"!function(){'use strict';function e(e,t,r){this.params=e,this.commander=t,this.callback=r}require('$:/core/modules/widgets/widget.js'),exports.info={name:'rendertiddlers',synchronous:!0};e.prototype.execute=function(){var s,a,n,o,l,m,c,u,h,e,t;return this.params.length\u003C2?'Missing filename':(s=this,a=require('fs'),n=require('path'),o=this.commander.wiki,t=this.params[0],l=this.params[1],m=this.commander.outputPath,c=n.resolve(m,this.params[2]),u=this.params[3]||'text/html',h=this.params[4]||'.html',e='noclean'!==(this.params[5]||'').toLowerCase(),t=o.filterTiddlers(t),e&&$tw.utils.deleteDirectory(c),$tw.utils.each(t,function(e){var t=o.parseTiddler(l),t=o.makeWidget(t,{variables:{currentTiddler:e,storyTiddler:e}}),r=$tw.fakeDocument.createElement('div'),t=(t.render(r,null),'text/html'===u?r.innerHTML:r.textContent),r=null,i=(r=$tw.utils.hop($tw.macros,'tv-get-export-path')&&(i=$tw.macros['tv-get-export-path'].run.apply(s,[e]))?n.resolve(m,i+h):r)||n.resolve(c,encodeURIComponent(e)+h);$tw.utils.createFileDirectories(i),a.writeFileSync(i,t,'utf8')}),null)},exports.Command=e}();\",\"type\":\"application/javascript\",\"module-type\":\"command\"},\"$:/core/modules/commands/save.js\":{\"text\":\"!function(){'use strict';exports.info={name:'save',synchronous:!0};function e(e,i,t){this.params=e,this.commander=i,this.callback=t}e.prototype.execute=function(){var r,s,a,n,o,e;return this.params.length\u003C1?'Missing filename filter':(r=this,require('fs'),s=require('path'),a=null,n=this.commander.wiki,e=this.params[0],o=this.params[1]||'[is[tiddler]]',e=n.filterTiddlers(e),$tw.utils.each(e,function(i){if(!a){var e=r.commander.wiki.getTiddler(i);if(e){var t=$tw.utils.generateTiddlerFileInfo(e,{directory:s.resolve(r.commander.outputPath),pathFilters:[o],wiki:n,fileInfo:{}});r.commander.verbose&&console.log('Saving \\\"'+i+'\\\" to \\\"'+t.filepath+'\\\"');try{$tw.utils.saveTiddlerToFileSync(e,t)}catch(e){a='Error saving tiddler \\\"'+i+'\\\", to file: \\\"'+t.filepath+'\\\"'}}else a='Tiddler \\\\''+i+'\\\\' not found'}}),a)},exports.Command=e}();\",\"type\":\"application/javascript\",\"module-type\":\"command\"},\"$:/core/modules/commands/savelibrarytiddlers.js\":{\"text\":\"!function(){'use strict';exports.info={name:'savelibrarytiddlers',synchronous:!0};function e(e,t,i){this.params=e,this.commander=t,this.callback=i}e.prototype.execute=function(){var n,d,o,e,l,t,m,i,r,u;return this.params.length\u003C2?'Missing filename':(n=this,d=require('fs'),o=require('path'),e=this.params[0],r=this.params[1],l=this.params[2],t=this.params[3],(m=n.commander.wiki.getTiddlerDataCached(e,void 0))?(i=[],$tw.utils.each(m.tiddlers,function(e,t){i.push(t)}),r=r?n.commander.wiki.filterTiddlers(r,null,n.commander.wiki.makeTiddlerIterator(i)):i,u=[],$tw.utils.each(r,function(e){var t,i=m.tiddlers[e],r=o.resolve(n.commander.outputPath,l+encodeURIComponent(e)+'.json'),r=($tw.utils.createFileDirectories(r),d.writeFileSync(r,JSON.stringify(i),'utf8'),$tw.utils.parseJSONSafe(i.text)),a=(r.tiddlers[e+'/readme']||{}).text,s=!!n.commander.wiki.doesPluginInfoRequireReload(r),r=r.tiddlers[e+'/icon']||{},e=r.type,r=r.text;e&&r&&(t=$tw.utils.makeDataUri(r,e)),u.push($tw.utils.extend({},i,{text:void 0,readme:a,'requires-reload':s?'yes':'no',icon:t}))}),t&&n.commander.wiki.setTiddlerData(t,u),null):'\\\\''+e+'\\\\' is not a tiddler bundle')},exports.Command=e}();\",\"type\":\"application/javascript\",\"module-type\":\"command\"},\"$:/core/modules/commands/savetiddler.js\":{\"text\":\"!function(){'use strict';exports.info={name:'savetiddler',synchronous:!1};function t(t,e,i){this.params=t,this.commander=e,this.callback=i}t.prototype.execute=function(){var e,t,i,n,s,r;return this.params.length\u003C2?'Missing filename':(e=this,t=require('fs'),n=require('path'),i=this.params[0],n=n.resolve(this.commander.outputPath,this.params[1]),(s=this.commander.wiki.getTiddler(i))?(r=s.fields.type||'text/vnd.tiddlywiki',r=$tw.config.contentTypeInfo[r]||{encoding:'utf8'},$tw.utils.createFileDirectories(n),t.writeFile(n,s.fields.text,r.encoding,function(t){e.callback(t)}),null):'Missing tiddler: '+i)},exports.Command=t}();\",\"type\":\"application/javascript\",\"module-type\":\"command\"},\"$:/core/modules/commands/savetiddlers.js\":{\"text\":\"!function(){'use strict';function e(e,t,i){this.params=e,this.commander=t,this.callback=i}require('$:/core/modules/widgets/widget.js'),exports.info={name:'savetiddlers',synchronous:!0};e.prototype.execute=function(){var r,s,n,e,o,t,i;return this.params.length\u003C1?'Missing filename':(r=this,s=require('fs'),n=require('path'),i=this.commander.wiki,e=this.params[0],o=n.resolve(this.commander.outputPath,this.params[1]),t='noclean'!==(this.params[2]||'').toLowerCase(),i=i.filterTiddlers(e),t&&$tw.utils.deleteDirectory(o),$tw.utils.createDirectory(o),$tw.utils.each(i,function(e){var t=r.commander.wiki.getTiddler(e),i=t.fields.type||'text/vnd.tiddlywiki',i=$tw.config.contentTypeInfo[i]||{encoding:'utf8'},e=n.resolve(o,encodeURIComponent(e));s.writeFileSync(e,t.fields.text,i.encoding)}),null)},exports.Command=e}();\",\"type\":\"application/javascript\",\"module-type\":\"command\"},\"$:/core/modules/commands/savewikifolder.js\":{\"text\":\"!function(){'use strict';function i(i,e,t){this.params=i,this.commander=e,this.callback=t}var n,l;exports.info={name:'savewikifolder',synchronous:!0},$tw.node&&(n=require('fs'),l=require('path'));function e(i,e,t){this.wikiFolderPath=i,this.wikiFilter=e||'[all[tiddlers]]',this.commander=t,this.wiki=t.wiki,this.savedPaths=[]}i.prototype.execute=function(){return this.params.length\u003C1?'Missing wiki folder path':new e(this.params[0],this.params[1],this.commander).save()},e.prototype.log=function(i){this.commander.verbose&&console.log(i)},e.prototype.tiddlersToIgnore=['$:/boot/boot.css','$:/boot/boot.js','$:/boot/bootprefix.js','$:/core','$:/library/sjcl.js','$:/temp/info-plugin'],e.prototype.save=function(){var i,l,o=this;return n.existsSync(this.wikiFolderPath)&&!$tw.utils.isDirectoryEmpty(this.wikiFolderPath)?'The unpackwiki command requires that the output wiki folder be empty':(i=this.wiki.filterTiddlers(this.wikiFilter),l={},$tw.utils.each(i,function(i){var e,t,s=o.wiki.getTiddler(i);s&&(-1!==o.tiddlersToIgnore.indexOf(i)?o.log('Ignoring tiddler: '+i):(t=s.fields.type,e=s.fields['plugin-type'],'application/json'===t&&e?(t=o.findPluginInLibrary(i))?(o.log('Adding built-in plugin: '+t.name),l[t.type]=l[t.type]||[],$tw.utils.pushTop(l[t.type],t.name)):(o.log('Processing custom plugin: '+i),o.saveCustomPlugin(s)):o.saveTiddler('tiddlers',s)))}),this.saveJSONFile('tiddlywiki.info',l),o.log('Writing tiddlywiki.info: '+JSON.stringify(l,null,$tw.config.preferences.jsonSpaces)),null)},e.prototype.findPluginInLibrary=function(i){var e,t,s,i=i.split('/');return'$:'===i[0]&&('languages'===i[1]&&3===i.length?(e='languages'+l.sep+i[2],t=i[1],s=i[2]):('plugins'===i[1]||'themes'===i[1]&&4===i.length)&&(e=i[1]+l.sep+i[2]+l.sep+i[3],t=i[1],s=i[2]+'/'+i[3])),!!(e&&t&&s&&(e=l.resolve($tw.boot.bootPath,'..',e),n.existsSync(e)))&&{pluginPath:e,type:t,name:s}},e.prototype.saveCustomPlugin=function(i){var e=this,t=i.fields.title.split('/'),s=$tw.utils.generateTiddlerFilepath(t[t.length-1],{directory:l.resolve(this.wikiFolderPath,i.fields['plugin-type']+'s')}),t=i.getFieldStrings({exclude:['text','type']}),t=(this.saveJSONFile(s+l.sep+'plugin.info',t),e.log('Writing '+s+l.sep+'plugin.info: '+JSON.stringify(t,null,$tw.config.preferences.jsonSpaces)),$tw.utils.parseJSONSafe(i.fields.text).tiddlers);$tw.utils.each(t,function(i){e.saveTiddler(s,new $tw.Tiddler(i))})},e.prototype.saveTiddler=function(e,t){t.fields.title;this.wiki.tiddlerExists('$:/config/FileSystemPaths')&&(i=this.wiki.getTiddlerText('$:/config/FileSystemPaths','').split('\\\\n')),this.wiki.tiddlerExists('$:/config/FileSystemExtensions')&&(s=this.wiki.getTiddlerText('$:/config/FileSystemExtensions','').split('\\\\n'));var i,s,e=$tw.utils.generateTiddlerFileInfo(t,{directory:l.resolve(this.wikiFolderPath,e),pathFilters:i,extFilters:s,wiki:this.wiki,fileInfo:{}});try{$tw.utils.saveTiddlerToFileSync(t,e)}catch(i){console.log('SaveWikiFolder: Error saving file \\\\''+e.filepath+'\\\\', tiddler: \\\\''+t.fields.title)}},e.prototype.saveJSONFile=function(i,e){this.saveTextFile(i,JSON.stringify(e,null,$tw.config.preferences.jsonSpaces))},e.prototype.saveTextFile=function(i,e){this.saveFile(i,'utf8',e)},e.prototype.saveFile=function(i,e,t){i=l.resolve(this.wikiFolderPath,i);$tw.utils.createFileDirectories(i),n.writeFileSync(i,t,e)},exports.Command=i}();\",\"type\":\"application/javascript\",\"module-type\":\"command\"},\"$:/core/modules/commands/server.js\":{\"text\":\"!function(){'use strict';function r(r,s,t){this.params=r,this.commander=s,this.callback=t}var s=require('$:/core/modules/server/server.js').Server;exports.info={name:'server',synchronous:!0};r.prototype.execute=function(){$tw.boot.wikiTiddlersPath||$tw.utils.warning('Warning: Wiki folder \\\\''+$tw.boot.wikiPath+'\\\\' does not exist or is missing a tiddlywiki.info file'),this.server=new s({wiki:this.commander.wiki,variables:{port:this.params[0],host:this.params[6],'root-tiddler':this.params[1],'root-render-type':this.params[2],'root-serve-type':this.params[3],username:this.params[4],password:this.params[5],'path-prefix':this.params[7],'debug-level':this.params[8]}});var r=this.server.listen();return $tw.hooks.invokeHook('th-server-command-post-start',this.server,r,'tiddlywiki'),null},exports.Command=r}();\",\"type\":\"application/javascript\",\"module-type\":\"command\"},\"$:/core/modules/commands/setfield.js\":{\"text\":\"!function(){'use strict';function e(e,t,i){this.params=e,this.commander=t,this.callback=i}require('$:/core/modules/widgets/widget.js'),exports.info={name:'setfield',synchronous:!0};e.prototype.execute=function(){var s,a,n,d,e;return this.params.length\u003C4?'Missing parameters':(s=this.commander.wiki,e=this.params[0],a=this.params[1]||'text',n=this.params[2],d=this.params[3]||'text/plain',e=s.filterTiddlers(e),$tw.utils.each(e,function(e){var t=s.parseTiddler(n),i={},r=s.getTiddler(e);t?(t=s.makeWidget(t,{variables:{currentTiddler:e}}),e=$tw.fakeDocument.createElement('div'),t.render(e,null),i[a]='text/html'===d?e.innerHTML:e.textContent):i[a]=void 0,s.addTiddler(new $tw.Tiddler(r,i))}),null)},exports.Command=e}();\",\"type\":\"application/javascript\",\"module-type\":\"command\"},\"$:/core/modules/commands/unpackplugin.js\":{\"text\":\"!function(){'use strict';exports.info={name:'unpackplugin',synchronous:!0};function n(n,i,t){this.params=n,this.commander=i,this.callback=t}n.prototype.execute=function(){var i,n,t;return this.params.length\u003C1?'Missing plugin name':(n=(i=this).params[0],(t=this.commander.wiki.getTiddlerDataCached(n))?($tw.utils.each(t.tiddlers,function(n){i.commander.wiki.addTiddler(new $tw.Tiddler(n))}),null):'Plugin \\\\''+n+'\\\\' not found')},exports.Command=n}();\",\"type\":\"application/javascript\",\"module-type\":\"command\"},\"$:/core/modules/commands/verbose.js\":{\"text\":\"!function(){'use strict';exports.info={name:'verbose',synchronous:!0};function o(o,t){this.params=o,this.commander=t}o.prototype.execute=function(){return this.commander.verbose=!0,this.commander.streams.output.write('Boot log:\\\\n '+$tw.boot.logMessages.join('\\\\n ')+'\\\\n'),null},exports.Command=o}();\",\"type\":\"application/javascript\",\"module-type\":\"command\"},\"$:/core/modules/commands/version.js\":{\"text\":\"!function(){'use strict';exports.info={name:'version',synchronous:!0};function t(t,n){this.params=t,this.commander=n}t.prototype.execute=function(){return this.commander.streams.output.write($tw.version+'\\\\n'),null},exports.Command=t}();\",\"type\":\"application/javascript\",\"module-type\":\"command\"},\"$:/core/modules/config.js\":{\"text\":\"!function(){'use strict';exports.preferences={},exports.preferences.notificationDuration=3e3,exports.preferences.jsonSpaces=4,exports.textPrimitives={upperLetter:'[A-ZÀ-ÖØ-ÞŐŰ]',lowerLetter:'[a-zß-öø-ÿőű]',anyLetter:'[A-Za-z0-9À-ÖØ-Þß-öø-ÿŐŰőű]',blockPrefixLetters:'[A-Za-z0-9-_À-ÖØ-Þß-öø-ÿŐŰőű]'},exports.textPrimitives.unWikiLink='~',exports.textPrimitives.wikiLink=exports.textPrimitives.upperLetter+'+'+exports.textPrimitives.lowerLetter+'+'+exports.textPrimitives.upperLetter+exports.textPrimitives.anyLetter+'*',exports.htmlEntities={quot:34,amp:38,apos:39,lt:60,gt:62,nbsp:160,iexcl:161,cent:162,pound:163,curren:164,yen:165,brvbar:166,sect:167,uml:168,copy:169,ordf:170,laquo:171,not:172,shy:173,reg:174,macr:175,deg:176,plusmn:177,sup2:178,sup3:179,acute:180,micro:181,para:182,middot:183,cedil:184,sup1:185,ordm:186,raquo:187,frac14:188,frac12:189,frac34:190,iquest:191,Agrave:192,Aacute:193,Acirc:194,Atilde:195,Auml:196,Aring:197,AElig:198,Ccedil:199,Egrave:200,Eacute:201,Ecirc:202,Euml:203,Igrave:204,Iacute:205,Icirc:206,Iuml:207,ETH:208,Ntilde:209,Ograve:210,Oacute:211,Ocirc:212,Otilde:213,Ouml:214,times:215,Oslash:216,Ugrave:217,Uacute:218,Ucirc:219,Uuml:220,Yacute:221,THORN:222,szlig:223,agrave:224,aacute:225,acirc:226,atilde:227,auml:228,aring:229,aelig:230,ccedil:231,egrave:232,eacute:233,ecirc:234,euml:235,igrave:236,iacute:237,icirc:238,iuml:239,eth:240,ntilde:241,ograve:242,oacute:243,ocirc:244,otilde:245,ouml:246,divide:247,oslash:248,ugrave:249,uacute:250,ucirc:251,uuml:252,yacute:253,thorn:254,yuml:255,OElig:338,oelig:339,Scaron:352,scaron:353,Yuml:376,fnof:402,circ:710,tilde:732,Alpha:913,Beta:914,Gamma:915,Delta:916,Epsilon:917,Zeta:918,Eta:919,Theta:920,Iota:921,Kappa:922,Lambda:923,Mu:924,Nu:925,Xi:926,Omicron:927,Pi:928,Rho:929,Sigma:931,Tau:932,Upsilon:933,Phi:934,Chi:935,Psi:936,Omega:937,alpha:945,beta:946,gamma:947,delta:948,epsilon:949,zeta:950,eta:951,theta:952,iota:953,kappa:954,lambda:955,mu:956,nu:957,xi:958,omicron:959,pi:960,rho:961,sigmaf:962,sigma:963,tau:964,upsilon:965,phi:966,chi:967,psi:968,omega:969,thetasym:977,upsih:978,piv:982,ensp:8194,emsp:8195,thinsp:8201,zwnj:8204,zwj:8205,lrm:8206,rlm:8207,ndash:8211,mdash:8212,lsquo:8216,rsquo:8217,sbquo:8218,ldquo:8220,rdquo:8221,bdquo:8222,dagger:8224,Dagger:8225,bull:8226,hellip:8230,permil:8240,prime:8242,Prime:8243,lsaquo:8249,rsaquo:8250,oline:8254,frasl:8260,euro:8364,image:8465,weierp:8472,real:8476,trade:8482,alefsym:8501,larr:8592,uarr:8593,rarr:8594,darr:8595,harr:8596,crarr:8629,lArr:8656,uArr:8657,rArr:8658,dArr:8659,hArr:8660,forall:8704,part:8706,exist:8707,empty:8709,nabla:8711,isin:8712,notin:8713,ni:8715,prod:8719,sum:8721,minus:8722,lowast:8727,radic:8730,prop:8733,infin:8734,ang:8736,and:8743,or:8744,cap:8745,cup:8746,int:8747,there4:8756,sim:8764,cong:8773,asymp:8776,ne:8800,equiv:8801,le:8804,ge:8805,sub:8834,sup:8835,nsub:8836,sube:8838,supe:8839,oplus:8853,otimes:8855,perp:8869,sdot:8901,lceil:8968,rceil:8969,lfloor:8970,rfloor:8971,lang:9001,rang:9002,loz:9674,spades:9824,clubs:9827,hearts:9829,diams:9830},exports.htmlVoidElements='area,base,br,col,command,embed,hr,img,input,keygen,link,meta,param,source,track,wbr'.split(','),exports.htmlBlockElements='address,article,aside,audio,blockquote,canvas,dd,details,div,dl,dt,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,hr,li,nav,ol,p,pre,section,summary,table,tfoot,ul,video'.split(','),exports.htmlUnsafeElements='script'.split(',')}();\",\"type\":\"application/javascript\",\"module-type\":\"config\"},\"$:/core/modules/deserializers.js\":{\"text\":\"!function(){'use strict';exports['application/x-tiddler-html-div']=function(t,e){return[x(t,e)]},exports['application/json']=function(t,e){var i=[],r=$tw.utils.parseJSONSafe(t,function(t){return[{title:'JSON error: '+t,text:''}]});$tw.utils.isArray(r)||(r=[r]);for(var s=0;s\u003Cr.length;s++){var n,a=r[s],e={};for(n in a)'string'==typeof a[n]&&(e[n]=a[n]);i.push(e)}return i},exports['text/html']=function(t,e){for(var i,r,s,n,a,l=[],d=/\u003Cdiv id=[\\\"']?storeArea['\\\"]?( style=[\\\"']?display:none;[\\\"']?)?>/gi,o=d.exec(t),u=(o&&l.push.apply(l,function(t,e,i,r){var s=[],n=/(\u003C\\\\/div>\\\\s*)/gi,a=e,l=i?void 0:'text/x-tiddlywiki',d=(n.lastIndex=a,n.exec(t));for(;d;){var o=n.lastIndex,u=x(t.substring(a,o),r,{type:l});if(!u)break;$tw.utils.each(u,function(t,e){'string'==typeof t&&(u[e]=$tw.utils.htmlDecode(t))}),null!==u.text&&s.push(u),a=o,d=n.exec(t)}return s}(t,d.lastIndex,!!o[1],e)),/\u003Cscript class=\\\"tiddlywiki-tiddler-store\\\" type=\\\"([^\\\"]*)\\\">/gi),c=u.exec(t),d=!!c;c;)l.push.apply(l,(i=t,r=u.lastIndex,s=c[1],void 0,void 0,(n=/\u003C\\\\/script>/gi).lastIndex=r,(n=n.exec(i))?(i=i.substring(r,n.index),$tw.wiki.deserializeTiddlers(s,i)):[])),c=u.exec(t);return o||d?l:(o=$tw.utils.extractEncryptedStoreArea(t))?$tw.utils.decryptStoreArea(o):(d=t,a={},$tw.utils.each(e,function(t,e){a[e]=t}),a.text=d,a.type='text/html',[a])};var x=function(t){var e={};if(1\u003Carguments.length)for(var i=1;i\u003Carguments.length;i++){var r,s=arguments[i];for(r in s)e[r]=s[r]}var n=/^\\\\s*\u003Cdiv\\\\s+([^>]*)>(\\\\s*\u003Cpre>)?/gi.exec(t);if(n){var a=(n[2]?/\u003C\\\\/pre>\\\\s*\u003C\\\\/div>\\\\s*$/gi:/\u003C\\\\/div>\\\\s*$/gi).exec(t);if(a){e.text=t.substring(n.index+n[0].length,a.index);var l,d,o,u=/\\\\s*([^=\\\\s]+)\\\\s*=\\\\s*(?:\\\"([^\\\"]*)\\\"|'([^']*)')/gi;do{}while((o=u.exec(n[1]))&&(l=o[1],d=void 0!==o[2]?o[2]:o[3],e[l]=d),o);return e}}}}();\",\"type\":\"application/javascript\",\"module-type\":\"tiddlerdeserializer\"},\"$:/core/modules/editor/engines/framed.js\":{\"text\":\"!function(){'use strict';function e(e){this.widget=(e=e||{}).widget,this.value=e.value,this.parentNode=e.parentNode,this.nextSibling=e.nextSibling,this.dummyTextArea=this.widget.document.createElement('textarea'),this.widget.editClass&&(this.dummyTextArea.className=this.widget.editClass),this.dummyTextArea.setAttribute('hidden','true'),this.parentNode.insertBefore(this.dummyTextArea,this.nextSibling),this.widget.domNodes.push(this.dummyTextArea),this.iframeNode=this.widget.document.createElement('iframe'),this.parentNode.insertBefore(this.iframeNode,this.nextSibling),this.iframeDoc=this.iframeNode.contentWindow.document;e=this.widget.wiki.getTiddlerText('$:/palette'),e=(this.widget.wiki.getTiddler(e)||{fields:{}}).fields['color-scheme']||'light',this.iframeDoc.open(),this.iframeDoc.write('\u003Cmeta name=\\\\'color-scheme\\\\' content=\\\\''+e+'\\\\'>'),this.iframeDoc.close(),this.iframeNode.className=this.dummyTextArea.className,this.iframeNode.style.border='none',this.iframeNode.style.padding='0',this.iframeNode.style.resize='none',this.iframeDoc.body.style.margin='0',this.iframeDoc.body.style.padding='0',this.widget.domNodes.push(this.iframeNode),e=this.widget.editTag;-1!==$tw.config.htmlUnsafeElements.indexOf(e)&&(e='input'),this.domNode=this.iframeDoc.createElement(e),'textarea'===this.widget.editTag?this.domNode.appendChild(this.iframeDoc.createTextNode(this.value)):this.domNode.value=this.value,this.widget.editType&&this.domNode.setAttribute('type',this.widget.editType),this.widget.editPlaceholder&&this.domNode.setAttribute('placeholder',this.widget.editPlaceholder),this.widget.editSize&&this.domNode.setAttribute('size',this.widget.editSize),this.widget.editRows&&this.domNode.setAttribute('rows',this.widget.editRows),this.widget.editTabIndex&&this.iframeNode.setAttribute('tabindex',this.widget.editTabIndex),this.widget.editAutoComplete&&this.domNode.setAttribute('autocomplete',this.widget.editAutoComplete),'yes'===this.widget.isDisabled&&this.domNode.setAttribute('disabled',!0),this.copyStyles(),$tw.utils.addEventListeners(this.domNode,[{name:'click',handlerObject:this,handlerMethod:'handleClickEvent'},{name:'input',handlerObject:this,handlerMethod:'handleInputEvent'},{name:'keydown',handlerObject:this,handlerMethod:'handleKeydownEvent'},{name:'focus',handlerObject:this,handlerMethod:'handleFocusEvent'}]),this.widget.isFileDropEnabled&&$tw.utils.addEventListeners(this.domNode,[{name:'dragenter',handlerObject:this.widget,handlerMethod:'handleDragEnterEvent'},{name:'dragover',handlerObject:this.widget,handlerMethod:'handleDragOverEvent'},{name:'dragleave',handlerObject:this.widget,handlerMethod:'handleDragLeaveEvent'},{name:'dragend',handlerObject:this.widget,handlerMethod:'handleDragEndEvent'},{name:'drop',handlerObject:this.widget,handlerMethod:'handleDropEvent'},{name:'paste',handlerObject:this.widget,handlerMethod:'handlePasteEvent'},{name:'click',handlerObject:this.widget,handlerMethod:'handleClickEvent'}]),this.iframeDoc.body.appendChild(this.domNode)}e.prototype.copyStyles=function(){$tw.utils.copyStyles(this.dummyTextArea,this.domNode),this.domNode.style.display='block',this.domNode.style.width='100%',this.domNode.style.margin='0',this.domNode.style['-webkit-text-fill-color']='currentcolor'},e.prototype.setText=function(e,t){this.domNode.isTiddlyWikiFakeDom||(this.domNode.ownerDocument.activeElement!==this.domNode&&this.updateDomNodeText(e),this.fixHeight())},e.prototype.updateDomNodeText=function(e){try{this.domNode.value=e}catch(e){}},e.prototype.getText=function(){return this.domNode.value},e.prototype.fixHeight=function(){var e;this.copyStyles(),'textarea'===this.widget.editTag&&(this.widget.editAutoHeight?this.domNode&&!this.domNode.isTiddlyWikiFakeDom&&(e=$tw.utils.resizeTextAreaToFit(this.domNode,this.widget.editMinHeight),this.iframeNode.style.height=e+14+'px'):(e=parseInt(this.widget.wiki.getTiddlerText('$:/config/TextEditor/EditorHeight/Height','400px'),10),e=Math.max(e,20),this.domNode.style.height=e+'px',this.iframeNode.style.height=e+14+'px'))},e.prototype.focus=function(){this.domNode.focus&&this.domNode.select&&(this.domNode.focus(),this.domNode.select())},e.prototype.handleFocusEvent=function(e){this.widget.editCancelPopups&&$tw.popup.cancel(0)},e.prototype.handleKeydownEvent=function(e){return!!$tw.keyboardManager.handleKeydownEvent(e,{onlyPriority:!0})||this.widget.handleKeydownEvent(e)},e.prototype.handleClickEvent=function(e){return this.fixHeight(),!0},e.prototype.handleInputEvent=function(e){return this.widget.saveChanges(this.getText()),this.fixHeight(),this.widget.editInputActions&&this.widget.invokeActionString(this.widget.editInputActions,this,e,{actionValue:this.getText()}),!0},e.prototype.createTextOperation=function(){var e={text:this.domNode.value,selStart:this.domNode.selectionStart,selEnd:this.domNode.selectionEnd,cutStart:null,cutEnd:null,replacement:null,newSelStart:null,newSelEnd:null};return e.selection=e.text.substring(e.selStart,e.selEnd),e},e.prototype.executeTextOperation=function(e){var t=e.text;return null!==e.replacement&&(t=e.text.substring(0,e.cutStart)+e.replacement+e.text.substring(e.cutEnd),this.iframeDoc.queryCommandSupported('insertText')&&this.iframeDoc.queryCommandSupported('delete')&&!$tw.browser.isFirefox?(this.domNode.focus(),this.domNode.setSelectionRange(e.cutStart,e.cutEnd),''===e.replacement?this.iframeDoc.execCommand('delete',!1,''):this.iframeDoc.execCommand('insertText',!1,e.replacement)):this.domNode.value=t,this.domNode.focus(),this.domNode.setSelectionRange(e.newSelStart,e.newSelEnd)),this.domNode.focus(),t},exports.FramedEngine=e}();\",\"type\":\"application/javascript\",\"module-type\":\"library\"},\"$:/core/modules/editor/engines/simple.js\":{\"text\":\"!function(){'use strict';function t(t){this.widget=(t=t||{}).widget,this.value=t.value,this.parentNode=t.parentNode,this.nextSibling=t.nextSibling;t=this.widget.editTag;-1!==$tw.config.htmlUnsafeElements.indexOf(t)&&(t='input'),this.domNode=this.widget.document.createElement(t),'textarea'===this.widget.editTag?this.domNode.appendChild(this.widget.document.createTextNode(this.value)):this.domNode.value=this.value,this.widget.editType&&this.domNode.setAttribute('type',this.widget.editType),this.widget.editPlaceholder&&this.domNode.setAttribute('placeholder',this.widget.editPlaceholder),this.widget.editSize&&this.domNode.setAttribute('size',this.widget.editSize),this.widget.editRows&&this.domNode.setAttribute('rows',this.widget.editRows),this.widget.editClass&&(this.domNode.className=this.widget.editClass),this.widget.editTabIndex&&this.domNode.setAttribute('tabindex',this.widget.editTabIndex),this.widget.editAutoComplete&&this.domNode.setAttribute('autocomplete',this.widget.editAutoComplete),'yes'===this.widget.isDisabled&&this.domNode.setAttribute('disabled',!0),$tw.utils.addEventListeners(this.domNode,[{name:'focus',handlerObject:this,handlerMethod:'handleFocusEvent'},{name:'input',handlerObject:this,handlerMethod:'handleInputEvent'}]),this.parentNode.insertBefore(this.domNode,this.nextSibling),this.widget.domNodes.push(this.domNode)}t.prototype.setText=function(t,e){this.domNode.isTiddlyWikiFakeDom||(this.domNode.ownerDocument.activeElement===this.domNode&&''!==t||this.updateDomNodeText(t),this.fixHeight())},t.prototype.updateDomNodeText=function(t){try{this.domNode.value=t}catch(t){}},t.prototype.getText=function(){return this.domNode.value},t.prototype.fixHeight=function(){var t;'textarea'===this.widget.editTag&&(this.widget.editAutoHeight?this.domNode&&!this.domNode.isTiddlyWikiFakeDom&&$tw.utils.resizeTextAreaToFit(this.domNode,this.widget.editMinHeight):(t=parseInt(this.widget.wiki.getTiddlerText('$:/config/TextEditor/EditorHeight/Height','400px'),10),t=Math.max(t,20),this.domNode.style.height=t+'px'))},t.prototype.focus=function(){this.domNode.focus&&this.domNode.select&&(this.domNode.focus(),this.domNode.select())},t.prototype.handleInputEvent=function(t){return this.widget.saveChanges(this.getText()),this.fixHeight(),this.widget.editInputActions&&this.widget.invokeActionString(this.widget.editInputActions,this,t,{actionValue:this.getText()}),!0},t.prototype.handleFocusEvent=function(t){return this.widget.editCancelPopups&&$tw.popup.cancel(0),this.widget.editFocusPopup&&$tw.popup.triggerPopup({domNode:this.domNode,title:this.widget.editFocusPopup,wiki:this.widget.wiki,force:!0}),!0},t.prototype.createTextOperation=function(){return null},t.prototype.executeTextOperation=function(t){},exports.SimpleEngine=t}();\",\"type\":\"application/javascript\",\"module-type\":\"library\"},\"$:/core/modules/editor/factory.js\":{\"text\":\"!function(){'use strict';var s='$:/config/TextEditor/EditorHeight/Mode',n='$:/config/TextEditor/EnableToolbar',t=require('$:/core/modules/widgets/widget.js').widget;exports.editTextWidgetFactory=function(o,r){function i(t,e){this.editorOperations||(i.prototype.editorOperations={},$tw.modules.applyMethods('texteditoroperation',this.editorOperations)),this.initialise(t,e)}return(i.prototype=new t).render=function(t,e){this.parentDomNode=t,this.computeAttributes(),this.execute(),this.editShowToolbar&&(this.toolbarNode=this.document.createElement('div'),this.toolbarNode.className='tc-editor-toolbar',t.insertBefore(this.toolbarNode,e),this.renderChildren(this.toolbarNode,null),this.domNodes.push(this.toolbarNode));var i=this.getEditInfo(),s=this.editShowToolbar?o:r;this.engine=new s({widget:this,value:i.value,type:i.type,parentNode:t,nextSibling:e}),this.postRender&&this.postRender(),this.engine.fixHeight(),'true'!==this.editFocus&&'yes'!==this.editFocus||this.engine.focus(),this.addEventListeners([{type:'tm-edit-text-operation',handler:'handleEditTextOperationMessage'}])},i.prototype.getEditInfo=function(){var t,e,s=this,i='text/plain';if(this.editIndex)t=this.wiki.extractTiddlerDataItem(this.editTitle,this.editIndex,this.editDefault),e=function(t){var e=s.wiki.getTiddlerData(s.editTitle,{});e[s.editIndex]!==t&&(e[s.editIndex]=t,s.wiki.setTiddlerData(s.editTitle,e))};else{var o=this.wiki.getTiddler(this.editTitle);if(o)t=o.hasField(this.editField)?o.getFieldString(this.editField):this.editDefault||'','text'===this.editField&&(i=o.fields.type||'text/vnd.tiddlywiki');else{switch(this.editField){case'text':t='',i='text/vnd.tiddlywiki';break;case'title':t=this.editTitle;break;default:t=''}void 0!==this.editDefault&&(t=this.editDefault)}e=function(t){var e=s.wiki.getTiddler(s.editTitle),i={title:s.editTitle};i[s.editField]=t,s.wiki.addTiddler(new $tw.Tiddler(s.wiki.getCreationFields(),e,i,s.wiki.getModificationFields()))}}return{value:t||'',type:i=this.editType?this.editType:i,update:e}},i.prototype.handleEditTextOperationMessage=function(t){var e=this.engine.createTextOperation(),i=this.editorOperations[t.param],i=(i&&i.call(this,t,e),this.engine.executeTextOperation(e));this.engine.fixHeight(),this.saveChanges(i)},i.prototype.execute=function(){var t,e,i;this.editTitle=this.getAttribute('tiddler',this.getVariable('currentTiddler')),this.editField=this.getAttribute('field','text'),this.editIndex=this.getAttribute('index'),this.editDefault=this.getAttribute('default'),this.editClass=this.getAttribute('class'),this.editPlaceholder=this.getAttribute('placeholder'),this.editSize=this.getAttribute('size'),this.editRows=this.getAttribute('rows'),this.editAutoHeight=this.wiki.getTiddlerText(s,'auto'),this.editAutoHeight='yes'===this.getAttribute('autoHeight','auto'===this.editAutoHeight?'yes':'no'),this.editMinHeight=this.getAttribute('minHeight','100px'),this.editFocusPopup=this.getAttribute('focusPopup'),this.editFocus=this.getAttribute('focus'),this.editTabIndex=this.getAttribute('tabindex'),this.editCancelPopups='yes'===this.getAttribute('cancelPopups',''),this.editInputActions=this.getAttribute('inputActions'),this.editRefreshTitle=this.getAttribute('refreshTitle'),this.editAutoComplete=this.getAttribute('autocomplete'),this.isDisabled=this.getAttribute('disabled','no'),this.isFileDropEnabled='yes'===this.getAttribute('fileDrop','no'),'text'===this.editField?e='textarea':(e='input',(i=$tw.Tiddler.fieldModules[this.editField])&&i.editTag&&(e=i.editTag),t=(t=i&&i.editType?i.editType:t)||'text'),this.editTag=this.getAttribute('tag',e)||'input',this.editType=this.getAttribute('type',t),this.makeChildWidgets(),this.editShowToolbar=this.wiki.getTiddlerText(n,'yes'),this.editShowToolbar='yes'===this.editShowToolbar&&!!(this.children&&0\u003Cthis.children.length)&&!this.document.isTiddlyWikiFakeDom},i.prototype.refresh=function(t){var e=this.computeAttributes();return e.tiddler||e.field||e.index||e.default||e.class||e.placeholder||e.size||e.autoHeight||e.minHeight||e.focusPopup||e.rows||e.tabindex||e.cancelPopups||e.inputActions||e.refreshTitle||e.autocomplete||t[s]||t[n]||e.disabled||e.fileDrop?(this.refreshSelf(),!0):(t[this.editRefreshTitle]?this.engine.updateDomNodeText(this.getEditInfo().value):t[this.editTitle]&&(e=this.getEditInfo(),this.updateEditor(e.value,e.type)),this.engine.fixHeight(),!!this.editShowToolbar&&this.refreshChildren(t))},i.prototype.updateEditor=function(t,e){this.updateEditorDomNode(t,e)},i.prototype.updateEditorDomNode=function(t,e){this.engine.setText(t,e)},i.prototype.saveChanges=function(t){var e=this.getEditInfo();t!==e.value&&e.update(t)},i.prototype.handleKeydownEvent=function(t){if(this.toolbarNode)for(var e=this.toolbarNode.querySelectorAll('[data-tw-keyboard-shortcut]'),i=0;i\u003Ce.length;i++){var s=e[i],o=s.getAttribute('data-tw-keyboard-shortcut'),o=$tw.keyboardManager.parseKeyDescriptors(o,{wiki:this.wiki});if($tw.keyboardManager.checkKeyDescriptors(t,o))return(o=this.document.createEvent('Events')).initEvent('click',!0,!1),s.dispatchEvent(o),t.preventDefault(),t.stopPropagation(),!0}return!!this.propogateKeydownEvent(t)&&(t.preventDefault(),t.stopPropagation(),!0)},i.prototype.propogateKeydownEvent=function(t){t=this.cloneEvent(t,['keyCode','code','which','key','metaKey','ctrlKey','altKey','shiftKey']);return!this.parentDomNode.dispatchEvent(t)},i.prototype.cloneEvent=function(e,t){var t=t||[],i=this.document.createEventObject?this.document.createEventObject():this.document.createEvent('Events');return i.initEvent&&i.initEvent(e.type,!0,!0),$tw.utils.each(t,function(t){i[t]=e[t]}),i},i.prototype.dispatchDOMEvent=function(t){return(this.engine.iframeNode||this.engine.parentNode).dispatchEvent(t)},i.prototype.handleDropEvent=function(t){$tw.utils.dragEventContainsFiles(t)&&(t.preventDefault(),t.stopPropagation(),this.dispatchDOMEvent(this.cloneEvent(t,['dataTransfer'])))},i.prototype.handlePasteEvent=function(t){t.clipboardData&&t.clipboardData.files&&t.clipboardData.files.length&&(t.preventDefault(),t.stopPropagation(),this.dispatchDOMEvent(this.cloneEvent(t,['clipboardData'])))},i.prototype.handleDragEnterEvent=function(t){return!$tw.utils.dragEventContainsFiles(t)||!(!t.relatedTarget||3!==t.relatedTarget.nodeType&&t.target!==t.relatedTarget)||(t.preventDefault(),this.dispatchDOMEvent(this.cloneEvent(t,['dataTransfer'])))},i.prototype.handleDragOverEvent=function(t){return!$tw.utils.dragEventContainsFiles(t)||(($tw.browser.isFirefox||$tw.browser.isIE)&&t.preventDefault(),t.dataTransfer.dropEffect='copy',this.dispatchDOMEvent(this.cloneEvent(t,['dataTransfer'])))},i.prototype.handleDragLeaveEvent=function(t){if(t.relatedTarget&&(3===t.relatedTarget.nodeType||t.target===t.relatedTarget))return!0;t.preventDefault(),this.dispatchDOMEvent(this.cloneEvent(t,['dataTransfer']))},i.prototype.handleDragEndEvent=function(t){this.dispatchDOMEvent(this.cloneEvent(t))},i.prototype.handleClickEvent=function(t){return!this.dispatchDOMEvent(this.cloneEvent(t))},i}}();\",\"type\":\"application/javascript\",\"module-type\":\"library\"},\"$:/core/modules/editor/operations/bitmap/clear.js\":{\"text\":\"!function(){'use strict';exports.clear=function(t){var e=this.canvasDomNode.getContext('2d');e.globalAlpha=1,e.fillStyle=t.paramObject.colour||'white',e.fillRect(0,0,this.canvasDomNode.width,this.canvasDomNode.height),this.strokeEnd()}}();\",\"type\":\"application/javascript\",\"module-type\":\"bitmapeditoroperation\"},\"$:/core/modules/editor/operations/bitmap/resize.js\":{\"text\":\"!function(){'use strict';exports.resize=function(t){var a=parseInt(t.paramObject.width||this.canvasDomNode.width,10),t=parseInt(t.paramObject.height||this.canvasDomNode.height,10);0\u003Ca&&0\u003Ct&&(a!==this.currCanvas.width||t!==this.currCanvas.height)&&this.changeCanvasSize(a,t),this.refreshToolbar(),this.saveChanges()}}();\",\"type\":\"application/javascript\",\"module-type\":\"bitmapeditoroperation\"},\"$:/core/modules/editor/operations/bitmap/rotate-left.js\":{\"text\":\"!function(){'use strict';exports['rotate-left']=function(t){this.rotateCanvasLeft(),this.refreshToolbar(),this.saveChanges()}}();\",\"type\":\"application/javascript\",\"module-type\":\"bitmapeditoroperation\"},\"$:/core/modules/editor/operations/text/excise.js\":{\"text\":\"!function(){'use strict';exports.excise=function(e,t){var i=this.wiki.getTiddler(this.editTitle),a=this.editTitle,i=(i&&i.fields['draft.of']&&(a=i.fields['draft.of']),e.paramObject.title||this.wiki.generateNewTitle('New Excision'));switch(this.wiki.addTiddler(new $tw.Tiddler(this.wiki.getCreationFields(),this.wiki.getModificationFields(),{title:i,text:t.selection,tags:'yes'===e.paramObject.tagnew?[a]:[]})),t.replacement=i,e.paramObject.type||'transclude'){case'transclude':t.replacement='{{'+t.replacement+'}}';break;case'link':t.replacement='[['+t.replacement+']]';break;case'macro':t.replacement='\u003C\u003C'+(e.paramObject.macro||'translink')+' \\\"\\\"\\\"'+t.replacement+'\\\"\\\"\\\">>'}t.cutStart=t.selStart,t.cutEnd=t.selEnd,t.newSelStart=t.selStart,t.newSelEnd=t.selStart+t.replacement.length}}();\",\"type\":\"application/javascript\",\"module-type\":\"texteditoroperation\"},\"$:/core/modules/editor/operations/text/focus-editor.js\":{\"text\":\"!function(){'use strict';exports['focus-editor']=function(t,o){}}();\",\"type\":\"application/javascript\",\"module-type\":\"texteditoroperation\"},\"$:/core/modules/editor/operations/text/insert-text.js\":{\"text\":\"!function(){'use strict';exports['insert-text']=function(t,e){e.replacement=t.paramObject.text,e.cutStart=e.selStart,e.cutEnd=e.selEnd,e.newSelStart=e.selStart+e.replacement.length,e.newSelEnd=e.newSelStart}}();\",\"type\":\"application/javascript\",\"module-type\":\"texteditoroperation\"},\"$:/core/modules/editor/operations/text/make-link.js\":{\"text\":\"!function(){'use strict';exports['make-link']=function(e,t){t.selection?t.replacement='[['+t.selection+'|'+e.paramObject.text+']]':t.replacement='[['+e.paramObject.text+']]',t.cutStart=t.selStart,t.cutEnd=t.selEnd,t.newSelStart=t.selStart+t.replacement.length,t.newSelEnd=t.newSelStart}}();\",\"type\":\"application/javascript\",\"module-type\":\"texteditoroperation\"},\"$:/core/modules/editor/operations/text/prefix-lines.js\":{\"text\":\"!function(){'use strict';exports['prefix-lines']=function(n,t){var a=parseInt(n.paramObject.count+'',10),c=(t.cutStart=$tw.utils.findPrecedingLineBreak(t.text,t.selStart),t.cutEnd=$tw.utils.findFollowingLineBreak(t.text,t.selEnd),$tw.utils.repeat(n.paramObject.character,a)),l=t.text.substring(t.cutStart,t.cutEnd).split(/\\\\r?\\\\n/gm);$tw.utils.each(l,function(t,e){for(var r=0;$tw.utils.startsWith(t,n.paramObject.character);)t=t.substring(n.paramObject.character.length),r++;for(;' '===t.charAt(0);)t=t.substring(1);l[e]=t=r!==a?c+' '+t:t}),t.replacement=l.join('\\\\n'),1===l.length?(t.newSelStart=t.cutStart+t.replacement.length,t.newSelEnd=t.newSelStart):(t.newSelStart=t.cutStart,t.newSelEnd=t.newSelStart+t.replacement.length)}}();\",\"type\":\"application/javascript\",\"module-type\":\"texteditoroperation\"},\"$:/core/modules/editor/operations/text/replace-all.js\":{\"text\":\"!function(){'use strict';exports['replace-all']=function(t,e){e.cutStart=0,e.cutEnd=e.text.length,e.replacement=t.paramObject.text,e.newSelStart=0,e.newSelEnd=e.replacement.length}}();\",\"type\":\"application/javascript\",\"module-type\":\"texteditoroperation\"},\"$:/core/modules/editor/operations/text/replace-selection.js\":{\"text\":\"!function(){'use strict';exports['replace-selection']=function(t,e){e.replacement=t.paramObject.text,e.cutStart=e.selStart,e.cutEnd=e.selEnd,e.newSelStart=e.selStart,e.newSelEnd=e.selStart+e.replacement.length}}();\",\"type\":\"application/javascript\",\"module-type\":\"texteditoroperation\"},\"$:/core/modules/editor/operations/text/save-selection.js\":{\"text\":\"!function(){'use strict';exports['save-selection']=function(t,e){var s=t.paramObject.tiddler,t=t.paramObject.field||'text';s&&t&&this.wiki.setText(s,t,null,e.text.substring(e.selStart,e.selEnd))}}();\",\"type\":\"application/javascript\",\"module-type\":\"texteditoroperation\"},\"$:/core/modules/editor/operations/text/wrap-lines.js\":{\"text\":\"!function(){'use strict';exports['wrap-lines']=function(t,e){var n=t.paramObject.prefix||'',t=t.paramObject.suffix||'';$tw.utils.endsWith(e.text.substring(0,e.selStart),n+'\\\\n')&&$tw.utils.startsWith(e.text.substring(e.selEnd),'\\\\n'+t)?(e.cutStart=e.selStart-(n.length+1),e.cutEnd=e.selEnd+t.length+1,'\\\\n'===e.text[e.cutEnd]&&e.cutEnd++,e.replacement=e.text.substring(e.selStart,e.selEnd),e.newSelStart=e.cutStart,e.newSelEnd=e.selEnd-(n.length+1)):(e.cutStart=$tw.utils.findPrecedingLineBreak(e.text,e.selStart),e.cutEnd=$tw.utils.findFollowingLineBreak(e.text,e.selEnd),e.replacement=n+'\\\\n'+e.text.substring(e.cutStart,e.cutEnd)+'\\\\n'+t+'\\\\n',e.newSelStart=e.cutStart+n.length+1,e.newSelEnd=e.newSelStart+(e.cutEnd-e.cutStart))}}();\",\"type\":\"application/javascript\",\"module-type\":\"texteditoroperation\"},\"$:/core/modules/editor/operations/text/wrap-selection.js\":{\"text\":\"!function(){'use strict';exports['wrap-selection']=function(t,e){e.selStart===e.selEnd?(e.text.substring(e.selStart-t.paramObject.prefix.length,e.selStart+t.paramObject.suffix.length)===t.paramObject.prefix+t.paramObject.suffix?(e.cutStart=e.selStart-t.paramObject.prefix.length,e.cutEnd=e.selEnd+t.paramObject.suffix.length,e.replacement='',e.newSelStart=e.cutStart):(e.cutStart=e.selStart,e.cutEnd=e.selEnd,e.replacement=t.paramObject.prefix+t.paramObject.suffix,e.newSelStart=e.selStart+t.paramObject.prefix.length),e.newSelEnd=e.newSelStart):(e.text.substring(e.selStart,e.selStart+t.paramObject.prefix.length)===t.paramObject.prefix&&e.text.substring(e.selEnd-t.paramObject.suffix.length,e.selEnd)===t.paramObject.suffix?(e.cutStart=e.selStart,e.cutEnd=e.selEnd,e.replacement=e.selection.substring(t.paramObject.prefix.length,e.selection.length-t.paramObject.suffix.length)):(e.cutStart=e.selStart,e.cutEnd=e.selEnd,e.replacement=t.paramObject.prefix+e.selection+t.paramObject.suffix),e.newSelStart=e.selStart,e.newSelEnd=e.selStart+e.replacement.length)}}();\",\"type\":\"application/javascript\",\"module-type\":\"texteditoroperation\"},\"$:/core/modules/filterrunprefixes/all.js\":{\"text\":\"!function(){'use strict';exports.all=function(c){return function(n,t,u){n.push.apply(n,c(t,u))}}}();\",\"type\":\"application/javascript\",\"module-type\":\"filterrunprefix\"},\"$:/core/modules/filterrunprefixes/and.js\":{\"text\":\"!function(){'use strict';exports.and=function(e,i){return function(r,t,n){t=i.wiki.makeTiddlerIterator(r.toArray()),r.clear(),r.pushTop(e(t,n))}}}();\",\"type\":\"application/javascript\",\"module-type\":\"filterrunprefix\"},\"$:/core/modules/filterrunprefixes/cascade.js\":{\"text\":\"!function(){'use strict';exports.cascade=function(t,c){return function(r,e,a){var n,l;0!==r.length&&(n=t(e,a),l=[],e=r.toArray(),r.clear(),$tw.utils.each(e,function(t){var i='';$tw.utils.each(n,function(r,e){l[e]||(l[e]=c.wiki.compileFilter(r));r=l[e](c.wiki.makeTiddlerIterator([t]),{getVariable:function(r,e){return(e=e||{}).variables={currentTiddler:''+t,'..currentTiddler':a.getVariable('currentTiddler')},r in e.variables?e.variables[r]:a.getVariable(r,e)}});if(0!==r.length)return i=r[0],!1}),r.push(i)}))}}}();\",\"type\":\"application/javascript\",\"module-type\":\"filterrunprefix\"},\"$:/core/modules/filterrunprefixes/else.js\":{\"text\":\"!function(){'use strict';exports.else=function(u){return function(n,t,e){0===n.length&&n.pushTop(u(t,e))}}}();\",\"type\":\"application/javascript\",\"module-type\":\"filterrunprefix\"},\"$:/core/modules/filterrunprefixes/except.js\":{\"text\":\"!function(){'use strict';exports.except=function(c){return function(t,e,n){t.remove(c(e,n))}}}();\",\"type\":\"application/javascript\",\"module-type\":\"filterrunprefix\"},\"$:/core/modules/filterrunprefixes/filter.js\":{\"text\":\"!function(){'use strict';exports.filter=function(l,u){return function(n,e,i){var r,a;0\u003Cn.length&&(r=[],a=0,n.each(function(t){0===l(u.wiki.makeTiddlerIterator([t]),{getVariable:function(e,r){return(r=r||{}).variables={currentTiddler:''+t,'..currentTiddler':i.getVariable('currentTiddler'),index:''+a,revIndex:''+(n.length-1-a),length:''+n.length},e in r.variables?r.variables[e]:i.getVariable(e,r)}}).length&&r.push(t),++a}),n.remove(r))}}}();\",\"type\":\"application/javascript\",\"module-type\":\"filterrunprefix\"},\"$:/core/modules/filterrunprefixes/intersection.js\":{\"text\":\"!function(){'use strict';exports.intersection=function(r){return function(n,t,e){var i;0!==n.length&&(i=r(t,e),t=n.toArray(),n.clear(),$tw.utils.each(t,function(t){-1!==i.indexOf(t)&&n.push(t)}))}}}();\",\"type\":\"application/javascript\",\"module-type\":\"filterrunprefix\"},\"$:/core/modules/filterrunprefixes/map.js\":{\"text\":\"!function(){'use strict';exports.map=function(u,c){return function(r,e,n){var i,a,t,l;0\u003Cr.length&&(i=r.toArray(),a=0,t=c.suffixes,l=!(!t[0]||'flat'!==t[0][0]),r.clear(),$tw.utils.each(i,function(t){var e=u(c.wiki.makeTiddlerIterator([t]),{getVariable:function(e,r){return(r=r||{}).variables={currentTiddler:''+t,'..currentTiddler':n.getVariable('currentTiddler'),index:''+a,revIndex:''+(i.length-1-a),length:''+i.length},e in r.variables?r.variables[e]:n.getVariable(e,r)}});e.length&&l?$tw.utils.each(e,function(e){r.push(e)}):r.push(e[0]||''),++a}))}}}();\",\"type\":\"application/javascript\",\"module-type\":\"filterrunprefix\"},\"$:/core/modules/filterrunprefixes/or.js\":{\"text\":\"!function(){'use strict';exports.or=function(u){return function(n,t,o){n.pushTop(u(t,o))}}}();\",\"type\":\"application/javascript\",\"module-type\":\"filterrunprefix\"},\"$:/core/modules/filterrunprefixes/reduce.js\":{\"text\":\"!function(){'use strict';exports.reduce=function(r,u){return function(n,e,a){var i,l;0\u003Cn.length&&(i='',l=0,n.each(function(t){var e=r(u.wiki.makeTiddlerIterator([t]),{getVariable:function(e,r){return(r=r||{}).variables={currentTiddler:''+t,'..currentTiddler':a.getVariable('currentTiddler'),index:''+l,revIndex:''+(n.length-1-l),length:''+n.length,accumulator:''+i},e in r.variables?r.variables[e]:a.getVariable(e,r)}});0\u003Ce.length&&(i=''+e[0]),++l}),n.clear(),n.push(i))}}}();\",\"type\":\"application/javascript\",\"module-type\":\"filterrunprefix\"},\"$:/core/modules/filterrunprefixes/sort.js\":{\"text\":\"!function(){'use strict';exports.sort=function(f,d){return function(r,e,i){if(0\u003Cr.length){var t,n=d.suffixes,a=n[0]&&n[0][0]?n[0][0]:'string',s=!!n[1]&&-1!==n[1].indexOf('reverse'),n=!!n[1]&&-1!==n[1].indexOf('casesensitive'),u=r.toArray(),l=[],c=new Array(u.length);r.each(function(t){var e=f(d.wiki.makeTiddlerIterator([t]),{getVariable:function(e,r){return(r=r||{}).variables={currentTiddler:''+t,'..currentTiddler':i.getVariable('currentTiddler')},e in r.variables?r.variables[e]:i.getVariable(e,r)}});l.push(e[0]||'')}),r.clear();for(var o=0;o\u003Cu.length;o++)c[o]=o;t=$tw.utils.makeCompareFunction(a,{defaultType:'string',invert:s,isCaseSensitive:n}),c=c.sort(function(e,r){return t(l[e],l[r])}),$tw.utils.each(c,function(e){r.push(u[e])})}}}}();\",\"type\":\"application/javascript\",\"module-type\":\"filterrunprefix\"},\"$:/core/modules/filters/addprefix.js\":{\"text\":\"!function(){'use strict';exports.addprefix=function(n,t,r){var u=[];return n(function(n,r){u.push(t.operand+r)}),u}}();\",\"type\":\"application/javascript\",\"module-type\":\"filteroperator\"},\"$:/core/modules/filters/addsuffix.js\":{\"text\":\"!function(){'use strict';exports.addsuffix=function(n,u,t){var r=[];return n(function(n,t){r.push(t+u.operand)}),r}}();\",\"type\":\"application/javascript\",\"module-type\":\"filteroperator\"},\"$:/core/modules/filters/after.js\":{\"text\":\"!function(){'use strict';exports.after=function(n,t,e){var r=[],n=(n(function(n,t){r.push(t)}),r.indexOf(t.operand));return-1===n||r.length-2\u003Cn?[]:[r[n+1]]}}();\",\"type\":\"application/javascript\",\"module-type\":\"filteroperator\"},\"$:/core/modules/filters/all/current.js\":{\"text\":\"!function(){'use strict';exports.current=function(t,e,r){r=r.widget&&r.widget.getVariable('currentTiddler');return r?[r]:[]}}();\",\"type\":\"application/javascript\",\"module-type\":\"allfilteroperator\"},\"$:/core/modules/filters/all/missing.js\":{\"text\":\"!function(){'use strict';exports.missing=function(i,s,t){return t.wiki.getMissingTitles()}}();\",\"type\":\"application/javascript\",\"module-type\":\"allfilteroperator\"},\"$:/core/modules/filters/all/orphans.js\":{\"text\":\"!function(){'use strict';exports.orphans=function(t,n,i){return i.wiki.getOrphanTitles()}}();\",\"type\":\"application/javascript\",\"module-type\":\"allfilteroperator\"},\"$:/core/modules/filters/all/shadows.js\":{\"text\":\"!function(){'use strict';exports.shadows=function(t,i,s){return s.wiki.allShadowTitles()}}();\",\"type\":\"application/javascript\",\"module-type\":\"allfilteroperator\"},\"$:/core/modules/filters/all/tags.js\":{\"text\":\"!function(){'use strict';exports.tags=function(t,e,i){return Object.keys(i.wiki.getTagMap())}}();\",\"type\":\"application/javascript\",\"module-type\":\"allfilteroperator\"},\"$:/core/modules/filters/all/tiddlers.js\":{\"text\":\"!function(){'use strict';exports.tiddlers=function(t,i,e){return e.wiki.allTitles()}}();\",\"type\":\"application/javascript\",\"module-type\":\"allfilteroperator\"},\"$:/core/modules/filters/all.js\":{\"text\":\"!function(){'use strict';var n;exports.all=function(e,r,i){n||(n={},$tw.modules.applyMethods('allfilteroperator',n));var t=n,l=new $tw.utils.LinkedList,d=r.operand.split('+');if(1===d.length&&''===d[0])return e;if(1===d.length&&'tiddlers'===d[0])return i.wiki.each;if(1===d.length&&'shadows'===d[0])return i.wiki.eachShadow;if(2===d.length&&'tiddlers'===d[0]&&'shadows'===d[1])return i.wiki.eachTiddlerPlusShadows;if(2===d.length&&'shadows'===d[0]&&'tiddlers'===d[1])return i.wiki.eachShadowPlusTiddlers;for(var s=0;s\u003Cd.length;s++){var a=t[d[s]];a&&l.pushTop(a(e,r.prefix,i))}return l.makeTiddlerIterator(i.wiki)}}();\",\"type\":\"application/javascript\",\"module-type\":\"filteroperator\"},\"$:/core/modules/filters/backlinks.js\":{\"text\":\"!function(){'use strict';exports.backlinks=function(i,t,n){var e=new $tw.utils.LinkedList;return i(function(i,t){e.pushTop(n.wiki.getTiddlerBacklinks(t))}),e.makeTiddlerIterator(n.wiki)}}();\",\"type\":\"application/javascript\",\"module-type\":\"filteroperator\"},\"$:/core/modules/filters/before.js\":{\"text\":\"!function(){'use strict';exports.before=function(n,e,r){var t=[],n=(n(function(n,e){t.push(e)}),t.indexOf(e.operand));return n\u003C=0?[]:[t[n-1]]}}();\",\"type\":\"application/javascript\",\"module-type\":\"filteroperator\"},\"$:/core/modules/filters/commands.js\":{\"text\":\"!function(){'use strict';exports.commands=function(t,n,s){var c=[];return $tw.utils.each($tw.commands,function(t,n){c.push(n)}),c.sort(),c}}();\",\"type\":\"application/javascript\",\"module-type\":\"filteroperator\"},\"$:/core/modules/filters/compare.js\":{\"text\":\"!function(){'use strict';exports.compare=function(n,e,t){var r=e.suffixes||[],u=(r[0]||[])[0],r=(r[1]||[])[0],i=$tw.utils.makeCompareFunction(u,{defaultType:'number'}),o=a[r]||a.eq,f='!'===e.prefix,c=[];return n(function(n,t){o(i(t,e.operand))!==f&&c.push(t)}),c};var a={eq:function(n){return 0===n},ne:function(n){return 0!==n},gteq:function(n){return 0\u003C=n},gt:function(n){return 0\u003Cn},lteq:function(n){return n\u003C=0},lt:function(n){return n\u003C0}}}();\",\"type\":\"application/javascript\",\"module-type\":\"filteroperator\"},\"$:/core/modules/filters/contains.js\":{\"text\":\"!function(){'use strict';exports.contains=function(i,t,n){var e=[],s=t.suffix||'list';return'!'===t.prefix?i(function(i,n){i&&-1!==i.getFieldList(s).indexOf(t.operand)||e.push(n)}):i(function(i,n){i&&-1!==i.getFieldList(s).indexOf(t.operand)&&e.push(n)}),e}}();\",\"type\":\"application/javascript\",\"module-type\":\"filteroperator\"},\"$:/core/modules/filters/count.js\":{\"text\":\"!function(){'use strict';exports.count=function(n,t,u){var c=0;return n(function(n,t){c++}),[c+'']}}();\",\"type\":\"application/javascript\",\"module-type\":\"filteroperator\"},\"$:/core/modules/filters/crypto.js\":{\"text\":\"!function(){'use strict';exports.sha256=function(s,t,n){var r=[],c=parseInt(t.operand,10)||20;return s(function(s,t){r.push(sjcl.codec.hex.fromBits(sjcl.hash.sha256.hash(t)).substr(0,c))}),r}}();\",\"type\":\"application/javascript\",\"module-type\":\"filteroperator\"},\"$:/core/modules/filters/days.js\":{\"text\":\"!function(){'use strict';exports.days=function(t,e,s){function i(t){return 0===(t=$tw.utils.sign(a-new Date(t).setHours(0,0,0,0)))||t===f}var n=[],u=e.suffix||'modified',r=parseInt(e.operand,10)||0,f=$tw.utils.sign(r),a=(new Date).setHours(0,0,0,0)+864e5*r;return'!'===e.prefix?(a-=864e5*f,t(function(t,e){t&&t.fields[u]&&(i($tw.utils.parseDate(t.fields[u]))||n.push(e))})):t(function(t,e){t&&t.fields[u]&&i($tw.utils.parseDate(t.fields[u]))&&n.push(e)}),n}}();\",\"type\":\"application/javascript\",\"module-type\":\"filteroperator\"},\"$:/core/modules/filters/deserializers.js\":{\"text\":\"!function(){'use strict';exports.deserializers=function(e,i,t){var r=[];return $tw.utils.each($tw.Wiki.tiddlerDeserializerModules,function(e,i){r.push(i)}),r.sort(),r}}();\",\"type\":\"application/javascript\",\"module-type\":\"filteroperator\"},\"$:/core/modules/filters/duplicateslugs.js\":{\"text\":\"!function(){'use strict';exports.duplicateslugs=function(u,t,n){var s=Object.create(null),c=[];return u(function(u,t){var i=n.wiki.slugify(t);i in s?(!0!==s[i]&&(c.push(s[i]),s[i]=!0),c.push(t)):s[i]=t}),c}}();\",\"type\":\"application/javascript\",\"module-type\":\"filteroperator\"},\"$:/core/modules/filters/each.js\":{\"text\":\"!function(){'use strict';exports.each=function(t,i,u){var n,s=[],e={},o=i.operand||'title';return'value'===i.suffix&&'title'===o?t(function(t,i){$tw.utils.hop(e,i)||(e[i]=!0,s.push(i))}):'list-item'!==i.suffix?t('title'===o?function(t,i){t&&!$tw.utils.hop(e,i)&&(e[i]=!0,s.push(i))}:function(t,i){t&&(n=t.getFieldString(o),$tw.utils.hop(e,n)||(e[n]=!0,s.push(i)))}):t(function(t,i){t&&$tw.utils.each(u.wiki.getTiddlerList(i,o),function(t){$tw.utils.hop(e,t)||(e[t]=!0,s.push(t))})}),s}}();\",\"type\":\"application/javascript\",\"module-type\":\"filteroperator\"},\"$:/core/modules/filters/eachday.js\":{\"text\":\"!function(){'use strict';exports.eachday=function(e,t,s){var i=[],n=[],u=t.operand||'modified';return e(function(e,t){e&&e.fields[u]&&(e=$tw.utils.parseDate(e.fields[u]),e=(e=new Date(e).setHours(0,0,0,0))+0,-1===n.indexOf(e))&&(n.push(e),i.push(t))}),i}}();\",\"type\":\"application/javascript\",\"module-type\":\"filteroperator\"},\"$:/core/modules/filters/editiondescription.js\":{\"text\":\"!function(){'use strict';exports.editiondescription=function(t,i,n){var o,e=[];return $tw.node&&(o=$tw.utils.getEditionInfo())&&t(function(t,i){$tw.utils.hop(o,i)&&e.push(o[i].description||'')}),e}}();\",\"type\":\"application/javascript\",\"module-type\":\"filteroperator\"},\"$:/core/modules/filters/editions.js\":{\"text\":\"!function(){'use strict';exports.editions=function(t,n,i){var o,s=[];return $tw.node&&((o=$tw.utils.getEditionInfo())&&$tw.utils.each(o,function(t,n){s.push(n)}),s.sort()),s}}();\",\"type\":\"application/javascript\",\"module-type\":\"filteroperator\"},\"$:/core/modules/filters/else.js\":{\"text\":\"!function(){'use strict';exports.else=function(n,t,e){var r=[];return n(function(n,t){r.push(t)}),0===r.length?[t.operand]:r}}();\",\"type\":\"application/javascript\",\"module-type\":\"filteroperator\"},\"$:/core/modules/filters/decodeuricomponent.js\":{\"text\":\"!function(){'use strict';exports.decodeuricomponent=function(n,t,e){var u=[];return n(function(n,t){u.push($tw.utils.decodeURIComponentSafe(t))}),u},exports.encodeuricomponent=function(n,t,e){var u=[];return n(function(n,t){u.push(encodeURIComponent(t))}),u},exports.decodeuri=function(n,t,e){var u=[];return n(function(n,t){u.push($tw.utils.decodeURISafe(t))}),u},exports.encodeuri=function(n,t,e){var u=[];return n(function(n,t){u.push(encodeURI(t))}),u},exports.decodehtml=function(n,t,e){var u=[];return n(function(n,t){u.push($tw.utils.htmlDecode(t))}),u},exports.encodehtml=function(n,t,e){var u=[];return n(function(n,t){u.push($tw.utils.htmlEncode(t))}),u},exports.stringify=function(n,e,t){var u=[];return n(function(n,t){u.push($tw.utils.stringify(t,'rawunicode'===e.suffix))}),u},exports.jsonstringify=function(n,e,t){var u=[];return n(function(n,t){u.push($tw.utils.jsonStringify(t,'rawunicode'===e.suffix))}),u},exports.escaperegexp=function(n,t,e){var u=[];return n(function(n,t){u.push($tw.utils.escapeRegExp(t))}),u},exports.escapecss=function(n,t,e){var u=[];return n(function(n,t){u.push($tw.utils.escapeCSS(t))}),u}}();\",\"type\":\"application/javascript\",\"module-type\":\"filteroperator\"},\"$:/core/modules/filters/enlist.js\":{\"text\":\"!function(){'use strict';exports.enlist=function(r,e,t){var i=!1;switch(e.suffix){case'raw':i=!0;break;case'dedupe':i=!1}var n,s=$tw.utils.parseStringArray(e.operand,i);return'!'===e.prefix?(n=[],r(function(r,e){-1===s.indexOf(e)&&n.push(e)}),n):s}}();\",\"type\":\"application/javascript\",\"module-type\":\"filteroperator\"},\"$:/core/modules/filters/field.js\":{\"text\":\"!function(){'use strict';exports.field=function(e,i,n){var r,t=[],l=i.suffix||i.operator||'title';if('!'===i.prefix)i.regexp?e(function(e,n){e&&(null===(e=e.getFieldString(l))||i.regexp.exec(e))||t.push(n)}):e(function(e,n){e&&(null===(e=e.getFieldString(l))||e===i.operand)||t.push(n)});else if(i.regexp)e(function(e,n){e&&null!==(e=e.getFieldString(l))&&i.regexp.exec(e)&&t.push(n)});else{if(e.byField&&i.operand&&(r=e.byField(l,i.operand)))return r;e(function(e,n){e&&null!==(e=e.getFieldString(l))&&e===i.operand&&t.push(n)})}return t}}();\",\"type\":\"application/javascript\",\"module-type\":\"filteroperator\"},\"$:/core/modules/filters/fields.js\":{\"text\":\"!function(){'use strict';exports.fields=function(i,e,f){var s,n=[],t=(e.suffixes||[])[0]||[],u=$tw.utils.parseStringArray(e.operand);return i(function(i,e){if(i)if(-1!==t.indexOf('include'))for(s in i.fields)-1!==u.indexOf(s)&&$tw.utils.pushTop(n,s);else if(-1!==t.indexOf('exclude'))for(s in i.fields)-1===u.indexOf(s)&&$tw.utils.pushTop(n,s);else for(s in i.fields)$tw.utils.pushTop(n,s)}),n}}();\",\"type\":\"application/javascript\",\"module-type\":\"filteroperator\"},\"$:/core/modules/filters/filter.js\":{\"text\":\"!function(){'use strict';exports.filter=function(e,r,t){var i=t.wiki.compileFilter(r.operand),n=[],a='!'!==r.prefix;return e(function(e,r){0\u003Ci.call(t.wiki,t.wiki.makeTiddlerIterator([r]),{getVariable:function(e){switch(e){case'currentTiddler':return''+r;case'..currentTiddler':return t.widget.getVariable('currentTiddler');default:return t.widget.getVariable(e)}}}).length==a&&n.push(r)}),n}}();\",\"type\":\"application/javascript\",\"module-type\":\"filteroperator\"},\"$:/core/modules/filters/format/date.js\":{\"text\":\"!function(){'use strict';exports.date=function(t,n,i){var a=[];return t(function(t,i){i=$tw.utils.parseDate(i);i&&$tw.utils.isDate(i)&&'Invalid Date'!==i.toString()&&a.push($tw.utils.formatDateString(i,n||'YYYY MM DD 0hh:0mm'))}),a}}();\",\"type\":\"application/javascript\",\"module-type\":\"formatfilteroperator\"},\"$:/core/modules/filters/format/json.js\":{\"text\":\"!function(){'use strict';exports.json=function(t,n,r){var s=[],i=null;return n&&(i=/^\\\\d+$/.test(n)?parseInt(n,10):n),t(function(t,n){var r=$tw.utils.parseJSONSafe(n);try{r=JSON.parse(n)}catch(t){r=void 0}void 0!==r&&s.push(JSON.stringify(r,null,i))}),s}}();\",\"type\":\"application/javascript\",\"module-type\":\"formatfilteroperator\"},\"$:/core/modules/filters/format/relativedate.js\":{\"text\":\"!function(){'use strict';exports.relativedate=function(t,e,i){var a=[];return t(function(t,e){e=$tw.utils.parseDate(e);e&&$tw.utils.isDate(e)&&'Invalid Date'!==e.toString()&&a.push($tw.utils.getRelativeDate(new Date-new Date(e)).description)}),a}}();\",\"type\":\"application/javascript\",\"module-type\":\"formatfilteroperator\"},\"$:/core/modules/filters/format/titlelist.js\":{\"text\":\"!function(){'use strict';exports.titlelist=function(t,i,n){var s=[];return t(function(t,i){i&&i.length&&s.push($tw.utils.stringifyList([i]))}),s}}();\",\"type\":\"application/javascript\",\"module-type\":\"formatfilteroperator\"},\"$:/core/modules/filters/format.js\":{\"text\":\"!function(){'use strict';var f;exports.format=function(r,t,o){f||(f={},$tw.modules.applyMethods('formatfilteroperator',f));var e,a=f;return t.suffix?(a=a[t.suffix])?a(r,t.operand,o):[$tw.language.getString('Error/FormatFilterOperator')]:(e=[],r(function(r,t){e.push(t)}),e)}}();\",\"type\":\"application/javascript\",\"module-type\":\"filteroperator\"},\"$:/core/modules/filters/get.js\":{\"text\":\"!function(){'use strict';exports.get=function(t,e,n){var r=[];return t(function(t,n){t&&(t=t.getFieldString(e.operand))&&r.push(t)}),r}}();\",\"type\":\"application/javascript\",\"module-type\":\"filteroperator\"},\"$:/core/modules/filters/getindex.js\":{\"text\":\"!function(){'use strict';exports.getindex=function(t,i,n){var r,a=[];return i.operand&&t(function(t,e){e=t?t.fields.title:e,(r=n.wiki.extractTiddlerDataItem(t,i.operand))&&a.push(r)}),a}}();\",\"type\":\"application/javascript\",\"module-type\":\"filteroperator\"},\"$:/core/modules/filters/getvariable.js\":{\"text\":\"!function(){'use strict';exports.getvariable=function(t,e,i){var n=[];return t(function(t,e){n.push(i.widget.getVariable(e)||'')}),n}}();\",\"type\":\"application/javascript\",\"module-type\":\"filteroperator\"},\"$:/core/modules/filters/has.js\":{\"text\":\"!function(){'use strict';exports.has=function(e,i,n){var u=[],t='!'===i.prefix;return'field'===i.suffix?e(t?function(e,t){e&&$tw.utils.hop(e.fields,i.operand)||u.push(t)}:function(e,t){e&&$tw.utils.hop(e.fields,i.operand)&&u.push(t)}):'index'===i.suffix?e(t?function(e,t){e&&$tw.utils.hop(n.wiki.getTiddlerDataCached(e,Object.create(null)),i.operand)||u.push(t)}:function(e,t){e&&$tw.utils.hop(n.wiki.getTiddlerDataCached(e,Object.create(null)),i.operand)&&u.push(t)}):e(t?function(e,t){e&&$tw.utils.hop(e.fields,i.operand)&&0!==e.fields[i.operand].length||u.push(t)}:function(e,t){e&&$tw.utils.hop(e.fields,i.operand)&&0!==e.fields[i.operand].length&&u.push(t)}),u}}();\",\"type\":\"application/javascript\",\"module-type\":\"filteroperator\"},\"$:/core/modules/filters/haschanged.js\":{\"text\":\"!function(){'use strict';exports.haschanged=function(n,t,i){var u=[];return'!'===t.prefix?n(function(n,t){0===i.wiki.getChangeCount(t)&&u.push(t)}):n(function(n,t){0\u003Ci.wiki.getChangeCount(t)&&u.push(t)}),u}}();\",\"type\":\"application/javascript\",\"module-type\":\"filteroperator\"},\"$:/core/modules/filters/indexes.js\":{\"text\":\"!function(){'use strict';exports.indexes=function(t,e,i){var n=[];return t(function(t,e){e=i.wiki.getTiddlerDataCached(e);e&&$tw.utils.pushTop(n,Object.keys(e))}),n.sort(),n}}();\",\"type\":\"application/javascript\",\"module-type\":\"filteroperator\"},\"$:/core/modules/filters/insertafter.js\":{\"text\":\"!function(){'use strict';exports.insertafter=function(e,n,r){var i=[],e=(e(function(e,n){i.push(n)}),n.operands[1]||r.widget&&r.widget.getVariable(n.suffix||'currentTiddler'));return e!==n.operand&&(-1!==(r=i.indexOf(n.operand))&&i.splice(r,1),-1!==(r=i.indexOf(e))?i.splice(r+1,0,n.operand):'start'===(1\u003Cn.operands.length?n.suffix:'')?i.splice(0,0,n.operand):i.push(n.operand)),i}}();\",\"type\":\"application/javascript\",\"module-type\":\"filteroperator\"},\"$:/core/modules/filters/insertbefore.js\":{\"text\":\"!function(){'use strict';exports.insertbefore=function(e,n,r){var i=[],e=(e(function(e,n){i.push(n)}),n.operands[1]||r.widget&&r.widget.getVariable(n.suffix||'currentTiddler'));return e!==n.operand&&(-1!==(r=i.indexOf(n.operand))&&i.splice(r,1),-1!==(r=i.indexOf(e))?i.splice(r,0,n.operand):'start'==(1\u003Cn.operands.length?n.suffix:'')?i.splice(0,0,n.operand):i.push(n.operand)),i}}();\",\"type\":\"application/javascript\",\"module-type\":\"filteroperator\"},\"$:/core/modules/filters/is/binary.js\":{\"text\":\"!function(){'use strict';exports.binary=function(i,n,r){var t=[];return i('!'===n?function(i,n){r.wiki.isBinaryTiddler(n)||t.push(n)}:function(i,n){r.wiki.isBinaryTiddler(n)&&t.push(n)}),t}}();\",\"type\":\"application/javascript\",\"module-type\":\"isfilteroperator\"},\"$:/core/modules/filters/is/blank.js\":{\"text\":\"!function(){'use strict';exports.blank=function(n,t,u){var c=[];return n('!'===t?function(n,t){t&&c.push(t)}:function(n,t){t||c.push(t)}),c}}();\",\"type\":\"application/javascript\",\"module-type\":\"isfilteroperator\"},\"$:/core/modules/filters/is/current.js\":{\"text\":\"!function(){'use strict';exports.current=function(t,n,r){var e=[],u=r.widget&&r.widget.getVariable('currentTiddler');return t('!'===n?function(t,n){n!==u&&e.push(n)}:function(t,n){n===u&&e.push(n)}),e}}();\",\"type\":\"application/javascript\",\"module-type\":\"isfilteroperator\"},\"$:/core/modules/filters/is/draft.js\":{\"text\":\"!function(){'use strict';exports.draft=function(t,n,r){var u=[];return t('!'===n?function(t,n){t&&t.isDraft()||u.push(n)}:function(t,n){t&&t.isDraft()&&u.push(n)}),u}}();\",\"type\":\"application/javascript\",\"module-type\":\"isfilteroperator\"},\"$:/core/modules/filters/is/image.js\":{\"text\":\"!function(){'use strict';exports.image=function(i,n,e){var t=[];return i('!'===n?function(i,n){e.wiki.isImageTiddler(n)||t.push(n)}:function(i,n){e.wiki.isImageTiddler(n)&&t.push(n)}),t}}();\",\"type\":\"application/javascript\",\"module-type\":\"isfilteroperator\"},\"$:/core/modules/filters/is/missing.js\":{\"text\":\"!function(){'use strict';exports.missing=function(i,t,s){var n=[];return i('!'===t?function(i,t){s.wiki.tiddlerExists(t)&&n.push(t)}:function(i,t){s.wiki.tiddlerExists(t)||n.push(t)}),n}}();\",\"type\":\"application/javascript\",\"module-type\":\"isfilteroperator\"},\"$:/core/modules/filters/is/orphan.js\":{\"text\":\"!function(){'use strict';exports.orphan=function(n,i,t){var u=[],e=t.wiki.getOrphanTitles();return n('!'===i?function(n,i){-1===e.indexOf(i)&&u.push(i)}:function(n,i){-1!==e.indexOf(i)&&u.push(i)}),u}}();\",\"type\":\"application/javascript\",\"module-type\":\"isfilteroperator\"},\"$:/core/modules/filters/is/shadow.js\":{\"text\":\"!function(){'use strict';exports.shadow=function(i,n,o){var s=[];return i('!'===n?function(i,n){o.wiki.isShadowTiddler(n)||s.push(n)}:function(i,n){o.wiki.isShadowTiddler(n)&&s.push(n)}),s}}();\",\"type\":\"application/javascript\",\"module-type\":\"isfilteroperator\"},\"$:/core/modules/filters/is/system.js\":{\"text\":\"!function(){'use strict';exports.system=function(i,s,t){var n=[];return i('!'===s?function(i,s){t.wiki.isSystemTiddler(s)||n.push(s)}:function(i,s){t.wiki.isSystemTiddler(s)&&n.push(s)}),n}}();\",\"type\":\"application/javascript\",\"module-type\":\"isfilteroperator\"},\"$:/core/modules/filters/is/tag.js\":{\"text\":\"!function(){'use strict';exports.tag=function(t,u,i){var n=[],o=i.wiki.getTagMap();return t('!'===u?function(t,u){$tw.utils.hop(o,u)||n.push(u)}:function(t,u){$tw.utils.hop(o,u)&&n.push(u)}),n}}();\",\"type\":\"application/javascript\",\"module-type\":\"isfilteroperator\"},\"$:/core/modules/filters/is/tiddler.js\":{\"text\":\"!function(){'use strict';exports.tiddler=function(i,t,n){var s=[];return i('!'===t?function(i,t){n.wiki.tiddlerExists(t)||s.push(t)}:function(i,t){n.wiki.tiddlerExists(t)&&s.push(t)}),s}}();\",\"type\":\"application/javascript\",\"module-type\":\"isfilteroperator\"},\"$:/core/modules/filters/is/variable.js\":{\"text\":\"!function(){'use strict';exports.variable=function(i,t,e){var n=[];return i('!'===t?function(i,t){void 0===e.widget.getVariable(t)&&n.push(t)}:function(i,t){void 0!==e.widget.getVariable(t)&&n.push(t)}),n}}();\",\"type\":\"application/javascript\",\"module-type\":\"isfilteroperator\"},\"$:/core/modules/filters/is.js\":{\"text\":\"!function(){'use strict';var i;exports.is=function(r,t,e){i||(i={},$tw.modules.applyMethods('isfilteroperator',i));var o,n=i;return t.operand?(n=n[t.operand])?n(r,t.prefix,e):[$tw.language.getString('Error/IsFilterOperator')]:(o=[],r(function(r,t){o.push(t)}),o)}}();\",\"type\":\"application/javascript\",\"module-type\":\"filteroperator\"},\"$:/core/modules/filters/json-ops.js\":{\"text\":\"!function(){'use strict';function u(t,r){if(0===r.length||1===r.length&&''===r[0])return t;for(var n=t,e=0;e\u003Cr.length;e++)void 0!==n&&(n=n[r[e]]);return n}exports.jsonget=function(t,n,r){var e=[];return t(function(t,r){var r=$tw.utils.parseJSONSafe(r,r);r&&void 0!==(r=function r(n){{if(void 0===n)return;if(null===n)return['null'];if('object'==typeof n){var t,e,u=[];if($tw.utils.isArray(n))for(t=0;t\u003Cn.length;t++)void 0!==(e=r(n[t]))&&u.push.apply(u,e);else $tw.utils.each(Object.keys(n).sort(),function(t){void 0!==(e=r(n[t]))&&u.push.apply(u,e)});return u}}return[n.toString()]}(u(r,n.operands)))&&e.push.apply(e,r)}),e},exports.jsonextract=function(t,n,r){var e=[];return t(function(t,r){var r=$tw.utils.parseJSONSafe(r,r);r&&void 0!==(r=u(r,n.operands))&&e.push(JSON.stringify(r))}),e},exports.jsonindexes=function(t,n,r){var e=[];return t(function(t,r){var r=$tw.utils.parseJSONSafe(r,r);r&&void 0!==(r=function(t){{if(void 0===t)return t;if('object'==typeof t){if(null===t)return[];var r=[];if($tw.utils.isArray(t))for(var n=0;n\u003Ct.length;n++)r.push(n.toString());else $tw.utils.each(Object.keys(t).sort(),function(t){r.push(t)});return r}}return[]}(u(r,n.operands)))&&e.push.apply(e,r)}),e},exports.jsontype=function(t,n,r){var e=[];return t(function(t,r){var r=$tw.utils.parseJSONSafe(r,r);r&&void 0!==(r=function(t,r){t=u(t,r);return void 0===t?t:null===t?'null':$tw.utils.isArray(t)?'array':'object'==typeof t?'object':typeof t}(r,n.operands))&&e.push(r)}),e}}();\",\"type\":\"application/javascript\",\"module-type\":\"filteroperator\"},\"$:/core/modules/filters/limit.js\":{\"text\":\"!function(){'use strict';exports.limit=function(n,t,i){var e=[],n=(n(function(n,t){e.push(t)}),Math.min(e.length,parseInt(t.operand,10)));return e='!'===t.prefix?e.slice(-n):e.slice(0,n)}}();\",\"type\":\"application/javascript\",\"module-type\":\"filteroperator\"},\"$:/core/modules/filters/links.js\":{\"text\":\"!function(){'use strict';exports.links=function(i,t,n){var e=new $tw.utils.LinkedList;return i(function(i,t){e.pushTop(n.wiki.getTiddlerLinks(t))}),e.makeTiddlerIterator(n.wiki)}}();\",\"type\":\"application/javascript\",\"module-type\":\"filteroperator\"},\"$:/core/modules/filters/list.js\":{\"text\":\"!function(){'use strict';exports.list=function(e,i,t){var r=[],n=$tw.utils.parseTextReference(i.operand),d=t.widget&&t.widget.getVariable('currentTiddler'),s=t.wiki.getTiddlerList(n.title||d,n.field,n.index);return'!'===i.prefix?e(function(e,i){-1===s.indexOf(i)&&r.push(i)}):r=s,r}}();\",\"type\":\"application/javascript\",\"module-type\":\"filteroperator\"},\"$:/core/modules/filters/listed.js\":{\"text\":\"!function(){'use strict';exports.listed=function(i,t,n){var s=t.operand||'list',r=[];return i(function(i,t){$tw.utils.pushTop(r,n.wiki.findListingsOfTiddler(t,s))}),r}}();\",\"type\":\"application/javascript\",\"module-type\":\"filteroperator\"},\"$:/core/modules/filters/listops.js\":{\"text\":\"!function(){'use strict';exports.order=function(t,n,r){var e=[];return'reverse'===n.operand.toLowerCase()?t(function(t,n){e.unshift(n)}):t(function(t,n){e.push(n)}),e},exports.reverse=function(t,n,r){var e=[];return t(function(t,n){e.unshift(n)}),e},exports.first=function(t,n,r){var n=$tw.utils.getInt(n.operand,1),e=[];return t(function(t,n){e.push(n)}),e.slice(0,n)},exports.last=function(t,n,r){var n=$tw.utils.getInt(n.operand,1),e=[];return t(function(t,n){e.push(n)}),e.slice(-n)},exports.rest=function(t,n,r){var n=$tw.utils.getInt(n.operand,1),e=[];return t(function(t,n){e.push(n)}),e.slice(n)},exports.butfirst=exports.rest,exports.bf=exports.rest,exports.butlast=function(t,n,r){var n=$tw.utils.getInt(n.operand,1),e=[],t=(t(function(t,n){e.push(n)}),0===n?e.length:-n);return e.slice(0,t)},exports.bl=exports.butlast,exports.nth=function(t,n,r){var n=$tw.utils.getInt(n.operand,1),e=[];return t(function(t,n){e.push(n)}),e.slice(n-1,n)},exports.zth=function(t,n,r){var n=$tw.utils.getInt(n.operand,0),e=[];return t(function(t,n){e.push(n)}),e.slice(n,n+1)}}();\",\"type\":\"application/javascript\",\"module-type\":\"filteroperator\"},\"$:/core/modules/filters/lookup.js\":{\"text\":\"!function(){'use strict';exports.lookup=function(e,n,r){var d=[],t=n.suffixes||[],o=t[0]&&t[0][0]||'',t=!(!t[1]||'index'!==t[1][0]),s=2==n.operands.length?n.operands[1]:t?'0':'text';return e(t?function(e,t){t=r.wiki.extractTiddlerDataItem(n.operands[0]+t,s,o);d.push(t)}:function(e,t){var i=o,t=r.wiki.getTiddler(n.operands[0]+t);t&&t.getFieldString(s)&&(i=t.getFieldString(s)),d.push(i)}),d}}();\",\"type\":\"application/javascript\",\"module-type\":\"filteroperator\"},\"$:/core/modules/filters/match.js\":{\"text\":\"!function(){'use strict';exports.match=function(e,o,n){var s=[];return-1!==((o.suffixes||[])[0]||[]).indexOf('caseinsensitive')?'!'===o.prefix?e(function(e,n){n.toLowerCase()!==(o.operand||'').toLowerCase()&&s.push(n)}):e(function(e,n){n.toLowerCase()===(o.operand||'').toLowerCase()&&s.push(n)}):'!'===o.prefix?e(function(e,n){n!==o.operand&&s.push(n)}):e(function(e,n){n===o.operand&&s.push(n)}),s}}();\",\"type\":\"application/javascript\",\"module-type\":\"filteroperator\"},\"$:/core/modules/filters/math.js\":{\"text\":\"!function(){'use strict';var e;function u(t,r){return t.reduce(function(t,n){return t+Math.pow(n-r,2)},0)/t.length}function t(o){return function(t,n,r){var u=[],e=$tw.utils.parseNumber(n.operand);return t(function(t,n){u.push($tw.utils.stringifyNumber(o($tw.utils.parseNumber(n),e)))}),u}}function n(e,o,i){return o=o||0,function(t,n,r){var u=[],t=(t(function(t,n){u.push($tw.utils.parseNumber(n))}),u.reduce(function(t,n){return e(t,n)},o));return i&&(t=i(t,u.length,u)),[$tw.utils.stringifyNumber(t)]}}exports.negate=t(function(t){return-t}),exports.abs=t(function(t){return Math.abs(t)}),exports.ceil=t(function(t){return Math.ceil(t)}),exports.floor=t(function(t){return Math.floor(t)}),exports.round=t(function(t){return Math.round(t)}),exports.trunc=t(function(t){return Math.trunc(t)}),exports.untrunc=t(function(t){return Math.ceil(Math.abs(t))*Math.sign(t)}),exports.sign=t(function(t){return Math.sign(t)}),exports.add=t(function(t,n){return t+n}),exports.subtract=t(function(t,n){return t-n}),exports.multiply=t(function(t,n){return t*n}),exports.divide=t(function(t,n){return t/n}),exports.remainder=t(function(t,n){return t%n}),exports.max=t(function(t,n){return Math.max(t,n)}),exports.min=t(function(t,n){return Math.min(t,n)}),exports.fixed=t(function(t,n){return Number.prototype.toFixed.call(t,Math.min(Math.max(n,0),100))}),exports.precision=t(function(t,n){return Number.prototype.toPrecision.call(t,Math.min(Math.max(n,1),100))}),exports.exponential=t(function(t,n){return Number.prototype.toExponential.call(t,Math.min(Math.max(n,0),100))}),exports.power=t(function(t,n){return Math.pow(t,n)}),exports.log=t(function(t,n){return n?Math.log(t)/Math.log(n):Math.log(t)}),exports.sum=n(function(t,n){return t+n},0),exports.product=n(function(t,n){return t*n},1),exports.maxall=n(function(t,n){return Math.max(t,n)},-1/0),exports.minall=n(function(t,n){return Math.min(t,n)},1/0),exports.median=(e=function(t){var n=t.length;return t.sort(),[n%2?t[(n-1)/2]:(t[n/2-1]+t[n/2])/2]},function(t,n,r){var u=[];return t(function(t,n){u.push($tw.utils.parseNumber(n))}),u=e(u),$tw.utils.each(u,function(t,n){u[n]=$tw.utils.stringifyNumber(t)}),u}),exports.average=n(function(t,n){return t+n},0,function(t,n){return t/n}),exports.variance=n(function(t,n){return t+n},0,function(t,n,r){return u(r,t/n)}),exports['standard-deviation']=n(function(t,n){return t+n},0,function(t,n,r){r=u(r,t/n);return Math.sqrt(r)}),exports.cos=t(function(t){return Math.cos(t)}),exports.sin=t(function(t){return Math.sin(t)}),exports.tan=t(function(t){return Math.tan(t)}),exports.acos=t(function(t){return Math.acos(t)}),exports.asin=t(function(t){return Math.asin(t)}),exports.atan=t(function(t){return Math.atan(t)}),exports.atan2=t(function(t,n){return Math.atan2(t,n)})}();\",\"type\":\"application/javascript\",\"module-type\":\"filteroperator\"},\"$:/core/modules/filters/minlength.js\":{\"text\":\"!function(){'use strict';exports.minlength=function(n,t,e){var r=[],u=parseInt(t.operand||'',10)||0;return n(function(n,t){t.length>=u&&r.push(t)}),r}}();\",\"type\":\"application/javascript\",\"module-type\":\"filteroperator\"},\"$:/core/modules/filters/moduleproperty.js\":{\"text\":\"!function(){'use strict';exports.moduleproperty=function(r,t,o){var e=[];return r(function(r,o){o=require(o)[t.operand||''];void 0!==o&&e.push(o)}),e.sort(),e}}();\",\"type\":\"application/javascript\",\"module-type\":\"filteroperator\"},\"$:/core/modules/filters/modules.js\":{\"text\":\"!function(){'use strict';exports.modules=function(t,e,n){var s=[];return 2\u003C=e.operands.length?t(function(t,n){$tw.utils.each($tw.modules.types[n],function(t,n){require(n)[e.operands[0]]===e.operands[1]&&s.push(n)})}):t(function(t,n){$tw.utils.each($tw.modules.types[n],function(t,n){s.push(n)})}),s.sort(),s}}();\",\"type\":\"application/javascript\",\"module-type\":\"filteroperator\"},\"$:/core/modules/filters/moduletypes.js\":{\"text\":\"!function(){'use strict';exports.moduletypes=function(t,s,u){var e=[];return $tw.utils.each($tw.modules.types,function(t,s){e.push(s)}),e.sort(),e}}();\",\"type\":\"application/javascript\",\"module-type\":\"filteroperator\"},\"$:/core/modules/filters/next.js\":{\"text\":\"!function(){'use strict';exports.next=function(n,t,e){var i=[],r=e.wiki.getTiddlerList(t.operand);return n(function(n,t){t=r.indexOf(t);0\u003C++t&&t\u003Cr.length&&i.push(r[t])}),i}}();\",\"type\":\"application/javascript\",\"module-type\":\"filteroperator\"},\"$:/core/modules/filters/plugintiddlers.js\":{\"text\":\"!function(){'use strict';exports.plugintiddlers=function(t,i,e){var n=[];return t(function(t,i){i=e.wiki.getPluginInfo(i)||e.wiki.getTiddlerDataCached(i,{tiddlers:[]});i&&i.tiddlers&&$tw.utils.each(i.tiddlers,function(t,i){n.push(i)})}),n.sort(),n}}();\",\"type\":\"application/javascript\",\"module-type\":\"filteroperator\"},\"$:/core/modules/filters/prefix.js\":{\"text\":\"!function(){'use strict';exports.prefix=function(e,s,n){var t,r=[];return-1!==((s.suffixes||[])[0]||[]).indexOf('caseinsensitive')?(t=s.operand.toLowerCase(),'!'===s.prefix?e(function(e,n){n.toLowerCase().substr(0,t.length)!==t&&r.push(n)}):e(function(e,n){n.toLowerCase().substr(0,t.length)===t&&r.push(n)})):'!'===s.prefix?e(function(e,n){n.substr(0,s.operand.length)!==s.operand&&r.push(n)}):e(function(e,n){n.substr(0,s.operand.length)===s.operand&&r.push(n)}),r}}();\",\"type\":\"application/javascript\",\"module-type\":\"filteroperator\"},\"$:/core/modules/filters/previous.js\":{\"text\":\"!function(){'use strict';exports.previous=function(i,n,t){var e=[],r=t.wiki.getTiddlerList(n.operand);return i(function(i,n){n=r.indexOf(n);0\u003C=--n&&e.push(r[n])}),e}}();\",\"type\":\"application/javascript\",\"module-type\":\"filteroperator\"},\"$:/core/modules/filters/range.js\":{\"text\":\"!function(){'use strict';exports.range=function(e,r,t){var a=[],n=r.operands||[];1===n.length&&(n=r.operand.split(/[,:;]/g));for(var s,i,o,u=0,f=0;f\u003Cn.length;f++){if(!/^\\\\s*[+-]?((\\\\d+(\\\\.\\\\d*)?)|(\\\\.\\\\d+))\\\\s*$/.test(n[f]))return['range: bad number \\\"'+n[f]+'\\\"'];var p=/\\\\.\\\\d+/.exec(n[f]);p&&(u=Math.max(u,p[0].length-1)),n[f]=parseFloat(n[f])}switch(n.length){case 1:if(1\u003C=(i=n[0]))s=1;else{if(!(i\u003C=-1))return[];s=-1}o=1;break;case 2:s=n[0],i=n[1],o=1;break;case 3:s=n[0],i=n[1],o=Math.abs(n[2])}if(0===o)return['range: increment 0 causes infinite loop'];var c=i\u003Cs?-1:1;if(1e4\u003C(i-s)/(o*=c))return['range: too many steps (over 10K)'];var g=10010;if((i+=.5*c*Math.pow(.1,u))\u003Cs)for(f=s;i\u003Cf&&(a.push(f.toFixed(u)),!(--g\u003C0));f+=o);else for(f=s;f\u003Ci&&(a.push(f.toFixed(u)),!(--g\u003C0));f+=o);return g\u003C0?['range: unexpectedly large output']:('!'===r.prefix&&a.reverse(),a)}}();\",\"type\":\"application/javascript\",\"module-type\":\"filteroperator\"},\"$:/core/modules/filters/reduce.js\":{\"text\":\"!function(){'use strict';exports.reduce=function(e,r,t){for(var n=[],i=(e(function(e,r){n.push(r)}),t.wiki.compileFilter(r.operand)),a=r.operands[1]||'',u=0;u\u003Cn.length;u++){var c=n[u],l=i.call(t.wiki,t.wiki.makeTiddlerIterator([c]),{getVariable:function(e){switch(e){case'currentTiddler':return''+c;case'..currentTiddler':return t.widget.getVariable('currentTiddler');case'accumulator':return''+a;case'index':return''+u;case'revIndex':return''+(n.length-1-u);case'length':return''+n.length;default:return t.widget.getVariable(e)}}});0\u003Cl.length&&(a=''+l[0])}return 0\u003Cn.length?[a]:[]}}();\",\"type\":\"application/javascript\",\"module-type\":\"filteroperator\"},\"$:/core/modules/filters/regexp.js\":{\"text\":\"!function(){'use strict';exports.regexp=function(e,t,n){function u(e,t){return e?e.getFieldString(c):'title'===c?t:null}var r,i=[],c=t.suffix||'title',l='',s=t.operand,g=/^\\\\(\\\\?([gim]+)\\\\)/.exec(s);g?(l=g[1],s=s.substr(g[0].length)):(g=/\\\\(\\\\?([gim]+)\\\\)$/.exec(s))&&(l=g[1],s=s.substr(0,s.length-g[0].length));try{r=new RegExp(s,l)}catch(e){return[''+e]}return'!'===t.prefix?e(function(e,t){e=u(e,t);null===e||r.exec(e)||i.push(t)}):e(function(e,t){e=u(e,t);null!==e&&r.exec(e)&&i.push(t)}),i}}();\",\"type\":\"application/javascript\",\"module-type\":\"filteroperator\"},\"$:/core/modules/filters/removeprefix.js\":{\"text\":\"!function(){'use strict';exports.removeprefix=function(e,s,n){var t,r=[];return-1!==((s.suffixes||[])[0]||[]).indexOf('caseinsensitive')?(t=s.operand.toLowerCase(),e(function(e,n){n.toLowerCase().substr(0,t.length)===t&&r.push(n.substr(t.length))})):e(function(e,n){n.substr(0,s.operand.length)===s.operand&&r.push(n.substr(s.operand.length))}),r}}();\",\"type\":\"application/javascript\",\"module-type\":\"filteroperator\"},\"$:/core/modules/filters/removesuffix.js\":{\"text\":\"!function(){'use strict';exports.removesuffix=function(e,s,n){var t,r=[],o=(s.suffixes||[])[0]||[];return s.operand?-1!==o.indexOf('caseinsensitive')?(t=s.operand.toLowerCase(),e(function(e,n){n&&n.toLowerCase().substr(-t.length)===t&&r.push(n.substr(0,n.length-t.length))})):e(function(e,n){n&&n.substr(-s.operand.length)===s.operand&&r.push(n.substr(0,n.length-s.operand.length))}):e(function(e,n){r.push(n)}),r}}();\",\"type\":\"application/javascript\",\"module-type\":\"filteroperator\"},\"$:/core/modules/filters/sameday.js\":{\"text\":\"!function(){'use strict';exports.sameday=function(e,t,s){var i=[],n=t.suffix||'modified',u=new Date($tw.utils.parseDate(t.operand)).setHours(0,0,0,0);return e(function(e,t){e&&e.getFieldDay(n)===u&&i.push(t)}),i}}();\",\"type\":\"application/javascript\",\"module-type\":\"filteroperator\"},\"$:/core/modules/filters/search.js\":{\"text\":\"!function(){'use strict';exports.search=function(e,i,s){var r,c,n,t,a,o='!'===i.prefix;return i.suffixes?(c=!(r=function(e){return-1!==(i.suffixes[1]||[]).indexOf(e)}),'-'===(t=(n=i.suffixes[0]||[])[0]||'').charAt(0)?(a=[t.slice(1)].concat(n.slice(1)),c=!0):'*'===n[0]?(a=[],c=!0):a=n.slice(0),s.wiki.search(i.operand,{source:e,invert:o,field:a,excludeField:c,some:r('some'),caseSensitive:r('casesensitive'),literal:r('literal'),whitespace:r('whitespace'),anchored:r('anchored'),regexp:r('regexp'),words:r('words')})):s.wiki.search(i.operand,{source:e,invert:o})}}();\",\"type\":\"application/javascript\",\"module-type\":\"filteroperator\"},\"$:/core/modules/filters/shadowsource.js\":{\"text\":\"!function(){'use strict';exports.shadowsource=function(t,o,u){var r=[];return t(function(t,o){o=u.wiki.getShadowSource(o);o&&$tw.utils.pushTop(r,o)}),r.sort(),r}}();\",\"type\":\"application/javascript\",\"module-type\":\"filteroperator\"},\"$:/core/modules/filters/slugify.js\":{\"text\":\"!function(){'use strict';exports.slugify=function(i,u,n){var t=[];return i(function(i,u){t.push(n.wiki.slugify(u))}),t}}();\",\"type\":\"application/javascript\",\"module-type\":\"filteroperator\"},\"$:/core/modules/filters/sort.js\":{\"text\":\"!function(){'use strict';exports.sort=function(r,t,i){r=e(r);return i.wiki.sortTiddlers(r,t.operand||'title','!'===t.prefix,!1,!1),r},exports.nsort=function(r,t,i){r=e(r);return i.wiki.sortTiddlers(r,t.operand||'title','!'===t.prefix,!1,!0),r},exports.sortan=function(r,t,i){r=e(r);return i.wiki.sortTiddlers(r,t.operand||'title','!'===t.prefix,!1,!1,!0),r},exports.sortcs=function(r,t,i){r=e(r);return i.wiki.sortTiddlers(r,t.operand||'title','!'===t.prefix,!0,!1),r},exports.nsortcs=function(r,t,i){r=e(r);return i.wiki.sortTiddlers(r,t.operand||'title','!'===t.prefix,!0,!0),r};var e=function(r){var i=[];return r(function(r,t){i.push(t)}),i}}();\",\"type\":\"application/javascript\",\"module-type\":\"filteroperator\"},\"$:/core/modules/filters/sortsub.js\":{\"text\":\"!function(){'use strict';exports.sortsub=function(e,r,i){for(var n=i.wiki.compileFilter(r.operand),u=[],a=[],t=(e(function(e,r){u.push(r);var t=n.call(i.wiki,function(e){e(i.wiki.getTiddler(r),r)},{getVariable:function(e){switch(e){case'currentTiddler':return''+r;case'..currentTiddler':return i.widget.getVariable('currentTiddler');default:return i.widget.getVariable(e)}}});a.push(t[0]||'')}),new Array(u.length)),c=0;c\u003Cu.length;c++)t[c]=c;var l=$tw.utils.makeCompareFunction(r.suffix,{defaultType:'string',invert:'!'===r.prefix}),t=t.sort(function(e,r){return l(a[e],a[r])}),s=[];return $tw.utils.each(t,function(e){s.push(u[e])}),s}}();\",\"type\":\"application/javascript\",\"module-type\":\"filteroperator\"},\"$:/core/modules/filters/splitbefore.js\":{\"text\":\"!function(){'use strict';exports.splitbefore=function(t,o,n){var p=[];return t(function(t,n){n=n.split(o.operand);1===n.length?$tw.utils.pushTop(p,n[0]):$tw.utils.pushTop(p,n[0]+o.operand)}),p}}();\",\"type\":\"application/javascript\",\"module-type\":\"filteroperator\"},\"$:/core/modules/filters/storyviews.js\":{\"text\":\"!function(){'use strict';exports.storyviews=function(t,s,o){var e=[],r={};return $tw.modules.applyMethods('storyview',r),$tw.utils.each(r,function(t,s){e.push(s)}),e.sort(),e}}();\",\"type\":\"application/javascript\",\"module-type\":\"filteroperator\"},\"$:/core/modules/filters/strings.js\":{\"text\":\"!function(){'use strict';var u,i;function t(u){return function(t,n,r){var e=[];return t(function(t,r){Array.prototype.push.apply(e,u(r,n.operand||'',n.suffix||''))}),e}}exports.length=t(function(t){return[''+(''+t).length]}),exports.uppercase=t(function(t){return[(''+t).toUpperCase()]}),exports.lowercase=t(function(t){return[(''+t).toLowerCase()]}),exports.sentencecase=t(function(t){return[$tw.utils.toSentenceCase(t)]}),exports.titlecase=t(function(t){return[$tw.utils.toTitleCase(t)]}),exports.trim=function(t,r,n){var e=[],u=r.suffix||'',i=r.operand||'',o='prefix'===u?function(t,r){return[$tw.utils.trimPrefix(t,r)]}:'suffix'===u?function(t,r){return[$tw.utils.trimSuffix(t,r)]}:''===i?function(t){return[$tw.utils.trim(t)]}:function(t,r){return[$tw.utils.trimSuffix($tw.utils.trimPrefix(t,r),r)]};return t(function(t,r){Array.prototype.push.apply(e,o(r,i))}),e},exports.split=t(function(t,r){return(''+t).split(r)}),exports['enlist-input']=t(function(t,r,n){return $tw.utils.parseStringArray(''+t,'raw'===n)}),exports.join=(u=function(t,r,n){return null===t?r:t+n+r},i=null,function(t,n,r){var e=[];return t(function(t,r){e.push(r)}),0===e.length?[]:[e.reduce(function(t,r){return u(t,r,n.operand||'')},i)||'']}),exports.splitregexp=function(t,r,n){var e,u=[],i=r.suffix||'',i=(-1!==i.indexOf('m')?'m':'')+(-1!==i.indexOf('i')?'i':'');try{e=new RegExp(r.operand||'',i)}catch(t){return['RegExp error: '+t]}return t(function(t,r){Array.prototype.push.apply(u,r.split(e))}),u},exports['search-replace']=function(t,n,r){var e,u=[],i=n.suffixes||[],o=i[0]&&i[0][0]||'',o=(-1!==o.indexOf('g')?'g':'')+(-1!==o.indexOf('i')?'i':'')+(-1!==o.indexOf('m')?'m':''),i=!(!i[1]||'regexp'!==i[1][0]),p=i?n.operand:$tw.utils.escapeRegExp(n.operand),s=i?n.operands[1]:(n.operands[1]||'').replace(/\\\\$/g,'$$$$');try{e=new RegExp(p,o)}catch(t){return['RegExp error: '+t]}return t(function(t,r){r&&1\u003Cn.operands.length?(u.push(r.replace(e,s)),e.lastIndex=0):u.push(r)}),u},exports.pad=function(t,u,r){var i=[],o=u.operand?parseInt(u.operand):0,p=u.operands[1]||'0';return t(function(t,r){if(r&&r.length){if(!(r.length>=o)){for(var n='',e=o-r.length;e>n.length;)n+=p;n=n.slice(0,e),u.suffix&&'suffix'===u.suffix?r+=n:r=n+r}i.push(r)}}),i},exports.charcode=function(t,r,n){var e=[];return $tw.utils.each(r.operands,function(t){''!==t&&e.push(String.fromCharCode($tw.utils.parseInt(t)))}),[e.join('')]}}();\",\"type\":\"application/javascript\",\"module-type\":\"filteroperator\"},\"$:/core/modules/filters/subfilter.js\":{\"text\":\"!function(){'use strict';exports.subfilter=function(i,e,r){var t,n=r.wiki.filterTiddlers(e.operand,r.widget,i);return'!'===e.prefix?(t=[],i(function(i,e){-1===n.indexOf(e)&&t.push(e)}),t):n}}();\",\"type\":\"application/javascript\",\"module-type\":\"filteroperator\"},\"$:/core/modules/filters/subtiddlerfields.js\":{\"text\":\"!function(){'use strict';exports.subtiddlerfields=function(i,e,n){var u=[];return i(function(i,t){t=n.wiki.getSubTiddler(e.operand,t);if(t)for(var r in t.fields)$tw.utils.pushTop(u,r)}),u}}();\",\"type\":\"application/javascript\",\"module-type\":\"filteroperator\"},\"$:/core/modules/filters/suffix.js\":{\"text\":\"!function(){'use strict';exports.suffix=function(n,s,e){var t,o=[],r=(s.suffixes||[])[0]||[];return s.operand?-1!==r.indexOf('caseinsensitive')?(t=s.operand.toLowerCase(),'!'===s.prefix?n(function(n,e){e.toLowerCase().substr(-t.length)!==t&&o.push(e)}):n(function(n,e){e.toLowerCase().substr(-t.length)===t&&o.push(e)})):'!'===s.prefix?n(function(n,e){e.substr(-s.operand.length)!==s.operand&&o.push(e)}):n(function(n,e){e.substr(-s.operand.length)===s.operand&&o.push(e)}):n(function(n,e){o.push(e)}),o}}();\",\"type\":\"application/javascript\",\"module-type\":\"filteroperator\"},\"$:/core/modules/filters/tag.js\":{\"text\":\"!function(){'use strict';exports.tag=function(i,e,t){var n,r,s=[];if('strict'!==(e.suffix||'').toLowerCase()||e.operand)if('!'===e.prefix)r=t.wiki.getTiddlersWithTag(e.operand),i(function(i,e){-1===r.indexOf(e)&&s.push(e)});else if(i.byTag){if(n=i.byTag(e.operand))return n}else r=t.wiki.getTiddlersWithTag(e.operand),i(function(i,e){-1!==r.indexOf(e)&&s.push(e)}),s=t.wiki.sortByList(s,e.operand);else i(function(i,e){s.push(e)});return s}}();\",\"type\":\"application/javascript\",\"module-type\":\"filteroperator\"},\"$:/core/modules/filters/tagging.js\":{\"text\":\"!function(){'use strict';exports.tagging=function(t,i,n){var u=[];return t(function(t,i){$tw.utils.pushTop(u,n.wiki.getTiddlersWithTag(i))}),u}}();\",\"type\":\"application/javascript\",\"module-type\":\"filteroperator\"},\"$:/core/modules/filters/tags.js\":{\"text\":\"!function(){'use strict';exports.tags=function(t,s,e){var i={};return t(function(t,s){var e,f;if(t&&t.fields.tags)for(e=0,f=t.fields.tags.length;e\u003Cf;e++)i[t.fields.tags[e]]=!0}),Object.keys(i)}}();\",\"type\":\"application/javascript\",\"module-type\":\"filteroperator\"},\"$:/core/modules/filters/then.js\":{\"text\":\"!function(){'use strict';exports.then=function(n,r,t){var u=[];return n(function(n,t){u.push(r.operand)}),u}}();\",\"type\":\"application/javascript\",\"module-type\":\"filteroperator\"},\"$:/core/modules/filters/title.js\":{\"text\":\"!function(){'use strict';exports.title=function(t,n,e){var i=[];return'!'===n.prefix?t(function(t,e){t&&t.fields.title!==n.operand&&i.push(e)}):i.push(n.operand),i}}();\",\"type\":\"application/javascript\",\"module-type\":\"filteroperator\"},\"$:/core/modules/filters/untagged.js\":{\"text\":\"!function(){'use strict';exports.untagged=function(t,s,i){var n=[],e='!'===s.prefix;return t(function(t,s){(t&&$tw.utils.isArray(t.fields.tags)&&0\u003Ct.fields.tags.length)!==e&&(t||e)||n.push(s)}),n}}();\",\"type\":\"application/javascript\",\"module-type\":\"filteroperator\"},\"$:/core/modules/filters/variables.js\":{\"text\":\"!function(){'use strict';exports.variables=function(r,a,e){for(var i=[],t=e.widget;t&&!t.hasOwnProperty('variables');)t=t.parentWidget;if(t&&t.variables)for(var s in t.variables)i.push(s);return i.sort()}}();\",\"type\":\"application/javascript\",\"module-type\":\"filteroperator\"},\"$:/core/modules/filters/wikiparserrules.js\":{\"text\":\"!function(){'use strict';exports.wikiparserrules=function(t,e,r){var s=[],u=e.operand;return $tw.utils.each($tw.modules.types.wikirule,function(t){t=t.exports;u&&!t.types[u]||s.push(t.name)}),s.sort(),s}}();\",\"type\":\"application/javascript\",\"module-type\":\"filteroperator\"},\"$:/core/modules/filters/x-listops.js\":{\"text\":\"!function(){'use strict';function o(e){var n=[];return e(function(e,t){n.push(t)}),n}function r(e,t,n){for(var r,n=n||1,i=0,s=t.length;i\u003Cs&&-1===(r=e.indexOf(t[i]));i++);return-1!==r?(i+=n,1\u003Ct.length?e.splice(r,1,t[i\u003Cs?i:i-s]):e.splice(r,1)):e.push(t[0]),e}exports.putbefore=function(e,t){var e=o(e),n=e.indexOf(t.operand),t=$tw.utils.getInt(t.suffix,1);return-1===n?e.slice(0,-1):e.slice(0,n).concat(e.slice(-t)).concat(e.slice(n,-t))},exports.putafter=function(e,t){var e=o(e),n=e.indexOf(t.operand),t=$tw.utils.getInt(t.suffix,1);return-1===n?e.slice(0,-1):e.slice(0,n+1).concat(e.slice(-t)).concat(e.slice(n+1,-t))},exports.replace=function(e,t){var e=o(e),n=e.indexOf(t.operand),t=$tw.utils.getInt(t.suffix,1);return-1===n?e.slice(0,-t):e.slice(0,n).concat(e.slice(-t)).concat(e.slice(n+1,-t))},exports.putfirst=function(e,t){e=o(e),t=$tw.utils.getInt(t.suffix,1);return e.slice(-t).concat(e.slice(0,-t))},exports.putlast=function(e,t){e=o(e),t=$tw.utils.getInt(t.suffix,1);return e.slice(t).concat(e.slice(0,t))},exports.move=function(e,t){var e=o(e),n=e.indexOf(t.operand),t=$tw.utils.getInt(t.suffix,1),r=e.splice(n,1),n=0\u003Cn+t?n+t:0;return e.slice(0,n).concat(r).concat(e.slice(n))},exports.allafter=function(e,t){var e=o(e),n=e.indexOf(t.operand);return-1===n?[]:t.suffix?e.slice(n):e.slice(n+1)},exports.allbefore=function(e,t){var e=o(e),n=e.indexOf(t.operand);return-1===n?[]:t.suffix?e.slice(0,n+1):e.slice(0,n)},exports.append=function(e,t){var n=$tw.utils.parseStringArray(t.operand,'true'),e=o(e),r=parseInt(t.suffix)||n.length;return 0===n.length?e:t.prefix?e.concat(n.slice(-r)):e.concat(n.slice(0,r))},exports.prepend=function(e,t){var n=$tw.utils.parseStringArray(t.operand,'true'),e=o(e),r=$tw.utils.getInt(t.suffix,n.length);return 0===n.length?e:(t.prefix?n.slice(-r):n.slice(0,r)).concat(e)},exports.remove=function(e,t){for(var n,r=$tw.utils.parseStringArray(t.operand,'true'),i=o(e),s=parseInt(t.suffix)||r.length,c=r.length-1,u=0;u\u003Cs;++u)-1!==(n=t.prefix?i.indexOf(r[c-u]):i.indexOf(r[u]))&&i.splice(n,1);return i},exports.sortby=function(e,t){var n,e=o(e);return!e||e.length\u003C2||(n=$tw.utils.parseStringArray(t.operand,'true'),e.sort(function(e,t){return n.indexOf(e)-n.indexOf(t)})),e},exports.unique=function(e,t){return o(e).reduce(function(e,t){return e.indexOf(t)\u003C0&&e.push(t),e},[])};exports.toggle=function(e,t){return r(o(e),t.operands)},exports.cycle=function(e,t){var e=o(e),n=t.operand.length?$tw.utils.parseStringArray(t.operand,'true'):[''],t=$tw.utils.getInt(t.operands[1]||'',1);return t\u003C0&&(n.reverse(),t=Math.abs(t)),r(e,n,t)}}();\",\"type\":\"application/javascript\",\"module-type\":\"filteroperator\"},\"$:/core/modules/filters.js\":{\"text\":\"!function(){'use strict';exports.parseFilter=function(e){e=e||'';for(var t,r=[],i=0,s=/(\\\\s+)/gm,n=/((?:\\\\+|\\\\-|~|=|\\\\:(\\\\w+)(?:\\\\:([\\\\w\\\\:, ]*))?)?)(?:(\\\\[)|(?:\\\"([^\\\"]*)\\\")|(?:'([^']*)')|([^\\\\s\\\\[\\\\]]+))/gm;i\u003Ce.length;)if(s.lastIndex=i,(t=s.exec(e))&&t.index===i&&(i+=t[0].length),i\u003Ce.length){if(n.lastIndex=i,!(t=n.exec(e))||t.index!==i)throw $tw.language.getString('Error/FilterSyntax');var a={prefix:'',operators:[]};t[1]&&(a.prefix=t[1],i+=a.prefix.length,t[2]&&(a.namedPrefix=t[2]),t[3])&&(a.suffixes=[],$tw.utils.each(t[3].split(':'),function(e){a.suffixes.push([]),$tw.utils.each(e.split(','),function(e){(e=$tw.utils.trim(e))&&a.suffixes[a.suffixes.length-1].push(e)})})),i=t[4]?function(e,s,n){var a,o;if('['!==s.charAt(n++))throw'Missing [ in filter expression';do{if(o={},'!'===s.charAt(n)&&(o.prefix=s.charAt(n++)),-1===(a=s.substring(n).search(/[\\\\[\\\\{\u003C\\\\/]/)))throw'Missing [ in filter expression';a+=n;var t=s.charAt(a),r=(o.operator=s.substring(n,a),o.operator.indexOf(':')),i=(-1\u003Cr?(o.suffix=o.operator.substring(r+1),o.operator=o.operator.substring(0,r)||'field',o.suffixes=[],$tw.utils.each(o.suffix.split(':'),function(e){o.suffixes.push([]),$tw.utils.each(e.split(','),function(e){(e=$tw.utils.trim(e))&&o.suffixes[o.suffixes.length-1].push(e)})})):''===o.operator&&(o.operator='title'),o.operands=[],function(e){var t={};switch(e){case'{':t.indirect=!0,a=s.indexOf('}',n);break;case'[':a=s.indexOf(']',n);break;case'\u003C':t.variable=!0,a=s.indexOf('>',n);break;case'/':var r=/^((?:[^\\\\\\\\\\\\/]|\\\\\\\\.)*)\\\\/(?:\\\\(([mygi]+)\\\\))?/g,i=r.exec(s.substring(n));if(!i)throw'Unterminated regular expression in filter expression';o.regexp=new RegExp(i[1],i[2]),console.log('WARNING: Filter',o.operator,'has a deprecated regexp operand',o.regexp),a=n+r.lastIndex-1}if(-1===a)throw'Missing closing bracket in filter expression';t.text=o.regexp?'':s.substring(n,a),o.operands.push(t),n=a+1});for(n=a+1,i(t);','===s.charAt(n);){if(n++,!/^[\\\\[\\\\{\u003C\\\\/]/.test(s.substring(n)))throw'Missing [ in filter expression';a=n,n++,i(s.charAt(a))}}while(e.push(o),']'!==s.charAt(n));if(']'!==s.charAt(n++))throw'Missing ] in filter expression';return n}(a.operators,e,i):t.index+t[0].length,(t[5]||t[6]||t[7])&&a.operators.push({operator:'title',operands:[{text:t[5]||t[6]||t[7]}]}),r.push(a)}return r},exports.getFilterOperators=function(){return this.filterOperators||($tw.Wiki.prototype.filterOperators={},$tw.modules.applyMethods('filteroperator',this.filterOperators)),this.filterOperators},exports.getFilterRunPrefixes=function(){return this.filterRunPrefixes||($tw.Wiki.prototype.filterRunPrefixes={},$tw.modules.applyMethods('filterrunprefix',this.filterRunPrefixes)),this.filterRunPrefixes},exports.filterTiddlers=function(e,t,r){return this.compileFilter(e).call(this,r,t)},exports.compileFilter=function(e){if(this.filterCache||(this.filterCache=Object.create(null),this.filterCacheCount=0),void 0!==this.filterCache[e])return this.filterCache[e];try{t=this.parseFilter(e)}catch(r){return function(e,t){return[$tw.language.getString('Error/Filter')+': '+r]}}var o=this.getFilterOperators(),s=[],u=this,t=($tw.utils.each(t,function(t){function r(e,i){var r,s=e,n=[],a=i&&i.getVariable('currentTiddler');return $tw.utils.each(t.operators,function(e){var r=[],t=e.operator?o[e.operator]||o.field:o.title;$tw.utils.each(e.operands,function(e){var t;e.indirect?e.value=u.getTextReference(e.text,'',a):e.variable?(t=$tw.utils.parseFilterVariable(e.text),e.value=i.getVariable(t.name,{params:t.params,defaultValue:''})):e.value=e.text,r.push(e.value)}),n=t(s,{operator:e.operator,operand:0\u003Cr.length?r[0]:void 0,operands:r,prefix:e.prefix,suffix:e.suffix,suffixes:e.suffixes,regexp:e.regexp},{wiki:u,widget:i}),s=$tw.utils.isArray(n)?u.makeTiddlerIterator(n):n}),$tw.utils.isArray(n)?n:(r=[],n(function(e,t){r.push(t)}),r)}var i=u.getFilterRunPrefixes();s.push(function(){var e={wiki:u,suffixes:t.suffixes||[]};switch(t.prefix||''){case'':return i.or(r,e);case'=':return i.all(r,e);case'-':return i.except(r,e);case'+':return i.and(r,e);case'~':return i.else(r,e);default:return t.namedPrefix&&i[t.namedPrefix]?i[t.namedPrefix](r,e):function(e,t,r){e.clear(),e.push($tw.language.getString('Error/FilterRunPrefix'))}}}())}),$tw.perf.measure('filter: '+e,function(t,r){t?'object'==typeof t&&(t=u.makeTiddlerIterator(t)):t=u.each,r=r||$tw.rootWidget;var i=new $tw.utils.LinkedList;return u.filterRecursionCount=(u.filterRecursionCount||0)+1,u.filterRecursionCount\u003C300?$tw.utils.each(s,function(e){e(i,t,r)}):i.push('/**-- Excessive filter recursion --**/'),u.filterRecursionCount=u.filterRecursionCount-1,i.toArray()}));return 2e3\u003C=this.filterCacheCount&&(this.filterCache=Object.create(null),this.filterCacheCount=0),this.filterCache[e]=t,this.filterCacheCount++,t}}();\",\"type\":\"application/javascript\",\"module-type\":\"wikimethod\"},\"$:/core/modules/indexers/backlinks-indexer.js\":{\"text\":\"!function(){'use strict';function t(t){this.wiki=t}t.prototype.init=function(){this.index=null},t.prototype.rebuild=function(){this.index=null},t.prototype._getLinks=function(t){t=this.wiki.parseText(t.fields.type,t.fields.text,{});return t?this.wiki.extractLinks(t.tree):[]},t.prototype.update=function(i){var t,e,n;this.index&&(t=[],e=[],n=this,i.old.exists&&(e=this._getLinks(i.old.tiddler)),i.new.exists&&(t=this._getLinks(i.new.tiddler)),$tw.utils.each(e,function(t){n.index[t]&&delete n.index[t][i.old.tiddler.fields.title]}),$tw.utils.each(t,function(t){n.index[t]||(n.index[t]=Object.create(null)),n.index[t][i.new.tiddler.fields.title]=!0}))},t.prototype.lookup=function(t){var e;return this.index||(this.index=Object.create(null),(e=this).wiki.forEachTiddler(function(i,t){t=e._getLinks(t);$tw.utils.each(t,function(t){e.index[t]||(e.index[t]=Object.create(null)),e.index[t][i]=!0})})),this.index[t]?Object.keys(this.index[t]):[]},exports.BacklinksIndexer=t}();\",\"type\":\"application/javascript\",\"module-type\":\"indexer\"},\"$:/core/modules/indexers/field-indexer.js\":{\"text\":\"!function(){'use strict';function i(i){this.wiki=i}i.prototype.init=function(){this.index=null,this.maxIndexedValueLength=128,this.addIndexMethods()},i.prototype.setMaxIndexedValueLength=function(i){this.index=null,this.maxIndexedValueLength=i},i.prototype.addIndexMethods=function(){var n=this;this.wiki.each.byField=function(i,e){var t=n.wiki.allTitles(),i=n.lookup(i,e);return i&&i.filter(function(i){return-1!==t.indexOf(i)})},this.wiki.eachShadow.byField=function(i,e){var t=n.wiki.allShadowTitles(),i=n.lookup(i,e);return i&&i.filter(function(i){return-1!==t.indexOf(i)})},this.wiki.eachTiddlerPlusShadows.byField=function(i,e){i=n.lookup(i,e);return i?i.slice(0):null},this.wiki.eachShadowPlusTiddlers.byField=function(i,e){i=n.lookup(i,e);return i?i.slice(0):null}},i.prototype.rebuild=function(){this.index=null},i.prototype.buildIndexForField=function(t){var n=this,d=(this.index=this.index||Object.create(null),this.index[t]=Object.create(null),this.index[t]);this.wiki.eachTiddlerPlusShadows(function(i,e){t in i.fields&&(i=i.getFieldString(t)).length\u003Cn.maxIndexedValueLength&&(d[i]=d[i]||[],d[i].push(e))})},i.prototype.update=function(t){var n=this;null!==this.index&&(t.old.tiddler&&$tw.utils.each(this.index,function(i,e){e in t.old.tiddler.fields&&(i=i[t.old.tiddler.getFieldString(e)])&&-1!==(e=i.indexOf(t.old.tiddler.fields.title))&&i.splice(e,1)}),t.new.tiddler)&&$tw.utils.each(this.index,function(i,e){e in t.new.tiddler.fields&&(e=t.new.tiddler.getFieldString(e)).length\u003Cn.maxIndexedValueLength&&(i[e]=i[e]||[],i[e].push(t.new.tiddler.fields.title))})},i.prototype.lookup=function(i,e){return e.length>=this.maxIndexedValueLength?null:(null!==this.index&&this.index[i]||this.buildIndexForField(i),this.index[i][e]||[])},exports.FieldIndexer=i}();\",\"type\":\"application/javascript\",\"module-type\":\"indexer\"},\"$:/core/modules/indexers/tag-indexer.js\":{\"text\":\"!function(){'use strict';function t(t){this.wiki=t}function i(t,i){this.indexer=t,this.iteratorMethod=i,this.index=null}t.prototype.init=function(){this.subIndexers=[new i(this,'each'),new i(this,'eachShadow'),new i(this,'eachTiddlerPlusShadows'),new i(this,'eachShadowPlusTiddlers')],$tw.utils.each(this.subIndexers,function(t){t.addIndexMethod()})},t.prototype.rebuild=function(){$tw.utils.each(this.subIndexers,function(t){t.rebuild()})},t.prototype.update=function(i){$tw.utils.each(this.subIndexers,function(t){t.update(i)})},i.prototype.addIndexMethod=function(){var i=this;this.indexer.wiki[this.iteratorMethod].byTag=function(t){return i.lookup(t).slice(0)}},i.prototype.rebuild=function(){var e=this;this.index=Object.create(null),this.indexer.wiki[this.iteratorMethod](function(t,i){$tw.utils.each(t.fields.tags,function(t){e.index[t]?e.index[t].titles.push(i):e.index[t]={isSorted:!1,titles:[i]}})})},i.prototype.update=function(t){this.index=null},i.prototype.lookup=function(t){null===this.index&&this.rebuild();var i=this.index[t];return i?(i.isSorted||(this.indexer.wiki.sortByList&&(i.titles=this.indexer.wiki.sortByList(i.titles,t)),i.isSorted=!0),i.titles):[]},exports.TagIndexer=t}();\",\"type\":\"application/javascript\",\"module-type\":\"indexer\"},\"$:/core/modules/info/platform.js\":{\"text\":\"!function(){'use strict';exports.getInfoTiddlerFields=function(e){function t(t){return t?'yes':'no'}var o,n,i,r,s=[];return s.push({title:'$:/info/browser',text:t(!!$tw.browser)}),s.push({title:'$:/info/node',text:t(!!$tw.node)}),s.push({title:'$:/info/startup-timestamp',text:$tw.utils.stringifyDate(new Date)}),$tw.browser&&((o=function(t,e){s.push({title:'$:/info/url/'+t,text:e})})('full',(n=document.location).toString().split('#')[0]),o('host',n.host),o('hostname',n.hostname),o('protocol',n.protocol),o('port',n.port),o('pathname',n.pathname),o('search',n.search),o('origin',n.origin),s.push({title:'$:/info/browser/screen/width',text:window.screen.width.toString()}),s.push({title:'$:/info/browser/screen/height',text:window.screen.height.toString()}),i=window.matchMedia('(prefers-color-scheme: dark)'),s.push((r=function(){return{title:'$:/info/darkmode',text:i.matches?'yes':'no'}})()),i.addListener(function(t){e([r()])}),s.push({title:'$:/info/browser/language',text:navigator.language||''})),s}}();\",\"type\":\"application/javascript\",\"module-type\":\"info\"},\"$:/core/modules/keyboard.js\":{\"text\":\"!function(){'use strict';var e={cancel:3,help:6,backspace:8,tab:9,clear:12,return:13,enter:13,pause:19,escape:27,space:32,page_up:33,page_down:34,end:35,home:36,left:37,up:38,right:39,down:40,printscreen:44,insert:45,delete:46,0:48,1:49,2:50,3:51,4:52,5:53,6:54,7:55,8:56,9:57,firefoxsemicolon:59,firefoxequals:61,a:65,b:66,c:67,d:68,e:69,f:70,g:71,h:72,i:73,j:74,k:75,l:76,m:77,n:78,o:79,p:80,q:81,r:82,s:83,t:84,u:85,v:86,w:87,x:88,y:89,z:90,numpad0:96,numpad1:97,numpad2:98,numpad3:99,numpad4:100,numpad5:101,numpad6:102,numpad7:103,numpad8:104,numpad9:105,multiply:106,add:107,separator:108,subtract:109,decimal:110,divide:111,f1:112,f2:113,f3:114,f4:115,f5:116,f6:117,f7:118,f8:119,f9:120,f10:121,f11:122,f12:123,f13:124,f14:125,f15:126,f16:127,f17:128,f18:129,f19:130,f20:131,f21:132,f22:133,f23:134,f24:135,firefoxminus:173,semicolon:186,equals:187,comma:188,dash:189,period:190,slash:191,backquote:192,openbracket:219,backslash:220,closebracket:221,quote:222};function t(t){var s=this;this.namedKeys=e,this.keyNames=[],$tw.utils.each(e,function(t,e){s.keyNames[t]=e.substr(0,1).toUpperCase()+e.substr(1)}),this.metaKeyName=$tw.platform.isMac?'cmd-':'win-',this.shortcutKeysList=[],this.shortcutActionList=[],this.shortcutParsedList=[],this.shortcutPriorityList=[],this.lookupNames=['shortcuts'],this.lookupNames.push($tw.platform.isMac?'shortcuts-mac':'shortcuts-not-mac'),this.lookupNames.push($tw.platform.isWindows?'shortcuts-windows':'shortcuts-not-windows'),this.lookupNames.push($tw.platform.isLinux?'shortcuts-linux':'shortcuts-not-linux'),this.updateShortcutLists(this.getShortcutTiddlerList()),$tw.wiki.addEventListener('change',function(t){s.handleShortcutChanges(t)})}t.prototype.getModifierKeys=function(){return[16,17,18,20,91,93,224]},t.prototype.parseKeyDescriptor=function(t,e){for(var s=t.split(/\\\\+|\\\\-/),r={keyCode:0,shiftKey:!1,altKey:!1,ctrlKey:!1,metaKey:!1},i=0;i\u003Cs.length;i++){var o=s[i].toLowerCase();o.charCodeAt(0);'ctrl'===o?r.ctrlKey=!0:'shift'===o?r.shiftKey=!0:'alt'===o?r.altKey=!0:'meta'!==o&&'cmd'!==o&&'win'!==o||(r.metaKey=!0),this.namedKeys[o]&&(r.keyCode=this.namedKeys[o])}return e.keyDescriptor&&(r.keyDescriptor=e.keyDescriptor),r.keyCode?r:null},t.prototype.parseKeyDescriptors=function(t,r){var i=this,o=((r=r||{}).stack=r.stack||[],r.wiki||$tw.wiki);if('string'==typeof t&&''===t)return[];$tw.utils.isArray(t)||(t=t.split(' '));var a=[];return $tw.utils.each(t,function(e){var s;'(('===e.substr(0,2)&&'))'===e.substr(-2,2)?-1===r.stack.indexOf(e)&&(r.stack.push(e),s=e.substring(2,e.length-2),$tw.utils.each(i.lookupNames,function(t){(t=o.getTiddlerText('$:/config/'+t+'/'+s))&&(r.keyDescriptor=e,a.push.apply(a,i.parseKeyDescriptors(t,r)))})):a.push(i.parseKeyDescriptor(e,r))}),a},t.prototype.getPrintableShortcuts=function(t){var e=this,s=[];return $tw.utils.each(t,function(t){t&&s.push((t.ctrlKey?'ctrl-':'')+(t.shiftKey?'shift-':'')+(t.altKey?'alt-':'')+(t.metaKey?e.metaKeyName:'')+e.keyNames[t.keyCode])}),s},t.prototype.checkKeyDescriptor=function(t,e){return e&&t.keyCode===e.keyCode&&t.shiftKey===e.shiftKey&&t.altKey===e.altKey&&t.ctrlKey===e.ctrlKey&&t.metaKey===e.metaKey},t.prototype.checkKeyDescriptors=function(t,e){return null!==this.getMatchingKeyDescriptor(t,e)},t.prototype.getMatchingKeyDescriptor=function(t,e){for(var s=0;s\u003Ce.length;s++)if(this.checkKeyDescriptor(t,e[s]))return e[s];return null},t.prototype.getEventModifierKeyDescriptor=function(t){return!t.ctrlKey||t.shiftKey||t.altKey||t.metaKey?!t.shiftKey||t.ctrlKey||t.altKey||t.metaKey?t.ctrlKey&&t.shiftKey&&!t.altKey&&!t.metaKey?'ctrl-shift':!t.altKey||t.shiftKey||t.ctrlKey||t.metaKey?t.altKey&&t.shiftKey&&!t.ctrlKey&&!t.metaKey?'alt-shift':t.altKey&&t.ctrlKey&&!t.shiftKey&&!t.metaKey?'ctrl-alt':t.altKey&&t.shiftKey&&t.ctrlKey&&!t.metaKey?'ctrl-alt-shift':!t.metaKey||t.ctrlKey||t.shiftKey||t.altKey?t.metaKey&&t.ctrlKey&&!t.shiftKey&&!t.altKey?'meta-ctrl':t.metaKey&&t.ctrlKey&&t.shiftKey&&!t.altKey?'meta-ctrl-shift':t.metaKey&&t.ctrlKey&&t.shiftKey&&t.altKey?'meta-ctrl-alt-shift':'normal':'meta':'alt':'shift':'ctrl'},t.prototype.getShortcutTiddlerList=function(){return $tw.wiki.getTiddlersWithTag('$:/tags/KeyboardShortcut')},t.prototype.updateShortcutLists=function(t){this.shortcutTiddlers=t;for(var e=0;e\u003Ct.length;e++){var s=t[e],s=$tw.wiki.getTiddler(s).fields;this.shortcutKeysList[e]=void 0!==s.key?s.key:void 0,this.shortcutActionList[e]=s.text,this.shortcutParsedList[e]=void 0!==this.shortcutKeysList[e]?this.parseKeyDescriptors(this.shortcutKeysList[e]):void 0,this.shortcutPriorityList[e]='yes'===s.priority}},t.prototype.handleKeydownEvent=function(t,e){var s,r;e=e||{};for(var i=0;i\u003Cthis.shortcutTiddlers.length;i++)e.onlyPriority&&!0!==this.shortcutPriorityList[i]||void 0!==this.shortcutParsedList[i]&&this.checkKeyDescriptors(t,this.shortcutParsedList[i])&&(s=this.shortcutParsedList[i],r=this.shortcutActionList[i]);return void 0!==s&&(t.preventDefault(),t.stopPropagation(),$tw.rootWidget.invokeActionString(r,$tw.rootWidget,t),!0)},t.prototype.detectNewShortcuts=function(s){var r=[],i=!1;return $tw.utils.each(this.lookupNames,function(t){var e='$:/config/'+t+'/';Object.keys(s).forEach(function(t){t.substr(0,t.lastIndexOf('/')+1)===e&&(r.push(t),i=!0)})}),!!i&&$tw.utils.hopArray(s,r)},t.prototype.handleShortcutChanges=function(t){var e=this.getShortcutTiddlerList();!$tw.utils.hopArray(t,this.shortcutTiddlers)&&!$tw.utils.hopArray(t,e)&&!this.detectNewShortcuts(t)||this.updateShortcutLists(e)},exports.KeyboardManager=t}();\",\"type\":\"application/javascript\",\"module-type\":\"global\"},\"$:/core/modules/language.js\":{\"text\":\"!function(){'use strict';function i(i){this.wiki=(i=i||'').wiki||$tw.wiki}i.prototype.getString=function(i,t){return this.wiki.renderTiddler('text/plain',i='$:/language/'+i,{variables:(t=t||{}).variables})},i.prototype.getRawString=function(i){return this.wiki.getTiddlerText(i='$:/language/'+i)},exports.Language=i}();\",\"type\":\"application/javascript\",\"module-type\":\"global\"},\"$:/core/modules/macros/changecount.js\":{\"text\":\"!function(){'use strict';exports.name='changecount',exports.params=[],exports.run=function(){return this.wiki.getChangeCount(this.getVariable('currentTiddler'))+''}}();\",\"type\":\"application/javascript\",\"module-type\":\"macro\"},\"$:/core/modules/macros/contrastcolour.js\":{\"text\":\"!function(){'use strict';exports.name='contrastcolour',exports.params=[{name:'target'},{name:'fallbackTarget'},{name:'colourA'},{name:'colourB'}],exports.run=function(r,t,a,o){var s,e,r=$tw.utils.parseCSSColor(r)||$tw.utils.parseCSSColor(t);return r?(t=$tw.utils.parseCSSColor(a),e=$tw.utils.parseCSSColor(o),t&&!e?t:e&&!t?e:t||e?(s=.299*r[0]+.587*r[1]+.114*r[2],t=.299*t[0]+.587*t[1]+.114*t[2],e=.299*e[0]+.587*e[1]+.114*e[2],Math.abs(s-t)>Math.abs(s-e)?a:o):[255-r[0],255-r[1],255-r[2],r[3]]):a}}();\",\"type\":\"application/javascript\",\"module-type\":\"macro\"},\"$:/core/modules/macros/csvtiddlers.js\":{\"text\":\"!function(){'use strict';function a(e){return'\\\"'+e.replace(/\\\"/gm,'\\\"\\\"')+'\\\"'}exports.name='csvtiddlers',exports.params=[{name:'filter'},{name:'format'}],exports.run=function(e,i){var r,t,n=this.wiki.filterTiddlers(e),s=[];for(d=0;d\u003Cn.length;d++)for(t in(r=this.wiki.getTiddler(n[d])).fields)-1===s.indexOf(t)&&s.push(t);s.sort(),'title text modified modifier created creator'.split(' ').reverse().forEach(function(e,i){var r=s.indexOf(e);-1!==r&&(s.splice(r,1),s.unshift(e))});var o=[],f=[];s.forEach(function(e){f.push(a(e))}),o.push(f.join(','));for(var d=0;d\u003Cn.length;d++){for(f=[],r=this.wiki.getTiddler(n[d]),t=0;t\u003Cs.length;t++)f.push(a(r&&r.getFieldString(s[t])||''));o.push(f.join(','))}return o.join('\\\\n')}}();\",\"type\":\"application/javascript\",\"module-type\":\"macro\"},\"$:/core/modules/macros/displayshortcuts.js\":{\"text\":\"!function(){'use strict';exports.name='displayshortcuts',exports.params=[{name:'shortcuts'},{name:'prefix'},{name:'separator'},{name:'suffix'}],exports.run=function(e,r,t,a){e=$tw.keyboardManager.getPrintableShortcuts($tw.keyboardManager.parseKeyDescriptors(e,{wiki:this.wiki}));return 0\u003Ce.length?(e.sort(function(e,r){return e.toLowerCase().localeCompare(r.toLowerCase())}),r+e.join(t)+a):''}}();\",\"type\":\"application/javascript\",\"module-type\":\"macro\"},\"$:/core/modules/macros/jsontiddler.js\":{\"text\":\"!function(){'use strict';exports.name='jsontiddler',exports.params=[{name:'title'}],exports.run=function(e){var r=!!(e=e||this.getVariable('currentTiddler'))&&this.wiki.getTiddler(e),t=new Object;if(r)for(var i in r.fields)t[i]=r.getFieldString(i);return JSON.stringify(t,null,$tw.config.preferences.jsonSpaces)}}();\",\"type\":\"application/javascript\",\"module-type\":\"macro\"},\"$:/core/modules/macros/jsontiddlers.js\":{\"text\":\"!function(){'use strict';exports.name='jsontiddlers',exports.params=[{name:'filter'},{name:'spaces'}],exports.run=function(s,t){return this.wiki.getTiddlersAsJson(s,$tw.utils.parseInt(t))}}();\",\"type\":\"application/javascript\",\"module-type\":\"macro\"},\"$:/core/modules/macros/makedatauri.js\":{\"text\":\"!function(){'use strict';exports.name='makedatauri',exports.params=[{name:'text'},{name:'type'},{name:'_canonical_uri'}],exports.run=function(t,a,e){return $tw.utils.makeDataUri(t,a,e)}}();\",\"type\":\"application/javascript\",\"module-type\":\"macro\"},\"$:/core/modules/macros/now.js\":{\"text\":\"!function(){'use strict';exports.name='now',exports.params=[{name:'format'}],exports.run=function(t){return $tw.utils.formatDateString(new Date,t||'0hh:0mm, DDth MMM YYYY')}}();\",\"type\":\"application/javascript\",\"module-type\":\"macro\"},\"$:/core/modules/macros/qualify.js\":{\"text\":\"!function(){'use strict';exports.name='qualify',exports.params=[{name:'title'}],exports.run=function(t){return t+'-'+this.getStateQualifier()}}();\",\"type\":\"application/javascript\",\"module-type\":\"macro\"},\"$:/core/modules/macros/resolvepath.js\":{\"text\":\"!function(){'use strict';exports.name='resolvepath',exports.params=[{name:'source'},{name:'root'}],exports.run=function(e,t){return $tw.utils.resolvePath(e,t)}}();\",\"type\":\"application/javascript\",\"module-type\":\"macro\"},\"$:/core/modules/macros/unusedtitle.js\":{\"text\":\"!function(){'use strict';exports.name='unusedtitle',exports.params=[{name:'baseName'},{name:'separator'},{name:'template'}],exports.run=function(e,t,a){return t=t||' ',e=e||$tw.language.getString('DefaultNewTiddlerTitle'),this.wiki.generateNewTitle(e,{prefix:t,template:a})}}();\",\"type\":\"application/javascript\",\"module-type\":\"macro\"},\"$:/core/modules/macros/version.js\":{\"text\":\"!function(){'use strict';exports.name='version',exports.params=[],exports.run=function(){return $tw.version}}();\",\"type\":\"application/javascript\",\"module-type\":\"macro\"},\"$:/core/modules/parsers/audioparser.js\":{\"text\":\"!function(){'use strict';function t(t,e,i){var a={type:'element',tag:'audio',attributes:{controls:{type:'string',value:'controls'},style:{type:'string',value:'width: 100%; object-fit: contain'}}};i._canonical_uri?a.attributes.src={type:'string',value:i._canonical_uri}:e&&(a.attributes.src={type:'string',value:'data:'+t+';base64,'+e}),this.tree=[a]}exports['audio/ogg']=t,exports['audio/mpeg']=t,exports['audio/mp3']=t,exports['audio/mp4']=t}();\",\"type\":\"application/javascript\",\"module-type\":\"parser\"},\"$:/core/modules/parsers/binaryparser.js\":{\"text\":\"!function(){'use strict';exports['application/octet-stream']=function(t,e,i){var r={type:'element',tag:'p',children:[{type:'transclude',attributes:{tiddler:{type:'string',value:'$:/core/ui/BinaryWarning'}}}]},a={type:'element',tag:'a',attributes:{title:{type:'indirect',textReference:'!!title'},download:{type:'indirect',textReference:'!!title'}},children:[{type:'transclude',attributes:{tiddler:{type:'string',value:'$:/core/images/export-button'}}}]};i._canonical_uri?a.attributes.href={type:'string',value:i._canonical_uri}:e&&(a.attributes.href={type:'string',value:'data:'+t+';base64,'+e}),this.tree=[{type:'element',tag:'div',attributes:{class:{type:'string',value:'tc-binary-warning'}},children:[r,a]}]}}();\",\"type\":\"application/javascript\",\"module-type\":\"parser\"},\"$:/core/modules/parsers/csvparser.js\":{\"text\":\"!function(){'use strict';function t(t,e,r){'text/tab-delimited-values'!==t||r.separator||(r.separator='\\\\t'),this.tree=[{type:'scrollable',children:[{type:'element',tag:'table',children:[{type:'element',tag:'tbody',children:[]}],attributes:{class:{type:'string',value:'tc-csv-table'}}}]}];var l=$tw.utils.parseCsvString(e,r),a='th',i=0;$tw.utils.each(l,function(t){i=Math.max(t.length,i)});for(var n=0;n\u003Cl.length;n++){for(var s=l[n],c={type:'element',tag:'tr',children:[]},h=0;h\u003Ci;h++)c.children.push({type:'element',tag:a,children:[{type:'text',text:s[h]||''}]});a='td',this.tree[0].children[0].children[0].children.push(c)}}exports['text/csv']=t,exports['text/tab-delimited-values']=t}();\",\"type\":\"application/javascript\",\"module-type\":\"parser\"},\"$:/core/modules/parsers/htmlparser.js\":{\"text\":\"!function(){'use strict';exports['text/html']=function(t,e,i){var n;i._canonical_uri?n=i._canonical_uri:e&&(n='data:text/html;charset=utf-8,'+encodeURIComponent(e)),this.tree=[{type:'element',tag:'iframe',attributes:{src:{type:'string',value:n}}}],'yes'!==$tw.wiki.getTiddlerText('$:/config/HtmlParser/DisableSandbox','no')&&(this.tree[0].attributes.sandbox={type:'string',value:$tw.wiki.getTiddlerText('$:/config/HtmlParser/SandboxTokens','')})}}();\",\"type\":\"application/javascript\",\"module-type\":\"parser\"},\"$:/core/modules/parsers/imageparser.js\":{\"text\":\"!function(){'use strict';function e(e,t,i){var a={type:'element',tag:'img',attributes:{}};i._canonical_uri?a.attributes.src={type:'string',value:i._canonical_uri}:t&&(a.attributes.src='image/svg+xml'===e||'.svg'===e?{type:'string',value:'data:image/svg+xml,'+encodeURIComponent(t)}:{type:'string',value:'data:'+e+';base64,'+t}),this.tree=[a]}exports['image/svg+xml']=e,exports['image/jpg']=e,exports['image/jpeg']=e,exports['image/png']=e,exports['image/gif']=e,exports['image/webp']=e,exports['image/heic']=e,exports['image/heif']=e,exports['image/x-icon']=e,exports['image/vnd.microsoft.icon']=e}();\",\"type\":\"application/javascript\",\"module-type\":\"parser\"},\"$:/core/modules/utils/parseutils.js\":{\"text\":\"!function(){'use strict';exports.parseWhiteSpace=function(e,t){for(var r,a=t;' '===(r=e.charAt(a))||'\\\\f'===r||'\\\\n'===r||'\\\\r'===r||'\\\\t'===r||'\\\\v'===r||' '===r;)a++;return a===t?null:{type:'whitespace',start:t,end:a}},exports.skipWhiteSpace=function(e,t){for(var r;;){if(' '!==(r=e.charAt(t))&&'\\\\f'!==r&&'\\\\n'!==r&&'\\\\r'!==r&&'\\\\t'!==r&&'\\\\v'!==r&&' '!==r)return t;t++}},exports.parseTokenString=function(e,t,r){return e.indexOf(r,t)===t?{type:'token',value:r,start:t,end:t+r.length}:null},exports.parseTokenRegExp=function(e,t,r){var a={type:'regexp',start:t};return r.lastIndex=t,a.match=r.exec(e),a.match&&a.match.index===t?(a.end=t+a.match[0].length,a):null},exports.parseStringLiteral=function(e,t){var r={type:'string',start:t},a=/(?:\\\"\\\"\\\"([\\\\s\\\\S]*?)\\\"\\\"\\\"|\\\"([^\\\"]*)\\\")|(?:'([^']*)')/g,a=(a.lastIndex=t,a.exec(e));return a&&a.index===t?(r.value=void 0!==a[1]?a[1]:void 0!==a[2]?a[2]:a[3],r.end=t+a[0].length,r):null},exports.parseMacroParameters=function(e,t,r){for(var a=$tw.utils.parseMacroParameter(t,r);a;)e.params.push(a),r=a.end,a=$tw.utils.parseMacroParameter(t,r);return e.end=r,e},exports.parseMacroParameter=function(e,t){var r={type:'macro-parameter',start:t},e=(t=$tw.utils.skipWhiteSpace(e,t),$tw.utils.parseTokenRegExp(e,t,/(?:([A-Za-z0-9\\\\-_]+)\\\\s*:)?(?:\\\\s*(?:\\\"\\\"\\\"([\\\\s\\\\S]*?)\\\"\\\"\\\"|\\\"([^\\\"]*)\\\"|'([^']*)'|\\\\[\\\\[([^\\\\]]*)\\\\]\\\\]|((?:(?:>(?!>))|[^\\\\s>\\\"'])+)))/g));return e?(t=e.end,r.value=void 0!==e.match[2]?e.match[2]:void 0!==e.match[3]?e.match[3]:void 0!==e.match[4]?e.match[4]:void 0!==e.match[5]?e.match[5]:void 0!==e.match[6]?e.match[6]:'',e.match[1]&&(r.name=e.match[1]),r.end=t,r):null},exports.parseMacroInvocation=function(e,t){var r={type:'macrocall',start:t,params:[]},a=(t=$tw.utils.skipWhiteSpace(e,t),$tw.utils.parseTokenString(e,t,'\u003C\u003C'));if(!a)return null;t=a.end;var n=$tw.utils.parseTokenRegExp(e,t,/([^\\\\s>\\\"'=]+)/g);return n&&(r.name=n.match[1],t=n.end,t=(r=$tw.utils.parseMacroParameters(r,e,t)).end,t=$tw.utils.skipWhiteSpace(e,t),a=$tw.utils.parseTokenString(e,t,'>>'))?(t=a.end,r.end=t,r):null},exports.parseFilterVariable=function(e){var t,r={name:'',params:[]};return/^\\\\S*$/.test(e)?r.name=e:(t=$tw.utils.parseTokenRegExp(e,0,/([^\\\\s\\\"']+)/g))&&(r.name=t.match[1],t=t.end,delete(r=$tw.utils.parseMacroParameters(r,e,t)).end),r},exports.parseAttribute=function(e,t){var r={start:t},a=(t=$tw.utils.skipWhiteSpace(e,t),$tw.utils.parseTokenRegExp(e,t,/([^\\\\/\\\\s>\\\"'=]+)/g));if(!a)return null;r.name=a.match[1],t=a.end,t=$tw.utils.skipWhiteSpace(e,t);var a=$tw.utils.parseTokenString(e,t,'=');return a?(t=a.end,t=$tw.utils.skipWhiteSpace(e,t),(a=$tw.utils.parseStringLiteral(e,t))?(t=a.end,r.type='string',r.value=a.value):(a=$tw.utils.parseTokenRegExp(e,t,/\\\\{\\\\{\\\\{([\\\\S\\\\s]+?)\\\\}\\\\}\\\\}/g))?(t=a.end,r.type='filtered',r.filter=a.match[1]):(a=$tw.utils.parseTokenRegExp(e,t,/\\\\{\\\\{([^\\\\}]+)\\\\}\\\\}/g))?(t=a.end,r.type='indirect',r.textReference=a.match[1]):(a=$tw.utils.parseTokenRegExp(e,t,/([^\\\\/\\\\s\u003C>\\\"'=]+)/g))?(t=a.end,r.type='string',r.value=a.match[1]):(a=$tw.utils.parseMacroInvocation(e,t))?(t=a.end,r.type='macro',r.value=a):(r.type='string',r.value='true')):(r.type='string',r.value='true'),r.end=t,r}}();\",\"type\":\"application/javascript\",\"module-type\":\"utils\"},\"$:/core/modules/parsers/pdfparser.js\":{\"text\":\"!function(){'use strict';exports['application/pdf']=function(t,a,e){var i={type:'element',tag:'embed',attributes:{}};e._canonical_uri?i.attributes.src={type:'string',value:e._canonical_uri}:a&&(i.attributes.src={type:'string',value:'data:application/pdf;base64,'+a}),this.tree=[i]}}();\",\"type\":\"application/javascript\",\"module-type\":\"parser\"},\"$:/core/modules/parsers/textparser.js\":{\"text\":\"!function(){'use strict';function t(t,e,i){this.tree=[{type:'codeblock',attributes:{code:{type:'string',value:e},language:{type:'string',value:t}}}]}exports['text/plain']=t,exports['text/x-tiddlywiki']=t,exports['application/javascript']=t,exports['application/json']=t,exports['text/css']=t,exports['application/x-tiddler-dictionary']=t}();\",\"type\":\"application/javascript\",\"module-type\":\"parser\"},\"$:/core/modules/parsers/videoparser.js\":{\"text\":\"!function(){'use strict';function t(t,e,i){var o={type:'element',tag:'video',attributes:{controls:{type:'string',value:'controls'},style:{type:'string',value:'width: 100%; object-fit: contain'}}};i._canonical_uri?o.attributes.src={type:'string',value:i._canonical_uri}:e&&(o.attributes.src={type:'string',value:'data:'+t+';base64,'+e}),this.tree=[o]}exports['video/ogg']=t,exports['video/webm']=t,exports['video/mp4']=t,exports['video/quicktime']=t}();\",\"type\":\"application/javascript\",\"module-type\":\"parser\"},\"$:/core/modules/parsers/wikiparser/rules/codeblock.js\":{\"text\":\"!function(){'use strict';exports.name='codeblock',exports.types={block:!0},exports.init=function(s){this.parser=s,this.matchRegExp=/```([\\\\w-]*)\\\\r?\\\\n/gm},exports.parse=function(){var s,e=/(\\\\r?\\\\n```$)/gm,e=(this.parser.pos=this.matchRegExp.lastIndex,e.lastIndex=this.parser.pos,e.exec(this.parser.source));return e?(s=this.parser.source.substring(this.parser.pos,e.index),this.parser.pos=e.index+e[0].length):(s=this.parser.source.substr(this.parser.pos),this.parser.pos=this.parser.sourceLength),[{type:'codeblock',attributes:{code:{type:'string',value:s},language:{type:'string',value:this.match[1]}}}]}}();\",\"type\":\"application/javascript\",\"module-type\":\"wikirule\"},\"$:/core/modules/parsers/wikiparser/rules/codeinline.js\":{\"text\":\"!function(){'use strict';exports.name='codeinline',exports.types={inline:!0},exports.init=function(s){this.parser=s,this.matchRegExp=/(``?)/gm},exports.parse=function(){this.parser.pos=this.matchRegExp.lastIndex;var s,e=new RegExp(this.match[1],'mg'),e=(e.lastIndex=this.parser.pos,e.exec(this.parser.source));return e?(s=this.parser.source.substring(this.parser.pos,e.index),this.parser.pos=e.index+e[0].length):(s=this.parser.source.substr(this.parser.pos),this.parser.pos=this.parser.sourceLength),[{type:'element',tag:'code',children:[{type:'text',text:s}]}]}}();\",\"type\":\"application/javascript\",\"module-type\":\"wikirule\"},\"$:/core/modules/parsers/wikiparser/rules/commentblock.js\":{\"text\":\"!function(){'use strict';exports.name='commentblock',exports.types={block:!0,pragma:!0},exports.init=function(t){this.parser=t,this.matchRegExp=/\u003C!--/gm,this.endMatchRegExp=/-->/gm},exports.findNextMatch=function(t){if(this.matchRegExp.lastIndex=t,this.match=this.matchRegExp.exec(this.parser.source),this.match&&(this.endMatchRegExp.lastIndex=this.match.index+this.match[0].length,this.endMatch=this.endMatchRegExp.exec(this.parser.source),this.endMatch))return this.match.index},exports.parse=function(){return this.parser.pos=this.endMatchRegExp.lastIndex,[]}}();\",\"type\":\"application/javascript\",\"module-type\":\"wikirule\"},\"$:/core/modules/parsers/wikiparser/rules/commentinline.js\":{\"text\":\"!function(){'use strict';exports.name='commentinline',exports.types={inline:!0},exports.init=function(t){this.parser=t,this.matchRegExp=/\u003C!--/gm,this.endMatchRegExp=/-->/gm},exports.findNextMatch=function(t){if(this.matchRegExp.lastIndex=t,this.match=this.matchRegExp.exec(this.parser.source),this.match&&(this.endMatchRegExp.lastIndex=this.match.index+this.match[0].length,this.endMatch=this.endMatchRegExp.exec(this.parser.source),this.endMatch))return this.match.index},exports.parse=function(){return this.parser.pos=this.endMatchRegExp.lastIndex,[]}}();\",\"type\":\"application/javascript\",\"module-type\":\"wikirule\"},\"$:/core/modules/parsers/wikiparser/rules/dash.js\":{\"text\":\"!function(){'use strict';exports.name='dash',exports.types={inline:!0},exports.init=function(t){this.parser=t,this.matchRegExp=/-{2,3}(?!-)/gm},exports.parse=function(){return this.parser.pos=this.matchRegExp.lastIndex,[{type:'entity',entity:2===this.match[0].length?'&ndash;':'&mdash;'}]}}();\",\"type\":\"application/javascript\",\"module-type\":\"wikirule\"},\"$:/core/modules/parsers/wikiparser/rules/emphasis/bold.js\":{\"text\":\"!function(){'use strict';exports.name='bold',exports.types={inline:!0},exports.init=function(t){this.parser=t,this.matchRegExp=/''/gm},exports.parse=function(){return this.parser.pos=this.matchRegExp.lastIndex,[{type:'element',tag:'strong',children:this.parser.parseInlineRun(/''/gm,{eatTerminator:!0})}]}}();\",\"type\":\"application/javascript\",\"module-type\":\"wikirule\"},\"$:/core/modules/parsers/wikiparser/rules/emphasis/italic.js\":{\"text\":\"!function(){'use strict';exports.name='italic',exports.types={inline:!0},exports.init=function(e){this.parser=e,this.matchRegExp=/\\\\/\\\\//gm},exports.parse=function(){return this.parser.pos=this.matchRegExp.lastIndex,[{type:'element',tag:'em',children:this.parser.parseInlineRun(/\\\\/\\\\//gm,{eatTerminator:!0})}]}}();\",\"type\":\"application/javascript\",\"module-type\":\"wikirule\"},\"$:/core/modules/parsers/wikiparser/rules/emphasis/strikethrough.js\":{\"text\":\"!function(){'use strict';exports.name='strikethrough',exports.types={inline:!0},exports.init=function(t){this.parser=t,this.matchRegExp=/~~/gm},exports.parse=function(){return this.parser.pos=this.matchRegExp.lastIndex,[{type:'element',tag:'strike',children:this.parser.parseInlineRun(/~~/gm,{eatTerminator:!0})}]}}();\",\"type\":\"application/javascript\",\"module-type\":\"wikirule\"},\"$:/core/modules/parsers/wikiparser/rules/emphasis/subscript.js\":{\"text\":\"!function(){'use strict';exports.name='subscript',exports.types={inline:!0},exports.init=function(t){this.parser=t,this.matchRegExp=/,,/gm},exports.parse=function(){return this.parser.pos=this.matchRegExp.lastIndex,[{type:'element',tag:'sub',children:this.parser.parseInlineRun(/,,/gm,{eatTerminator:!0})}]}}();\",\"type\":\"application/javascript\",\"module-type\":\"wikirule\"},\"$:/core/modules/parsers/wikiparser/rules/emphasis/superscript.js\":{\"text\":\"!function(){'use strict';exports.name='superscript',exports.types={inline:!0},exports.init=function(e){this.parser=e,this.matchRegExp=/\\\\^\\\\^/gm},exports.parse=function(){return this.parser.pos=this.matchRegExp.lastIndex,[{type:'element',tag:'sup',children:this.parser.parseInlineRun(/\\\\^\\\\^/gm,{eatTerminator:!0})}]}}();\",\"type\":\"application/javascript\",\"module-type\":\"wikirule\"},\"$:/core/modules/parsers/wikiparser/rules/emphasis/underscore.js\":{\"text\":\"!function(){'use strict';exports.name='underscore',exports.types={inline:!0},exports.init=function(e){this.parser=e,this.matchRegExp=/__/gm},exports.parse=function(){return this.parser.pos=this.matchRegExp.lastIndex,[{type:'element',tag:'u',children:this.parser.parseInlineRun(/__/gm,{eatTerminator:!0})}]}}();\",\"type\":\"application/javascript\",\"module-type\":\"wikirule\"},\"$:/core/modules/parsers/wikiparser/rules/entity.js\":{\"text\":\"!function(){'use strict';exports.name='entity',exports.types={inline:!0},exports.init=function(t){this.parser=t,this.matchRegExp=/(&#?[a-zA-Z0-9]{2,8};)/gm},exports.parse=function(){this.match[1];return this.parser.pos=this.matchRegExp.lastIndex,[{type:'entity',entity:this.match[0]}]}}();\",\"type\":\"application/javascript\",\"module-type\":\"wikirule\"},\"$:/core/modules/parsers/wikiparser/rules/extlink.js\":{\"text\":\"!function(){'use strict';exports.name='extlink',exports.types={inline:!0},exports.init=function(t){this.parser=t,this.matchRegExp=/~?(?:file|http|https|mailto|ftp|irc|news|data|skype):[^\\\\s\u003C>{}\\\\[\\\\]`|\\\"\\\\\\\\^]+(?:\\\\/|\\\\b)/gm},exports.parse=function(){return this.parser.pos=this.matchRegExp.lastIndex,'~'===this.match[0].substr(0,1)?[{type:'text',text:this.match[0].substr(1)}]:[{type:'element',tag:'a',attributes:{href:{type:'string',value:this.match[0]},class:{type:'string',value:'tc-tiddlylink-external'},target:{type:'string',value:'_blank'},rel:{type:'string',value:'noopener noreferrer'}},children:[{type:'text',text:this.match[0]}]}]}}();\",\"type\":\"application/javascript\",\"module-type\":\"wikirule\"},\"$:/core/modules/parsers/wikiparser/rules/filteredtranscludeblock.js\":{\"text\":\"!function(){'use strict';exports.name='filteredtranscludeblock',exports.types={block:!0},exports.init=function(t){this.parser=t,this.matchRegExp=/\\\\{\\\\{\\\\{([^\\\\|]+?)(?:\\\\|([^\\\\|\\\\{\\\\}]+))?(?:\\\\|\\\\|([^\\\\|\\\\{\\\\}]+))?\\\\}\\\\}([^\\\\}]*)\\\\}(?:\\\\.(\\\\S+))?(?:\\\\r?\\\\n|$)/gm},exports.parse=function(){this.parser.pos=this.matchRegExp.lastIndex;var t=this.match[1],s=this.match[2],e=$tw.utils.trim(this.match[3]),i=this.match[4],r=this.match[5],t={type:'list',attributes:{filter:{type:'string',value:t}},isBlock:!0};return s&&(t.attributes.tooltip={type:'string',value:s}),e&&(t.attributes.template={type:'string',value:e}),i&&(t.attributes.style={type:'string',value:i}),r&&(t.attributes.itemClass={type:'string',value:r.split('.').join(' ')}),[t]}}();\",\"type\":\"application/javascript\",\"module-type\":\"wikirule\"},\"$:/core/modules/parsers/wikiparser/rules/filteredtranscludeinline.js\":{\"text\":\"!function(){'use strict';exports.name='filteredtranscludeinline',exports.types={inline:!0},exports.init=function(t){this.parser=t,this.matchRegExp=/\\\\{\\\\{\\\\{([^\\\\|]+?)(?:\\\\|([^\\\\|\\\\{\\\\}]+))?(?:\\\\|\\\\|([^\\\\|\\\\{\\\\}]+))?\\\\}\\\\}([^\\\\}]*)\\\\}(?:\\\\.(\\\\S+))?/gm},exports.parse=function(){this.parser.pos=this.matchRegExp.lastIndex;var t=this.match[1],e=this.match[2],i=$tw.utils.trim(this.match[3]),s=this.match[4],r=this.match[5],t={type:'list',attributes:{filter:{type:'string',value:t}}};return e&&(t.attributes.tooltip={type:'string',value:e}),i&&(t.attributes.template={type:'string',value:i}),s&&(t.attributes.style={type:'string',value:s}),r&&(t.attributes.itemClass={type:'string',value:r.split('.').join(' ')}),[t]}}();\",\"type\":\"application/javascript\",\"module-type\":\"wikirule\"},\"$:/core/modules/parsers/wikiparser/rules/hardlinebreaks.js\":{\"text\":\"!function(){'use strict';exports.name='hardlinebreaks',exports.types={inline:!0},exports.init=function(e){this.parser=e,this.matchRegExp=/\\\"\\\"\\\"(?:\\\\r?\\\\n)?/gm},exports.parse=function(){var e,s=/(\\\"\\\"\\\")|(\\\\r?\\\\n)/gm,r=[];for(this.parser.pos=this.matchRegExp.lastIndex;r.push.apply(r,this.parser.parseInlineRun(s,{eatTerminator:!1})),s.lastIndex=this.parser.pos,(e=s.exec(this.parser.source))&&(this.parser.pos=s.lastIndex,e[2])&&r.push({type:'element',tag:'br'}),e&&!e[1];);return r}}();\",\"type\":\"application/javascript\",\"module-type\":\"wikirule\"},\"$:/core/modules/parsers/wikiparser/rules/heading.js\":{\"text\":\"!function(){'use strict';exports.name='heading',exports.types={block:!0},exports.init=function(e){this.parser=e,this.matchRegExp=/(!{1,6})/gm},exports.parse=function(){var e=this.match[1].length,s=(this.parser.pos=this.matchRegExp.lastIndex,this.parser.parseClasses()),t=(this.parser.skipWhitespace({treatNewlinesAsNonWhitespace:!0}),this.parser.parseInlineRun(/(\\\\r?\\\\n)/gm));return[{type:'element',tag:'h'+e,attributes:{class:{type:'string',value:s.join(' ')}},children:t}]}}();\",\"type\":\"application/javascript\",\"module-type\":\"wikirule\"},\"$:/core/modules/parsers/wikiparser/rules/horizrule.js\":{\"text\":\"!function(){'use strict';exports.name='horizrule',exports.types={block:!0},exports.init=function(t){this.parser=t,this.matchRegExp=/-{3,}\\\\r?(?:\\\\n|$)/gm},exports.parse=function(){return this.parser.pos=this.matchRegExp.lastIndex,[{type:'element',tag:'hr'}]}}();\",\"type\":\"application/javascript\",\"module-type\":\"wikirule\"},\"$:/core/modules/parsers/wikiparser/rules/html.js\":{\"text\":\"!function(){'use strict';exports.name='html',exports.types={inline:!0,block:!0},exports.init=function(t){this.parser=t},exports.findNextMatch=function(t){return this.nextTag=this.findNextTag(this.parser.source,t,{requireLineBreak:this.is.block}),this.nextTag?this.nextTag.start:void 0},exports.parse=function(){var t,e=this.nextTag,r=(this.nextTag=null,this.parser.pos=e.end,!e.isSelfClosing&&!!$tw.utils.parseTokenRegExp(this.parser.source,this.parser.pos,/([^\\\\S\\\\n\\\\r]*\\\\r?\\\\n(?:[^\\\\S\\\\n\\\\r]*\\\\r?\\\\n|$))/g));return e.isBlock=this.is.block||r,e.isSelfClosing||-1!==$tw.config.htmlVoidElements.indexOf(e.tag)||(t='\u003C/'+$tw.utils.escapeRegExp(e.tag)+'>',r?e.children=this.parser.parseBlocks(t):(r=new RegExp('('+t+')','mg'),e.children=this.parser.parseInlineRun(r,{eatTerminator:!0}))),[e]},exports.parseTag=function(t,e,r){r=r||{};var s,i={type:'element',start:e,attributes:{},orderedAttributes:[]};if(e=$tw.utils.skipWhiteSpace(t,e),!(s=$tw.utils.parseTokenString(t,e,'\u003C')))return null;if(e=s.end,!(s=$tw.utils.parseTokenRegExp(t,e,/([a-zA-Z0-9\\\\-\\\\$]+)/g)))return null;if(i.tag=s.match[1],-1!==i.tag.slice(1).indexOf('$'))return null;if('$'===i.tag.charAt(0)&&(i.type=i.tag.substr(1)),e=s.end,!$tw.utils.parseWhiteSpace(t,e)&&'/'!==t.charAt(e)&&'>'!==t.charAt(e))return null;for(var n=$tw.utils.parseAttribute(t,e);n;)i.orderedAttributes.push(n),e=(i.attributes[n.name]=n).end,n=$tw.utils.parseAttribute(t,e);return e=$tw.utils.skipWhiteSpace(t,e),(s=$tw.utils.parseTokenString(t,e,'/'))&&(e=s.end,i.isSelfClosing=!0),!(s=$tw.utils.parseTokenString(t,e,'>'))||(e=s.end,r.requireLineBreak&&!$tw.utils.parseTokenRegExp(t,e,/([^\\\\S\\\\n\\\\r]*\\\\r?\\\\n(?:[^\\\\S\\\\n\\\\r]*\\\\r?\\\\n|$))/g))?null:(i.end=e,i)},exports.findNextTag=function(t,e,r){for(var s=/\u003C([a-zA-Z\\\\-\\\\$]+)/g,i=(s.lastIndex=e,s.exec(t));i;){var n=this.parseTag(t,i.index,r);if(n&&this.isLegalTag(n))return n;s.lastIndex=i.index+1,i=s.exec(t)}return null},exports.isLegalTag=function(t){return'element'!==t.type||'-'!==t.tag.charAt(0)}}();\",\"type\":\"application/javascript\",\"module-type\":\"wikirule\"},\"$:/core/modules/parsers/wikiparser/rules/image.js\":{\"text\":\"!function(){'use strict';exports.name='image',exports.types={inline:!0},exports.init=function(t){this.parser=t},exports.findNextMatch=function(t){return this.nextImage=this.findNextImage(this.parser.source,t),this.nextImage?this.nextImage.start:void 0},exports.parse=function(){return this.parser.pos=this.nextImage.end,[{type:'image',attributes:this.nextImage.attributes}]},exports.findNextImage=function(t,e){for(var i=/(\\\\[img)/g,s=(i.lastIndex=e,i.exec(t));s;){var r=this.parseImage(t,s.index);if(r)return r;i.lastIndex=s.index+1,s=i.exec(t)}return null},exports.parseImage=function(t,e){var i,s={type:'image',start:e,attributes:{}};if(e=$tw.utils.skipWhiteSpace(t,e),!(i=$tw.utils.parseTokenString(t,e,'[img')))return null;if(e=i.end,e=$tw.utils.skipWhiteSpace(t,e),'['!==t.charAt(e))for(var r=$tw.utils.parseAttribute(t,e);r;)e=(s.attributes[r.name]=r).end,e=$tw.utils.skipWhiteSpace(t,e),r='['!==t.charAt(e)?$tw.utils.parseAttribute(t,e):null;return e=$tw.utils.skipWhiteSpace(t,e),(i=$tw.utils.parseTokenString(t,e,'['))&&(e=i.end,e=$tw.utils.skipWhiteSpace(t,e),i=$tw.utils.parseTokenRegExp(t,e,/(?:([^|\\\\]]*?)\\\\|)?([^\\\\]]+?)\\\\]\\\\]/g))?(e=i.end,i.match[1]&&(s.attributes.tooltip={type:'string',value:i.match[1].trim()}),s.attributes.source={type:'string',value:(i.match[2]||'').trim()},s.end=e,s):null}}();\",\"type\":\"application/javascript\",\"module-type\":\"wikirule\"},\"$:/core/modules/parsers/wikiparser/rules/import.js\":{\"text\":\"!function(){'use strict';exports.name='import',exports.types={pragma:!0},exports.init=function(t){this.parser=t,this.matchRegExp=/^\\\\\\\\import[^\\\\S\\\\n]/gm},exports.parse=function(){this.parser.pos=this.matchRegExp.lastIndex;var t=/(.*)(?:$|\\\\r?\\\\n)/gm,r=(t.lastIndex=this.parser.pos,t.exec(this.parser.source));return this.parser.pos=t.lastIndex,[{type:'importvariables',attributes:{filter:{type:'string',value:r[1]}},children:[]}]}}();\",\"type\":\"application/javascript\",\"module-type\":\"wikirule\"},\"$:/core/modules/parsers/wikiparser/rules/list.js\":{\"text\":\"!function(){'use strict';exports.name='list',exports.types={block:!0},exports.init=function(e){this.parser=e,this.matchRegExp=/([\\\\*#;:>]+)/gm};var h={'*':{listTag:'ul',itemTag:'li'},'#':{listTag:'ol',itemTag:'li'},';':{listTag:'dl',itemTag:'dt'},':':{listTag:'dl',itemTag:'dd'},'>':{listTag:'blockquote',itemTag:'div'}};exports.parse=function(){for(var e=[];;){var t=/([\\\\*#;:>]+)/gm,s=(t.lastIndex=this.parser.pos,t.exec(this.parser.source));if(!s||s.index!==this.parser.pos)break;var i=h[s[0].charAt(0)];if(0\u003Ce.length&&e[0].tag!==i.listTag)break;this.parser.pos=s.index+s[0].length;for(var r=0;r\u003Cs[0].length;r++){var a,i=h[s[0].charAt(r)];r\u003Ce.length&&e[r].tag!==i.listTag&&e.splice(r,e.length-r),e.length\u003C=r?(a={type:'element',tag:i.listTag,children:[{type:'element',tag:i.itemTag,children:[]}]},r&&e[r-1].children[e[r-1].children.length-1].children.push(a),e[r]=a):r===s[0].length-1&&e[r].children.push({type:'element',tag:i.itemTag,children:[]})}e.length>s[0].length&&e.splice(s[0].length,e.length-s[0].length);var t=e[e.length-1].children,t=t[t.length-1],l=this.parser.parseClasses(),n=(this.parser.skipWhitespace({treatNewlinesAsNonWhitespace:!0}),this.parser.parseInlineRun(/(\\\\r?\\\\n)/gm));t.children.push.apply(t.children,n),0\u003Cl.length&&$tw.utils.addClassToParseTreeNode(t,l.join(' ')),this.parser.skipWhitespace()}return[e[0]]}}();\",\"type\":\"application/javascript\",\"module-type\":\"wikirule\"},\"$:/core/modules/parsers/wikiparser/rules/macrocallblock.js\":{\"text\":\"!function(){'use strict';exports.name='macrocallblock',exports.types={block:!0},exports.init=function(r){this.parser=r},exports.findNextMatch=function(r){for(var t=r;0\u003C=(t=this.parser.source.indexOf('\u003C\u003C',t));){var s=$tw.utils.parseMacroInvocation(this.parser.source,t);if(s){var e=this.parser.source.charAt(s.end);if(''===e||'\\\\n'===e||'\\\\r'===e&&'\\\\n'===this.parser.source.charAt(s.end+1))return this.nextCall=s,t}t+=2}},exports.parse=function(){var r=this.nextCall;return r.isBlock=!0,this.nextCall=null,this.parser.pos=r.end,[r]}}();\",\"type\":\"application/javascript\",\"module-type\":\"wikirule\"},\"$:/core/modules/parsers/wikiparser/rules/macrocallinline.js\":{\"text\":\"!function(){'use strict';exports.name='macrocallinline',exports.types={inline:!0},exports.init=function(t){this.parser=t},exports.findNextMatch=function(t){for(var e=t;0\u003C=(e=this.parser.source.indexOf('\u003C\u003C',e));){if(this.nextCall=$tw.utils.parseMacroInvocation(this.parser.source,e),this.nextCall)return e;e+=2}},exports.parse=function(){var t=this.nextCall;return this.nextCall=null,this.parser.pos=t.end,[t]}}();\",\"type\":\"application/javascript\",\"module-type\":\"wikirule\"},\"$:/core/modules/parsers/wikiparser/rules/macrodef.js\":{\"text\":\"!function(){'use strict';exports.name='macrodef',exports.types={pragma:!0},exports.init=function(s){this.parser=s,this.matchRegExp=/^\\\\\\\\define\\\\s+([^(\\\\s]+)\\\\(\\\\s*([^)]*)\\\\)(\\\\s*\\\\r?\\\\n)?/gm},exports.parse=function(){this.parser.pos=this.matchRegExp.lastIndex;var s=this.match[2],e=[];if(''!==s)for(var t=/\\\\s*([A-Za-z0-9\\\\-_]+)(?:\\\\s*:\\\\s*(?:\\\"\\\"\\\"([\\\\s\\\\S]*?)\\\"\\\"\\\"|\\\"([^\\\"]*)\\\"|'([^']*)'|\\\\[\\\\[([^\\\\]]*)\\\\]\\\\]|([^\\\"'\\\\s]+)))?/gm,r=t.exec(s);r;){var a={name:r[1]},i=r[2]||r[3]||r[4]||r[5]||r[6];i&&(a.default=i),e.push(a),r=t.exec(s)}this.match[3]?n=new RegExp('(\\\\\\\\r?\\\\\\\\n\\\\\\\\\\\\\\\\end[^\\\\\\\\S\\\\\\\\n\\\\\\\\r]*(?:'+$tw.utils.escapeRegExp(this.match[1])+')?(?:$|\\\\\\\\r?\\\\\\\\n))','mg'):(n=/($|\\\\r?\\\\n)/gm,this.parser.pos=$tw.utils.skipWhiteSpace(this.parser.source,this.parser.pos)),n.lastIndex=this.parser.pos;var p,n=n.exec(this.parser.source);return n?(p=this.parser.source.substring(this.parser.pos,n.index),this.parser.pos=n.index+n[0].length):p='',[{type:'set',attributes:{name:{type:'string',value:this.match[1]},value:{type:'string',value:p}},children:[],params:e,isMacroDefinition:!0}]}}();\",\"type\":\"application/javascript\",\"module-type\":\"wikirule\"},\"$:/core/modules/parsers/wikiparser/rules/parsermode.js\":{\"text\":\"!function(){'use strict';exports.name='parsermode',exports.types={pragma:!0},exports.init=function(s){this.parser=s,this.matchRegExp=/^\\\\\\\\parsermode[^\\\\S\\\\n]/gm},exports.parse=function(){this.parser.pos=this.matchRegExp.lastIndex;for(var s=/[^\\\\S\\\\n]*(\\\\S+)|(\\\\r?\\\\n)/gm,e=void 0,r=(s.lastIndex=this.parser.pos,s.exec(this.parser.source));r&&r.index===this.parser.pos&&(this.parser.pos=s.lastIndex,!r[2]);)r[1]&&(e=r[1]),r=s.exec(this.parser.source);return void 0!==e&&('block'===e?this.parser.parseAsInline=!1:'inline'===e&&(this.parser.parseAsInline=!0)),[]}}();\",\"type\":\"application/javascript\",\"module-type\":\"wikirule\"},\"$:/core/modules/parsers/wikiparser/rules/prettyextlink.js\":{\"text\":\"!function(){'use strict';exports.name='prettyextlink',exports.types={inline:!0},exports.init=function(t){this.parser=t},exports.findNextMatch=function(t){return this.nextLink=this.findNextLink(this.parser.source,t),this.nextLink?this.nextLink.start:void 0},exports.parse=function(){return this.parser.pos=this.nextLink.end,[this.nextLink]},exports.findNextLink=function(t,e){for(var n=/(\\\\[ext\\\\[)/g,r=(n.lastIndex=e,n.exec(t));r;){var i=this.parseLink(t,r.index);if(i)return i;n.lastIndex=r.index+1,r=n.exec(t)}return null},exports.parseLink=function(t,e){var n={type:'text'},r={type:'element',tag:'a',start:e,attributes:{class:{type:'string',value:'tc-tiddlylink-external'}},children:[n]};if(e=$tw.utils.skipWhiteSpace(t,e),!(a=$tw.utils.parseTokenString(t,e,'[ext[')))return null;e=a.end;var i,s,a=t.indexOf(']]',e);return-1===a?null:((i=-1===(i=t.indexOf('|',e))||a\u003Ci?null:i)?(s=t.substring(i+1,a).trim(),n.text=t.substring(e,i).trim()):(s=t.substring(e,a).trim(),n.text=s),r.attributes.href={type:'string',value:s},r.attributes.target={type:'string',value:'_blank'},r.attributes.rel={type:'string',value:'noopener noreferrer'},r.end=a+2,r)}}();\",\"type\":\"application/javascript\",\"module-type\":\"wikirule\"},\"$:/core/modules/parsers/wikiparser/rules/prettylink.js\":{\"text\":\"!function(){'use strict';exports.name='prettylink',exports.types={inline:!0},exports.init=function(t){this.parser=t,this.matchRegExp=/\\\\[\\\\[(.*?)(?:\\\\|(.*?))?\\\\]\\\\]/gm},exports.parse=function(){this.parser.pos=this.matchRegExp.lastIndex;var t=this.match[1],e=this.match[2]||t;return $tw.utils.isLinkExternal(e)?[{type:'element',tag:'a',attributes:{href:{type:'string',value:e},class:{type:'string',value:'tc-tiddlylink-external'},target:{type:'string',value:'_blank'},rel:{type:'string',value:'noopener noreferrer'}},children:[{type:'text',text:t}]}]:[{type:'link',attributes:{to:{type:'string',value:e}},children:[{type:'text',text:t}]}]}}();\",\"type\":\"application/javascript\",\"module-type\":\"wikirule\"},\"$:/core/modules/parsers/wikiparser/rules/quoteblock.js\":{\"text\":\"!function(){'use strict';exports.name='quoteblock',exports.types={block:!0},exports.init=function(e){this.parser=e,this.matchRegExp=/(\u003C\u003C\u003C+)/gm},exports.parse=function(){var e=['tc-quote'],t='^'+this.match[1]+'(?!\u003C)',s=(this.parser.pos=this.matchRegExp.lastIndex,e.push.apply(e,this.parser.parseClasses()),this.parser.skipWhitespace({treatNewlinesAsNonWhitespace:!0}),this.parser.parseInlineRun(/(\\\\r?\\\\n)/gm)),t=this.parser.parseBlocks(t);return 0\u003Cs.length&&t.unshift({type:'element',tag:'cite',children:s}),this.parser.skipWhitespace({treatNewlinesAsNonWhitespace:!0}),0\u003C(s=this.parser.parseInlineRun(/(\\\\r?\\\\n)/gm)).length&&t.push({type:'element',tag:'cite',children:s}),[{type:'element',tag:'blockquote',attributes:{class:{type:'string',value:e.join(' ')}},children:t}]}}();\",\"type\":\"application/javascript\",\"module-type\":\"wikirule\"},\"$:/core/modules/parsers/wikiparser/rules/rules.js\":{\"text\":\"!function(){'use strict';exports.name='rules',exports.types={pragma:!0},exports.init=function(s){this.parser=s,this.matchRegExp=/^\\\\\\\\rules[^\\\\S\\\\n]/gm},exports.parse=function(){this.parser.pos=this.matchRegExp.lastIndex;for(var s=/[^\\\\S\\\\n]*(\\\\S+)|(\\\\r?\\\\n)/gm,e=[],r=(s.lastIndex=this.parser.pos,s.exec(this.parser.source));r&&r.index===this.parser.pos&&(this.parser.pos=s.lastIndex,!r[2]);)r[1]&&e.push(r[1]),r=s.exec(this.parser.source);return 0\u003Ce.length&&this.parser.amendRules(e[0],e.slice(1)),[]}}();\",\"type\":\"application/javascript\",\"module-type\":\"wikirule\"},\"$:/core/modules/parsers/wikiparser/rules/styleblock.js\":{\"text\":\"!function(){'use strict';exports.name='styleblock',exports.types={block:!0},exports.init=function(t){this.parser=t,this.matchRegExp=/@@((?:[^\\\\.\\\\r\\\\n\\\\s:]+:[^\\\\r\\\\n;]+;)+)?(?:\\\\.([^\\\\r\\\\n\\\\s]+))?\\\\r?\\\\n/gm},exports.parse=function(){for(var t=[],s=[];this.match[1]&&s.push(this.match[1]),this.match[2]&&t.push(this.match[2].split('.').join(' ')),this.parser.pos=this.matchRegExp.lastIndex,this.match=this.matchRegExp.exec(this.parser.source),this.match&&this.match.index===this.parser.pos;);for(var e=this.parser.parseBlocks('^@@(?:\\\\\\\\r?\\\\\\\\n)?'),r=0;r\u003Ce.length;r++)0\u003Ct.length&&$tw.utils.addClassToParseTreeNode(e[r],t.join(' ')),0\u003Cs.length&&$tw.utils.addAttributeToParseTreeNode(e[r],'style',s.join(''));return e}}();\",\"type\":\"application/javascript\",\"module-type\":\"wikirule\"},\"$:/core/modules/parsers/wikiparser/rules/styleinline.js\":{\"text\":\"!function(){'use strict';exports.name='styleinline',exports.types={inline:!0},exports.init=function(t){this.parser=t,this.matchRegExp=/@@((?:[^\\\\.\\\\r\\\\n\\\\s:]+:[^\\\\r\\\\n;]+;)+)?(\\\\.(?:[^\\\\r\\\\n\\\\s]+)\\\\s+)?/gm},exports.parse=function(){var t=this.match[1],e=this.match[2]?this.match[2].split('.').join(' '):void 0;this.parser.pos=this.matchRegExp.lastIndex;var s={type:'element',tag:'span',children:this.parser.parseInlineRun(/@@/g,{eatTerminator:!0})};return e&&$tw.utils.addClassToParseTreeNode(s,e),t&&$tw.utils.addAttributeToParseTreeNode(s,'style',t),e||t||$tw.utils.addClassToParseTreeNode(s,'tc-inline-style'),[s]}}();\",\"type\":\"application/javascript\",\"module-type\":\"wikirule\"},\"$:/core/modules/parsers/wikiparser/rules/syslink.js\":{\"text\":\"!function(){'use strict';exports.name='syslink',exports.types={inline:!0},exports.init=function(t){this.parser=t,this.matchRegExp=new RegExp('~?\\\\\\\\$:\\\\\\\\/['+$tw.config.textPrimitives.anyLetter.substr(1,$tw.config.textPrimitives.anyLetter.length-2)+'/._-]+','mg')},exports.parse=function(){var t=this.match[0];return this.parser.pos=this.matchRegExp.lastIndex,'~'===t.substr(0,1)?[{type:'text',text:t.substr(1)}]:[{type:'link',attributes:{to:{type:'string',value:t}},children:[{type:'text',text:t}]}]}}();\",\"type\":\"application/javascript\",\"module-type\":\"wikirule\"},\"$:/core/modules/parsers/wikiparser/rules/table.js\":{\"text\":\"!function(){'use strict';exports.name='table',exports.types={block:!0},exports.init=function(e){this.parser=e,this.matchRegExp=/^\\\\|(?:[^\\\\n]*)\\\\|(?:[fhck]?)\\\\r?(?:\\\\n|$)/gm};function h(e){for(var t,s=/(?:\\\\|([^\\\\n\\\\|]*)\\\\|)|(\\\\|[fhck]?\\\\r?(?:\\\\n|$))/gm,r=/((?:\\\\x20*)\\\\|)/gm,a=[],i=0,o=1,p=(s.lastIndex=this.parser.pos,s.exec(this.parser.source));p&&p.index===this.parser.pos;){if('~'===p[1]){var n=e[i];n&&(n.rowSpanCount++,$tw.utils.addAttributeToParseTreeNode(n.element,'rowspan',n.rowSpanCount),h=$tw.utils.getAttributeValueFromParseTreeNode(n.element,'valign','center'),$tw.utils.addAttributeToParseTreeNode(n.element,'valign',h),1\u003Co)&&($tw.utils.addAttributeToParseTreeNode(n.element,'colspan',o),o=1),this.parser.pos=s.lastIndex-1}else if('>'===p[1])o++,this.parser.pos=s.lastIndex-1;else if('\u003C'===p[1]&&t)o=1+$tw.utils.getAttributeValueFromParseTreeNode(t,'colspan',1),$tw.utils.addAttributeToParseTreeNode(t,'colspan',o),this.parser.pos=s.lastIndex-(o=1);else{if(p[2]){t&&1\u003Co&&(t.attributes&&t.attributes&&t.attributes.colspan?o+=t.attributes.colspan.value:--o,$tw.utils.addAttributeToParseTreeNode(t,'colspan',o)),this.parser.pos=s.lastIndex-1;break}this.parser.pos++;var l=!1,h=null;0===this.parser.source.substr(this.parser.pos).search(/^\\\\^([^\\\\^]|\\\\^\\\\^)/)?h='top':0===this.parser.source.substr(this.parser.pos).search(/^,([^,]|,,)/)&&(h='bottom'),h&&this.parser.pos++;for(var d=this.parser.source.substr(this.parser.pos,1);' '===d;)l=!0,this.parser.pos++,d=this.parser.source.substr(this.parser.pos,1);n='!'===d?(this.parser.pos++,{type:'element',tag:'th',children:[]}):{type:'element',tag:'td',children:[]},a.push(n),t=n,e[i]={rowSpanCount:1,element:n},1\u003Co&&($tw.utils.addAttributeToParseTreeNode(n,'colspan',o),o=1),n.children=this.parser.parseInlineRun(r,{eatTerminator:!0}),h&&$tw.utils.addAttributeToParseTreeNode(n,'valign',h),' '===this.parser.source.substr(this.parser.pos-2,1)?$tw.utils.addAttributeToParseTreeNode(n,'align',l?'center':'left'):l&&$tw.utils.addAttributeToParseTreeNode(n,'align','right'),this.parser.pos--}i++,s.lastIndex=this.parser.pos,p=s.exec(this.parser.source)}return a}exports.parse=function(){for(var e,t,s={c:'caption',h:'thead','':'tbody',f:'tfoot'},r={type:'element',tag:'table',children:[]},a=/^\\\\|([^\\\\n]*)\\\\|([fhck]?)\\\\r?(?:\\\\n|$)/gm,i=/(\\\\|(?:[fhck]?)\\\\r?(?:\\\\n|$))/gm,o=[],p=0,n=(a.lastIndex=this.parser.pos,a.exec(this.parser.source));n&&n.index===this.parser.pos;){var l=n[2];'k'===l?($tw.utils.addClassToParseTreeNode(r,n[1]),this.parser.pos=n.index+n[0].length):(l!==e&&(r.children.push(t={type:'element',tag:s[l],children:[]}),e=l),'c'===e?(this.parser.pos++,1!==r.children.length&&(r.children.pop(),r.children.splice(0,0,t)),t.children=this.parser.parseInlineRun(i,{eatTerminator:!0})):(l={type:'element',tag:'tr',children:[]},$tw.utils.addClassToParseTreeNode(l,p%2?'oddRow':'evenRow'),t.children.push(l),l.children=h.call(this,o),this.parser.pos=n.index+n[0].length,p++)),n=a.exec(this.parser.source)}return[r]}}();\",\"type\":\"application/javascript\",\"module-type\":\"wikirule\"},\"$:/core/modules/parsers/wikiparser/rules/transcludeblock.js\":{\"text\":\"!function(){'use strict';exports.name='transcludeblock',exports.types={block:!0},exports.init=function(t){this.parser=t,this.matchRegExp=/\\\\{\\\\{([^\\\\{\\\\}\\\\|]*)(?:\\\\|\\\\|([^\\\\|\\\\{\\\\}]+))?\\\\}\\\\}(?:\\\\r?\\\\n|$)/gm},exports.parse=function(){this.parser.pos=this.matchRegExp.lastIndex;var t,e,i,s,r=$tw.utils.trim(this.match[2]),a=$tw.utils.trim(this.match[1]),l={type:'transclude',attributes:{},isBlock:!0};return a&&(t=(i=$tw.utils.parseTextReference(a)).title,e=i.field,i=i.index,s={type:'tiddler',attributes:{tiddler:{type:'string',value:t}},isBlock:!0,children:[l]}),r?(l.attributes.tiddler={type:'string',value:r},a?[s]:[l]):a?(l.attributes.tiddler={type:'string',value:t},e&&(l.attributes.field={type:'string',value:e}),i&&(l.attributes.index={type:'string',value:i}),[s]):[l]}}();\",\"type\":\"application/javascript\",\"module-type\":\"wikirule\"},\"$:/core/modules/parsers/wikiparser/rules/transcludeinline.js\":{\"text\":\"!function(){'use strict';exports.name='transcludeinline',exports.types={inline:!0},exports.init=function(t){this.parser=t,this.matchRegExp=/\\\\{\\\\{([^\\\\{\\\\}\\\\|]*)(?:\\\\|\\\\|([^\\\\|\\\\{\\\\}]+))?\\\\}\\\\}/gm},exports.parse=function(){this.parser.pos=this.matchRegExp.lastIndex;var t,e,i,r,s=$tw.utils.trim(this.match[2]),n=$tw.utils.trim(this.match[1]),a={type:'transclude',attributes:{}};return n&&(t=(i=$tw.utils.parseTextReference(n)).title,e=i.field,i=i.index,r={type:'tiddler',attributes:{tiddler:{type:'string',value:t}},children:[a]}),s?(a.attributes.tiddler={type:'string',value:s},n?[r]:[a]):n?(a.attributes.tiddler={type:'string',value:t},e&&(a.attributes.field={type:'string',value:e}),i&&(a.attributes.index={type:'string',value:i}),[r]):[a]}}();\",\"type\":\"application/javascript\",\"module-type\":\"wikirule\"},\"$:/core/modules/parsers/wikiparser/rules/typedblock.js\":{\"text\":\"!function(){'use strict';require('$:/core/modules/widgets/widget.js');exports.name='typedblock',exports.types={block:!0},exports.init=function(e){this.parser=e,this.matchRegExp=/\\\\$\\\\$\\\\$([^ >\\\\r\\\\n]*)(?: *> *([^ \\\\r\\\\n]+))?\\\\r?\\\\n/gm},exports.parse=function(){var e,t,s=/\\\\r?\\\\n\\\\$\\\\$\\\\$\\\\r?(?:\\\\n|$)/gm,r=this.match[1],i=this.match[2],s=(this.parser.pos=this.matchRegExp.lastIndex,s.lastIndex=this.parser.pos,s.exec(this.parser.source)),s=(s?(e=this.parser.source.substring(this.parser.pos,s.index),this.parser.pos=s.index+s[0].length):(e=this.parser.source.substr(this.parser.pos),this.parser.pos=this.parser.sourceLength),this.parser.wiki.parseText(r,e,{defaultType:'text/plain'}));return i?(r=this.parser.wiki.makeWidget(s),t=$tw.fakeDocument.createElement('div'),r.render(t,null),[{type:'element',tag:'pre',children:[{type:'text',text:e='text/html'===i?t.innerHTML:t.textContent}]}]):s.tree}}();\",\"type\":\"application/javascript\",\"module-type\":\"wikirule\"},\"$:/core/modules/parsers/wikiparser/rules/whitespace.js\":{\"text\":\"!function(){'use strict';exports.name='whitespace',exports.types={pragma:!0},exports.init=function(s){this.parser=s,this.matchRegExp=/^\\\\\\\\whitespace[^\\\\S\\\\n]/gm},exports.parse=function(){for(var e=this,s=(this.parser.pos=this.matchRegExp.lastIndex,/[^\\\\S\\\\n]*(\\\\S+)|(\\\\r?\\\\n)/gm),r=[],t=(s.lastIndex=this.parser.pos,s.exec(this.parser.source));t&&t.index===this.parser.pos&&(this.parser.pos=s.lastIndex,!t[2]);)t[1]&&r.push(t[1]),t=s.exec(this.parser.source);return $tw.utils.each(r,function(s){switch(s){case'trim':e.parser.configTrimWhiteSpace=!0;break;case'notrim':e.parser.configTrimWhiteSpace=!1}}),[]}}();\",\"type\":\"application/javascript\",\"module-type\":\"wikirule\"},\"$:/core/modules/parsers/wikiparser/rules/wikilink.js\":{\"text\":\"!function(){'use strict';exports.name='wikilink',exports.types={inline:!0},exports.init=function(t){this.parser=t,this.matchRegExp=new RegExp($tw.config.textPrimitives.unWikiLink+'?'+$tw.config.textPrimitives.wikiLink,'mg')},exports.parse=function(){var t=this.match[0];if(this.parser.pos=this.matchRegExp.lastIndex,t.substr(0,1)===$tw.config.textPrimitives.unWikiLink)return[{type:'text',text:t.substr(1)}];if(0\u003Cthis.match.index){var i=new RegExp($tw.config.textPrimitives.blockPrefixLetters,'mg'),i=(i.lastIndex=this.match.index-1,i.exec(this.parser.source));if(i&&i.index===this.match.index-1)return[{type:'text',text:t}]}return[{type:'link',attributes:{to:{type:'string',value:t}},children:[{type:'text',text:t}]}]}}();\",\"type\":\"application/javascript\",\"module-type\":\"wikirule\"},\"$:/core/modules/parsers/wikiparser/wikiparser.js\":{\"text\":\"!function(){'use strict';function h(s,e,t){this.wiki=t.wiki,$tw.browser&&''===(e||'')&&t._canonical_uri&&(this.loadRemoteTiddler(t._canonical_uri),e=$tw.language.getRawString('LazyLoadingWarning')),this.type=s||'text/vnd.tiddlywiki',this.source=e||'',this.sourceLength=this.source.length,this.configTrimWhiteSpace=!1,this.parseAsInline=t.parseAsInline,this.pos=0,this.tree=[],s=t.rules?(i=t.rules.pragma,n=t.rules.block,t.rules.inline):(this.pragmaRuleClasses||(h.prototype.pragmaRuleClasses=$tw.modules.createClassesFromModules('wikirule','pragma',$tw.WikiRuleBase),this.setupRules(h.prototype.pragmaRuleClasses,'$:/config/WikiParserRules/Pragmas/')),i=this.pragmaRuleClasses,this.blockRuleClasses||(h.prototype.blockRuleClasses=$tw.modules.createClassesFromModules('wikirule','block',$tw.WikiRuleBase),this.setupRules(h.prototype.blockRuleClasses,'$:/config/WikiParserRules/Block/')),n=this.blockRuleClasses,this.inlineRuleClasses||(h.prototype.inlineRuleClasses=$tw.modules.createClassesFromModules('wikirule','inline',$tw.WikiRuleBase),this.setupRules(h.prototype.inlineRuleClasses,'$:/config/WikiParserRules/Inline/')),this.inlineRuleClasses),this.pragmaRules=this.instantiateRules(i,'pragma',0),this.blockRules=this.instantiateRules(n,'block',0),this.inlineRules=this.instantiateRules(s,'inline',0);var i,n,e=this.parsePragmas();this.parseAsInline?e.push.apply(e,this.parseInlineRun()):e.push.apply(e,this.parseBlocks())}h.prototype.loadRemoteTiddler=function(t){var i=this;$tw.utils.httpRequest({url:t,type:'GET',callback:function(s,e){s||(s=i.wiki.deserializeTiddlers('.tid',e,i.wiki.getCreationFields()),$tw.utils.each(s,function(s){s._canonical_uri=t}),s&&i.wiki.addTiddlers(s))}})},h.prototype.setupRules=function(t,i){var n=this;$tw.safeMode||$tw.utils.each(t,function(s,e){'enable'!==n.wiki.getTiddlerText(i+e,'enable')&&delete t[e]})},h.prototype.instantiateRules=function(s,t,i){var n=[],h=this;return $tw.utils.each(s,function(s){var s=new s(h),e=(s.is={},s.is[t]=!0,s.init(h),s.findNextMatch(i));void 0!==e&&n.push({rule:s,matchIndex:e})}),n},h.prototype.skipWhitespace=function(s){var s=(s=s||{}).treatNewlinesAsNonWhitespace?/([^\\\\S\\\\n]+)/gm:/(\\\\s+)/gm,e=(s.lastIndex=this.pos,s.exec(this.source));e&&e.index===this.pos&&(this.pos=s.lastIndex)},h.prototype.findNextMatch=function(s,e){for(var t,i=this.sourceLength,n=0;n\u003Cs.length;n++){var h=s[n];void 0!==h.matchIndex&&h.matchIndex\u003Ce&&(h.matchIndex=h.rule.findNextMatch(e)),void 0!==h.matchIndex&&h.matchIndex\u003C=i&&(i=(t=h).matchIndex)}return t},h.prototype.parsePragmas=function(){for(var s=this.tree;this.skipWhitespace(),!(this.pos>=this.sourceLength);){var e=this.findNextMatch(this.pragmaRules,this.pos);if(!e||e.matchIndex!==this.pos)break;0\u003C(e=e.rule.parse()).length&&(s.push.apply(s,e),e[0].children=[],s=e[0].children)}return s},h.prototype.parseBlock=function(s){var e,s=s?new RegExp('('+s+'|\\\\\\\\r?\\\\\\\\n\\\\\\\\r?\\\\\\\\n)','mg'):/(\\\\r?\\\\n\\\\r?\\\\n)/gm;return this.skipWhitespace(),this.pos>=this.sourceLength?[]:(e=this.findNextMatch(this.blockRules,this.pos))&&e.matchIndex===this.pos?e.rule.parse():(e=this.pos,[{type:'element',tag:'p',children:this.parseInlineRun(s),start:e,end:this.pos}])},h.prototype.parseBlocks=function(s){return s?this.parseBlocksTerminated(s):this.parseBlocksUnterminated()},h.prototype.parseBlocksUnterminated=function(){for(var s=[];this.pos\u003Cthis.sourceLength;)s.push.apply(s,this.parseBlock());return s},h.prototype.parseBlocksTerminated=function(s){for(var e=new RegExp('('+s+')','mg'),t=[],i=(this.skipWhitespace(),e.lastIndex=this.pos,e.exec(this.source));this.pos\u003Cthis.sourceLength&&(!i||i.index!==this.pos);){var n=this.parseBlock(s);t.push.apply(t,n),this.skipWhitespace(),e.lastIndex=this.pos,i=e.exec(this.source)}return i&&i.index===this.pos&&(this.pos=i.index+i[0].length),t},h.prototype.parseInlineRun=function(s,e){return s?this.parseInlineRunTerminated(s,e):this.parseInlineRunUnterminated(e)},h.prototype.parseInlineRunUnterminated=function(s){for(var e=[],t=this.findNextMatch(this.inlineRules,this.pos);this.pos\u003Cthis.sourceLength&&t;)t.matchIndex>this.pos&&(this.pushTextWidget(e,this.source.substring(this.pos,t.matchIndex),this.pos,t.matchIndex),this.pos=t.matchIndex),e.push.apply(e,t.rule.parse()),t=this.findNextMatch(this.inlineRules,this.pos);return this.pos\u003Cthis.sourceLength&&this.pushTextWidget(e,this.source.substr(this.pos),this.pos,this.sourceLength),this.pos=this.sourceLength,e},h.prototype.parseInlineRunTerminated=function(s,e){e=e||{};for(var t=[],i=(s.lastIndex=this.pos,s.exec(this.source)),n=this.findNextMatch(this.inlineRules,this.pos);this.pos\u003Cthis.sourceLength&&(i||n);){if(i&&(!n||n.matchIndex>=i.index))return i.index>this.pos&&this.pushTextWidget(t,this.source.substring(this.pos,i.index),this.pos,i.index),this.pos=i.index,e.eatTerminator&&(this.pos+=i[0].length),t;n&&(n.matchIndex>this.pos&&(this.pushTextWidget(t,this.source.substring(this.pos,n.matchIndex),this.pos,n.matchIndex),this.pos=n.matchIndex),t.push.apply(t,n.rule.parse()),n=this.findNextMatch(this.inlineRules,this.pos),s.lastIndex=this.pos,i=s.exec(this.source))}return this.pos\u003Cthis.sourceLength&&this.pushTextWidget(t,this.source.substr(this.pos),this.pos,this.sourceLength),this.pos=this.sourceLength,t},h.prototype.pushTextWidget=function(s,e,t,i){(e=this.configTrimWhiteSpace?$tw.utils.trim(e):e)&&s.push({type:'text',text:e,start:t,end:i})},h.prototype.parseClasses=function(){for(var s=/\\\\.([^\\\\s\\\\.]+)/gm,e=[],t=(s.lastIndex=this.pos,s.exec(this.source));t&&t.index===this.pos;)this.pos=t.index+t[0].length,e.push(t[1]),t=s.exec(this.source);return e},h.prototype.amendRules=function(s,t){var i;if(t=t||[],'only'===s)i=!0;else{if('except'!==s)return;i=!1}function e(s){for(var e=s.length-1;0\u003C=e;e--)-1===t.indexOf(s[e].rule.name)===i&&s.splice(e,1)}e(this.pragmaRules),e(this.blockRules),e(this.inlineRules)},exports['text/vnd.tiddlywiki']=h}();\",\"type\":\"application/javascript\",\"module-type\":\"parser\"},\"$:/core/modules/parsers/wikiparser/rules/wikirulebase.js\":{\"text\":\"!function(){'use strict';function t(){}t.prototype.init=function(t){this.parser=t},t.prototype.findNextMatch=function(t){return this.matchRegExp.lastIndex=t,this.match=this.matchRegExp.exec(this.parser.source),this.match?this.match.index:void 0},exports.WikiRuleBase=t}();\",\"type\":\"application/javascript\",\"module-type\":\"global\"},\"$:/core/modules/pluginswitcher.js\":{\"text\":\"!function(){'use strict';function i(i){this.wiki=i.wiki,this.pluginType=i.pluginType,this.controllerTitle=i.controllerTitle,this.defaultPlugins=i.defaultPlugins||[],this.onSwitch=i.onSwitch,this.switchPlugins();var t=this;this.wiki.addEventListener('change',function(i){$tw.utils.hop(i,t.controllerTitle)&&t.switchPlugins()})}i.prototype.switchPlugins=function(){for(var i=this.wiki.getTiddlerText(this.controllerTitle),t=0;!this.wiki.getTiddler(i)&&t\u003Cthis.defaultPlugins.length;)i=this.defaultPlugins[t++];var e=[],n=this,s=function(i){var t=n.wiki.getTiddler(i);t&&t.isPlugin()&&-1===e.indexOf(i)&&(e.push(i),$tw.utils.parseJSONSafe(n.wiki.getTiddlerText(i)),i=$tw.utils.parseStringArray(t.fields.dependents||''),$tw.utils.each(i,function(i){s(i)}))};s(i),$tw.wiki.readPluginInfo(e),$tw.wiki.unregisterPluginTiddlers(this.pluginType),$tw.wiki.registerPluginTiddlers(this.pluginType,e);$tw.wiki.unpackPluginTiddlers(),this.onSwitch&&this.onSwitch(e)},exports.PluginSwitcher=i}();\",\"type\":\"application/javascript\",\"module-type\":\"global\"},\"$:/core/modules/saver-handler.js\":{\"text\":\"!function(){'use strict';function t(t){var n=this;this.wiki=t.wiki,this.dirtyTracking=t.dirtyTracking,this.preloadDirty=t.preloadDirty||[],this.pendingAutoSave=!1,this.logger=new $tw.utils.Logger('saver-handler'),$tw.browser&&this.initSavers(),$tw.browser&&this.dirtyTracking&&(this.filterFn=this.wiki.compileFilter(this.wiki.getTiddlerText(this.titleSyncFilter)),t=n.filterFn.call(n.wiki,function(e){$tw.utils.each(n.preloadDirty,function(t){var i=n.wiki.getTiddler(t);e(i,t)})}),this.numChanges=t.length,this.wiki.addEventListener('change',function(t){var i=n.filterFn.call(n.wiki,function(a){$tw.utils.each(t,function(t,i){var e=n.wiki.getTiddler(i);a(e,i)})});n.numChanges+=i.length,n.updateDirtyStatus(),n.pendingAutoSave&&0===n.wiki.getSizeOfTiddlerEventQueue()&&(0\u003Cn.numChanges&&n.saveWiki({method:'autosave',downloadType:'text/plain'}),n.pendingAutoSave=!1)}),$tw.rootWidget.addEventListener('tm-auto-save-wiki',function(t){0===n.wiki.getSizeOfTiddlerEventQueue()?0\u003Cn.numChanges&&n.saveWiki({method:'autosave',downloadType:'text/plain'}):n.pendingAutoSave=!0}),$tw.addUnloadTask(function(t){var i;return n.isDirty()&&(i=$tw.language.getString('UnsavedChangesWarning'),t.returnValue=i),i})),$tw.browser&&($tw.rootWidget.addEventListener('tm-save-wiki',function(t){n.saveWiki({template:t.param,downloadType:'text/plain',variables:t.paramObject})}),$tw.rootWidget.addEventListener('tm-download-file',function(t){n.saveWiki({method:'download',template:t.param,downloadType:'text/plain',variables:t.paramObject})}))}t.prototype.titleSyncFilter='$:/config/SaverFilter',t.prototype.titleAutoSave='$:/config/AutoSave',t.prototype.titleSavedNotification='$:/language/Notifications/Save/Done',t.prototype.initSavers=function(t){t=t||'saver',this.savers=[];var e=this;$tw.modules.forEachModuleOfType(t,function(t,i){i.canSave(e)&&e.savers.push(i.create(e.wiki))}),this.savers.sort(function(t,i){return t.info.priority\u003Ci.info.priority?-1:t.info.priority>i.info.priority?1:0})},t.prototype.saveWiki=function(i){var e=this,a=(i=i||{}).method||'save';if('autosave'!==a||!$tw.config.disableAutoSave&&'yes'===this.wiki.getTiddlerText(this.titleAutoSave,'yes'))for(var t=i.variables||{},n=(i.template||this.wiki.getTiddlerText('$:/config/SaveWikiButton/Template','$:/core/save/all')).trim(),r=i.downloadType||'text/plain',o=this.wiki.renderTiddler(r,n,i),s=function(t){t?alert($tw.language.getString('Error/WhileSaving')+':\\\\n\\\\n'+t):('download'!==a&&(e.numChanges=0,e.updateDirtyStatus()),$tw.notifier.display(e.titleSavedNotification),i.callback&&i.callback())},l=this.savers.length-1;0\u003C=l;l--){var d=this.savers[l];if(-1!==d.info.capabilities.indexOf(a)&&d.save(o,a,s,{variables:{filename:t.filename}}))return this.logger.log('Saving wiki with method',a,'through saver',d.info.name),!0}return!1},t.prototype.isDirty=function(){return 0\u003Cthis.numChanges},t.prototype.updateDirtyStatus=function(){var i=this;$tw.browser&&($tw.utils.toggleClass(document.body,'tc-dirty',this.isDirty()),$tw.utils.each($tw.windows,function(t){$tw.utils.toggleClass(t.document.body,'tc-dirty',i.isDirty())}))},exports.SaverHandler=t}();\",\"type\":\"application/javascript\",\"module-type\":\"global\"},\"$:/core/modules/savers/andtidwiki.js\":{\"text\":\"!function(){'use strict';function t(e){}t.prototype.save=function(t,e,i,n){var n=n&&n.variables?n.variables.filename:null;if('download'===e)if(window.twi.saveDownload)try{window.twi.saveDownload(t,n)}catch(e){'Method not found'===e.message&&window.twi.saveDownload(t)}else{var e=document.createElement('a');e.setAttribute('href','data:text/plain,'+encodeURIComponent(t)),n&&e.setAttribute('download',n),document.body.appendChild(e),e.click(),document.body.removeChild(e)}else window.twi.saveWiki?window.twi.saveWiki(t):(-1!==(e=(n=-1!==(e=(n=0===(n=$tw.utils.decodeURIComponentSafe(document.location.toString().split('#')[0])).indexOf('file://')?n.substr(7):n).indexOf('?'))?n.substr(0,e):n).indexOf('#'))&&(n=n.substr(0,e)),window.twi.saveFile(n,t));return i(null),!0},t.prototype.info={name:'andtidwiki',priority:1600,capabilities:['save','autosave','download']},exports.canSave=function(e){return!!window.twi&&!!window.twi.saveFile},exports.create=function(e){return new t}}();\",\"type\":\"application/javascript\",\"module-type\":\"saver\"},\"$:/core/modules/savers/beaker.js\":{\"text\":\"!function(){'use strict';function e(t){this.wiki=t}e.prototype.save=function(e,t,n){var i=new DatArchive(''+window.location),o=(''+window.location.pathname).split('#')[0];return i.stat(o).then(function(t){t.isDirectory()&&(o+='/index.html'),i.writeFile(o,e,'utf8').then(function(t){n(null)},function(t){n('Beaker Saver Write Error: '+t)})},function(t){n('Beaker Saver Stat Error: '+t)}),!0},e.prototype.info={name:'beaker',priority:3e3,capabilities:['save','autosave']},exports.canSave=function(t){return!!window.DatArchive&&'dat:'===location.protocol},exports.create=function(t){return new e(t)}}();\",\"type\":\"application/javascript\",\"module-type\":\"saver\"},\"$:/core/modules/savers/custom.js\":{\"text\":\"!function(){'use strict';function t(t){try{return t&&t.$tw&&t.$tw.customSaver}catch(t){return console.log({msg:'custom saver is disabled',reason:t}),null}}function e(t){}var r=t(window)||t(window.parent)||{};e.prototype.save=function(t,e,n){return r.save(t,e,n)},e.prototype.info={name:'custom',priority:r.priority||4e3,capabilities:['save','autosave']},exports.canSave=function(t){return!!r.save},exports.create=function(t){return new e}}();\",\"type\":\"application/javascript\",\"module-type\":\"saver\"},\"$:/core/modules/savers/download.js\":{\"text\":\"!function(){'use strict';function t(e){}t.prototype.save=function(e,t,o,n){var a,n=(n=n||{}).variables.filename,r=(n||-1!==(r=document.location.pathname.lastIndexOf('/'))&&(n=$tw.utils.decodeURIComponentSafe(document.location.pathname.substr(r+1))),n=n||'tiddlywiki.html',document.createElement('a'));return void 0!==Blob?(a=new Blob([e],{type:'text/html'}),r.setAttribute('href',URL.createObjectURL(a))):r.setAttribute('href','data:text/html,'+encodeURIComponent(e)),r.setAttribute('download',n),document.body.appendChild(r),r.click(),document.body.removeChild(r),o(null),!0},t.prototype.info={name:'download',priority:100},Object.defineProperty(t.prototype.info,'capabilities',{get:function(){var e=['save','download'];return'yes'===($tw.wiki.getTextReference('$:/config/DownloadSaver/AutoSave')||'').toLowerCase()&&e.push('autosave'),e}}),exports.canSave=function(e){return void 0!==document.createElement('a').download},exports.create=function(e){return new t}}();\",\"type\":\"application/javascript\",\"module-type\":\"saver\"},\"$:/core/modules/savers/fsosaver.js\":{\"text\":\"!function(){'use strict';function e(t){}e.prototype.save=function(t,e,n){var i=unescape(document.location.pathname);if(/^\\\\/[A-Z]\\\\:\\\\\\\\[^\\\\\\\\]+/i.test(i))i=i.substr(1);else{if(''===document.location.hostname||!/^\\\\/\\\\\\\\[^\\\\\\\\]+\\\\\\\\[^\\\\\\\\]+/i.test(i))return!1;i=i.substr(1),i='\\\\\\\\\\\\\\\\'+document.location.hostname+i}i=new ActiveXObject('Scripting.FileSystemObject').OpenTextFile(i,2,-1,-1);return i.Write(t),i.Close(),n(null),!0},e.prototype.info={name:'FSOSaver',priority:120,capabilities:['save','autosave']},exports.canSave=function(t){try{return'file:'===window.location.protocol&&!!new ActiveXObject('Scripting.FileSystemObject')}catch(t){return!1}},exports.create=function(t){return new e}}();\",\"type\":\"application/javascript\",\"module-type\":\"saver\"},\"$:/core/modules/savers/gitea.js\":{\"text\":\"!function(){'use strict';function e(t){this.wiki=t}e.prototype.save=function(r,t,u){var o=this,e=this.wiki.getTiddlerText('$:/Gitea/Username'),i=$tw.utils.getPassword('Gitea'),l=this.wiki.getTiddlerText('$:/Gitea/Repo'),a=this.wiki.getTiddlerText('$:/Gitea/Path',''),c=this.wiki.getTiddlerText('$:/Gitea/Filename'),p=this.wiki.getTiddlerText('$:/Gitea/Branch')||'master',h=this.wiki.getTiddlerText('$:/Gitea/ServerURL')||'https://gitea',d={Accept:'application/json','Content-Type':'application/json;charset=UTF-8',Authorization:'token '+i};if(!(e&&i&&l&&c))return!1;'/'!==(a='/'!==a.substring(0,1)?'/'+a:a).substring(a.length-1)&&(a+='/');var g=h+'/repos/'+l+'/contents'+a;return $tw.utils.httpRequest({url:g,type:'GET',headers:d,data:{ref:p},callback:function(t,e,i){var a='';if(t&&404!==i.status)return u(t);var s=!0,n=(404!==i.status&&(t=$tw.utils.parseJSONSafe(e),$tw.utils.each(t,function(t){t.name===c&&(a=t.sha)}),''===a)&&(s=!1),{message:$tw.language.getString('ControlPanel/Saving/GitService/CommitMessage'),content:$tw.utils.base64Encode(r),sha:a});$tw.utils.httpRequest({url:h+'/repos/'+l+'/branches/'+p,type:'GET',headers:d,callback:function(t,e,i){404===i.status?u('Please ensure the branch in the Gitea repo exists'):(n.branch=p,o.upload(g+c,s?'PUT':'POST',d,n,u))}})}}),!0},e.prototype.upload=function(t,e,i,a,s){$tw.utils.httpRequest({url:t,type:e,headers:i,data:JSON.stringify(a),callback:function(t,e,i){if(t)return s(t);$tw.utils.parseJSONSafe(e);s(null)}})},e.prototype.info={name:'Gitea',priority:2e3,capabilities:['save','autosave']},exports.canSave=function(t){return!0},exports.create=function(t){return new e(t)}}();\",\"type\":\"application/javascript\",\"module-type\":\"saver\"},\"$:/core/modules/savers/github.js\":{\"text\":\"!function(){'use strict';function e(t){this.wiki=t}e.prototype.save=function(n,t,s){var e=this.wiki.getTiddlerText('$:/GitHub/Username'),i=$tw.utils.getPassword('github'),a=this.wiki.getTiddlerText('$:/GitHub/Repo'),r=this.wiki.getTiddlerText('$:/GitHub/Path',''),u=this.wiki.getTiddlerText('$:/GitHub/Filename'),o=this.wiki.getTiddlerText('$:/GitHub/Branch')||'main',c=this.wiki.getTiddlerText('$:/GitHub/ServerURL')||'https://api.github.com',l={Accept:'application/vnd.github.v3+json','Content-Type':'application/json;charset=UTF-8',Authorization:'Basic '+window.btoa(e+':'+i),'If-None-Match':''};if(!(e&&i&&a&&u))return!1;'/'!==(r='/'!==r.substring(0,1)?'/'+r:r).substring(r.length-1)&&(r+='/');var h=c+'/repos/'+a+'/contents'+r;return $tw.utils.httpRequest({url:h,type:'GET',headers:l,data:{ref:o},callback:function(t,e,i){var a='';if(t&&404!==i.status)return s(t);404!==i.status&&(t=$tw.utils.parseJSONSafe(e),$tw.utils.each(t,function(t){t.name===u&&(a=t.sha)}));i={message:$tw.language.getString('ControlPanel/Saving/GitService/CommitMessage'),content:$tw.utils.base64Encode(n),branch:o,sha:a};$tw.utils.httpRequest({url:h+u,type:'PUT',headers:l,data:JSON.stringify(i),callback:function(t,e,i){if(t)return s(t);$tw.utils.parseJSONSafe(e);s(null)}})}}),!0},e.prototype.info={name:'github',priority:2e3,capabilities:['save','autosave']},exports.canSave=function(t){return!0},exports.create=function(t){return new e(t)}}();\",\"type\":\"application/javascript\",\"module-type\":\"saver\"},\"$:/core/modules/savers/gitlab.js\":{\"text\":\"!function(){'use strict';function e(t){this.wiki=t}e.prototype.save=function(r,t,s){var e=this.wiki.getTiddlerText('$:/GitLab/Username'),i=$tw.utils.getPassword('gitlab'),a=this.wiki.getTiddlerText('$:/GitLab/Repo'),o=this.wiki.getTiddlerText('$:/GitLab/Path',''),c=this.wiki.getTiddlerText('$:/GitLab/Filename'),l=this.wiki.getTiddlerText('$:/GitLab/Branch')||'master',n=this.wiki.getTiddlerText('$:/GitLab/ServerURL')||'https://gitlab.com/api/v4',u={'Content-Type':'application/json;charset=UTF-8','Private-Token':i};if(!(e&&i&&a&&c))return!1;'/'!==(o='/'!==o.substring(0,1)?'/'+o:o).substring(o.length-1)&&(o+='/');var p=n+'/projects/'+encodeURIComponent(a)+'/repository/';return $tw.utils.httpRequest({url:p+'tree/?path='+encodeURIComponent(o.replace(/^\\\\/+|\\\\/$/g,''))+'&branch='+encodeURIComponent(l.replace(/^\\\\/+|\\\\/$/g,'')),type:'GET',headers:u,callback:function(t,e,i){var a='';if(t&&404!==i.status)return s(t);var n='POST',i=(404!==i.status&&(t=$tw.utils.parseJSONSafe(e),$tw.utils.each(t,function(t){t.name===c&&(n='PUT',a=t.sha)})),{commit_message:$tw.language.getString('ControlPanel/Saving/GitService/CommitMessage'),content:r,branch:l,sha:a});$tw.utils.httpRequest({url:p+'files/'+encodeURIComponent(o.replace(/^\\\\/+/,'')+c),type:n,headers:u,data:JSON.stringify(i),callback:function(t,e,i){if(t)return s(t);$tw.utils.parseJSONSafe(e);s(null)}})}}),!0},e.prototype.info={name:'gitlab',priority:2e3,capabilities:['save','autosave']},exports.canSave=function(t){return!0},exports.create=function(t){return new e(t)}}();\",\"type\":\"application/javascript\",\"module-type\":\"saver\"},\"$:/core/modules/savers/hyperdrive.js\":{\"text\":\"!function(){'use strict';function r(e){this.wiki=e}r.prototype.save=function(r,e,t){var i=beaker.hyperdrive.drive(''+window.location),n=(''+window.location.pathname).split('#')[0];return i.stat(n).then(function(e){e.isDirectory()&&(n+='/index.html'),i.writeFile(n,r,'utf8').then(function(e){t(null)},function(e){t('Hyperdrive Saver Write Error: '+e)})},function(e){t('Hyperdrive Saver Stat Error: '+e)}),!0},r.prototype.info={name:'beaker-1.x',priority:3e3,capabilities:['save','autosave']},exports.canSave=function(e){return!!window.beaker&&!!beaker.hyperdrive&&'hyper:'===location.protocol},exports.create=function(e){return new r(e)}}();\",\"type\":\"application/javascript\",\"module-type\":\"saver\"},\"$:/core/modules/savers/manualdownload.js\":{\"text\":\"!function(){'use strict';function o(n){}o.prototype.save=function(n,o,t){return $tw.modal.display('$:/language/Modals/Download',{downloadLink:'data:text/html,'+encodeURIComponent(n)}),t(null),!0},o.prototype.info={name:'manualdownload',priority:0,capabilities:['save','download']},exports.canSave=function(n){return!0},exports.create=function(n){return new o}}();\",\"type\":\"application/javascript\",\"module-type\":\"saver\"},\"$:/core/modules/savers/msdownload.js\":{\"text\":\"!function(){'use strict';function n(t){}n.prototype.save=function(t,n,o){var e='tiddlywiki.html',a=document.location.pathname.lastIndexOf('/'),a=(-1!==a&&(e=document.location.pathname.substr(a+1)),new Blob([t],{type:'text/html'}));return window.navigator.msSaveBlob(a,e),o(null),!0},n.prototype.info={name:'msdownload',priority:110,capabilities:['save','download']},exports.canSave=function(t){return!!window.navigator.msSaveBlob},exports.create=function(t){return new n}}();\",\"type\":\"application/javascript\",\"module-type\":\"saver\"},\"$:/core/modules/savers/put.js\":{\"text\":\"!function(){'use strict';function s(n){$tw.utils.httpRequest({url:n.uri(),type:'HEAD',headers:{Accept:'*/*;charset=UTF-8'},callback:function(t,e,r){t||(t=r.getResponseHeader('ETag'))&&(n.etag=t.replace(/^W\\\\//,''))}})}function e(t){this.wiki=t;var n=this,t=this.uri();$tw.utils.httpRequest({url:t,type:'OPTIONS',callback:function(t,e,r){t||(n.serverAcceptsPuts=200===r.status&&!!r.getResponseHeader('dav'))}}),s(this)}e.prototype.uri=function(){return document.location.toString().split('#')[0]},e.prototype.save=function(t,e,a){var i,r;return!!this.serverAcceptsPuts&&(r={'Content-Type':'text/html;charset=UTF-8'},(i=this).etag&&(r['If-Match']=this.etag),$tw.notifier.display('$:/language/Notifications/Save/Starting'),$tw.utils.httpRequest({url:this.uri(),type:'PUT',headers:r,data:t,callback:function(t,e,r){var n;t?(t=t,412===(n=r.status)?t=$tw.language.getString('Error/PutEditConflict'):401===n?t=$tw.language.getString('Error/PutUnauthorized'):403===n&&(t=$tw.language.getString('Error/PutForbidden')),r.responseText&&(t=t+'\\\\n\\\\n'+r.responseText),a(t)):(i.etag=r.getResponseHeader('ETag'),null==i.etag&&s(i),a(null))}}),!0)},e.prototype.info={name:'put',priority:2e3,capabilities:['save','autosave']},exports.canSave=function(t){return/^https?:/.test(location.protocol)},exports.create=function(t){return new e(t)}}();\",\"type\":\"application/javascript\",\"module-type\":\"saver\"},\"$:/core/modules/savers/tiddlyfox.js\":{\"text\":\"!function(){'use strict';function t(e){}t.prototype.save=function(e,t,n){var i,s,a=document.getElementById('tiddlyfox-message-box');return!!a&&(0===(s=document.location.toString().split('#')[0]).indexOf('file://localhost/')&&(s='file://'+s.substr(16)),s=/^file\\\\:\\\\/\\\\/\\\\/[A-Z]\\\\:\\\\//i.test(s)?s.substr(8).replace(/\\\\//g,'\\\\\\\\'):0===s.indexOf('file://///')?'\\\\\\\\\\\\\\\\'+unescape(s.substr(10)).replace(/\\\\//g,'\\\\\\\\'):0===s.indexOf('file:///')?unescape(s.substr(7)):0===s.indexOf('file:/')?unescape(s.substr(5)):'\\\\\\\\\\\\\\\\'+unescape(s.substr(7)).replace(new RegExp('/','g'),'\\\\\\\\'),(i=document.createElement('div')).setAttribute('data-tiddlyfox-path',$tw.utils.decodeURIComponentSafe(s)),i.setAttribute('data-tiddlyfox-content',e),a.appendChild(i),i.addEventListener('tiddlyfox-have-saved-file',function(e){n(null)},!1),(s=document.createEvent('Events')).initEvent('tiddlyfox-save-file',!0,!1),i.dispatchEvent(s),!0)},t.prototype.info={name:'tiddlyfox',priority:1500,capabilities:['save','autosave']},exports.canSave=function(e){return!0},exports.create=function(e){return new t}}();\",\"type\":\"application/javascript\",\"module-type\":\"saver\"},\"$:/core/modules/savers/tiddlyie.js\":{\"text\":\"!function(){'use strict';function t(e){}t.prototype.save=function(e,t,n){if(void 0===window.TiddlyIE)return!1;var o=unescape(document.location.pathname);if(/^\\\\/[A-Z]\\\\:\\\\/[^\\\\/]+/i.test(o))o=(o=o.substr(1)).replace(/\\\\//g,'\\\\\\\\');else{if(''===document.hostname||!/^\\\\/[^\\\\/]+\\\\/[^\\\\/]+/i.test(o))return!1;o=o.replace(/\\\\//g,'\\\\\\\\'),o='\\\\\\\\\\\\\\\\'+document.location.hostname+o}return window.TiddlyIE.save(o,e),n(null),!0},t.prototype.info={name:'tiddlyiesaver',priority:1500,capabilities:['save']},exports.canSave=function(e){return'file:'===window.location.protocol},exports.create=function(e){return new t}}();\",\"type\":\"application/javascript\",\"module-type\":\"saver\"},\"$:/core/modules/savers/twedit.js\":{\"text\":\"!function(){'use strict';function e(t){}e.prototype.save=function(e,t,n){var o,i,r,c;return'object'==typeof DeviceInfo&&(r='/Documents',0===(o=-1!==(i=(o=-1!==(i=(o=$tw.utils.decodeURIComponentSafe(document.location.pathname)).indexOf('?'))?o.substr(0,i):o).indexOf('#'))?o.substr(0,i):o).indexOf(r)&&(o=o.substr(r.length)),c=function(t){n($tw.language.getString('Error/SavingToTWEdit')+': '+t.target.error.code)},window.requestFileSystem(LocalFileSystem.PERSISTENT,0,function(t){t.root.getFile(o,{create:!0},function(t){t.createWriter(function(t){t.onerror=c,t.onwrite=function(){n(null)},t.position=0,t.write(e)},c)},c)},c),!0)},e.prototype.info={name:'twedit',priority:1600,capabilities:['save','autosave']},exports.canSave=function(t){return!0},exports.create=function(t){return new e},$tw.browser&&(window.version={title:'TiddlyWiki'})}();\",\"type\":\"application/javascript\",\"module-type\":\"saver\"},\"$:/core/modules/savers/upload.js\":{\"text\":\"!function(){'use strict';function e(t){this.wiki=t}e.prototype.save=function(t,e,n){var i=this.wiki.getTextReference('$:/UploadBackupDir')||'.',r=this.wiki.getTextReference('$:/UploadName'),a=$tw.utils.getPassword('upload'),o=this.wiki.getTextReference('$:/UploadDir')||'.',s=this.wiki.getTextReference('$:/UploadFilename')||'index.html',p=this.wiki.getTextReference('$:/UploadWithUrlOnly')||'no',u=this.wiki.getTextReference('$:/UploadURL');if('yes'===p){if(!u||''===u.toString().trim())return!1}else if(!r||''===r.toString().trim()||!a||''===a.toString().trim())return!1;var u=u||'http://'+r+'.tiddlyspot.com/store.cgi',p='---------------------------AaB03x',l=[],i=(l.push('--'+p+'\\\\r\\\\nContent-disposition: form-data; name=\\\"UploadPlugin\\\"\\\\r\\\\n'),l.push('backupDir='+i+';user='+r+';password='+a+';uploaddir='+o+';;'),l.push('\\\\r\\\\n--'+p),l.push('Content-disposition: form-data; name=\\\"userfile\\\"; filename=\\\"'+s+'\\\"'),l.push('Content-Type: text/html;charset=UTF-8'),l.push('Content-Length: '+t.length+'\\\\r\\\\n'),l.push(''),l.join('\\\\r\\\\n')+t+'\\\\r\\\\n-----------------------------AaB03x--\\\\r\\\\n'),d=($tw.notifier.display('$:/language/Notifications/Save/Starting'),new XMLHttpRequest);d.open('POST',u,!0,r,a),d.setRequestHeader('Content-Type','multipart/form-data; charset=UTF-8; boundary='+p),d.onreadystatechange=function(){4==d.readyState&&200==d.status&&('0 - '===d.responseText.substr(0,4)?n(null):n(d.responseText))};try{d.send(i)}catch(t){return n($tw.language.getString('Error/Caption')+':'+t)}return!0},e.prototype.info={name:'upload',priority:2e3,capabilities:['save','autosave']},exports.canSave=function(t){return!0},exports.create=function(t){return new e(t)}}();\",\"type\":\"application/javascript\",\"module-type\":\"saver\"},\"$:/core/modules/server/authenticators/basic.js\":{\"text\":\"!function(){'use strict';var r,s;function e(e){this.server=e,this.credentialsData=[]}$tw.node&&(require('util'),r=require('fs'),require('url'),s=require('path')),e.prototype.init=function(){if(this.credentialsFilepath=this.server.get('credentials'),this.credentialsFilepath){var e=s.resolve(this.server.boot.wikiPath,this.credentialsFilepath);if(!r.existsSync(e)||r.statSync(e).isDirectory())return'Error: Unable to load user credentials from \\\\''+e+'\\\\'';var t=r.readFileSync(e,'utf8'),t=$tw.utils.parseCsvStringWithHeader(t);if('string'==typeof t)return'Error: '+t+' reading credentials from \\\\''+e+'\\\\'';this.credentialsData=t}return this.server.get('username')&&this.server.get('password')&&(this.credentialsData=this.credentialsData||[],this.credentialsData.push({username:this.server.get('username'),password:this.server.get('password')})),0\u003Cthis.credentialsData.length},e.prototype.authenticateRequest=function(e,t,r){var s,i,e=e.headers.authorization||'';return!(e||!r.allowAnon)||(e=e.split(/\\\\s+/).pop()||'',e=$tw.utils.base64Decode(e).split(/:/),s=e[0],i=e[1],this.credentialsData.find(function(e){return e.username===s&&e.password===i})?(r.authenticatedUsername=s,!0):(t.writeHead(401,'Authentication required',{'WWW-Authenticate':'Basic realm=\\\"Please provide your username and password to login to '+r.server.servername+'\\\"'}),t.end(),!1))},exports.AuthenticatorClass=e}();\",\"type\":\"application/javascript\",\"module-type\":\"authenticator\"},\"$:/core/modules/server/authenticators/header.js\":{\"text\":\"!function(){'use strict';function e(e){this.server=e,this.header=e.get('authenticated-user-header')?e.get('authenticated-user-header').toLowerCase():void 0}e.prototype.init=function(){return!!this.header},e.prototype.authenticateRequest=function(e,t,r){e=e.headers[this.header];return e||r.allowAnon?(r.authenticatedUsername=e,!0):(t.writeHead(401,'Authorization header required to login to \\\\''+r.server.servername+'\\\\''),t.end(),!1)},exports.AuthenticatorClass=e}();\",\"type\":\"application/javascript\",\"module-type\":\"authenticator\"},\"$:/core/modules/server/routes/delete-tiddler.js\":{\"text\":\"!function(){'use strict';exports.method='DELETE',exports.path=/^\\\\/bags\\\\/default\\\\/tiddlers\\\\/(.+)$/,exports.handler=function(e,t,d){var n=$tw.utils.decodeURIComponentSafe(d.params[0]);d.wiki.deleteTiddler(n),t.writeHead(204,'OK',{'Content-Type':'text/plain'}),t.end()}}();\",\"type\":\"application/javascript\",\"module-type\":\"route\"},\"$:/core/modules/server/routes/get-favicon.js\":{\"text\":\"!function(){'use strict';exports.method='GET',exports.path=/^\\\\/favicon.ico$/,exports.handler=function(e,o,t){var i=t.wiki.getTiddlerText('$:/favicon.ico','');t.sendResponse(200,{'Content-Type':'image/x-icon'},i,'base64')}}();\",\"type\":\"application/javascript\",\"module-type\":\"route\"},\"$:/core/modules/server/routes/get-file.js\":{\"text\":\"!function(){'use strict';exports.method='GET',exports.path=/^\\\\/files\\\\/(.+)$/,exports.handler=function(e,t,i){var n=require('path'),o=require('fs'),s=(require('util'),$tw.utils.decodeURIComponentSafe(i.params[0])),r=n.resolve(i.boot.wikiPath,'files'),l=n.resolve(r,s),a=n.extname(l);0!==n.relative(r,l).indexOf('..')?o.readFile(l,function(e,t){var n,o='text/plain';e?(console.log('Error accessing file '+l+': '+e.toString()),n=404,t='File \\\\''+s+'\\\\' not found'):(n=200,o=$tw.config.fileExtensionInfo[a]?$tw.config.fileExtensionInfo[a].type:'application/octet-stream'),i.sendResponse(n,{'Content-Type':o},t)}):i.sendResponse(404,{'Content-Type':'text/plain'},'File \\\\''+s+'\\\\' not found')}}();\",\"type\":\"application/javascript\",\"module-type\":\"route\"},\"$:/core/modules/server/routes/get-index.js\":{\"text\":\"!function(){'use strict';exports.method='GET',exports.path=/^\\\\/$/,exports.handler=function(e,r,t){var o=t.wiki.renderTiddler(t.server.get('root-render-type'),t.server.get('root-tiddler')),s={'Content-Type':t.server.get('root-serve-type')};t.sendResponse(200,s,o)}}();\",\"type\":\"application/javascript\",\"module-type\":\"route\"},\"$:/core/modules/server/routes/get-login-basic.js\":{\"text\":\"!function(){'use strict';exports.method='GET',exports.path=/^\\\\/login-basic$/,exports.handler=function(e,t,a){var r;a.authenticatedUsername?(r=$tw.syncadaptor&&$tw.syncadaptor.host?$tw.syncadaptor.host:'/',t.writeHead(302,{Location:r})):t.writeHead(401,{'WWW-Authenticate':'Basic realm=\\\"Please provide your username and password to login to '+a.server.servername+'\\\"'}),t.end()}}();\",\"type\":\"application/javascript\",\"module-type\":\"route\"},\"$:/core/modules/server/routes/get-status.js\":{\"text\":\"!function(){'use strict';exports.method='GET',exports.path=/^\\\\/status$/,exports.handler=function(e,t,n){var s=JSON.stringify({username:n.authenticatedUsername||n.server.get('anon-username')||'',anonymous:!n.authenticatedUsername,read_only:!n.server.isAuthorized('writers',n.authenticatedUsername),space:{recipe:'default'},tiddlywiki_version:$tw.version});n.sendResponse(200,{'Content-Type':'application/json'},s,'utf8')}}();\",\"type\":\"application/javascript\",\"module-type\":\"route\"},\"$:/core/modules/server/routes/get-tiddler-html.js\":{\"text\":\"!function(){'use strict';exports.method='GET',exports.path=/^\\\\/([^\\\\/]+)$/,exports.handler=function(e,r,t){var d,i=$tw.utils.decodeURIComponentSafe(t.params[0]),s=t.wiki.getTiddler(i);s?(d=s.getFieldString('_render_type'),s=s.getFieldString('_render_template'),s=t.wiki.isSystemTiddler(i)?(d=d||t.server.get('system-tiddler-render-type'),s||t.server.get('system-tiddler-render-template')):(d=d||t.server.get('tiddler-render-type'),s||t.server.get('tiddler-render-template')),d=t.wiki.renderTiddler(d,s,{parseAsInline:!0,variables:{currentTiddler:i}}),t.sendResponse(200,{},d,'utf8')):(r.writeHead(404),r.end())}}();\",\"type\":\"application/javascript\",\"module-type\":\"route\"},\"$:/core/modules/server/routes/get-tiddler.js\":{\"text\":\"!function(){'use strict';exports.method='GET',exports.path=/^\\\\/recipes\\\\/default\\\\/tiddlers\\\\/(.+)$/,exports.handler=function(e,t,i){var d=$tw.utils.decodeURIComponentSafe(i.params[0]),n=i.wiki.getTiddler(d),s={},r=['bag','created','creator','modified','modifier','permissions','recipe','revision','tags','text','title','type','uri'];n?($tw.utils.each(n.fields,function(e,t){var i=n.getFieldString(t);-1!==r.indexOf(t)?s[t]=i:(s.fields=s.fields||{},s.fields[t]=i)}),s.revision=i.wiki.getChangeCount(d),s.bag='default',s.type=s.type||'text/vnd.tiddlywiki',i.sendResponse(200,{'Content-Type':'application/json'},JSON.stringify(s),'utf8')):(t.writeHead(404),t.end())}}();\",\"type\":\"application/javascript\",\"module-type\":\"route\"},\"$:/core/modules/server/routes/get-tiddlers-json.js\":{\"text\":\"!function(){'use strict';exports.method='GET',exports.path=/^\\\\/recipes\\\\/default\\\\/tiddlers.json$/,exports.handler=function(e,t,i){var r,s,l=i.queryParameters.filter||'[all[tiddlers]!is[system]sort[title]]';'yes'!==i.wiki.getTiddlerText('$:/config/Server/AllowAllExternalFilters')&&'yes'!==i.wiki.getTiddlerText('$:/config/Server/ExternalFilters/'+l)?(console.log('Blocked attempt to GET /recipes/default/tiddlers.json with filter: '+l),t.writeHead(403),t.end()):('no'===i.wiki.getTiddlerText('$:/config/SyncSystemTiddlersFromServer')&&(l+='+[!is[system]]'),r=(i.queryParameters.exclude||'text').split(','),t=i.wiki.filterTiddlers(l),s=[],$tw.utils.each(t,function(e){var t=i.wiki.getTiddler(e);t&&((t=t.getFieldStrings({exclude:r})).revision=i.wiki.getChangeCount(e),t.type=t.type||'text/vnd.tiddlywiki',s.push(t))}),l=JSON.stringify(s),i.sendResponse(200,{'Content-Type':'application/json'},l,'utf8'))}}();\",\"type\":\"application/javascript\",\"module-type\":\"route\"},\"$:/core/modules/server/routes/put-tiddler.js\":{\"text\":\"!function(){'use strict';exports.method='PUT',exports.path=/^\\\\/recipes\\\\/default\\\\/tiddlers\\\\/(.+)$/,exports.handler=function(e,t,i){var d=$tw.utils.decodeURIComponentSafe(i.params[0]),n=$tw.utils.parseJSONSafe(i.data),s=(n.fields&&($tw.utils.each(n.fields,function(e,t){n[t]=e}),delete n.fields),n.revision&&delete n.revision,void 0!==n._is_skinny&&((s=i.wiki.getTiddler(d))&&(n.text=s.fields.text),delete n._is_skinny),i.wiki.addTiddler(new $tw.Tiddler(n,{title:d})),i.wiki.getChangeCount(d).toString());t.writeHead(204,'OK',{Etag:'\\\"default/'+encodeURIComponent(d)+'/'+s+':\\\"','Content-Type':'text/plain'}),t.end()}}();\",\"type\":\"application/javascript\",\"module-type\":\"route\"},\"$:/core/modules/server/server.js\":{\"text\":\"!function(){'use strict';var n,o,h,d,l,u;function t(t){var i=this;if(this.routes=t.routes||[],this.authenticators=t.authenticators||[],this.wiki=t.wiki,this.boot=t.boot||$tw.boot,this.variables=$tw.utils.extend({},this.defaultVariables),t.variables)for(var e in t.variables)t.variables[e]&&(this.variables[e]=t.variables[e]);this.requiredPlugins=this.get('required-plugins').split(','),this.csrfDisable='yes'===this.get('csrf-disable'),this.enableGzip='yes'===this.get('gzip'),this.enableBrowserCache='yes'===this.get('use-browser-cache'),r=this.get('username')&&this.get('password')?this.get('username'):this.get('credentials')?'(authenticated)':'(anon)',this.authorizationPrincipals={readers:(this.get('readers')||r).split(',').map($tw.utils.trim),writers:(this.get('writers')||r).split(',').map($tw.utils.trim)},!this.get('admin')&&'(anon)'===r||(this.authorizationPrincipals.admin=(this.get('admin')||r).split(',').map($tw.utils.trim)),$tw.modules.forEachModuleOfType('authenticator',function(t,e){i.addAuthenticator(e.AuthenticatorClass)}),$tw.modules.forEachModuleOfType('route',function(t,e){i.addRoute(e)}),this.listenOptions=null,this.protocol='http';var r=this.get('tls-key'),s=this.get('tls-cert'),a=this.get('tls-passphrase');s&&r&&(this.listenOptions={key:n.readFileSync(h.resolve(this.boot.wikiPath,r),'utf8'),cert:n.readFileSync(h.resolve(this.boot.wikiPath,s),'utf8'),passphrase:a||''},this.protocol='https'),this.transport=require(this.protocol),this.servername=$tw.utils.transliterateToSafeASCII(this.get('server-name')||this.wiki.getTiddlerText('$:/SiteTitle')||'TiddlyWiki5'),this.boot.origin=this.get('origin')?this.get('origin'):this.protocol+'://'+this.get('host')+':'+this.get('port'),this.boot.pathPrefix=this.get('path-prefix')||''}$tw.node&&(require('util'),n=require('fs'),o=require('url'),h=require('path'),d=require('querystring'),l=require('crypto'),u=require('zlib')),t.prototype.defaultVariables={port:'8080',host:'127.0.0.1','required-plugins':'$:/plugins/tiddlywiki/filesystem,$:/plugins/tiddlywiki/tiddlyweb','root-tiddler':'$:/core/save/all','root-render-type':'text/plain','root-serve-type':'text/html','tiddler-render-type':'text/html','tiddler-render-template':'$:/core/templates/server/static.tiddler.html','system-tiddler-render-type':'text/plain','system-tiddler-render-template':'$:/core/templates/wikified-tiddler','debug-level':'none',gzip:'no','use-browser-cache':'no'},t.prototype.get=function(t){return this.variables[t]},t.prototype.addRoute=function(t){this.routes.push(t)},t.prototype.addAuthenticator=function(t){var t=new t(this),e=t.init();'string'==typeof e?$tw.utils.error('Error: '+e):e&&this.authenticators.push(t)},t.prototype.findMatchingRoute=function(t,e){for(var i=0;i\u003Cthis.routes.length;i++){var r=this.routes[i],s=(r.path,e.urlInfo.pathname),a=e.pathPrefix?s.substr(0,e.pathPrefix.length)===e.pathPrefix&&(s=s.substr(e.pathPrefix.length)||'/',r.path.exec(s)):r.path.exec(s);if(a&&t.method===r.method){e.params=[];for(var n=1;n\u003Ca.length;n++)e.params.push(a[n]);return r}}return null},t.prototype.methodMappings={GET:'readers',OPTIONS:'readers',HEAD:'readers',PUT:'writers',POST:'writers',DELETE:'writers'},t.prototype.isAuthorized=function(t,e){t=this.authorizationPrincipals[t]||[];return-1!==t.indexOf('(anon)')||e&&(-1!==t.indexOf('(authenticated)')||-1!==t.indexOf(e))},t.prototype.requestHandler=function(t,e,i){var r,s,a=this,n={};n.wiki=(i=i||{}).wiki||a.wiki,n.boot=i.boot||a.boot,n.server=a,n.urlInfo=o.parse(t.url),n.queryParameters=d.parse(n.urlInfo.query),n.pathPrefix=i.pathPrefix||this.get('path-prefix')||'',n.sendResponse=function(t,e,i,r,s,a){if(this.enableBrowserCache&&200==i){var n=l.createHash('md5'),n=(n.update(s),n.update(JSON.stringify(r)),a&&n.update(a),n.digest('hex')),o=(r.Etag='\\\"'+n+'\\\"',r['Cache-Control']='max-age=0, must-revalidate',t.headers['if-none-match']);if(o)if(-1!=o.split(',').map(function(t){return t.replace(/^[ \\\"]+|[ \\\"]+$/g,'')}).indexOf(n))return e.writeHead(304,r),void e.end()}this.enableGzip&&2048\u003Cs.length&&(o=t.headers['accept-encoding']||'',/\\\\bdeflate\\\\b/.test(o)?(r['Content-Encoding']='deflate',s=u.deflateSync(s)):/\\\\bgzip\\\\b/.test(o)&&(r['Content-Encoding']='gzip',s=u.gzipSync(s))),e.writeHead(i,r),e.end(s,a)}.bind(a,t,e),n.authorizationType=i.authorizationType||this.methodMappings[t.method]||'readers',this.csrfDisable||'writers'!==n.authorizationType||'TiddlyWiki'===t.headers['x-requested-with']?(n.allowAnon=this.isAuthorized(n.authorizationType,null),0\u003Cthis.authenticators.length&&!this.authenticators[0].authenticateRequest(t,e,n)||(this.isAuthorized(n.authorizationType,n.authenticatedUsername)?(r=a.findMatchingRoute(t,n),'none'!==a.get('debug-level')&&(console.log('Request path:',JSON.stringify(n.urlInfo)),console.log('Request headers:',JSON.stringify(t.headers)),console.log('authenticatedUsername:',n.authenticatedUsername)),r?'stream'===r.bodyFormat||'GET'===t.method||'HEAD'===t.method?r.handler(t,e,n):'string'!==r.bodyFormat&&r.bodyFormat?'buffer'===r.bodyFormat?(s=[],t.on('data',function(t){s.push(t)}),t.on('end',function(){n.data=Buffer.concat(s),r.handler(t,e,n)})):(e.writeHead(400,'Invalid bodyFormat '+r.bodyFormat+' in route '+r.method+' '+r.path.source),e.end()):(t.setEncoding('utf8'),s='',t.on('data',function(t){s+=t.toString()}),t.on('end',function(){n.data=s,r.handler(t,e,n)})):(e.writeHead(404),e.end())):(e.writeHead(401,'\\\\''+n.authenticatedUsername+'\\\\' is not authorized to access \\\\''+this.servername+'\\\\''),e.end()))):(e.writeHead(403,'\\\\'X-Requested-With\\\\' header required to login to \\\\''+this.servername+'\\\\''),e.end())},t.prototype.listen=function(t,e,i){for(var r,s,a=this,n=(t=t||this.get('port'),e=e||this.get('host'),i=i||this.get('path-prefix')||'',parseInt(t,10).toString()!==t&&(t=process.env[t]||8080),[]),o=0;o\u003Cthis.requiredPlugins.length;o++)this.wiki.getTiddler(this.requiredPlugins[o])||n.push(this.requiredPlugins[o]);return 0\u003Cn.length&&(r='Warning: Plugin(s) required for client-server operation are missing.\\\\n\\\"'+n.join('\\\", \\\"')+'\\\"',$tw.utils.warning(r)),(s=this.listenOptions?this.transport.createServer(this.listenOptions,this.requestHandler.bind(this)):this.transport.createServer(this.requestHandler.bind(this))).on('listening',function(){var t=s.address(),t=a.protocol+'://'+('IPv6'===t.family?'['+t.address+']':t.address)+':'+t.port+i;$tw.utils.log('Serving on '+t,'brown/orange'),$tw.utils.log('(press ctrl-C to exit)','red')}),s.listen(t,e)},exports.Server=t}();\",\"type\":\"application/javascript\",\"module-type\":\"library\"},\"$:/core/modules/browser-messaging.js\":{\"text\":\"!function(){'use strict';function e(t,e){if(r=$tw.browserMessaging.iframeInfoMap[t])e(null,r);else{var i=document.createElement('iframe'),r={url:t,status:'loading',domNode:i};o($tw.browserMessaging.iframeInfoMap[t]=r),i.style.display='none',i.setAttribute('library','true'),document.body.appendChild(i),i.onload=function(){r.status='loaded',o(r),e(null,r)},i.onerror=function(){e('Cannot load iframe')};try{i.src=t}catch(t){e(t)}}}function o(t){$tw.wiki.addTiddler(new $tw.Tiddler($tw.wiki.getCreationFields(),{title:'$:/temp/ServerConnection/'+t.url,text:t.status,tags:['$:/tags/ServerConnection'],url:t.url},$tw.wiki.getModificationFields()))}exports.name='browser-messaging',exports.platforms=['browser'],exports.after=['startup'],exports.synchronous=!0,exports.startup=function(){$tw.browserMessaging={iframeInfoMap:{}},$tw.rootWidget.addEventListener('tm-load-plugin-library',function(t){var i=t.paramObject||{},r=i.url;r&&e(r,function(t,e){t?alert($tw.language.getString('Error/LoadingPluginLibrary')+': '+r):e.domNode.contentWindow.postMessage({verb:'GET',url:'recipes/library/tiddlers.json',cookies:{type:'save-info',infoTitlePrefix:i.infoTitlePrefix||'$:/temp/RemoteAssetInfo/',url:r}},'*')})}),$tw.rootWidget.addEventListener('tm-unload-plugin-library',function(t){t=(t.paramObject||{}).url;if($tw.browserMessaging.iframeInfoMap[t]=void 0,t){for(var e=t,i=document.getElementsByTagName('iframe'),r=i.length-1;r--;){var o=i[r];'true'===o.getAttribute('library')&&o.getAttribute('src')===e&&o.parentNode.removeChild(o)}$tw.utils.each($tw.wiki.filterTiddlers('[[$:/temp/ServerConnection/'+t+']] [prefix[$:/temp/RemoteAssetInfo/'+t+'/]]'),function(t){$tw.wiki.deleteTiddler(t)})}}),$tw.rootWidget.addEventListener('tm-load-plugin-from-library',function(t){var t=t.paramObject||{},i=t.url,r=t.title;i&&r&&e(i,function(t,e){t?alert($tw.language.getString('Error/LoadingPluginLibrary')+': '+i):e.domNode.contentWindow.postMessage({verb:'GET',url:'recipes/library/tiddlers/'+encodeURIComponent(r)+'.json',cookies:{type:'save-tiddler',url:i}},'*')})}),window.addEventListener('message',function(e){var t;'GET-RESPONSE'===e.data.verb&&'2'===e.data.status.charAt(0)&&e.data.cookies&&('save-info'===e.data.cookies.type?(t=$tw.utils.parseJSONSafe(e.data.body),$tw.utils.each(t,function(t){$tw.wiki.addTiddler(new $tw.Tiddler($tw.wiki.getCreationFields(),t,{title:e.data.cookies.infoTitlePrefix+e.data.cookies.url+'/'+t.title,'original-title':t.title,text:'',type:'text/vnd.tiddlywiki','original-type':t.type,'plugin-type':void 0,'original-plugin-type':t['plugin-type'],'module-type':void 0,'original-module-type':t['module-type'],tags:['$:/tags/RemoteAssetInfo'],'original-tags':$tw.utils.stringifyList(t.tags||[]),'server-url':e.data.cookies.url},$tw.wiki.getModificationFields()))})):'save-tiddler'===e.data.cookies.type&&(t=$tw.utils.parseJSONSafe(e.data.body),$tw.wiki.addTiddler(new $tw.Tiddler(t))))},!1)}}();\",\"type\":\"application/javascript\",\"module-type\":\"startup\"},\"$:/core/modules/startup/commands.js\":{\"text\":\"!function(){'use strict';exports.name='commands',exports.platforms=['node'],exports.after=['story'],exports.synchronous=!1,exports.startup=function(t){new $tw.Commander($tw.boot.argv,function(r){if(r)return $tw.utils.error('Error: '+r);t()},$tw.wiki,{output:process.stdout,error:process.stderr}).execute()}}();\",\"type\":\"application/javascript\",\"module-type\":\"startup\"},\"$:/core/modules/startup/favicon.js\":{\"text\":\"!function(){'use strict';exports.name='favicon',exports.platforms=['browser'],exports.after=['startup'],exports.synchronous=!0;var e='$:/favicon.ico';function i(){var t=$tw.wiki.getTiddler(e);t&&document.getElementById('faviconLink').setAttribute('href',$tw.utils.makeDataUri(t.fields.text,t.fields.type,t.fields._canonical_uri))}exports.startup=function(){i(),$tw.wiki.addEventListener('change',function(t){$tw.utils.hop(t,e)&&i()})}}();\",\"type\":\"application/javascript\",\"module-type\":\"startup\"},\"$:/core/modules/startup/info.js\":{\"text\":\"!function(){'use strict';exports.name='info',exports.before=['startup'],exports.after=['load-modules'],exports.synchronous=!0;var r='$:/temp/info-plugin';exports.startup=function(){function e(t){var i=$tw.wiki.getTiddlerData(r,{tiddlers:{}}),t=($tw.utils.each(t,function(t){t&&t.title&&(i.tiddlers[t.title]=t)}),{title:r,type:'application/json','plugin-type':'info',text:JSON.stringify(i,null,$tw.config.preferences.jsonSpaces)});$tw.wiki.addTiddler(new $tw.Tiddler(t))}var n=[];$tw.modules.forEachModuleOfType('info',function(t,i){i&&i.getInfoTiddlerFields&&Array.prototype.push.apply(n,i.getInfoTiddlerFields(e))}),e(n),$tw.wiki.readPluginInfo([r]);$tw.wiki.registerPluginTiddlers('info',[r]),$tw.wiki.unpackPluginTiddlers()}}();\",\"type\":\"application/javascript\",\"module-type\":\"startup\"},\"$:/core/modules/startup/load-modules.js\":{\"text\":\"!function(){'use strict';exports.name='load-modules',exports.synchronous=!0,exports.startup=function(){$tw.modules.applyMethods('utils',$tw.utils),$tw.node&&$tw.modules.applyMethods('utils-node',$tw.utils),$tw.browser&&$tw.modules.applyMethods('utils-browser',$tw.utils),$tw.modules.applyMethods('global',$tw),$tw.modules.applyMethods('config',$tw.config),$tw.Tiddler.fieldModules=$tw.modules.getModulesByTypeAsHashmap('tiddlerfield'),$tw.modules.applyMethods('tiddlermethod',$tw.Tiddler.prototype),$tw.modules.applyMethods('wikimethod',$tw.Wiki.prototype),$tw.wiki.addIndexersToWiki(),$tw.modules.applyMethods('tiddlerdeserializer',$tw.Wiki.tiddlerDeserializerModules),$tw.macros=$tw.modules.getModulesByTypeAsHashmap('macro'),$tw.wiki.initParsers(),$tw.Commander.initCommands()}}();\",\"type\":\"application/javascript\",\"module-type\":\"startup\"},\"$:/core/modules/startup/password.js\":{\"text\":\"!function(){'use strict';exports.name='password',exports.platforms=['browser'],exports.after=['startup'],exports.synchronous=!0,exports.startup=function(){$tw.rootWidget.addEventListener('tm-set-password',function(t){$tw.passwordPrompt.createPrompt({serviceName:$tw.language.getString('Encryption/PromptSetPassword'),noUserName:!0,submitText:$tw.language.getString('Encryption/SetPassword'),canCancel:!0,repeatPassword:!0,callback:function(t){return t&&$tw.crypto.setPassword(t.password),!0}})}),$tw.rootWidget.addEventListener('tm-clear-password',function(t){$tw.browser&&!confirm($tw.language.getString('Encryption/ConfirmClearPassword'))||$tw.crypto.setPassword(null)}),$tw.wiki.addEventListener('change',function(t){$tw.utils.hop(t,'$:/isEncrypted')&&$tw.crypto.updateCryptoStateTiddler()})}}();\",\"type\":\"application/javascript\",\"module-type\":\"startup\"},\"$:/core/modules/startup/plugins.js\":{\"text\":\"!function(){'use strict';exports.name='plugins',exports.after=['load-modules'],exports.synchronous=!0;var l='$:/status/RequireReloadDueToPluginChange';exports.startup=function(){$tw.wiki.addTiddler({title:l,text:'no'}),$tw.wiki.addEventListener('change',function(e){var i,t=[],n=!1;$tw.utils.each(Object.keys(e),function(e){var i=$tw.wiki.getTiddler(e);$tw.wiki.doesPluginRequireReload(e)?n=!0:i&&(i.fields['plugin-type'],'yes'===$tw.wiki.getTiddlerText('$:/config/RegisterPluginType/'+(i.fields['plugin-type']||''),'no'))&&t.push(e)}),n&&$tw.wiki.addTiddler({title:l,text:'yes'}),0\u003Ct.length&&(0\u003C(e=$tw.wiki.readPluginInfo(t)).modifiedPlugins.length||0\u003Ce.deletedPlugins.length)&&(i={},$tw.utils.each(e.deletedPlugins,function(e){e=$tw.wiki.getPluginInfo(e);e&&$tw.utils.each(Object.keys(e.tiddlers),function(e){i[e]=!0})}),$tw.utils.each(e.modifiedPlugins,function(e){e=$tw.wiki.getPluginInfo(e);e&&$tw.utils.each(Object.keys(e.tiddlers),function(e){i[e]=!1})}),$tw.wiki.registerPluginTiddlers(null,e.modifiedPlugins),$tw.wiki.unregisterPluginTiddlers(null,e.deletedPlugins),$tw.wiki.unpackPluginTiddlers(),$tw.utils.each(Object.keys(i),function(e){$tw.wiki.enqueueTiddlerEvent(e,i[e])}))})}}();\",\"type\":\"application/javascript\",\"module-type\":\"startup\"},\"$:/core/modules/startup/render.js\":{\"text\":\"!function(){'use strict';exports.name='render',exports.platforms=['browser'],exports.after=['story'],exports.synchronous=!0;exports.startup=function(){$tw.titleWidgetNode=$tw.wiki.makeTranscludeWidget('$:/core/wiki/title',{document:$tw.fakeDocument,parseAsInline:!0}),$tw.titleContainer=$tw.fakeDocument.createElement('div'),$tw.titleWidgetNode.render($tw.titleContainer,null),document.title=$tw.titleContainer.textContent,$tw.wiki.addEventListener('change',function(e){$tw.titleWidgetNode.refresh(e,$tw.titleContainer,null)&&(document.title=$tw.titleContainer.textContent)}),$tw.styleWidgetNode=$tw.wiki.makeTranscludeWidget('$:/core/ui/PageStylesheet',{document:$tw.fakeDocument}),$tw.styleContainer=$tw.fakeDocument.createElement('style'),$tw.styleWidgetNode.render($tw.styleContainer,null),$tw.styleWidgetNode.assignedStyles=$tw.styleContainer.textContent,$tw.styleElement=document.createElement('style'),$tw.styleElement.innerHTML=$tw.styleWidgetNode.assignedStyles,document.head.insertBefore($tw.styleElement,document.head.firstChild),$tw.wiki.addEventListener('change',$tw.perf.report('styleRefresh',function(e){$tw.styleWidgetNode.refresh(e,$tw.styleContainer,null)&&(e=$tw.styleContainer.textContent)!==$tw.styleWidgetNode.assignedStyles&&($tw.styleWidgetNode.assignedStyles=e,$tw.styleElement.innerHTML=$tw.styleWidgetNode.assignedStyles)})),$tw.perf.report('mainRender',function(){$tw.pageWidgetNode=$tw.wiki.makeTranscludeWidget('$:/core/ui/RootTemplate',{document:document,parentWidget:$tw.rootWidget,recursionMarker:'no'}),$tw.pageContainer=document.createElement('div'),$tw.utils.addClass($tw.pageContainer,'tc-page-container-wrapper'),document.body.insertBefore($tw.pageContainer,document.body.firstChild),$tw.pageWidgetNode.render($tw.pageContainer,null),$tw.hooks.invokeHook('th-page-refreshed')})();var r,e=document.querySelectorAll('.tc-remove-when-wiki-loaded'),d=($tw.utils.each(e,function(e){e.parentNode&&e.parentNode.removeChild(e)}),Object.create(null));function s(){$tw.hooks.invokeHook('th-page-refreshing'),$tw.pageWidgetNode.refresh(d),d=Object.create(null),$tw.hooks.invokeHook('th-page-refreshed')}$tw.wiki.addEventListener('change',$tw.perf.report('mainRefresh',function(e){var t,n,i=!0;for(t in e){var o=$tw.wiki.getTiddler(t);$tw.wiki.isVolatileTiddler(t)||o&&(o.hasField('draft.of')||o.hasField('throttle.refresh'))||(i=!1)}r&&clearTimeout(r),r=null,i?(n=parseInt($tw.wiki.getTiddlerText('$:/config/Drafts/TypingTimeout',''),10),isNaN(n)&&(n=400),r=setTimeout(s,n),$tw.utils.extend(d,e)):($tw.utils.extend(d,e),s())})),$tw.rootWidget.domNodes=[$tw.pageContainer],$tw.rootWidget.children=[$tw.pageWidgetNode],$tw.rootWidget.invokeActionsByTag('$:/tags/StartupAction/PostRender')}}();\",\"type\":\"application/javascript\",\"module-type\":\"startup\"},\"$:/core/modules/startup/rootwidget.js\":{\"text\":\"!function(){'use strict';exports.name='rootwidget',exports.platforms=['browser'],exports.after=['startup'],exports.before=['story'],exports.synchronous=!0,exports.startup=function(){$tw.modal=new $tw.utils.Modal($tw.wiki),$tw.rootWidget.addEventListener('tm-modal',function(t){$tw.modal.display(t.param,{variables:t.paramObject,event:t})}),$tw.rootWidget.addEventListener('tm-show-switcher',function(t){$tw.modal.display('$:/core/ui/SwitcherModal',{variables:t.paramObject,event:t})}),$tw.notifier=new $tw.utils.Notifier($tw.wiki),$tw.rootWidget.addEventListener('tm-notify',function(t){$tw.notifier.display(t.param,{variables:t.paramObject})}),$tw.rootWidget.addEventListener('tm-copy-to-clipboard',function(t){$tw.utils.copyToClipboard(t.param)}),$tw.rootWidget.addEventListener('tm-focus-selector',function(t){var e,r=t.param||'',n=t.event&&t.event.target?t.event.target.ownerDocument:document;try{e=n.querySelector(r)}catch(t){console.log('Error in selector: ',r)}e&&e.focus&&e.focus(t.paramObject)});function t(o){return function(t){var e={},r=t.paramObject||{},t=r.from||t.tiddlerTitle,n=r.to;e.dontRenameInTags='false'===r.renameInTags||'no'===r.renameInTags,e.dontRenameInLists='false'===r.renameInLists||'no'===r.renameInLists,$tw.wiki[o](t,n,e)}}$tw.rootWidget.addEventListener('tm-rename-tiddler',t('renameTiddler')),$tw.rootWidget.addEventListener('tm-relink-tiddler',t('relinkTiddler')),$tw.pageScroller=new $tw.utils.PageScroller,$tw.rootWidget.addEventListener('tm-scroll',function(t){$tw.pageScroller.handleEvent(t)});var r=$tw.utils.getFullScreenApis();r&&$tw.rootWidget.addEventListener('tm-full-screen',function(t){var e=t.event?t.event.target.ownerDocument:document;'enter'!==t.param&&('exit'===t.param||e[r._fullscreenElement])?e[r._exitFullscreen]():e.documentElement[r._requestFullscreen](Element.ALLOW_KEYBOARD_INPUT)}),'data:'===document.location.protocol&&$tw.rootWidget.dispatchEvent({type:'tm-modal',param:'$:/language/Modals/SaveInstructions'})}}();\",\"type\":\"application/javascript\",\"module-type\":\"startup\"},\"$:/core/modules/startup.js\":{\"text\":\"!function(){'use strict';exports.name='startup',exports.after=['load-modules'],exports.synchronous=!0;var t=require('$:/core/modules/widgets/widget.js');exports.startup=function(){if($tw.browser&&($tw.browser.isIE=/msie|trident/i.test(navigator.userAgent),$tw.browser.isFirefox=!!document.mozFullScreenEnabled),$tw.platform={},$tw.browser)$tw.platform.isMac=/Mac/.test(navigator.platform),$tw.platform.isWindows=/win/i.test(navigator.platform),$tw.platform.isLinux=/Linux/i.test(navigator.platform);else switch(require('os').platform()){case'darwin':$tw.platform.isMac=!0;break;case'win32':$tw.platform.isWindows=!0;break;case'freebsd':case'linux':$tw.platform.isLinux=!0}$tw.version=$tw.utils.extractVersionInfo(),$tw.perf=new $tw.Performance('yes'===$tw.wiki.getTiddlerText('$:/config/Performance/Instrumentation','no')),$tw.rootWidget=new t.widget({type:'widget',children:[]},{wiki:$tw.wiki,document:$tw.browser?document:$tw.fakeDocument}),$tw.rootWidget.invokeActionsByTag('$:/tags/StartupAction'),$tw.browser&&$tw.rootWidget.invokeActionsByTag('$:/tags/StartupAction/Browser'),$tw.node&&$tw.rootWidget.invokeActionsByTag('$:/tags/StartupAction/Node'),$tw.language=new $tw.Language,$tw.languageSwitcher=new $tw.PluginSwitcher({wiki:$tw.wiki,pluginType:'language',controllerTitle:'$:/language',defaultPlugins:['$:/languages/en-GB'],onSwitch:function(t){$tw.browser&&((t=$tw.wiki.getTiddler(t[0]))?document.documentElement.setAttribute('dir',t.getFieldString('text-direction')||'auto'):document.documentElement.removeAttribute('dir'))}}),$tw.themeManager=new $tw.PluginSwitcher({wiki:$tw.wiki,pluginType:'theme',controllerTitle:'$:/theme',defaultPlugins:['$:/themes/tiddlywiki/snowwhite','$:/themes/tiddlywiki/vanilla']}),$tw.keyboardManager=new $tw.KeyboardManager,$tw.browser&&$tw.utils.addEventListeners(document,[{name:'keydown',handlerObject:$tw.keyboardManager,handlerMethod:'handleKeydownEvent'}]),$tw.wiki.clearTiddlerEventQueue(),$tw.syncadaptor=void 0,$tw.modules.forEachModuleOfType('syncadaptor',function(t,e){!$tw.syncadaptor&&e.adaptorClass&&($tw.syncadaptor=new e.adaptorClass({wiki:$tw.wiki}))}),$tw.syncadaptor&&($tw.syncer=new $tw.Syncer({wiki:$tw.wiki,syncadaptor:$tw.syncadaptor,logging:'yes'===$tw.wiki.getTiddlerText('$:/config/SyncLogging','yes')})),$tw.saverHandler=new $tw.SaverHandler({wiki:$tw.wiki,dirtyTracking:!$tw.syncadaptor,preloadDirty:$tw.boot.preloadDirty||[]}),$tw.browser&&($tw.popup=new $tw.utils.Popup,$tw.anim=new $tw.utils.Animator)}}();\",\"type\":\"application/javascript\",\"module-type\":\"startup\"},\"$:/core/modules/startup/story.js\":{\"text\":\"!function(){'use strict';exports.name='story',exports.after=['startup'],exports.synchronous=!0;var d='$:/StoryList',r='$:/HistoryList',a='$:/DefaultTiddlers',i='$:/config/Navigation/UpdateHistory',e='$:/config/Navigation/Permalinkview/CopyToClipboard',o='$:/config/Navigation/Permalinkview/UpdateAddressBar';function n(t){t=t||{};var i=null,e=null,o=(1\u003C$tw.locationHash.length&&(-1===(o=(n=$tw.locationHash.substr(1)).indexOf(':'))?i=$tw.utils.decodeURIComponentSafe(n.trim()):(i=$tw.utils.decodeURIComponentSafe(n.substr(0,o).trim()),e=$tw.utils.decodeURIComponentSafe(n.substr(o+1).trim()))),null===e&&(e=t.defaultToCurrentStory?(n=$tw.wiki.getTiddlerList(d),$tw.utils.stringifyList(n)):i&&''!==i?'':$tw.wiki.getTiddlerText(a)),$tw.wiki.filterTiddlers(e)),o=$tw.hooks.invokeHook('th-opening-default-tiddlers-list',o),n=(i&&-1===o.indexOf(i)&&o.unshift(i),$tw.wiki.addTiddler({title:d,text:'',list:o},$tw.wiki.getModificationFields()),new $tw.Story({wiki:$tw.wiki,storyTitle:d,historyTitle:r}));t.disableHistory||(i&&''!==i?(0===i.indexOf('[[')&&']]'===i.substr(-2)&&(i=i.substr(2,i.length-4)),n.addToHistory(i)):0\u003Co.length&&n.addToHistory(o[0]))}function s(t){var i=$tw.wiki.getTiddlerList(d),e=$tw.wiki.getTiddlerData(r,[]),o='';switch(t.targetTiddler?o=t.targetTiddler:(0\u003Ce.length&&(o=e[e.length-1].title),-1===i.indexOf(o)&&(o='')),t.updateAddressBar){case'permalink':$tw.locationHash='#'+encodeURIComponent(o);break;case'permaview':$tw.locationHash='#'+encodeURIComponent(o)+':'+encodeURIComponent($tw.utils.stringifyList(i))}switch(t.copyToClipboard){case'permalink':$tw.utils.copyToClipboard($tw.utils.getLocationPath()+'#'+encodeURIComponent(o));break;case'permaview':$tw.utils.copyToClipboard($tw.utils.getLocationPath()+'#'+encodeURIComponent(o)+':'+encodeURIComponent($tw.utils.stringifyList(i)))}$tw.utils.getLocationHash()!==$tw.locationHash&&('yes'===t.updateHistory?window.location.hash=$tw.locationHash:window.location.replace(window.location.toString().split('#')[0]+$tw.locationHash))}exports.startup=function(){n({disableHistory:$tw.boot.disableStartupNavigation}),$tw.browser&&($tw.wiki.addEventListener('change',function(t){($tw.utils.hop(t,d)||$tw.utils.hop(t,r))&&s({updateAddressBar:$tw.wiki.getTiddlerText('$:/config/Navigation/UpdateAddressBar','permaview').trim(),updateHistory:$tw.wiki.getTiddlerText(i,'no').trim()})}),window.addEventListener('hashchange',function(){var t=$tw.utils.getLocationHash();t!==$tw.locationHash&&'#'!==($tw.locationHash=t)&&n({defaultToCurrentStory:!0})},!1),$tw.rootWidget.addEventListener('tm-browser-refresh',function(t){window.location.reload(!0)}),$tw.rootWidget.addEventListener('tm-open-external-window',function(t){var i=t.paramObject||{},t=t.param||'http://tiddlywiki.com/#WidgetMessage%3A%20tm-open-external-window',e=i.windowName,i=i.windowFeatures;window.open(t,e,i)}),$tw.rootWidget.addEventListener('tm-print',function(t){(t.event.view||window).print()}),$tw.rootWidget.addEventListener('tm-home',function(t){window.location.hash='';var i=$tw.wiki.getTiddlerText(a),i=$tw.wiki.filterTiddlers(i),i=$tw.hooks.invokeHook('th-opening-default-tiddlers-list',i);$tw.wiki.addTiddler({title:d,text:'',list:i},$tw.wiki.getModificationFields()),i[0]&&$tw.wiki.addToHistory(i[0])}),$tw.rootWidget.addEventListener('tm-permalink',function(t){s({updateAddressBar:'yes'===$tw.wiki.getTiddlerText(o,'yes').trim()?'permalink':'none',updateHistory:$tw.wiki.getTiddlerText(i,'no').trim(),targetTiddler:t.param||t.tiddlerTitle,copyToClipboard:'yes'===$tw.wiki.getTiddlerText(e,'yes').trim()?'permalink':'none'})}),$tw.rootWidget.addEventListener('tm-permaview',function(t){s({updateAddressBar:'yes'===$tw.wiki.getTiddlerText(o,'yes').trim()?'permaview':'none',updateHistory:$tw.wiki.getTiddlerText(i,'no').trim(),targetTiddler:t.param||t.tiddlerTitle,copyToClipboard:'yes'===$tw.wiki.getTiddlerText(e,'yes').trim()?'permaview':'none'})}))}}();\",\"type\":\"application/javascript\",\"module-type\":\"startup\"},\"$:/core/modules/startup/windows.js\":{\"text\":\"!function(){'use strict';exports.name='windows',exports.platforms=['browser'],exports.after=['startup'],exports.synchronous=!0,$tw.windows={};exports.startup=function(){$tw.rootWidget.addEventListener('tm-open-window',function(e){var t,n,i,d,o,r,w,a=e.param||e.tiddlerTitle,e=e.paramObject||{},s=e.windowTitle||a,l=e.windowID||a,c=e.template||'$:/core/templates/single.tiddler.window',u=e.width||'700',h=e.height||'600',m=e.top,$=e.left,e=$tw.utils.extend({},e,{currentTiddler:a,'tv-window-id':l});try{i=(n=window.open('','external-'+l,'scrollbars,width='+u+',height='+h+(m?',top='+m:'')+($?',left='+$:''))).document}catch(e){return}($tw.windows[l]=n).haveInitialisedWindow||(i.write('\u003Chtml>\u003Chead>\u003C/head>\u003Cbody class=\\\\'tc-body tc-single-tiddler-window\\\\'>\u003C/body>\u003C/html>'),i.close(),i.title=s,n.addEventListener('beforeunload',function(e){delete $tw.windows[l],$tw.wiki.removeEventListener('change',t)},!1),d=$tw.wiki.makeTranscludeWidget('$:/core/ui/PageStylesheet',{document:$tw.fakeDocument,variables:e,importPageMacros:!0}),o=$tw.fakeDocument.createElement('style'),d.render(o,null),(r=i.createElement('style')).innerHTML=o.textContent,i.head.insertBefore(r,i.head.firstChild),a=$tw.wiki.parseTiddler(c),(w=$tw.wiki.makeWidget(a,{document:i,parentWidget:$tw.rootWidget,variables:e})).render(i.body,i.body.firstChild),t=function(e){d.refresh(e,o,null)&&(r.innerHTML=o.textContent),w.refresh(e)},$tw.wiki.addEventListener('change',t),$tw.utils.addEventListeners(i,[{name:'keydown',handlerObject:$tw.keyboardManager,handlerMethod:'handleKeydownEvent'}]),n.document.documentElement.addEventListener('click',$tw.popup,!0),n.haveInitialisedWindow=!0)}),$tw.rootWidget.addEventListener('tm-close-window',function(e){e=e.param,e=$tw.windows[e];e&&e.close()});function e(){$tw.utils.each($tw.windows,function(e){e.close()})}$tw.rootWidget.addEventListener('tm-close-all-windows',e),$tw.addUnloadTask(e)}}();\",\"type\":\"application/javascript\",\"module-type\":\"startup\"},\"$:/core/modules/story.js\":{\"text\":\"!function(){'use strict';function t(t){this.wiki=(t=t||{}).wiki||$tw.wiki,this.storyTitle=t.storyTitle||'$:/StoryList',this.historyTitle=t.historyTitle||'$:/HistoryList'}t.prototype.navigateTiddler=function(t,i,e){this.addToStory(t,i),this.addToHistory(t,e)},t.prototype.getStoryList=function(){return this.wiki.getTiddlerList(this.storyTitle)||[]},t.prototype.addToStory=function(t,i,e){e=e||{};var o=this.getStoryList(),r=o.indexOf(t);if(!(0\u003C=r)){var s=o.indexOf(i);if(0\u003C=s)switch(e.openLinkFromInsideRiver){case'top':r=0;break;case'bottom':r=o.length;break;case'above':r=s;break;default:r=s+1}else r='bottom'===e.openLinkFromOutsideRiver?o.length:0;o.splice(r,0,t),this.saveStoryList(o)}},t.prototype.saveStoryList=function(t){var i=this.wiki.getTiddler(this.storyTitle);this.wiki.addTiddler(new $tw.Tiddler(this.wiki.getCreationFields(),{title:this.storyTitle},i,{list:t},this.wiki.getModificationFields()))},t.prototype.addToHistory=function(t,i){var t=$tw.utils.isArray(t)?t:[t],e=this.wiki.getTiddlerData(this.historyTitle,[]);$tw.utils.each(t,function(t){e.push({title:t,fromPageRect:i})}),this.wiki.setTiddlerData(this.historyTitle,e,{'current-tiddler':t[t.length-1]})},t.prototype.storyCloseTiddler=function(t){},t.prototype.storyCloseAllTiddlers=function(){},t.prototype.storyCloseOtherTiddlers=function(t){},t.prototype.storyEditTiddler=function(t){},t.prototype.storyDeleteTiddler=function(t){},t.prototype.storySaveTiddler=function(t){},t.prototype.storyCancelTiddler=function(t){},t.prototype.storyNewTiddler=function(t){},exports.Story=t}();\",\"type\":\"application/javascript\",\"module-type\":\"global\"},\"$:/core/modules/storyviews/classic.js\":{\"text\":\"!function(){'use strict';function t(t){this.listWidget=t}var a='cubic-bezier(0.645, 0.045, 0.355, 1)';t.prototype.navigateTo=function(t){var o=$tw.utils.getAnimationDuration(),t=this.listWidget.findListItem(0,t.title);void 0!==t&&(t=this.listWidget.children[t].findFirstDomNode())&&t.nodeType!==Node.TEXT_NODE&&(o?this.listWidget.dispatchEvent({type:'tm-scroll',target:t}):t.scrollIntoView())},t.prototype.insert=function(t){var o,i,e=$tw.utils.getAnimationDuration();e&&(o=t.findFirstDomNode())&&o.nodeType!==Node.TEXT_NODE&&(t=window.getComputedStyle(o),i=parseInt(t.marginBottom,10),t=parseInt(t.marginTop,10),t=o.offsetHeight+t,setTimeout(function(){$tw.utils.setStyle(o,[{transition:'none'},{marginBottom:''}])},e),$tw.utils.setStyle(o,[{transition:'none'},{marginBottom:-t+'px'},{opacity:'0.0'}]),$tw.utils.forceLayout(o),$tw.utils.setStyle(o,[{transition:'opacity '+e+'ms '+a+', margin-bottom '+e+'ms '+a},{marginBottom:i+'px'},{opacity:'1.0'}]))},t.prototype.remove=function(t){var o,i,e,n,s,r=$tw.utils.getAnimationDuration();r?(i=function(){t.removeChildDomNodes()},(o=t.findFirstDomNode())&&o.nodeType!==Node.TEXT_NODE?(e=o.offsetWidth,s=window.getComputedStyle(o),n=parseInt(s.marginBottom,10),s=parseInt(s.marginTop,10),s=o.offsetHeight+s,setTimeout(i,r),$tw.utils.setStyle(o,[{transition:'none'},{transform:'translateX(0px)'},{marginBottom:n+'px'},{opacity:'1.0'}]),$tw.utils.forceLayout(o),$tw.utils.setStyle(o,[{transition:$tw.utils.roundTripPropertyName('transform')+' '+r+'ms '+a+', opacity '+r+'ms '+a+', margin-bottom '+r+'ms '+a},{transform:'translateX(-'+e+'px)'},{marginBottom:-s+'px'},{opacity:'0.0'}])):i()):t.removeChildDomNodes()},exports.classic=t}();\",\"type\":\"application/javascript\",\"module-type\":\"storyview\"},\"$:/core/modules/storyviews/pop.js\":{\"text\":\"!function(){'use strict';function t(t){this.listWidget=t}t.prototype.navigateTo=function(t){var t=this.listWidget.findListItem(0,t.title);void 0!==t&&(t=this.listWidget.children[t].findFirstDomNode())&&t.nodeType!==Node.TEXT_NODE&&this.listWidget.dispatchEvent({type:'tm-scroll',target:t})},t.prototype.insert=function(t){var e=t.findFirstDomNode(),o=$tw.utils.getAnimationDuration();e&&e.nodeType!==Node.TEXT_NODE&&(setTimeout(function(){$tw.utils.setStyle(e,[{transition:'none'},{transform:'none'}]),$tw.utils.setStyle(t.document.body,[{'overflow-x':''}])},o),$tw.utils.setStyle(t.document.body,[{'overflow-x':'hidden'}]),$tw.utils.setStyle(e,[{transition:'none'},{transform:'scale(2)'},{opacity:'0.0'}]),$tw.utils.forceLayout(e),$tw.utils.setStyle(e,[{transition:$tw.utils.roundTripPropertyName('transform')+' '+o+'ms ease-in-out, opacity '+o+'ms ease-in-out'},{transform:'scale(1)'},{opacity:'1.0'}]))},t.prototype.remove=function(t){function e(){o&&o.parentNode&&t.removeChildDomNodes()}var o=t.findFirstDomNode(),i=$tw.utils.getAnimationDuration();o&&o.nodeType!==Node.TEXT_NODE?(setTimeout(e,i),$tw.utils.setStyle(o,[{transition:'none'},{transform:'scale(1)'},{opacity:'1.0'}]),$tw.utils.forceLayout(o),$tw.utils.setStyle(o,[{transition:$tw.utils.roundTripPropertyName('transform')+' '+i+'ms ease-in-out, opacity '+i+'ms ease-in-out'},{transform:'scale(0.1)'},{opacity:'0.0'}])):e()},exports.pop=t}();\",\"type\":\"application/javascript\",\"module-type\":\"storyview\"},\"$:/core/modules/storyviews/zoomin.js\":{\"text\":\"!function(){'use strict';function t(t){var o,n=this;this.listWidget=t,0\u003C(t=this.listWidget.wiki.getTiddlerDataCached(this.listWidget.historyTitle,[])).length&&(o=t[t.length-1].title),$tw.utils.each(this.listWidget.children,function(t,i){var e=t.findFirstDomNode();e instanceof Element&&(o&&o!==t.parseTreeNode.itemTitle||!o&&i?e.style.display='none':n.currentTiddlerDomNode=e,$tw.utils.addClass(e,'tc-storyview-zoomin-tiddler'))})}var u='cubic-bezier(0.645, 0.045, 0.355, 1)';t.prototype.navigateTo=function(t){var i,e,o,n,r,s,l,a,d,p=$tw.utils.getAnimationDuration(),m=this.listWidget.findListItem(0,t.title);void 0!==m&&(i=(m=this.listWidget.children[m]).findFirstDomNode())&&i.nodeType!==Node.TEXT_NODE&&($tw.utils.addClass(i,'tc-storyview-zoomin-tiddler'),$tw.utils.setStyle(i,[{display:'block'},{transformOrigin:'0 0'},{transform:'translateX(0px) translateY(0px) scale(1)'},{transition:'none'},{opacity:'0.0'}]),e=t.fromPageRect||{left:window.innerWidth/2-2,top:window.innerHeight/2-2,width:window.innerWidth/8,height:window.innerHeight/8},o=(function(t,i){i=i||'tc-title';t=t.findFirstDomNode();if(t&&t.querySelector)return t.querySelector('.'+i);return null}(m)||m.findFirstDomNode()).getBoundingClientRect(),n=i.getBoundingClientRect(),r=e.width/o.width,s=e.left-n.left-(o.left-n.left)*r,l=e.top-n.top-(o.top-n.top)*r,$tw.utils.setStyle(i,[{transform:'translateX('+s+'px) translateY('+l+'px) scale('+r+')'}]),$tw.utils.forceLayout(i),d=(a=this).currentTiddlerDomNode,this.currentTiddlerDomNode=i,$tw.utils.setStyle(i,[{transition:$tw.utils.roundTripPropertyName('transform')+' '+p+'ms '+u+', opacity '+p+'ms '+u},{opacity:'1.0'},{transform:'translateX(0px) translateY(0px) scale(1)'},{zIndex:'500'}]),d)&&d!==i&&(r=o.width/e.width,s=o.left-n.left-(e.left-n.left)*r,l=o.top-n.top-(e.top-n.top)*r,$tw.utils.setStyle(d,[{transition:$tw.utils.roundTripPropertyName('transform')+' '+p+'ms '+u+', opacity '+p+'ms '+u},{opacity:'0.0'},{transformOrigin:'0 0'},{transform:'translateX('+s+'px) translateY('+l+'px) scale('+r+')'},{zIndex:'0'}]),setTimeout(function(){a.currentTiddlerDomNode!==d&&(d.style.display='none')},p))},t.prototype.insert=function(t){t=t.findFirstDomNode();t&&t.nodeType!==Node.TEXT_NODE&&($tw.utils.addClass(t,'tc-storyview-zoomin-tiddler'),$tw.utils.setStyle(t,[{display:'none'}]))},t.prototype.remove=function(t){function i(){t.removeChildDomNodes()}var e,o=t.findFirstDomNode(),n=$tw.utils.getAnimationDuration();if(o&&o.nodeType!==Node.TEXT_NODE&&'block'==o.style.display)return $tw.utils.addClass(o,'tc-storyview-zoomin-tiddler'),$tw.utils.setStyle(o,[{display:'block'},{transformOrigin:'50% 50%'},{transform:'translateX(0px) translateY(0px) scale(1)'},{transition:'none'},{zIndex:'0'}]),(e=(e=(e=t.previousSibling())||t.nextSibling())&&e.findFirstDomNode())&&($tw.utils.addClass(e,'tc-storyview-zoomin-tiddler'),$tw.utils.setStyle(e,[{display:'block'},{transformOrigin:'50% 50%'},{transform:'translateX(0px) translateY(0px) scale(10)'},{transition:$tw.utils.roundTripPropertyName('transform')+' '+n+'ms '+u+', opacity '+n+'ms '+u},{opacity:'0'},{zIndex:'500'}]),this.currentTiddlerDomNode=e),$tw.utils.forceLayout(this.listWidget.parentDomNode),$tw.utils.setStyle(o,[{transformOrigin:'50% 50%'},{transform:'translateX(0px) translateY(0px) scale(0.1)'},{transition:$tw.utils.roundTripPropertyName('transform')+' '+n+'ms '+u+', opacity '+n+'ms '+u},{opacity:'0'},{zIndex:'0'}]),setTimeout(i,n),e&&$tw.utils.setStyle(e,[{transform:'translateX(0px) translateY(0px) scale(1)'},{opacity:'1'}]),!0;i()},exports.zoomin=t}();\",\"type\":\"application/javascript\",\"module-type\":\"storyview\"},\"$:/core/modules/syncer.js\":{\"text\":\"!function(){'use strict';function t(t){var n=this;this.wiki=t.wiki,this.syncadaptor=t.syncadaptor,this.disableUI=!!t.disableUI,this.titleIsLoggedIn=t.titleIsLoggedIn||this.titleIsLoggedIn,this.titleUserName=t.titleUserName||this.titleUserName,this.titleSyncFilter=t.titleSyncFilter||this.titleSyncFilter,this.titleSavedNotification=t.titleSavedNotification||this.titleSavedNotification,this.taskTimerInterval=t.taskTimerInterval||this.taskTimerInterval,this.throttleInterval=t.throttleInterval||parseInt(this.wiki.getTiddlerText(this.titleSyncThrottleInterval,''),10)||this.throttleInterval,this.errorRetryInterval=t.errorRetryInterval||this.errorRetryInterval,this.fallbackInterval=t.fallbackInterval||this.fallbackInterval,this.pollTimerInterval=t.pollTimerInterval||parseInt(this.wiki.getTiddlerText(this.titleSyncPollingInterval,''),10)||this.pollTimerInterval,this.logging=!('logging'in t)||t.logging,this.logger=new $tw.utils.Logger('syncer'+($tw.browser?'-browser':'')+($tw.node?'-server':'')+(this.syncadaptor.name?'-'+this.syncadaptor.name:''),{colour:'cyan',enable:this.logging,saveHistory:!0}),this.loggerConnection=new $tw.utils.Logger('syncer'+($tw.browser?'-browser':'')+($tw.node?'-server':'')+(this.syncadaptor.name?'-'+this.syncadaptor.name:'')+'-connection',{colour:'cyan',enable:this.logging}),this.syncadaptor.setLoggerSaveBuffer&&this.syncadaptor.setLoggerSaveBuffer(this.logger),this.filterFn=this.wiki.compileFilter(this.wiki.getTiddlerText(this.titleSyncFilter)),this.readTiddlerInfo(),this.titlesToBeLoaded={},this.titlesHaveBeenLazyLoaded={},this.taskTimerId=null,this.pollTimerId=null,this.numTasksInProgress=0,this.wiki.addEventListener('change',function(t){var r;(0\u003Cn.getSyncedTiddlers(function(r){$tw.utils.each(t,function(t,e){var i=n.wiki.tiddlerExists(e)&&n.wiki.getTiddler(e);r(i,e)})}).length||(r=!1,$tw.utils.each(t,function(t,e,i){t.deleted&&$tw.utils.hop(n.tiddlerInfo,e)&&(r=!0)}),r))&&n.processTaskQueue()}),$tw.browser&&!this.disableUI&&($tw.addUnloadTask(function(t){var e;return n.isDirty()&&(e=$tw.language.getString('UnsavedChangesWarning'),t.returnValue=e),e}),$tw.rootWidget.addEventListener('tm-login',function(t){var e=t&&t.paramObject&&t.paramObject.username,t=t&&t.paramObject&&t.paramObject.password;e&&t?n.login(e,t,function(){}):n.handleLoginEvent()}),$tw.rootWidget.addEventListener('tm-logout',function(){n.handleLogoutEvent()}),$tw.rootWidget.addEventListener('tm-server-refresh',function(){n.handleRefreshEvent()}),$tw.rootWidget.addEventListener('tm-copy-syncer-logs-to-clipboard',function(){$tw.utils.copyToClipboard($tw.utils.getSystemInfo()+'\\\\n\\\\nLog:\\\\n'+n.logger.getBuffer())})),this.disableUI||'yes'===this.wiki.getTiddlerText(this.titleSyncDisableLazyLoading)||this.wiki.addEventListener('lazyLoad',function(t){n.handleLazyLoadEvent(t)}),this.getStatus(function(t,e){n.syncFromServer()})}function d(t,e){this.syncer=t,this.title=e,this.type='save'}function g(t,e){this.syncer=t,this.title=e,this.type='delete'}function h(t,e){this.syncer=t,this.title=e,this.type='load'}t.prototype.titleIsLoggedIn='$:/status/IsLoggedIn',t.prototype.titleIsAnonymous='$:/status/IsAnonymous',t.prototype.titleIsReadOnly='$:/status/IsReadOnly',t.prototype.titleUserName='$:/status/UserName',t.prototype.titleSyncFilter='$:/config/SyncFilter',t.prototype.titleSyncPollingInterval='$:/config/SyncPollingInterval',t.prototype.titleSyncDisableLazyLoading='$:/config/SyncDisableLazyLoading',t.prototype.titleSavedNotification='$:/language/Notifications/Save/Done',t.prototype.titleSyncThrottleInterval='$:/config/SyncThrottleInterval',t.prototype.taskTimerInterval=1e3,t.prototype.throttleInterval=1e3,t.prototype.errorRetryInterval=5e3,t.prototype.fallbackInterval=1e4,t.prototype.pollTimerInterval=6e4,t.prototype.displayError=function(t,e){e===$tw.language.getString('Error/XMLHttpRequest')+': 0'?(this.loggerConnection.alert($tw.language.getString('Error/NetworkErrorAlert')),this.logger.log(t+':',e)):this.logger.alert(t+':',e)},t.prototype.getSyncedTiddlers=function(t){return this.filterFn.call(this.wiki,t)},t.prototype.getTiddlerRevision=function(t){return this.syncadaptor&&this.syncadaptor.getTiddlerRevision?this.syncadaptor.getTiddlerRevision(t):this.wiki.getTiddler(t).fields.revision},t.prototype.readTiddlerInfo=function(){this.tiddlerInfo={};var i=this,t=this.getSyncedTiddlers();$tw.utils.each(t,function(t){var e=i.wiki.getTiddler(t);e&&(i.tiddlerInfo[t]={revision:i.getTiddlerRevision(t),adaptorInfo:i.syncadaptor&&i.syncadaptor.getTiddlerInfo(e),changeCount:i.wiki.getChangeCount(t)})})},t.prototype.isDirty=function(){this.logger.log('Checking dirty status');for(var t=this.getSyncedTiddlers(),e=0;e\u003Ct.length;e++){var i=t[e],r=this.tiddlerInfo[i];if(this.wiki.tiddlerExists(i)){if(!r)return!0;if(this.wiki.getChangeCount(i)>r.changeCount)return!0}}for(t=Object.keys(this.tiddlerInfo),e=0;e\u003Ct.length;e++)if(!this.wiki.tiddlerExists(t[e]))return!0;return!1},t.prototype.updateDirtyStatus=function(){var t;$tw.browser&&!this.disableUI&&(t=this.isDirty(),$tw.utils.toggleClass(document.body,'tc-dirty',t),t||this.loggerConnection.clearAlerts())},t.prototype.storeTiddler=function(t){var e=new $tw.Tiddler(t);this.wiki.addTiddler(e),this.tiddlerInfo[t.title]={revision:this.getTiddlerRevision(t.title),adaptorInfo:this.syncadaptor.getTiddlerInfo(e),changeCount:this.wiki.getChangeCount(t.title)}},t.prototype.getStatus=function(s){var o=this;this.syncadaptor&&this.syncadaptor.getStatus?(this.wiki.addTiddler({title:this.titleIsLoggedIn,text:'no'}),this.syncadaptor.getStatus(function(t,e,i,r,n){t?o.displayError('Get Status Error',t):(o.wiki.addTiddler({title:o.titleIsReadOnly,text:r?'yes':'no'}),o.wiki.addTiddler({title:o.titleIsAnonymous,text:n?'yes':'no'}),o.wiki.addTiddler({title:o.titleIsLoggedIn,text:e?'yes':'no'}),e&&o.wiki.addTiddler({title:o.titleUserName,text:i||''})),s&&s(t,e,i)})):s(null,!0,'UNAUTHENTICATED')},t.prototype.syncFromServer=function(){function t(){g.pollTimerId&&(clearTimeout(g.pollTimerId),g.pollTimerId=null)}function d(){g.pollTimerId=setTimeout(function(){g.pollTimerId=null,g.syncFromServer.call(g)},g.pollTimerInterval)}var g=this,h='yes'===g.wiki.getTiddlerText('$:/config/SyncSystemTiddlersFromServer');this.syncadaptor&&this.syncadaptor.getUpdatedTiddlers?(this.logger.log('Retrieving updated tiddler list'),t(),this.syncadaptor.getUpdatedTiddlers(g,function(t,e){d(),t?g.displayError($tw.language.getString('Error/RetrievingSkinny'),t):e&&($tw.utils.each(e.modifications,function(t){g.titlesToBeLoaded[t]=!0}),$tw.utils.each(e.deletions,function(t){!h&&g.wiki.isSystemTiddler(t)||(delete g.tiddlerInfo[t],g.logger.log('Deleting tiddler missing from server:',t),g.wiki.deleteTiddler(t))}),0\u003Ce.modifications.length||0\u003Ce.deletions.length)&&g.processTaskQueue()})):this.syncadaptor&&this.syncadaptor.getSkinnyTiddlers&&(this.logger.log('Retrieving skinny tiddler list'),t(),this.syncadaptor.getSkinnyTiddlers(function(t,e){if(d(),t)g.displayError($tw.language.getString('Error/RetrievingSkinny'),t);else{for(var i=Object.keys(g.tiddlerInfo),r=0;r\u003Ce.length;r++){var n=e[r],s=n.revision+'',o=g.wiki.tiddlerExists(n.title)&&g.wiki.getTiddler(n.title),l=g.tiddlerInfo[n.title],l=l?l.revision:null,a=i.indexOf(n.title);-1!==a&&i.splice(a,1),l!==s&&(o&&void 0!==o.fields.text||g.storeTiddler(n),g.titlesToBeLoaded[n.title]=!0)}$tw.utils.each(i,function(t){!h&&g.wiki.isSystemTiddler(t)||(delete g.tiddlerInfo[t],g.logger.log('Deleting tiddler missing from server:',t),g.wiki.deleteTiddler(t))}),g.processTaskQueue()}}))},t.prototype.enqueueLoadTiddler=function(t){this.titlesToBeLoaded[t]=!0,this.processTaskQueue()},t.prototype.handleLazyLoadEvent=function(t){!this.syncadaptor.supportsLazyLoading||this.titlesHaveBeenLazyLoaded[t]||-1!==this.getSyncedTiddlers().indexOf(t)&&(this.titlesToBeLoaded[t]=!0,this.titlesHaveBeenLazyLoaded[t]=!0)},t.prototype.handleLoginEvent=function(){var r=this;this.getStatus(function(t,e,i){t||e||(r.syncadaptor&&r.syncadaptor.displayLoginPrompt?r.syncadaptor.displayLoginPrompt(r):r.displayLoginPrompt())})},t.prototype.displayLoginPrompt=function(){var i=this;$tw.passwordPrompt.createPrompt({serviceName:$tw.language.getString('LoginToTiddlySpace'),callback:function(t){return i.login(t.username,t.password,function(t,e){i.syncFromServer()}),!0}})},t.prototype.login=function(t,e,r){this.logger.log('Attempting to login as',t);var i=this;this.syncadaptor.login?this.syncadaptor.login(t,e,function(t){if(t)return r(t);i.getStatus(function(t,e,i){r&&r(t,e)})}):r(null,!0)},t.prototype.handleLogoutEvent=function(){this.logger.log('Attempting to logout');var e=this;this.syncadaptor.logout&&this.syncadaptor.logout(function(t){t?e.displayError('Logout Error',t):e.getStatus()})},t.prototype.handleRefreshEvent=function(){this.syncFromServer()},t.prototype.processTaskQueue=function(){var e,i=this;this.syncadaptor.isReady&&!this.syncadaptor.isReady()||0!==this.numTasksInProgress?this.updateDirtyStatus():'object'==typeof(e=this.chooseNextTask())&&null!==e?(this.numTasksInProgress+=1,e.run(function(t){--i.numTasksInProgress,t?(i.displayError('Sync error while processing '+e.type+' of \\\\''+e.title+'\\\\'',t),i.updateDirtyStatus(),i.triggerTimeout(i.errorRetryInterval)):(i.updateDirtyStatus(),i.processTaskQueue.call(i))})):(this.updateDirtyStatus(),!0===e&&this.triggerTimeout())},t.prototype.triggerTimeout=function(t){var e=this;this.taskTimerId||(this.taskTimerId=setTimeout(function(){e.taskTimerId=null,e.processTaskQueue.call(e)},t||e.taskTimerInterval))},t.prototype.chooseNextTask=function(){for(var t=new Date-this.throttleInterval,e=null,i=this.getSyncedTiddlers(),r=0;r\u003Ci.length;r++){var n=i[r],s=this.wiki.tiddlerExists(n)&&this.wiki.getTiddler(n),o=this.tiddlerInfo[n];if(s){var l=!o||this.wiki.getChangeCount(n)>o.changeCount,a=!o||!o.timestampLastSaved||o.timestampLastSaved\u003Ct;if(l){if(a)return new d(this,n);e=!0}}}for(i=Object.keys(this.tiddlerInfo),r=0;r\u003Ci.length;r++)if(n=i[r],o=this.tiddlerInfo[n],!(s=this.wiki.tiddlerExists(n)&&this.wiki.getTiddler(n)))return new g(this,n);return(n=Object.keys(this.titlesToBeLoaded)[0])?(delete this.titlesToBeLoaded[n],new h(this,n)):e},d.prototype.run=function(r){var n=this,s=this.syncer.wiki.getChangeCount(this.title),t=this.syncer.wiki.tiddlerExists(this.title)&&this.syncer.wiki.getTiddler(this.title);this.syncer.logger.log('Dispatching \\\\'save\\\\' task:',this.title),t?this.syncer.syncadaptor.saveTiddler(t,function(t,e,i){if(t)return r(t);n.syncer.tiddlerInfo[n.title]={changeCount:s,adaptorInfo:e,revision:i,timestampLastSaved:new Date},r(null)},{tiddlerInfo:n.syncer.tiddlerInfo[n.title]}):(this.syncer.logger.log(' Not Dispatching \\\\'save\\\\' task:',this.title,'tiddler does not exist'),$tw.utils.nextTick(r(null)))},g.prototype.run=function(e){var i=this;this.syncer.logger.log('Dispatching \\\\'delete\\\\' task:',this.title),this.syncer.syncadaptor.deleteTiddler(this.title,function(t){if(t)return e(t);delete i.syncer.tiddlerInfo[i.title],e(null)},{tiddlerInfo:i.syncer.tiddlerInfo[this.title]})},h.prototype.run=function(i){var r=this;this.syncer.logger.log('Dispatching \\\\'load\\\\' task:',this.title),this.syncer.syncadaptor.loadTiddler(this.title,function(t,e){if(t)return i(t);e&&r.syncer.storeTiddler(e),i(null)})},exports.Syncer=t}();\",\"type\":\"application/javascript\",\"module-type\":\"global\"},\"$:/core/modules/tiddler.js\":{\"text\":\"!function(){'use strict';exports.hasTag=function(t){return this.fields.tags&&-1!==this.fields.tags.indexOf(t)},exports.isPlugin=function(){return'application/json'===this.fields.type&&this.hasField('plugin-type')},exports.isDraft=function(){return this.hasField('draft.of')},exports.getFieldString=function(t,i){var e=this.fields[t];return null==e?i||'':(i=$tw.Tiddler.fieldModules[t])&&i.stringify?i.stringify.call(this,e):e.toString()},exports.getFieldList=function(t){t=this.fields[t];return null==t?[]:$tw.utils.parseStringArray(t)},exports.getFieldStrings=function(t){var i,e=(t=t||{}).exclude||[],s={};for(i in this.fields)$tw.utils.hop(this.fields,i)&&-1===e.indexOf(i)&&(s[i]=this.getFieldString(i));return s},exports.getFieldStringBlock=function(t){for(var i=(t=t||{}).exclude||[],e=Object.keys(this.fields).sort(),s=[],r=0;r\u003Ce.length;r++){var n=e[r];-1===i.indexOf(n)&&s.push(n+': '+this.getFieldString(n))}return s.join('\\\\n')},exports.getFieldDay=function(t){var i;return this.cache&&this.cache.day&&$tw.utils.hop(this.cache.day,t)?this.cache.day[t]:(i='',this.fields[t]&&(i=new Date($tw.utils.parseDate(this.fields[t])).setHours(0,0,0,0)),this.cache.day=this.cache.day||{},this.cache.day[t]=i)}}();\",\"type\":\"application/javascript\",\"module-type\":\"tiddlermethod\"},\"$:/core/modules/upgraders/plugins.js\":{\"text\":\"!function(){'use strict';var d={'$:/themes/tiddlywiki/stickytitles':{versions:['*']},'$:/plugins/tiddlywiki/fullscreen':{versions:['*']}};exports.upgrade=function(s,e,t){var l,a={};return $tw.utils.each(e,function(e){var i=t[e];if(i&&i['plugin-type']){var r=s.doesPluginInfoRequireReload($tw.utils.parseJSONSafe(i.text))?s.getTiddlerText('$:/language/ControlPanel/Plugins/PluginWillRequireReload')+' ':'';if(a[e]=r,i.version){n=e,l||((l=s.getTiddlerData('$:/UpgradeLibrary',{})).tiddlers=l.tiddlers||{});var n=l.tiddlers[n];if(n&&n['plugin-type']&&n.version)return t[e]=n,void(a[e]=r+$tw.language.getString('Import/Upgrader/Plugins/Upgraded',{variables:{incoming:i.version,upgraded:n.version}}));r=s.getTiddler(e);if(r&&r.hasField('plugin-type')&&r.hasField('version')&&$tw.utils.checkVersions(r.fields.version,i.version))return t[e]=Object.create(null),void(a[e]=$tw.language.getString('Import/Upgrader/Plugins/Suppressed/Version',{variables:{incoming:i.version,existing:r.fields.version}}))}n=d[e];n&&(-1!==n.versions.indexOf('*')||i.version&&-1!==n.versions.indexOf(i.version))&&(t[e]=Object.create(null),a[e]=$tw.language.getString('Import/Upgrader/Plugins/Suppressed/Incompatible'))}}),a}}();\",\"type\":\"application/javascript\",\"module-type\":\"upgrader\"},\"$:/core/modules/upgraders/system.js\":{\"text\":\"!function(){'use strict';var i=['$:/Import'],l=['$:/temp/','$:/state/','$:/StoryList','$:/HistoryList'],o=['$:/core/modules/'];exports.upgrade=function(g,t,n){var a={},s=!1;return $tw.utils.each(t,function(t){if(-1!==i.indexOf(t))n[t]=Object.create(null),a[t]=$tw.language.getString('Import/Upgrader/System/Suppressed');else{for(var e=0;e\u003Cl.length;e++){var r=l[e];t.substr(0,r.length)===r&&(a[t]=$tw.language.getString('Import/Upgrader/Tiddler/Unselected'))}for(e=0;e\u003Co.length;e++){r=o[e];t.substr(0,r.length)===r&&g.isShadowTiddler(t)&&(s=!0,a[t]=$tw.language.getString('Import/Upgrader/System/Warning'))}}}),s&&new $tw.utils.Logger('import').alert($tw.language.getString('Import/Upgrader/System/Alert')),a}}();\",\"type\":\"application/javascript\",\"module-type\":\"upgrader\"},\"$:/core/modules/upgraders/themetweaks.js\":{\"text\":\"!function(){'use strict';var h={'$:/themes/tiddlywiki/vanilla/metrics':{fontsize:'$:/themes/tiddlywiki/vanilla/metrics/fontsize',lineheight:'$:/themes/tiddlywiki/vanilla/metrics/lineheight',storyleft:'$:/themes/tiddlywiki/vanilla/metrics/storyleft',storytop:'$:/themes/tiddlywiki/vanilla/metrics/storytop',storyright:'$:/themes/tiddlywiki/vanilla/metrics/storyright',storywidth:'$:/themes/tiddlywiki/vanilla/metrics/storywidth',tiddlerwidth:'$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth'},'$:/themes/tiddlywiki/vanilla/settings':{fontfamily:'$:/themes/tiddlywiki/vanilla/settings/fontfamily'}};exports.upgrade=function(s,t,d){var n={};return $tw.utils.each(t,function(t){var i=h[t];if(i){var e,l=new $tw.Tiddler(d[t]),r=s.getTiddlerDataCached(l,{});for(e in i){var a=i[e];d[a]&&d[a].title===a||(d[a]={title:a,text:r[e]},n[a]=$tw.language.getString('Import/Upgrader/ThemeTweaks/Created',{variables:{from:t+'##'+e}}))}}}),n}}();\",\"type\":\"application/javascript\",\"module-type\":\"upgrader\"},\"$:/core/modules/utils/base64-utf8/base64-utf8.module.js\":{\"text\":\"!function(){e=function(){return{encode:function(r){if('string'!=typeof r)return r;r=r.replace(/\\\\r\\\\n/g,'\\\\n');for(var e,o,t,n='',i=0;i\u003Cr.length;i++)(e=r.charCodeAt(i))\u003C128?n+=String.fromCharCode(e):n=127\u003Ce&&e\u003C2048?(n+=String.fromCharCode(e>>6|192))+String.fromCharCode(63&e|128):55295\u003Ce&&e\u003C57344&&r.length>i+1?(t=e,o=r.charCodeAt(i+1),i++,t=65536+(t-55296\u003C\u003C10|o-56320),(n=(n=(n+=String.fromCharCode(t>>18|240))+String.fromCharCode(t>>12&63|128))+String.fromCharCode(t>>6&63|128))+String.fromCharCode(63&t|128)):(n=(n+=String.fromCharCode(e>>12|224))+String.fromCharCode(e>>6&63|128))+String.fromCharCode(63&e|128);return n},decode:function(r){if('string'!=typeof r)return r;for(var e,o='',t=0;t\u003Cr.length;)(e=r.charCodeAt(t))\u003C128?(o+=String.fromCharCode(e),t++):191\u003Ce&&e\u003C224?(o+=String.fromCharCode((31&e)\u003C\u003C6|63&r.charCodeAt(t+1)),t+=2):223\u003Ce&&e\u003C240?(o+=String.fromCharCode((15&e)\u003C\u003C12|(63&r.charCodeAt(t+1))\u003C\u003C6|63&r.charCodeAt(t+2)),t+=3):(e=(7&e)\u003C\u003C18|(63&r.charCodeAt(t+1))\u003C\u003C12|(63&r.charCodeAt(t+2))\u003C\u003C6|63&r.charCodeAt(t+3),o+=String.fromCharCode(55296+(e-65536>>10))+String.fromCharCode(56320+(e-65536&1023)),t+=4);return o}}},void 0!==(o=this).module&&o.module.exports?o.module.exports=e.apply(o):void 0!==o.define&&'function'===o.define&&o.define.amd?define('utf8',[],e):o.utf8=e.apply(o);function r(r){var h=r||this.utf8,C='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';return{encode:function(r){if(void 0===h)throw{error:'MissingMethod',message:'UTF8 Module is missing.'};if('string'!=typeof r)return r;r=h.encode(r);for(var e,o,t,n,i,d,a='',f=0;f\u003Cr.length;)t=(e=r.charCodeAt(f++))>>2,n=(3&e)\u003C\u003C4|(e=r.charCodeAt(f++))>>4,i=(15&e)\u003C\u003C2|(o=r.charCodeAt(f++))>>6,d=63&o,isNaN(e)?i=d=64:isNaN(o)&&(d=64),a+=C.charAt(t)+C.charAt(n)+C.charAt(i)+C.charAt(d);return a},decode:function(r){if(void 0===h)throw{error:'MissingMethod',message:'UTF8 Module is missing.'};if('string'!=typeof r)return r;r=r.replace(/[^A-Za-z0-9\\\\+\\\\/\\\\=]/g,'');for(var e,o,t,n,i,d='',a=0;a\u003Cr.length;)e=C.indexOf(r.charAt(a++))\u003C\u003C2|(n=C.indexOf(r.charAt(a++)))>>4,o=(15&n)\u003C\u003C4|(n=C.indexOf(r.charAt(a++)))>>2,t=(3&n)\u003C\u003C6|(i=C.indexOf(r.charAt(a++))),d+=String.fromCharCode(e),64!=n&&(d+=String.fromCharCode(o)),64!=i&&(d+=String.fromCharCode(t));return h.decode(d)}}}var e,o,t=this,n=['utf8'];if(void 0!==t.module&&t.module.exports){if(t.require)for(var i=0;i\u003Cn.length;i++)t[n[i]]=t.require(n[i]);t.module.exports=r.apply(t)}else void 0!==t.define&&'function'===t.define&&t.define.amd?define('base64',n,r):t.base64=r.apply(t)}.call(exports);\",\"type\":\"application/javascript\",\"module-type\":\"library\"},\"$:/core/modules/utils/crypto.js\":{\"text\":\"!function(){'use strict';exports.extractEncryptedStoreArea=function(t){var r='\u003Cpre id=\\\"encryptedStoreArea\\\" type=\\\"text/plain\\\" style=\\\"display:none;\\\">',e=t.indexOf(r);if(-1!==e){var n=t.indexOf('\u003C/pre>',e);if(-1!==n)return $tw.utils.htmlDecode(t.substring(e+r.length,n))}return null},exports.decryptStoreArea=function(t,r){t=$tw.crypto.decrypt(t,r);if(t){var e,n=$tw.utils.parseJSONSafe(t),s=[];for(e in n)'$:/isEncrypted'!==e&&s.push(n[e]);return s}return null},exports.decryptStoreAreaInteractive=function(e,n,t){var r=$tw.utils.decryptStoreArea(e);r?n(r):$tw.passwordPrompt.createPrompt({serviceName:'Enter a password to decrypt the imported TiddlyWiki',noUserName:!0,canCancel:!0,submitText:'Decrypt',callback:function(t){var r;return!!t&&!!(r=$tw.utils.decryptStoreArea(e,t.password))&&($tw.config.usePasswordVault&&$tw.crypto.setPassword(t.password),n(r),!0)}})}}();\",\"type\":\"application/javascript\",\"module-type\":\"utils\"},\"$:/core/modules/utils/csv.js\":{\"text\":\"!function(){'use strict';exports.parseCsvString=function(r,t){if(!r)return[];for(var n=(t=t||{}).separator||',',e=r.length,a=[],u=[],i=0;i\u003Ce;i++){var s=function(r,t,n,e){var a='\\\"'===r.charAt(t),u=a?t+1:t;if(r.charAt(i)===e)return[u,u,!1];for(var i=u;i\u003Cn;i++){var s=r.charAt(i);if(('\\\\n'===s||'\\\\r'===s)&&!a)return[u,i,!1];if(s===e&&!a)return[u,i,!1];if('\\\"'===s&&a){if('\\\"'!==(i+1\u003Cn?r.charAt(i+1):''))return[u,i,!0];i++}}return[u,i,a]}(r,i,e,n),h=r.substring(s[0],s[1]),h=(s[2]&&(h=h.replace(/\\\"\\\"/g,'\\\"'),s[1]++),u.push(h),i=s[1],r.charAt(i));i+1\u003Ce&&r.charAt(i+1);'\\\\r'!==h&&'\\\\n'!==h||(1===u.length&&''===u[0]&&(u.length=0),a.push(u),u=[],'\\\\r'===h&&'\\\\n'===(i+1\u003Ce?r.charAt(i+1):'')&&i++)}return r.charAt(e-1)===n&&u.push(''),a.push(u),a},exports.parseCsvStringWithHeader=function(r,t){for(var n=(e=$tw.utils.parseCsvString(r,t))[0],e=e.slice(1),a=0;a\u003Ce.length;a++){for(var u=e[a],i=Object.create(null),s=0;s\u003Cn.length;s++){var h=n[s];h&&(i[h]=$tw.utils.trim(u[s]||''))}e[a]=i}return e}}();\",\"type\":\"application/javascript\",\"module-type\":\"utils\"},\"$:/core/modules/utils/diff-match-patch/diff_match_patch.js\":{\"text\":\"!function(){function o(){this.Diff_Timeout=1,this.Diff_EditCost=4,this.Match_Threshold=.5,this.Match_Distance=1e3,this.Patch_DeleteThreshold=.5,this.Patch_Margin=4,this.Match_MaxBits=32}var x=-1;o.prototype.diff_main=function(t,e,n,i){if(void 0===i&&(i=this.Diff_Timeout\u003C=0?Number.MAX_VALUE:(new Date).getTime()+1e3*this.Diff_Timeout),null==t||null==e)throw Error('Null input. (diff_main)');var r,h,s;return t==e?t?[[0,t]]:[]:(r=n=void 0===n||n,h=this.diff_commonPrefix(t,e),n=t.substring(0,h),t=t.substring(h),e=e.substring(h),h=this.diff_commonSuffix(t,e),s=t.substring(t.length-h),t=t.substring(0,t.length-h),e=e.substring(0,e.length-h),t=this.diff_compute_(t,e,r,i),n&&t.unshift([0,n]),s&&t.push([0,s]),this.diff_cleanupMerge(t),t)},o.prototype.diff_compute_=function(t,e,n,i){var r,h,s;return t?e?(r=t.length>e.length?t:e,h=t.length>e.length?e:t,-1!=(s=r.indexOf(h))?(n=[[1,r.substring(0,s)],[0,h],[1,r.substring(s+h.length)]],t.length>e.length&&(n[0][0]=n[2][0]=x),n):1==h.length?[[x,t],[1,e]]:(r=this.diff_halfMatch_(t,e))?(e=r[1],h=r[3],t=r[4],r=this.diff_main(r[0],r[2],n,i),n=this.diff_main(e,h,n,i),r.concat([[0,t]],n)):n&&100\u003Ct.length&&100\u003Ce.length?this.diff_lineMode_(t,e,i):this.diff_bisect_(t,e,i)):[[x,t]]:[[1,e]]},o.prototype.diff_lineMode_=function(t,e,n){var i=this.diff_linesToChars_(t,e);t=i.chars1,e=i.chars2,i=i.lineArray,t=this.diff_main(t,e,!1,n),this.diff_charsToLines_(t,i),this.diff_cleanupSemantic(t),t.push([0,'']);for(var r=i=e=0,h='',s='';e\u003Ct.length;){switch(t[e][0]){case 1:r++,s+=t[e][1];break;case x:i++,h+=t[e][1];break;case 0:if(1\u003C=i&&1\u003C=r){for(t.splice(e-i-r,i+r),e=e-i-r,r=(i=this.diff_main(h,s,!1,n)).length-1;0\u003C=r;r--)t.splice(e,0,i[r]);e+=i.length}i=r=0,s=h=''}e++}return t.pop(),t},o.prototype.diff_bisect_=function(t,e,n){for(var i=t.length,r=e.length,h=Math.ceil((i+r)/2),s=2*h,a=Array(s),f=Array(s),l=0;l\u003Cs;l++)a[l]=-1,f[l]=-1;a[h+1]=0;for(var g=(f[h+1]=0)!=(l=i-r)%2,o=0,c=0,u=0,p=0,d=0;d\u003Ch&&!((new Date).getTime()>n);d++){for(var _=-d+o;_\u003C=d-c;_+=2){for(var b=h+_,m=_==-d||_!=d&&a[b-1]\u003Ca[b+1]?a[b+1]:a[b-1]+1,v=m-_;m\u003Ci&&v\u003Cr&&t.charAt(m)==e.charAt(v);)m++,v++;if(i\u003C(a[b]=m))c+=2;else if(r\u003Cv)o+=2;else if(g&&0\u003C=(b=h+l-_)&&b\u003Cs&&-1!=f[b]){var M=i-f[b];if(M\u003C=m)return this.diff_bisectSplit_(t,e,m,v,n)}}for(_=-d+u;_\u003C=d-p;_+=2){for(b=h+_,m=(M=_==-d||_!=d&&f[b-1]\u003Cf[b+1]?f[b+1]:f[b-1]+1)-_;M\u003Ci&&m\u003Cr&&t.charAt(i-M-1)==e.charAt(r-m-1);)M++,m++;if(i\u003C(f[b]=M))p+=2;else if(r\u003Cm)u+=2;else if(!g&&0\u003C=(b=h+l-_)&&b\u003Cs&&-1!=a[b]&&(v=h+(m=a[b])-b,(M=i-M)\u003C=m))return this.diff_bisectSplit_(t,e,m,v,n)}}return[[x,t],[1,e]]},o.prototype.diff_bisectSplit_=function(t,e,n,i,r){var h=t.substring(0,n),s=e.substring(0,i);return t=t.substring(n),e=e.substring(i),h=this.diff_main(h,s,!1,r),r=this.diff_main(t,e,!1,r),h.concat(r)},o.prototype.diff_linesToChars_=function(t,e){function n(t){for(var e='',n=0,i=-1,r=s.length;i\u003Ct.length-1;){-1==(i=t.indexOf('\\\\n',n))&&(i=t.length-1);var h=t.substring(n,i+1),n=i+1;(a.hasOwnProperty?a.hasOwnProperty(h):void 0!==a[h])?e+=String.fromCharCode(a[h]):(e+=String.fromCharCode(r),a[h]=r,s[r++]=h)}return e}var s=[],a={};return s[0]='',{chars1:n(t),chars2:n(e),lineArray:s}},o.prototype.diff_charsToLines_=function(t,e){for(var n=0;n\u003Ct.length;n++){for(var i=t[n][1],r=[],h=0;h\u003Ci.length;h++)r[h]=e[i.charCodeAt(h)];t[n][1]=r.join('')}},o.prototype.diff_commonPrefix=function(t,e){if(!t||!e||t.charAt(0)!=e.charAt(0))return 0;for(var n=0,i=Math.min(t.length,e.length),r=i,h=0;n\u003Cr;)t.substring(h,r)==e.substring(h,r)?h=n=r:i=r,r=Math.floor((i-n)/2+n);return r},o.prototype.diff_commonSuffix=function(t,e){if(!t||!e||t.charAt(t.length-1)!=e.charAt(e.length-1))return 0;for(var n=0,i=Math.min(t.length,e.length),r=i,h=0;n\u003Cr;)t.substring(t.length-r,t.length-h)==e.substring(e.length-r,e.length-h)?h=n=r:i=r,r=Math.floor((i-n)/2+n);return r},o.prototype.diff_commonOverlap_=function(t,e){var n=t.length,i=e.length;if(0==n||0==i)return 0;if(i\u003Cn?t=t.substring(n-i):n\u003Ci&&(e=e.substring(0,n)),n=Math.min(n,i),t==e)return n;for(var i=0,r=1;;){var h=t.substring(n-r);if(-1==(h=e.indexOf(h)))return i;r+=h,0!=h&&t.substring(n-r)!=e.substring(0,r)||(i=r,r++)}},o.prototype.diff_halfMatch_=function(t,e){function n(t,e,n){for(var i,r,h,s,a=t.substring(n,n+Math.floor(t.length/4)),f=-1,l='';-1!=(f=e.indexOf(a,f+1));){var g=c.diff_commonPrefix(t.substring(n),e.substring(f)),o=c.diff_commonSuffix(t.substring(0,n),e.substring(0,f));l.length\u003Co+g&&(l=e.substring(f-o,f)+e.substring(f,f+g),i=t.substring(0,n-o),r=t.substring(n+g),h=e.substring(0,f-o),s=e.substring(f+g))}return 2*l.length>=t.length?[i,r,h,s,l]:null}var c,i,r,h,s,a;return!(this.Diff_Timeout\u003C=0)&&(r=t.length>e.length?t:e,h=t.length>e.length?e:t,!(r.length\u003C4||2*h.length\u003Cr.length))&&(c=this,i=n(r,h,Math.ceil(r.length/4)),r=n(r,h,Math.ceil(r.length/2)),i||r)?(i=!r||i&&i[4].length>r[4].length?i:r,t.length>e.length?(r=i[0],h=i[1],s=i[2],a=i[3]):(s=i[0],a=i[1],r=i[2],h=i[3]),[r,h,s,a,i[4]]):null},o.prototype.diff_cleanupSemantic=function(t){for(var e=!1,n=[],i=0,r=null,h=0,s=0,a=0,f=0,l=0;h\u003Ct.length;)0==t[h][0]?(s=f,a=l,l=f=0,r=t[n[i++]=h][1]):(1==t[h][0]?f+=t[h][1].length:l+=t[h][1].length,r&&r.length\u003C=Math.max(s,a)&&r.length\u003C=Math.max(f,l)&&(t.splice(n[i-1],0,[x,r]),t[n[i-1]+1][0]=1,i--,h=0\u003C--i?n[i-1]:-1,l=f=a=s=0,e=!(r=null))),h++;for(e&&this.diff_cleanupMerge(t),this.diff_cleanupSemanticLossless(t),h=1;h\u003Ct.length;)t[h-1][0]==x&&1==t[h][0]&&(e=t[h-1][1],n=t[h][1],i=this.diff_commonOverlap_(e,n),(r=this.diff_commonOverlap_(n,e))\u003C=i?(i>=e.length/2||i>=n.length/2)&&(t.splice(h,0,[0,n.substring(0,i)]),t[h-1][1]=e.substring(0,e.length-i),t[h+1][1]=n.substring(i),h++):(r>=e.length/2||r>=n.length/2)&&(t.splice(h,0,[0,e.substring(0,r)]),t[h-1][0]=1,t[h-1][1]=n.substring(0,n.length-r),t[h+1][0]=x,t[h+1][1]=e.substring(r),h++),h++),h++},o.prototype.diff_cleanupSemanticLossless=function(t){function e(t,e){var n,i,r,h,s,a;return t&&e?(s=t.charAt(t.length-1),a=e.charAt(0),n=s.match(o.nonAlphaNumericRegex_),i=a.match(o.nonAlphaNumericRegex_),r=n&&s.match(o.whitespaceRegex_),h=i&&a.match(o.whitespaceRegex_),s=r&&s.match(o.linebreakRegex_),a=h&&a.match(o.linebreakRegex_),t=s&&t.match(o.blanklineEndRegex_),e=a&&e.match(o.blanklineStartRegex_),t||e?5:s||a?4:n&&!r&&h?3:r||h?2:n||i?1:0):6}for(var n=1;n\u003Ct.length-1;){if(0==t[n-1][0]&&0==t[n+1][0]){var i=t[n-1][1],r=t[n][1],h=t[n+1][1];(s=this.diff_commonSuffix(i,r))&&(a=r.substring(r.length-s),i=i.substring(0,i.length-s),r=a+r.substring(0,r.length-s),h=a+h);for(var s=i,a=r,f=h,l=e(i,r)+e(r,h);r.charAt(0)===h.charAt(0);){i+=r.charAt(0),r=r.substring(1)+h.charAt(0),h=h.substring(1);var g=e(i,r)+e(r,h);l\u003C=g&&(l=g,s=i,a=r,f=h)}t[n-1][1]!=s&&(s?t[n-1][1]=s:(t.splice(n-1,1),n--),t[n][1]=a,f?t[n+1][1]=f:(t.splice(n+1,1),n--))}n++}},o.nonAlphaNumericRegex_=/[^a-zA-Z0-9]/,o.whitespaceRegex_=/\\\\s/,o.linebreakRegex_=/[\\\\r\\\\n]/,o.blanklineEndRegex_=/\\\\n\\\\r?\\\\n$/,o.blanklineStartRegex_=/^\\\\r?\\\\n\\\\r?\\\\n/,o.prototype.diff_cleanupEfficiency=function(t){for(var e=!1,n=[],i=0,r=null,h=0,s=!1,a=!1,f=!1,l=!1;h\u003Ct.length;)0==t[h][0]?(r=t[h][1].length\u003Cthis.Diff_EditCost&&(f||l)?(s=f,a=l,t[n[i++]=h][1]):(i=0,null),f=l=!1):(t[h][0]==x?l=!0:f=!0,r&&(s&&a&&f&&l||r.length\u003Cthis.Diff_EditCost/2&&3==s+a+f+l)&&(t.splice(n[i-1],0,[x,r]),t[n[i-1]+1][0]=1,i--,s&&a?(f=l=!0,i=0):(h=0\u003C--i?n[i-1]:-1,f=l=!1),e=!(r=null))),h++;e&&this.diff_cleanupMerge(t)},o.prototype.diff_cleanupMerge=function(t){t.push([0,'']);for(var e,n=0,i=0,r=0,h='',s='';n\u003Ct.length;)switch(t[n][0]){case 1:r++,s+=t[n][1],n++;break;case x:i++,h+=t[n][1],n++;break;case 0:1\u003Ci+r?(0!==i&&0!==r&&(0!==(e=this.diff_commonPrefix(s,h))&&(0\u003Cn-i-r&&0==t[n-i-r-1][0]?t[n-i-r-1][1]+=s.substring(0,e):(t.splice(0,0,[0,s.substring(0,e)]),n++),s=s.substring(e),h=h.substring(e)),0!==(e=this.diff_commonSuffix(s,h)))&&(t[n][1]=s.substring(s.length-e)+t[n][1],s=s.substring(0,s.length-e),h=h.substring(0,h.length-e)),0===i?t.splice(n-r,i+r,[1,s]):0===r?t.splice(n-i,i+r,[x,h]):t.splice(n-i-r,i+r,[x,h],[1,s]),n=n-i-r+(i?1:0)+(r?1:0)+1):0!==n&&0==t[n-1][0]?(t[n-1][1]+=t[n][1],t.splice(n,1)):n++,i=r=0,s=h=''}for(''===t[t.length-1][1]&&t.pop(),i=!1,n=1;n\u003Ct.length-1;)0==t[n-1][0]&&0==t[n+1][0]&&(t[n][1].substring(t[n][1].length-t[n-1][1].length)==t[n-1][1]?(t[n][1]=t[n-1][1]+t[n][1].substring(0,t[n][1].length-t[n-1][1].length),t[n+1][1]=t[n-1][1]+t[n+1][1],t.splice(n-1,1),i=!0):t[n][1].substring(0,t[n+1][1].length)==t[n+1][1]&&(t[n-1][1]+=t[n+1][1],t[n][1]=t[n][1].substring(t[n+1][1].length)+t[n+1][1],t.splice(n+1,1),i=!0)),n++;i&&this.diff_cleanupMerge(t)},o.prototype.diff_xIndex=function(t,e){for(var n=0,i=0,r=0,h=0,s=0;s\u003Ct.length&&(1!==t[s][0]&&(n+=t[s][1].length),t[s][0]!==x&&(i+=t[s][1].length),!(e\u003Cn));s++)r=n,h=i;return t.length!=s&&t[s][0]===x?h:h+(e-r)},o.prototype.diff_prettyHtml=function(t){for(var e=[],n=/&/g,i=/\u003C/g,r=/>/g,h=/\\\\n/g,s=0;s\u003Ct.length;s++){var a=t[s][0],f=t[s][1].replace(n,'&amp;').replace(i,'&lt;').replace(r,'&gt;').replace(h,'&para;\u003Cbr>');switch(a){case 1:e[s]='\u003Cins style=\\\"background:#e6ffe6;\\\">'+f+'\u003C/ins>';break;case x:e[s]='\u003Cdel style=\\\"background:#ffe6e6;\\\">'+f+'\u003C/del>';break;case 0:e[s]='\u003Cspan>'+f+'\u003C/span>'}}return e.join('')},o.prototype.diff_text1=function(t){for(var e=[],n=0;n\u003Ct.length;n++)1!==t[n][0]&&(e[n]=t[n][1]);return e.join('')},o.prototype.diff_text2=function(t){for(var e=[],n=0;n\u003Ct.length;n++)t[n][0]!==x&&(e[n]=t[n][1]);return e.join('')},o.prototype.diff_levenshtein=function(t){for(var e=0,n=0,i=0,r=0;r\u003Ct.length;r++){var h=t[r][1];switch(t[r][0]){case 1:n+=h.length;break;case x:i+=h.length;break;case 0:e+=Math.max(n,i),i=n=0}}return e+Math.max(n,i)},o.prototype.diff_toDelta=function(t){for(var e=[],n=0;n\u003Ct.length;n++)switch(t[n][0]){case 1:e[n]='+'+encodeURI(t[n][1]);break;case x:e[n]='-'+t[n][1].length;break;case 0:e[n]='='+t[n][1].length}return e.join('\\\\t').replace(/%20/g,' ')},o.prototype.diff_fromDelta=function(t,e){for(var n=[],i=0,r=0,h=e.split(/\\\\t/g),s=0;s\u003Ch.length;s++){var a=h[s].substring(1);switch(h[s].charAt(0)){case'+':try{n[i++]=[1,decodeURI(a)]}catch(t){throw Error('Illegal escape in diff_fromDelta: '+a)}break;case'-':case'=':var f=parseInt(a,10);if(isNaN(f)||f\u003C0)throw Error('Invalid number in diff_fromDelta: '+a);a=t.substring(r,r+=f),'='==h[s].charAt(0)?n[i++]=[0,a]:n[i++]=[x,a];break;default:if(h[s])throw Error('Invalid diff operation in diff_fromDelta: '+h[s])}}if(r!=t.length)throw Error('Delta length ('+r+') does not equal source text length ('+t.length+').');return n},o.prototype.match_main=function(t,e,n){if(null==t||null==e||null==n)throw Error('Null input. (match_main)');return n=Math.max(0,Math.min(n,t.length)),t==e?0:t.length?t.substring(n,n+e.length)==e?n:this.match_bitap_(t,e,n):-1},o.prototype.match_bitap_=function(t,n,i){function e(t,e){t/=n.length,e=Math.abs(i-e);return s.Match_Distance?t+e/s.Match_Distance:e?1:t}if(n.length>this.Match_MaxBits)throw Error('Pattern too long for this browser.');for(var r,h=this.match_alphabet_(n),s=this,a=this.Match_Threshold,f=(-1!=(l=t.indexOf(n,i))&&(a=Math.min(e(0,l),a),-1!=(l=t.lastIndexOf(n,i+n.length)))&&(a=Math.min(e(0,l),a)),1\u003C\u003Cn.length-1),l=-1,g=n.length+t.length,o=0;o\u003Cn.length;o++){for(u=0,c=g;u\u003Cc;)e(o,i+c)\u003C=a?u=c:g=c,c=Math.floor((g-u)/2+u);var c,g=c,u=Math.max(1,i-c+1),p=Math.min(i+c,t.length)+n.length;for((c=Array(p+2))[p+1]=(1\u003C\u003Co)-1;u\u003C=p;p--){var d=h[t.charAt(p-1)];if(c[p]=0===o?(c[p+1]\u003C\u003C1|1)&d:(c[p+1]\u003C\u003C1|1)&d|(r[p+1]|r[p])\u003C\u003C1|1|r[p+1],c[p]&f&&(d=e(o,p-1))\u003C=a){if(a=d,!(i\u003C(l=p-1)))break;u=Math.max(1,2*i-l)}}if(e(o+1,i)>a)break;r=c}return l},o.prototype.match_alphabet_=function(t){for(var e={},n=0;n\u003Ct.length;n++)e[t.charAt(n)]=0;for(n=0;n\u003Ct.length;n++)e[t.charAt(n)]|=1\u003C\u003Ct.length-n-1;return e},o.prototype.patch_addContext_=function(t,e){if(0!=e.length){for(var n=e.substring(t.start2,t.start2+t.length1),i=0;e.indexOf(n)!=e.lastIndexOf(n)&&n.length\u003Cthis.Match_MaxBits-this.Patch_Margin-this.Patch_Margin;)i+=this.Patch_Margin,n=e.substring(t.start2-i,t.start2+t.length1+i);i+=this.Patch_Margin,(n=e.substring(t.start2-i,t.start2))&&t.diffs.unshift([0,n]),(i=e.substring(t.start2+t.length1,t.start2+t.length1+i))&&t.diffs.push([0,i]),t.start1-=n.length,t.start2-=n.length,t.length1+=n.length+i.length,t.length2+=n.length+i.length}},o.prototype.patch_make=function(t,e,n){if('string'==typeof t&&'string'==typeof e&&void 0===n){var i=t;2\u003C(e=this.diff_main(i,e,!0)).length&&(this.diff_cleanupSemantic(e),this.diff_cleanupEfficiency(e))}else if(t&&'object'==typeof t&&void 0===e&&void 0===n)e=t,i=this.diff_text1(e);else if('string'==typeof t&&e&&'object'==typeof e&&void 0===n)i=t;else{if('string'!=typeof t||'string'!=typeof e||!n||'object'!=typeof n)throw Error('Unknown call format to patch_make.');i=t,e=n}if(0===e.length)return[];n=[],t=new o.patch_obj;for(var r=0,h=0,s=0,a=i,f=0;f\u003Ce.length;f++){var l=e[f][0],g=e[f][1];switch(r||0===l||(t.start1=h,t.start2=s),l){case 1:t.diffs[r++]=e[f],t.length2+=g.length,i=i.substring(0,s)+g+i.substring(s);break;case x:t.length1+=g.length,t.diffs[r++]=e[f],i=i.substring(0,s)+i.substring(s+g.length);break;case 0:g.length\u003C=2*this.Patch_Margin&&r&&e.length!=f+1?(t.diffs[r++]=e[f],t.length1+=g.length,t.length2+=g.length):g.length>=2*this.Patch_Margin&&r&&(this.patch_addContext_(t,a),n.push(t),t=new o.patch_obj,r=0,a=i,h=s)}1!==l&&(h+=g.length),l!==x&&(s+=g.length)}return r&&(this.patch_addContext_(t,a),n.push(t)),n},o.prototype.patch_deepCopy=function(t){for(var e=[],n=0;n\u003Ct.length;n++){var i=t[n],r=new o.patch_obj;r.diffs=[];for(var h=0;h\u003Ci.diffs.length;h++)r.diffs[h]=i.diffs[h].slice();r.start1=i.start1,r.start2=i.start2,r.length1=i.length1,r.length2=i.length2,e[n]=r}return e},o.prototype.patch_apply=function(t,e){if(0==t.length)return[e,[]];t=this.patch_deepCopy(t);var n=this.patch_addPadding(t);e=n+e+n,this.patch_splitMax(t);for(var i=0,r=[],h=0;h\u003Ct.length;h++){var s,a,f=t[h].start2+i,l=this.diff_text1(t[h].diffs),g=-1;if(l.length>this.Match_MaxBits?-1!=(s=this.match_main(e,l.substring(0,this.Match_MaxBits),f))&&(-1==(g=this.match_main(e,l.substring(l.length-this.Match_MaxBits),f+l.length-this.Match_MaxBits))||g\u003C=s)&&(s=-1):s=this.match_main(e,l,f),-1==s)r[h]=!1,i-=t[h].length2-t[h].length1;else if(r[h]=!0,i=s-f,l==(f=-1==g?e.substring(s,s+l.length):e.substring(s,g+this.Match_MaxBits)))e=e.substring(0,s)+this.diff_text2(t[h].diffs)+e.substring(s+l.length);else if(f=this.diff_main(l,f,!1),l.length>this.Match_MaxBits&&this.diff_levenshtein(f)/l.length>this.Patch_DeleteThreshold)r[h]=!1;else for(this.diff_cleanupSemanticLossless(f),g=l=0;g\u003Ct[h].diffs.length;g++){var o=t[h].diffs[g];0!==o[0]&&(a=this.diff_xIndex(f,l)),1===o[0]?e=e.substring(0,s+a)+o[1]+e.substring(s+a):o[0]===x&&(e=e.substring(0,s+a)+e.substring(s+this.diff_xIndex(f,l+o[1].length))),o[0]!==x&&(l+=o[1].length)}}return[e=e.substring(n.length,e.length-n.length),r]},o.prototype.patch_addPadding=function(t){for(var e=this.Patch_Margin,n='',i=1;i\u003C=e;i++)n+=String.fromCharCode(i);for(i=0;i\u003Ct.length;i++)t[i].start1+=e,t[i].start2+=e;var r,h=(i=t[0]).diffs;return 0==h.length||0!=h[0][0]?(h.unshift([0,n]),i.start1-=e,i.start2-=e,i.length1+=e,i.length2+=e):e>h[0][1].length&&(r=e-h[0][1].length,h[0][1]=n.substring(h[0][1].length)+h[0][1],i.start1-=r,i.start2-=r,i.length1+=r,i.length2+=r),0==(h=(i=t[t.length-1]).diffs).length||0!=h[h.length-1][0]?(h.push([0,n]),i.length1+=e,i.length2+=e):e>h[h.length-1][1].length&&(r=e-h[h.length-1][1].length,h[h.length-1][1]+=n.substring(0,r),i.length1+=r,i.length2+=r),n},o.prototype.patch_splitMax=function(t){for(var e=this.Match_MaxBits,n=0;n\u003Ct.length;n++)if(!(t[n].length1\u003C=e)){var i=t[n];t.splice(n--,1);for(var r=i.start1,h=i.start2,s='';0!==i.diffs.length;){var a=new o.patch_obj,f=!0;for(a.start1=r-s.length,a.start2=h-s.length,''!==s&&(a.length1=a.length2=s.length,a.diffs.push([0,s]));0!==i.diffs.length&&a.length1\u003Ce-this.Patch_Margin;){var s=i.diffs[0][0],l=i.diffs[0][1];1===s?(a.length2+=l.length,h+=l.length,a.diffs.push(i.diffs.shift()),f=!1):s===x&&1==a.diffs.length&&0==a.diffs[0][0]&&l.length>2*e?(a.length1+=l.length,r+=l.length,f=!1,a.diffs.push([s,l]),i.diffs.shift()):(l=l.substring(0,e-a.length1-this.Patch_Margin),a.length1+=l.length,r+=l.length,0===s?(a.length2+=l.length,h+=l.length):f=!1,a.diffs.push([s,l]),l==i.diffs[0][1]?i.diffs.shift():i.diffs[0][1]=i.diffs[0][1].substring(l.length))}s=(s=this.diff_text2(a.diffs)).substring(s.length-this.Patch_Margin),''!==(l=this.diff_text1(i.diffs).substring(0,this.Patch_Margin))&&(a.length1+=l.length,a.length2+=l.length,0!==a.diffs.length&&0===a.diffs[a.diffs.length-1][0]?a.diffs[a.diffs.length-1][1]+=l:a.diffs.push([0,l])),f||t.splice(++n,0,a)}}},o.prototype.patch_toText=function(t){for(var e=[],n=0;n\u003Ct.length;n++)e[n]=t[n];return e.join('')},o.prototype.patch_fromText=function(t){var e=[];if(t){t=t.split('\\\\n');for(var n=0,i=/^@@ -(\\\\d+),?(\\\\d*) \\\\+(\\\\d+),?(\\\\d*) @@$/;n\u003Ct.length;){var r=t[n].match(i);if(!r)throw Error('Invalid patch string: '+t[n]);var h=new o.patch_obj;for(e.push(h),h.start1=parseInt(r[1],10),''===r[2]?(h.start1--,h.length1=1):'0'==r[2]?h.length1=0:(h.start1--,h.length1=parseInt(r[2],10)),h.start2=parseInt(r[3],10),''===r[4]?(h.start2--,h.length2=1):'0'==r[4]?h.length2=0:(h.start2--,h.length2=parseInt(r[4],10)),n++;n\u003Ct.length;){r=t[n].charAt(0);try{var s=decodeURI(t[n].substring(1))}catch(t){throw Error('Illegal escape in patch_fromText: '+s)}if('-'==r)h.diffs.push([x,s]);else if('+'==r)h.diffs.push([1,s]);else if(' '==r)h.diffs.push([0,s]);else{if('@'==r)break;if(''!==r)throw Error('Invalid patch mode \\\"'+r+'\\\" in: '+s)}n++}}}return e},(o.patch_obj=function(){this.diffs=[],this.start2=this.start1=null,this.length2=this.length1=0}).prototype.toString=function(){for(var t,e=['@@ -'+(0===this.length1?this.start1+',0':1==this.length1?this.start1+1:this.start1+1+','+this.length1)+' +'+(0===this.length2?this.start2+',0':1==this.length2?this.start2+1:this.start2+1+','+this.length2)+' @@\\\\n'],n=0;n\u003Cthis.diffs.length;n++){switch(this.diffs[n][0]){case 1:t='+';break;case x:t='-';break;case 0:t=' '}e[n+1]=t+encodeURI(this.diffs[n][1])+'\\\\n'}return e.join('').replace(/%20/g,' ')},this.diff_match_patch=o,this.DIFF_DELETE=x,this.DIFF_INSERT=1,this.DIFF_EQUAL=0}.call(exports);\",\"type\":\"application/javascript\",\"module-type\":\"library\"},\"$:/core/modules/utils/dom/animations/slide.js\":{\"text\":\"!function(){'use strict';exports.slide={open:function(t,o){var i=(o=o||{}).duration||$tw.utils.getAnimationDuration(),n=window.getComputedStyle(t),a=parseInt(n.marginBottom,10),e=parseInt(n.marginTop,10),p=parseInt(n.paddingBottom,10),n=parseInt(n.paddingTop,10),s=t.offsetHeight;setTimeout(function(){$tw.utils.setStyle(t,[{transition:'none'},{marginBottom:''},{marginTop:''},{paddingBottom:''},{paddingTop:''},{height:'auto'},{opacity:''}]),o.callback&&o.callback()},i),$tw.utils.setStyle(t,[{transition:'none'},{marginTop:'0px'},{marginBottom:'0px'},{paddingTop:'0px'},{paddingBottom:'0px'},{height:'0px'},{opacity:'0'}]),$tw.utils.forceLayout(t),$tw.utils.setStyle(t,[{transition:'margin-top '+i+'ms ease-in-out, margin-bottom '+i+'ms ease-in-out, padding-top '+i+'ms ease-in-out, padding-bottom '+i+'ms ease-in-out, height '+i+'ms ease-in-out, opacity '+i+'ms ease-in-out'},{marginBottom:a+'px'},{marginTop:e+'px'},{paddingBottom:p+'px'},{paddingTop:n+'px'},{height:s+'px'},{opacity:'1'}])},close:function(t,o){var i=(o=o||{}).duration||$tw.utils.getAnimationDuration(),n=t.offsetHeight;setTimeout(function(){$tw.utils.setStyle(t,[{transition:'none'},{marginBottom:''},{marginTop:''},{paddingBottom:''},{paddingTop:''},{height:'auto'},{opacity:''}]),o.callback&&o.callback()},i),$tw.utils.setStyle(t,[{height:n+'px'},{opacity:'1'}]),$tw.utils.forceLayout(t),$tw.utils.setStyle(t,[{transition:'margin-top '+i+'ms ease-in-out, margin-bottom '+i+'ms ease-in-out, padding-top '+i+'ms ease-in-out, padding-bottom '+i+'ms ease-in-out, height '+i+'ms ease-in-out, opacity '+i+'ms ease-in-out'},{marginTop:'0px'},{marginBottom:'0px'},{paddingTop:'0px'},{paddingBottom:'0px'},{height:'0px'},{opacity:'0'}])}}}();\",\"type\":\"application/javascript\",\"module-type\":\"animation\"},\"$:/core/modules/utils/dom/animator.js\":{\"text\":\"!function(){'use strict';function t(){this.animations={},$tw.modules.applyMethods('animation',this.animations)}t.prototype.perform=function(n,t,i){var o;i=i||{},$tw.utils.each(this.animations,function(t,i){$tw.utils.hop(t,n)&&(o=t[n])}),(o=o||function(t,i){i.callback&&i.callback()})(t,i)},exports.Animator=t}();\",\"type\":\"application/javascript\",\"module-type\":\"utils\"},\"$:/core/modules/utils/dom/browser.js\":{\"text\":\"!function(){'use strict';exports.setStyle=function(e,n){if(1===e.nodeType)for(var t=0;t\u003Cn.length;t++)for(var r in n[t])e.style[$tw.utils.convertStyleNameToPropertyName(r)]=n[t][r]};var l={},i=(exports.convertStyleNameToPropertyName=function(e){if(l[e])return l[e];var n=$tw.utils.unHyphenateCss(e);if($tw.browser&&void 0===document.body.style[n])for(var t=['O','MS','Moz','webkit'],r=0;r\u003Ct.length;r++){var i=t[r]+n.substr(0,1).toUpperCase()+n.substr(1);if(void 0!==document.body.style[i]){n=i;break}}return l[e]=n},exports.convertPropertyNameToStyleName=function(e){e=$tw.utils.hyphenateCss(e);return 0===e.indexOf('webkit')?e='-'+e:0===e.indexOf('-m-s')&&(e='-ms'+e.substr(4)),e},exports.roundTripPropertyName=function(e){return $tw.utils.convertPropertyNameToStyleName($tw.utils.convertStyleNameToPropertyName(e))},{}),o={transitionEnd:{correspondingCssProperty:'transition',mappings:{transition:'transitionend',OTransition:'oTransitionEnd',MSTransition:'msTransitionEnd',MozTransition:'transitionend',webkitTransition:'webkitTransitionEnd'}},animationEnd:{correspondingCssProperty:'animation',mappings:{animation:'animationend',OAnimation:'oAnimationEnd',MSAnimation:'msAnimationEnd',MozAnimation:'animationend',webkitAnimation:'webkitAnimationEnd'}}};exports.convertEventName=function(e){var n,t,r;return i[e]||((t=o[n=e])&&(r=$tw.utils.convertStyleNameToPropertyName(t.correspondingCssProperty),t.mappings[r])&&(n=t.mappings[r]),i[e]=n)},exports.getFullScreenApis=function(){var e=document,n=e.body,n={_requestFullscreen:void 0!==n.webkitRequestFullscreen?'webkitRequestFullscreen':void 0!==n.mozRequestFullScreen?'mozRequestFullScreen':void 0!==n.msRequestFullscreen?'msRequestFullscreen':void 0!==n.requestFullscreen?'requestFullscreen':'',_exitFullscreen:void 0!==e.webkitExitFullscreen?'webkitExitFullscreen':void 0!==e.mozCancelFullScreen?'mozCancelFullScreen':void 0!==e.msExitFullscreen?'msExitFullscreen':void 0!==e.exitFullscreen?'exitFullscreen':'',_fullscreenElement:void 0!==e.webkitFullscreenElement?'webkitFullscreenElement':void 0!==e.mozFullScreenElement?'mozFullScreenElement':void 0!==e.msFullscreenElement?'msFullscreenElement':void 0!==e.fullscreenElement?'fullscreenElement':'',_fullscreenChange:void 0!==e.webkitFullscreenElement?'webkitfullscreenchange':void 0!==e.mozFullScreenElement?'mozfullscreenchange':void 0!==e.msFullscreenElement?'MSFullscreenChange':void 0!==e.fullscreenElement?'fullscreenchange':''};return n._requestFullscreen&&n._exitFullscreen&&n._fullscreenElement&&n._fullscreenChange?n:null}}();\",\"type\":\"application/javascript\",\"module-type\":\"utils\"},\"$:/core/modules/utils/dom/csscolorparser.js\":{\"text\":\"var s={transparent:[0,0,0,0],aliceblue:[240,248,255,1],antiquewhite:[250,235,215,1],aqua:[0,255,255,1],aquamarine:[127,255,212,1],azure:[240,255,255,1],beige:[245,245,220,1],bisque:[255,228,196,1],black:[0,0,0,1],blanchedalmond:[255,235,205,1],blue:[0,0,255,1],blueviolet:[138,43,226,1],brown:[165,42,42,1],burlywood:[222,184,135,1],cadetblue:[95,158,160,1],chartreuse:[127,255,0,1],chocolate:[210,105,30,1],coral:[255,127,80,1],cornflowerblue:[100,149,237,1],cornsilk:[255,248,220,1],crimson:[220,20,60,1],cyan:[0,255,255,1],darkblue:[0,0,139,1],darkcyan:[0,139,139,1],darkgoldenrod:[184,134,11,1],darkgray:[169,169,169,1],darkgreen:[0,100,0,1],darkgrey:[169,169,169,1],darkkhaki:[189,183,107,1],darkmagenta:[139,0,139,1],darkolivegreen:[85,107,47,1],darkorange:[255,140,0,1],darkorchid:[153,50,204,1],darkred:[139,0,0,1],darksalmon:[233,150,122,1],darkseagreen:[143,188,143,1],darkslateblue:[72,61,139,1],darkslategray:[47,79,79,1],darkslategrey:[47,79,79,1],darkturquoise:[0,206,209,1],darkviolet:[148,0,211,1],deeppink:[255,20,147,1],deepskyblue:[0,191,255,1],dimgray:[105,105,105,1],dimgrey:[105,105,105,1],dodgerblue:[30,144,255,1],firebrick:[178,34,34,1],floralwhite:[255,250,240,1],forestgreen:[34,139,34,1],fuchsia:[255,0,255,1],gainsboro:[220,220,220,1],ghostwhite:[248,248,255,1],gold:[255,215,0,1],goldenrod:[218,165,32,1],gray:[128,128,128,1],green:[0,128,0,1],greenyellow:[173,255,47,1],grey:[128,128,128,1],honeydew:[240,255,240,1],hotpink:[255,105,180,1],indianred:[205,92,92,1],indigo:[75,0,130,1],ivory:[255,255,240,1],khaki:[240,230,140,1],lavender:[230,230,250,1],lavenderblush:[255,240,245,1],lawngreen:[124,252,0,1],lemonchiffon:[255,250,205,1],lightblue:[173,216,230,1],lightcoral:[240,128,128,1],lightcyan:[224,255,255,1],lightgoldenrodyellow:[250,250,210,1],lightgray:[211,211,211,1],lightgreen:[144,238,144,1],lightgrey:[211,211,211,1],lightpink:[255,182,193,1],lightsalmon:[255,160,122,1],lightseagreen:[32,178,170,1],lightskyblue:[135,206,250,1],lightslategray:[119,136,153,1],lightslategrey:[119,136,153,1],lightsteelblue:[176,196,222,1],lightyellow:[255,255,224,1],lime:[0,255,0,1],limegreen:[50,205,50,1],linen:[250,240,230,1],magenta:[255,0,255,1],maroon:[128,0,0,1],mediumaquamarine:[102,205,170,1],mediumblue:[0,0,205,1],mediumorchid:[186,85,211,1],mediumpurple:[147,112,219,1],mediumseagreen:[60,179,113,1],mediumslateblue:[123,104,238,1],mediumspringgreen:[0,250,154,1],mediumturquoise:[72,209,204,1],mediumvioletred:[199,21,133,1],midnightblue:[25,25,112,1],mintcream:[245,255,250,1],mistyrose:[255,228,225,1],moccasin:[255,228,181,1],navajowhite:[255,222,173,1],navy:[0,0,128,1],oldlace:[253,245,230,1],olive:[128,128,0,1],olivedrab:[107,142,35,1],orange:[255,165,0,1],orangered:[255,69,0,1],orchid:[218,112,214,1],palegoldenrod:[238,232,170,1],palegreen:[152,251,152,1],paleturquoise:[175,238,238,1],palevioletred:[219,112,147,1],papayawhip:[255,239,213,1],peachpuff:[255,218,185,1],peru:[205,133,63,1],pink:[255,192,203,1],plum:[221,160,221,1],powderblue:[176,224,230,1],purple:[128,0,128,1],red:[255,0,0,1],rosybrown:[188,143,143,1],royalblue:[65,105,225,1],saddlebrown:[139,69,19,1],salmon:[250,128,114,1],sandybrown:[244,164,96,1],seagreen:[46,139,87,1],seashell:[255,245,238,1],sienna:[160,82,45,1],silver:[192,192,192,1],skyblue:[135,206,235,1],slateblue:[106,90,205,1],slategray:[112,128,144,1],slategrey:[112,128,144,1],snow:[255,250,250,1],springgreen:[0,255,127,1],steelblue:[70,130,180,1],tan:[210,180,140,1],teal:[0,128,128,1],thistle:[216,191,216,1],tomato:[255,99,71,1],turquoise:[64,224,208,1],violet:[238,130,238,1],wheat:[245,222,179,1],white:[255,255,255,1],whitesmoke:[245,245,245,1],yellow:[255,255,0,1],yellowgreen:[154,205,50,1]};function g(e){return(e=Math.round(e))\u003C0?0:255\u003Ce?255:e}function r(e){return e\u003C0?0:1\u003Ce?1:e}function d(e){return'%'===e[e.length-1]?g(parseFloat(e)/100*255):g(parseInt(e))}function h(e){return'%'===e[e.length-1]?r(parseFloat(e)/100):r(parseFloat(e))}function c(e,r,l){return l\u003C0?l+=1:1\u003Cl&&--l,6*l\u003C1?e+(r-e)*l*6:2*l\u003C1?r:3*l\u003C2?e+(r-e)*(2/3-l)*6:e}try{exports.parseCSSColor=function(e){if((e=e.replace(/ /g,'').toLowerCase())in s)return s[e].slice();if('#'===e[0])return 4===e.length?0\u003C=(r=parseInt(e.substr(1),16))&&r\u003C=4095?[(3840&r)>>4|(3840&r)>>8,240&r|(240&r)>>4,15&r|(15&r)\u003C\u003C4,1]:null:7===e.length&&0\u003C=(r=parseInt(e.substr(1),16))&&r\u003C=16777215?[(16711680&r)>>16,(65280&r)>>8,255&r,1]:null;var r=e.indexOf('('),l=e.indexOf(')');if(-1!==r&&l+1===e.length){var a,n,t,i=e.substr(0,r),o=e.substr(r+1,l-(r+1)).split(','),u=1;switch(i){case'rgba':if(4!==o.length)return null;u=h(o.pop());case'rgb':return 3!==o.length?null:[d(o[0]),d(o[1]),d(o[2]),u];case'hsla':if(4!==o.length)return null;u=h(o.pop());case'hsl':return 3!==o.length?null:(a=(parseFloat(o[0])%360+360)%360/360,t=h(o[1]),[g(255*c(t=2*(n=h(o[2]))-(n=n\u003C=.5?n*(t+1):n+t-n*t),n,a+1/3)),g(255*c(t,n,a)),g(255*c(t,n,a-1/3)),u]);default:return null}}return null}}catch(e){}\",\"type\":\"application/javascript\",\"module-type\":\"utils\"},\"$:/core/modules/utils/dom.js\":{\"text\":\"!function(){'use strict';var l=require('$:/core/modules/utils/dom/popup.js');exports.domContains=function(t,e){return t.contains?t!==e&&t.contains(e):!!(16&t.compareDocumentPosition(e))},exports.domMatchesSelector=function(t,e){return t.matches?t.matches(e):t.msMatchesSelector(e)},exports.removeChildren=function(t){for(;t.hasChildNodes();)t.removeChild(t.firstChild)},exports.hasClass=function(t,e){return t&&t.hasAttribute&&t.hasAttribute('class')&&-1!==t.getAttribute('class').split(' ').indexOf(e)},exports.addClass=function(t,e){var o=(t.getAttribute('class')||'').split(' ');-1===o.indexOf(e)&&(o.push(e),t.setAttribute('class',o.join(' ')))},exports.removeClass=function(t,e){var o=(t.getAttribute('class')||'').split(' '),e=o.indexOf(e);-1!==e&&(o.splice(e,1),t.setAttribute('class',o.join(' ')))},exports.toggleClass=function(t,e,o){(o=void 0===o?!exports.hasClass(t,e):o)?exports.addClass(t,e):exports.removeClass(t,e)},exports.getScrollContainer=function(t){for(var e=t.ownerDocument;t.parentNode;)if((t=t.parentNode).scrollTop)return t;return e.body},exports.getScrollPosition=function(t){t=t||window;return'scrollX'in t?{x:t.scrollX,y:t.scrollY}:{x:t.document.documentElement.scrollLeft,y:t.document.documentElement.scrollTop}},exports.resizeTextAreaToFit=function(t,e){var o=$tw.utils.getScrollContainer(t),s=o.scrollTop,e=(t.style.height=e,t.offsetHeight||parseInt(e,10)),e=(t.style.height='auto',Math.max(t.scrollHeight+t.offsetHeight-t.clientHeight,e));return e!==t.offsetHeight&&(t.style.height=e+'px',$tw.utils.forceLayout(t),o.scrollTop=s),e},exports.getBoundingPageRect=function(t){var e=$tw.utils.getScrollPosition(t.ownerDocument.defaultView),t=t.getBoundingClientRect();return{left:t.left+e.x,width:t.width,right:t.right+e.x,top:t.top+e.y,height:t.height,bottom:t.bottom+e.y}},exports.savePassword=function(t,e){var o=!1;try{window.localStorage.setItem('tw5-password-'+t,e),o=!0}catch(t){}o||($tw.savedPasswords=$tw.savedPasswords||Object.create(null),$tw.savedPasswords[t]=e)},exports.getPassword=function(t){var e;try{e=window.localStorage.getItem('tw5-password-'+t)}catch(t){}return void 0!==e?e:($tw.savedPasswords||Object.create(null))[t]||''},exports.forceLayout=function(t){t.offsetWidth},exports.pulseElement=function(o){o.addEventListener($tw.browser.animationEnd,function t(e){o.removeEventListener($tw.browser.animationEnd,t,!1),$tw.utils.removeClass(o,'pulse')},!1),$tw.utils.removeClass(o,'pulse'),$tw.utils.forceLayout(o),$tw.utils.addClass(o,'pulse')},exports.addEventListeners=function(o,t){$tw.utils.each(t,function(e){var t;e.handlerFunction?t=e.handlerFunction:e.handlerObject&&(t=e.handlerMethod?function(t){e.handlerObject[e.handlerMethod].call(e.handlerObject,t)}:e.handlerObject),o.addEventListener(e.name,t,!1)})},exports.getComputedStyles=function(t){for(var e,o=window.getComputedStyle(t,null),s=[],n=0;n\u003Co.length;n++)e=o[n],s.push(e+': '+o.getPropertyValue(e)+';');return s},exports.setStyles=function(t,e){t.style.cssText=e.join('')},exports.copyStyles=function(t,e){$tw.utils.setStyles(e,$tw.utils.getComputedStyles(t))},exports.copyToClipboard=function(t,e){e=e||{};var o=document.createElement('textarea'),t=(o.style.position='fixed',o.style.top=0,o.style.left=0,o.style.fontSize='12pt',o.style.width='2em',o.style.height='2em',o.style.padding=0,o.style.border='none',o.style.outline='none',o.style.boxShadow='none',o.style.background='transparent',o.value=t,document.body.appendChild(o),o.select(),o.setSelectionRange(0,t.length),!1);try{t=document.execCommand('copy')}catch(t){}e.doNotNotify||$tw.notifier.display(t?'$:/language/Notifications/CopiedToClipboard/Succeeded':'$:/language/Notifications/CopiedToClipboard/Failed'),document.body.removeChild(o)},exports.getLocationPath=function(){return window.location.toString().split('#')[0]},exports.collectDOMVariables=function(t,e,o){var s={};if(t&&($tw.utils.each(t.attributes,function(t){s['dom-'+t.name]=t.value.toString()}),t.offsetLeft)){for(var n={left:t.offsetLeft,top:t.offsetTop,width:t.offsetWidth,height:t.offsetHeight},i=(s['tv-popup-coords']=l.buildCoordinates(l.coordinatePrefix.csOffsetParent,n),$tw.utils.extend({},n)),r=t.offsetParent;r;r=r.offsetParent)i.left+=r.offsetLeft,i.top+=r.offsetTop;s['tv-popup-abs-coords']=l.buildCoordinates(l.coordinatePrefix.csAbsolute,i),s['tv-selectednode-posx']=t.offsetLeft.toString(),s['tv-selectednode-posy']=t.offsetTop.toString(),s['tv-selectednode-width']=t.offsetWidth.toString(),s['tv-selectednode-height']=t.offsetHeight.toString()}return e&&e.offsetWidth&&(s['tv-widgetnode-width']=e.offsetWidth.toString(),s['tv-widgetnode-height']=e.offsetHeight.toString()),o&&o.clientX&&o.clientY&&(t&&(n=t.getBoundingClientRect(),s['event-fromselected-posx']=(o.clientX-n.left).toString(),s['event-fromselected-posy']=(o.clientY-n.top).toString()),e&&(t=e.getBoundingClientRect(),s['event-fromcatcher-posx']=(o.clientX-t.left).toString(),s['event-fromcatcher-posy']=(o.clientY-t.top).toString()),s['event-fromviewport-posx']=o.clientX.toString(),s['event-fromviewport-posy']=o.clientY.toString()),s}}();\",\"type\":\"application/javascript\",\"module-type\":\"utils\"},\"$:/core/modules/utils/dom/dragndrop.js\":{\"text\":\"!function(){'use strict';exports.makeDraggable=function(n){var l,o=n.dragImageType||'dom',s=n.domNode;n.selector||'a'===(s.tagName||'').toLowerCase()||s.setAttribute('draggable','true'),$tw.utils.addEventListeners(s,[{name:'dragstart',handlerFunction:function(t){var e,r,i,a,d;return void 0!==t.dataTransfer&&(e=n.dragTiddlerFn&&n.dragTiddlerFn(),r=n.dragFilterFn&&n.dragFilterFn(),e=e?[e]:[],a=n.startActions,r&&e.push.apply(e,n.widget.wiki.filterTiddlers(r,n.widget)),r=$tw.utils.stringifyList(e),0\u003Ce.length&&(n.selector&&$tw.utils.domMatchesSelector(t.target,n.selector)||t.target===s))&&($tw.dragInProgress=s,$tw.utils.addClass(s,'tc-dragging'),void 0!==a&&((i=$tw.utils.collectDOMVariables(s,null,t)).modifier=$tw.keyboardManager.getEventModifierKeyDescriptor(t),i.actionTiddler=r,n.widget.invokeActionString(a,n.widget,t,i)),(l=n.widget.document.createElement('div')).className='tc-tiddler-dragger',(a=n.widget.document.createElement('div')).className='tc-tiddler-dragger-inner',a.appendChild(n.widget.document.createTextNode(1===e.length?e[0]:e.length+' tiddlers')),l.appendChild(a),n.widget.document.body.appendChild(l),(i=t.dataTransfer).effectAllowed='all',i.setDragImage&&('pill'===o?i.setDragImage(l.firstChild,-16,-16):'blank'===o?(l.removeChild(l.firstChild),i.setDragImage(l,0,0)):(a=s.getBoundingClientRect(),i.setDragImage(s,t.clientX-a.left,t.clientY-a.top))),i.clearData&&i.clearData(),d=[],d=1\u003Ce.length?(e.forEach(function(t){d.push(n.widget.wiki.getTiddlerAsJson(t))}),'['+d.join(',')+']'):n.widget.wiki.getTiddlerAsJson(e[0]),$tw.browser.isIE?i.setData('URL','data:text/vnd.tiddler,'+encodeURIComponent(d)):(i.setData('text/vnd.tiddler',d),i.setData('text/plain',r),i.setData('text/x-moz-url','data:text/vnd.tiddler,'+encodeURIComponent(d))),i.setData('Text',r),t.stopPropagation()),!1}},{name:'dragend',handlerFunction:function(t){var e,r,i;return(n.selector&&$tw.utils.domMatchesSelector(t.target,n.selector)||t.target===s)&&(r=n.dragTiddlerFn&&n.dragTiddlerFn(),i=n.dragFilterFn&&n.dragFilterFn(),r=r?[r]:[],e=n.endActions,i&&r.push.apply(r,n.widget.wiki.filterTiddlers(i,n.widget)),i=$tw.utils.stringifyList(r),$tw.dragInProgress=null,void 0!==e&&((r=$tw.utils.collectDOMVariables(s,null,t)).modifier=$tw.keyboardManager.getEventModifierKeyDescriptor(t),r.actionTiddler=i,n.widget.invokeActionString(e,n.widget,t,r)),$tw.utils.removeClass(s,'tc-dragging'),l)&&(l.parentNode.removeChild(l),l=null),!1}}])};var l=[{type:'text/vnd.tiddler',IECompatible:!(exports.importDataTransfer=function(t,e,r){if($tw.log.IMPORT){console.log('Available data types:');for(var i=0;i\u003Ct.types.length;i++)console.log('type',t.types[i],t.getData(t.types[i]))}for(var a=0;a\u003Cl.length;a++)if(!$tw.browser.isIE||l[a].IECompatible){var d=l[a],n=t.getData(d.type);if(''!==n&&null!==n)return $tw.log.IMPORT&&console.log('Importing data type \\\\''+d.type+'\\\\', data: \\\\''+n+'\\\\''),void r(d.toTiddlerFieldsArray(n,e))}}),toTiddlerFieldsArray:i},{type:'URL',IECompatible:!0,toTiddlerFieldsArray:function(t,e){var r=$tw.utils.decodeURIComponentSafe(t).match(/^data\\\\:text\\\\/vnd\\\\.tiddler,(.*)/i);return r?i(r[1],e):[{title:e,text:t}]}},{type:'text/x-moz-url',IECompatible:!1,toTiddlerFieldsArray:function(t,e){var r=$tw.utils.decodeURIComponentSafe(t).match(/^data\\\\:text\\\\/vnd\\\\.tiddler,(.*)/i);return r?i(r[1],e):[{title:e,text:t}]}},{type:'text/html',IECompatible:!1,toTiddlerFieldsArray:function(t,e){return[{title:e,text:t}]}},{type:'text/plain',IECompatible:!1,toTiddlerFieldsArray:function(t,e){return[{title:e,text:t}]}},{type:'Text',IECompatible:!0,toTiddlerFieldsArray:function(t,e){return[{title:e,text:t}]}},{type:'text/uri-list',IECompatible:!1,toTiddlerFieldsArray:function(t,e){return[{title:e,text:t}]}}];function i(t,e){t=$tw.utils.parseJSONSafe(t);return(t=$tw.utils.isArray(t)?t:[t]).forEach(function(t){t.title=t.title||e}),t}function e(t,e){if(t.dataTransfer.types)for(var r=0;r\u003Ct.dataTransfer.types.length;r++)if(t.dataTransfer.types[r]===e)return!0;return!1}exports.dragEventContainsFiles=function(t){return e(t,'Files')&&!e(t,'text/plain')},exports.dragEventContainsType=e}();\",\"type\":\"application/javascript\",\"module-type\":\"utils\"},\"$:/core/modules/utils/dom/http.js\":{\"text\":\"!function(){'use strict';exports.httpRequest=function(e){var n,t=e.type||'GET',a=e.url,r=e.headers||{accept:'application/json'},s=function(a){a=a.toLowerCase();var s=!1;return $tw.utils.each(r,function(t,e,n){e.toLowerCase()===a&&(s=!0)}),s},i=function(t){return r[t]||r[t.toLowerCase()]},o=e.returnProp||'responseText',u=new XMLHttpRequest,c='';e.data&&('string'==typeof e.data?c=e.data:(n=[],$tw.utils.each(e.data,function(t,e){n.push(e+'='+encodeURIComponent(t))}),'GET'===t||'HEAD'===t?a+='?'+n.join('&'):c=n.join('&'))),u.onreadystatechange=function(){4===this.readyState&&(200===this.status||201===this.status||204===this.status?e.callback(null,this[o],this):e.callback($tw.language.getString('Error/XMLHttpRequest')+': '+this.status,null,this))},u.open(t,a,!0),r&&$tw.utils.each(r,function(t,e,n){u.setRequestHeader(e,t)}),c&&!s('Content-Type')&&u.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=UTF-8'),s('X-Requested-With')||function(t,e){if(-1===['GET','HEAD','POST'].indexOf(t))return!1;for(var n in e)if(-1===['accept','accept-language','content-language','content-type'].indexOf(n.toLowerCase()))return!1;return!s('Content-Type')||-1!==['application/x-www-form-urlencoded','multipart/form-data','text/plain'].indexOf(i['Content-Type'])}(t,r)||u.setRequestHeader('X-Requested-With','TiddlyWiki');try{u.send(c)}catch(t){e.callback(t,null,this)}return u}}();\",\"type\":\"application/javascript\",\"module-type\":\"utils\"},\"$:/core/modules/utils/dom/keyboard.js\":{\"text\":\"!function(){'use strict';['parseKeyDescriptor','checkKeyDescriptor'].forEach(function(r){exports[r]=function(){return $tw.keyboardManager?$tw.keyboardManager[r].apply($tw.keyboardManager,Array.prototype.slice.call(arguments,0)):null}})}();\",\"type\":\"application/javascript\",\"module-type\":\"utils\"},\"$:/core/modules/utils/dom/modal.js\":{\"text\":\"!function(){'use strict';require('$:/core/modules/widgets/widget.js');function t(t){this.wiki=t,this.modalCount=0}var C=require('$:/core/modules/widgets/navigator.js');t.prototype.display=function(t,e){this.srcDocument=(!(e=e||{}).variables||'true'!==e.variables.rootwindow&&'yes'!==e.variables.rootwindow)&&e.event&&e.event.event&&e.event.event.target?e.event.event.target.ownerDocument:document,this.srcWindow=this.srcDocument.defaultView;var i,s,r,n,a,l,o,d,c,u,m,h,p,w,g,v=this,y=$tw.utils.getAnimationDuration(),f=this.wiki.getTiddler(t);f&&(s=$tw.utils.extend({currentTiddler:t,'tv-story-list':e.event&&e.event.widget?e.event.widget.getVariable('tv-story-list'):'','tv-history-list':e.event&&e.event.widget?e.event.widget.getVariable('tv-history-list'):''},e.variables),r=this.srcDocument.createElement('div'),n=this.srcDocument.createElement('div'),a=this.srcDocument.createElement('div'),l=this.srcDocument.createElement('div'),w=this.srcDocument.createElement('h3'),o=this.srcDocument.createElement('div'),d=this.srcDocument.createElement('a'),m=this.srcDocument.createElement('div'),c=this.srcDocument.createElement('span'),u=this.srcDocument.createElement('span'),this.modalCount++,this.adjustPageClass(),$tw.utils.addClass(r,'tc-modal-wrapper'),f.fields&&f.fields.class&&$tw.utils.addClass(r,f.fields.class),$tw.utils.addClass(n,'tc-modal-backdrop'),$tw.utils.addClass(a,'tc-modal'),$tw.utils.addClass(l,'tc-modal-header'),$tw.utils.addClass(o,'tc-modal-body'),$tw.utils.addClass(m,'tc-modal-footer'),r.appendChild(n),r.appendChild(a),l.appendChild(w),a.appendChild(l),a.appendChild(o),m.appendChild(c),m.appendChild(u),a.appendChild(m),m={type:'navigator',attributes:{story:{name:'story',type:'string',value:s['tv-story-list']},history:{name:'history',type:'string',value:s['tv-history-list']}},tag:'$navigator',isBlock:!0,children:[]},(m=new C.navigator(m,{wiki:this.wiki,document:this.srcDocument,parentWidget:$tw.rootWidget})).render(o,null),(h=this.wiki.makeTranscludeWidget(t,{field:'subtitle',mode:'inline',children:[{type:'text',attributes:{text:{type:'string',value:t}}}],parentWidget:m,document:this.srcDocument,variables:s,importPageMacros:!0})).render(w,null),(p=this.wiki.makeTranscludeWidget(t,{parentWidget:m,document:this.srcDocument,variables:s,importPageMacros:!0})).render(o,null),e.downloadLink&&(d.href=e.downloadLink,d.appendChild(this.srcDocument.createTextNode('Right-click to save changes')),o.appendChild(d)),f.fields&&f.fields.help&&((w=this.srcDocument.createElement('a')).setAttribute('href',f.fields.help),w.setAttribute('target','_blank'),w.setAttribute('rel','noopener noreferrer'),w.appendChild(this.srcDocument.createTextNode('Help')),c.appendChild(w),c.style.float='left'),(g=this.wiki.makeTranscludeWidget(t,{field:'footer',mode:'inline',children:[{type:'button',attributes:{message:{type:'string',value:'tm-close-tiddler'}},children:[{type:'text',attributes:{text:{type:'string',value:$tw.language.getString('Buttons/Close/Caption')}}}]}],parentWidget:m,document:this.srcDocument,variables:s,importPageMacros:!0})).render(u,null),i=function(t){h.refresh(t,l,null),p.refresh(t,o,null),g.refresh(t,u,null)},this.wiki.addEventListener('change',i),h.addEventListener('tm-close-tiddler',e=function(t){return v.wiki.removeEventListener('change',i),v.modalCount--,v.adjustPageClass(),$tw.utils.forceLayout(n),$tw.utils.forceLayout(a),$tw.utils.setStyle(n,[{opacity:'0'}]),$tw.utils.setStyle(a,[{transform:'translateY('+v.srcWindow.innerHeight+'px)'}]),v.srcWindow.setTimeout(function(){r.parentNode&&v.srcDocument.body.removeChild(r)},y),!1},!1),p.addEventListener('tm-close-tiddler',e,!1),g.addEventListener('tm-close-tiddler',e,!1),!f.fields||'yes'!==f.fields['mask-closable']&&'true'!==f.fields['mask-closable']||n.addEventListener('click',e,!1),$tw.utils.setStyle(n,[{opacity:'0'}]),$tw.utils.setStyle(a,[{transformOrigin:'0% 0%'},{transform:'translateY('+-this.srcWindow.innerHeight+'px)'}]),this.srcDocument.body.appendChild(r),$tw.utils.setStyle(n,[{transition:'opacity '+y+'ms ease-out'}]),$tw.utils.setStyle(a,[{transition:$tw.utils.roundTripPropertyName('transform')+' '+y+'ms ease-in-out'}]),$tw.utils.forceLayout(n),$tw.utils.forceLayout(a),$tw.utils.setStyle(n,[{opacity:'0.7'}]),$tw.utils.setStyle(a,[{transform:'translateY(0px)'}]))},t.prototype.adjustPageClass=function(){var t=$tw.pageContainer?$tw.pageContainer===this.srcDocument.body.firstChild?$tw.pageContainer:this.srcDocument.body.firstChild:null;t&&$tw.utils.toggleClass(t,'tc-modal-displayed',0\u003Cthis.modalCount),$tw.utils.toggleClass(this.srcDocument.body,'tc-modal-prevent-scroll',0\u003Cthis.modalCount)},exports.Modal=t}();\",\"type\":\"application/javascript\",\"module-type\":\"utils\"},\"$:/core/modules/utils/dom/notifier.js\":{\"text\":\"!function(){'use strict';function t(t){this.wiki=t}require('$:/core/modules/widgets/widget.js');t.prototype.display=function(t,e){e=e||{};var i,n,o=this,r=document.createElement('div'),s=this.wiki.getTiddler(t),a=$tw.utils.getAnimationDuration();s&&($tw.utils.addClass(r,'tc-notification'),r.setAttribute('role','alert'),s=$tw.utils.extend({currentTiddler:t},e.variables),(n=this.wiki.makeTranscludeWidget(t,{parentWidget:$tw.rootWidget,document:document,variables:s,importPageMacros:!0})).render(r,null),this.wiki.addEventListener('change',i=function(t){n.refresh(t,r,null)}),$tw.utils.setStyle(r,[{opacity:'0'},{transformOrigin:'0% 0%'},{transform:'translateY('+-window.innerHeight+'px)'},{transition:'opacity '+a+'ms ease-out, '+$tw.utils.roundTripPropertyName('transform')+' '+a+'ms ease-in-out'}]),document.body.appendChild(r),$tw.utils.forceLayout(r),$tw.utils.setStyle(r,[{opacity:'1.0'},{transform:'translateY(0px)'}]),window.setTimeout(function(){o.wiki.removeEventListener('change',i),$tw.utils.forceLayout(r),$tw.utils.setStyle(r,[{opacity:'0.0'},{transform:'translateX('+r.offsetWidth+'px)'}]),setTimeout(function(){r.parentNode&&document.body.removeChild(r)},a)},$tw.config.preferences.notificationDuration))},exports.Notifier=t}();\",\"type\":\"application/javascript\",\"module-type\":\"utils\"},\"$:/core/modules/utils/dom/popup.js\":{\"text\":\"!function(){'use strict';function t(t){this.rootElement=(t=t||{}).rootElement||document.documentElement,this.popups=[]}exports.popupLocationRegExp=/^(@?)\\\\((-?[0-9\\\\.E]+),(-?[0-9\\\\.E]+),(-?[0-9\\\\.E]+),(-?[0-9\\\\.E]+)\\\\)$/,exports.coordinatePrefix={csOffsetParent:'',csAbsolute:'@'},t.prototype.triggerPopup=function(t){var e=this.findPopup(t.title),o=-1===e;(o=void 0!==t.force?t.force:o)?this.show(t):this.cancel(e)},t.prototype.findPopup=function(t){for(var e=-1,o=0;o\u003Cthis.popups.length;o++)this.popups[o].title===t&&(e=o);return e},t.prototype.handleEvent=function(t){var e;'click'===t.type&&(e=(t=this.popupInfo(t.target)).popupLevel-1,t.isHandle&&e++,this.cancel(e))},t.prototype.popupInfo=function(t){for(var e=!1,o=0,p=t;p;)$tw.utils.hasClass(p,'tc-popup-handle')&&(e=!0,o++),$tw.utils.hasClass(p,'tc-popup-keep')&&(e=!0),p=p.parentNode;for(p=t;p;)$tw.utils.hasClass(p,'tc-popup')&&o++,p=p.parentNode;return{popupLevel:o,isHandle:e}},t.prototype.show=function(t){var e,o=this.popupInfo(t.domNode);if(this.cancel(o.popupLevel),t.floating||-1!==this.findPopup(t.title)||this.popups.push({title:t.title,wiki:t.wiki,domNode:t.domNode,noStateReference:t.noStateReference}),e=t.domNodeRect||{left:t.domNode.offsetLeft,top:t.domNode.offsetTop,width:t.domNode.offsetWidth,height:t.domNode.offsetHeight},t.absolute&&t.domNode)for(var p=t.domNode.offsetParent;p;)e.left+=p.offsetLeft,e.top+=p.offsetTop,p=p.offsetParent;o=exports.buildCoordinates(t.absolute?exports.coordinatePrefix.csAbsolute:exports.coordinatePrefix.csOffsetParent,e);t.noStateReference?t.wiki.setText(t.title,'text',void 0,o):t.wiki.setTextReference(t.title,o),0\u003Cthis.popups.length&&this.rootElement.addEventListener('click',this,!0)},t.prototype.cancel=function(t){for(var e=this.popups.length,o=t=Math.max(0,Math.min(t,e));o\u003Ce;o++){var p=this.popups.pop();p.title&&(p.noStateReference?p.wiki.deleteTiddler(p.title):p.wiki.deleteTiddler($tw.utils.parseTextReference(p.title).title))}0===this.popups.length&&this.rootElement.removeEventListener('click',this,!1)},exports.readPopupState=function(t){return exports.popupLocationRegExp.test(t)},exports.parseCoordinates=function(t){t=exports.popupLocationRegExp.exec(t);return!!t&&{absolute:'@'===t[1],left:parseFloat(t[2]),top:parseFloat(t[3]),width:parseFloat(t[4]),height:parseFloat(t[5])}},exports.buildCoordinates=function(t,e){t=t+'('+e.left+','+e.top+','+e.width+','+e.height+')';return exports.popupLocationRegExp.test(t)?t:'(0,0,0,0)'},exports.Popup=t}();\",\"type\":\"application/javascript\",\"module-type\":\"utils\"},\"$:/core/modules/utils/dom/scroller.js\":{\"text\":\"!function(){'use strict';function t(){this.idRequestFrame=null,this.requestAnimationFrame=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||function(t){return window.setTimeout(t,1e3/60)},this.cancelAnimationFrame=window.cancelAnimationFrame||window.webkitCancelAnimationFrame||window.webkitCancelRequestAnimationFrame||window.mozCancelAnimationFrame||window.mozCancelRequestAnimationFrame||function(t){window.clearTimeout(t)}}t.prototype.isScrolling=function(){return null!==this.idRequestFrame},t.prototype.cancelScroll=function(t){this.idRequestFrame&&(this.cancelAnimationFrame.call(t,this.idRequestFrame),this.idRequestFrame=null)},t.prototype.handleEvent=function(t){var e;return'tm-scroll'!==t.type||(e={},$tw.utils.hop(t.paramObject,'animationDuration')&&(e.animationDuration=t.paramObject.animationDuration),t.paramObject&&t.paramObject.selector?this.scrollSelectorIntoView(null,t.paramObject.selector,null,e):this.scrollIntoView(t.target,null,e),!1)},t.prototype.scrollIntoView=function(i,n,t){var r=this,a=$tw.utils.hop(t,'animationDuration')?parseInt(t.animationDuration):$tw.utils.getAnimationDuration(),l=i?i.ownerDocument.defaultView:window,t=(this.cancelScroll(l),this.startTime=Date.now(),l.document.querySelector('.tc-adjust-top-of-scroll')),o=0,c=(t&&(o=t.offsetHeight),function(){var t='function'==typeof n?n():i.getBoundingClientRect(),e=$tw.utils.getScrollPosition(l);return{left:t.left+e.x,top:t.top+e.y-o,width:t.width,height:t.height}}),u=function(t,e,i,n){return t\u003C50?0:t};(function t(){var e=a\u003C=0?1:(Date.now()-r.startTime)/a,i=(1\u003C=e&&(r.cancelScroll(l),e=1),e=$tw.utils.slowInSlowOut(e),$tw.utils.getScrollPosition(l)),n=c(),o=u(n.left,n.width,i.x,l.innerWidth),n=u(n.top,n.height,i.y,l.innerHeight);l.scrollTo(i.x+(o-i.x)*e,i.y+(n-i.y)*e),e\u003C1&&(r.idRequestFrame=r.requestAnimationFrame.call(l,t))})()},t.prototype.scrollSelectorIntoView=function(t,e,i,n){t=(t=t||document.body).querySelector(e);t&&this.scrollIntoView(t,i,n)},exports.PageScroller=t}();\",\"type\":\"application/javascript\",\"module-type\":\"utils\"},\"$:/core/modules/utils/edition-info.js\":{\"text\":\"!function(){'use strict';var s,f=require('fs'),l=require('path');exports.getEditionInfo=function(){if(!s){var r=$tw.getLibraryItemSearchPaths($tw.config.editionsPath,$tw.config.editionsEnvVar);s={};for(var t=0;t\u003Cr.length;t++)for(var e=r[t],i=f.readdirSync(e),n=0;n\u003Ci.length;n++){var a,o=i[n];!s[o]&&$tw.utils.isDirectory(l.resolve(e,o))&&(a=$tw.utils.parseJSONSafe(f.readFileSync(l.resolve(e,o,'tiddlywiki.info'),'utf8'),null))&&(s[o]=a)}}return s}}();\",\"type\":\"application/javascript\",\"module-type\":\"utils-node\"},\"$:/core/modules/utils/escapecss.js\":{\"text\":\"!function(){'use strict';exports.escapeCSS=$tw.browser&&window.CSS&&window.CSS.escape?window.CSS.escape:function(e){if(0==arguments.length)throw new TypeError('`CSS.escape` requires an argument.');for(var r,t=String(e),n=t.length,o=-1,S='',a=t.charCodeAt(0);++o\u003Cn;)0==(r=t.charCodeAt(o))?S+='<27>':S+=1\u003C=r&&r\u003C=31||127==r||0==o&&48\u003C=r&&r\u003C=57||1==o&&48\u003C=r&&r\u003C=57&&45==a?'\\\\\\\\'+r.toString(16)+' ':(0!=o||1!=n||45!=r)&&(128\u003C=r||45==r||95==r||48\u003C=r&&r\u003C=57||65\u003C=r&&r\u003C=90||97\u003C=r&&r\u003C=122)?t.charAt(o):'\\\\\\\\'+t.charAt(o);return S}}();\",\"type\":\"application/javascript\",\"module-type\":\"utils\"},\"$:/core/modules/utils/fakedom.js\":{\"text\":\"!function(){'use strict';function n(t){null!==e&&(t.sequenceNumber=e++)}function t(){throw TypeError('Illegal constructor')}function i(t){n(this),this.textContent=t+''}function r(t,e){n(this),this.isTiddlyWikiFakeDom=!0,this.tag=t,this.attributes={},this.isRaw=!1,this.children=[],this._style={},this.namespaceURI=e||'http://www.w3.org/1999/xhtml'}var e=null,o=(Object.defineProperty(t.prototype,'ELEMENT_NODE',{get:function(){return 1}}),Object.defineProperty(t.prototype,'TEXT_NODE',{get:function(){return 3}}),Object.setPrototypeOf(i,t.prototype),Object.defineProperty(i.prototype,'nodeType',{get:function(){return this.TEXT_NODE}}),Object.defineProperty(i.prototype,'formattedTextContent',{get:function(){return this.textContent.replace(/(\\\\r?\\\\n)/g,'')}}),Object.setPrototypeOf(r,t.prototype),Object.defineProperty(r.prototype,'style',{get:function(){return this._style},set:function(t){var n=this;t=t||'',$tw.utils.each(t.split(';'),function(t){var t=t.split(':'),e=$tw.utils.trim(t[0]),t=$tw.utils.trim(t[1]);e&&t&&(n._style[$tw.utils.convertStyleNameToPropertyName(e)]=t)})}}),Object.defineProperty(r.prototype,'nodeType',{get:function(){return this.ELEMENT_NODE}}),r.prototype.getAttribute=function(t){if(this.isRaw)throw'Cannot getAttribute on a raw TW_Element';return this.attributes[t]},r.prototype.setAttribute=function(t,e){if(this.isRaw)throw'Cannot setAttribute on a raw TW_Element';this.attributes[t]=e+''},r.prototype.setAttributeNS=function(t,e,n){this.setAttribute(e,n)},r.prototype.removeAttribute=function(t){if(this.isRaw)throw'Cannot removeAttribute on a raw TW_Element';$tw.utils.hop(this.attributes,t)&&delete this.attributes[t]},r.prototype.appendChild=function(t){this.children.push(t),t.parentNode=this},r.prototype.insertBefore=function(t,e){e&&-1!==(e=this.children.indexOf(e))?(this.children.splice(e,0,t),t.parentNode=this):this.appendChild(t)},r.prototype.removeChild=function(t){t=this.children.indexOf(t);-1!==t&&this.children.splice(t,1)},r.prototype.hasChildNodes=function(){return!!this.children.length},Object.defineProperty(r.prototype,'childNodes',{get:function(){return this.children}}),Object.defineProperty(r.prototype,'firstChild',{get:function(){return this.children[0]}}),r.prototype.addEventListener=function(t,e,n){},Object.defineProperty(r.prototype,'tagName',{get:function(){return this.tag||''}}),Object.defineProperty(r.prototype,'className',{get:function(){return this.attributes.class||''},set:function(t){this.attributes.class=t+''}}),Object.defineProperty(r.prototype,'value',{get:function(){return this.attributes.value||''},set:function(t){this.attributes.value=t+''}}),Object.defineProperty(r.prototype,'outerHTML',{get:function(){var t,e,n,i=[];if(i.push('\u003C',this.tag),this.attributes){for(e in t=[],this.attributes)t.push(e);for(t.sort(),e=0;e\u003Ct.length;e++)void 0!==(n=this.attributes[t[e]])&&i.push(' ',t[e],'=\\\"',$tw.utils.htmlEncode(n),'\\\"')}if(this._style){var r,o=[];for(r in this._style)o.push($tw.utils.convertPropertyNameToStyleName(r)+':'+this._style[r]+';');0\u003Co.length&&i.push(' style=\\\"',o.join(''),'\\\"')}return i.push('>'),-1===$tw.config.htmlVoidElements.indexOf(this.tag)&&(i.push(this.innerHTML),i.push('\u003C/',this.tag,'>')),i.join('')}}),Object.defineProperty(r.prototype,'innerHTML',{get:function(){var e;return this.isRaw?this.rawHTML:(e=[],$tw.utils.each(this.children,function(t){t instanceof r?e.push(t.outerHTML):t instanceof i&&e.push($tw.utils.htmlTextEncode(t.textContent))}),e.join(''))},set:function(t){this.isRaw=!0,this.rawHTML=t,this.rawTextContent=null}}),Object.defineProperty(r.prototype,'textInnerHTML',{set:function(t){if(!this.isRaw)throw'Cannot set textInnerHTML of a non-raw TW_Element';this.rawTextContent=t}}),Object.defineProperty(r.prototype,'textContent',{get:function(){var e;return this.isRaw?null===this.rawTextContent?'':this.rawTextContent:(e=[],$tw.utils.each(this.children,function(t){e.push(t.textContent)}),e.join(''))},set:function(t){this.children=[new i(t)]}}),Object.defineProperty(r.prototype,'formattedTextContent',{get:function(){var e,t;return this.isRaw?'':(e=[],(t=-1!==$tw.config.htmlBlockElements.indexOf(this.tag))&&e.push('\\\\n'),'li'===this.tag&&e.push('* '),$tw.utils.each(this.children,function(t){e.push(t.formattedTextContent)}),t&&e.push('\\\\n'),e.join(''))}}),{setSequenceNumber:function(t){e=t},createElementNS:function(t,e){return new r(e,t)},createElement:function(t){return new r(t)},createTextNode:function(t){return new i(t)},compatMode:'CSS1Compat',isTiddlyWikiFakeDom:!0});exports.fakeDocument=o}();\",\"type\":\"application/javascript\",\"module-type\":\"global\"},\"$:/core/modules/utils/filesystem.js\":{\"text\":\"!function(){'use strict';var o,u=require('fs'),f=require('path');exports.getSubdirectories=function(t){var i;return $tw.utils.isDirectory(t)?(i=[],$tw.utils.each(u.readdirSync(t),function(e){$tw.utils.isDirectory(f.resolve(t,e))&&i.push(e)}),i):null},exports.copyDirectory=function(e,t){var o;return e=f.resolve($tw.utils.removeTrailingSeparator(e)),t=f.resolve($tw.utils.removeTrailingSeparator(t)),e.substring(0,t.length)===t||t.substring(0,e.length)===e?'Cannot copy nested directories':$tw.utils.createDirectory(t)||((o=function(e,t){var i=u.lstatSync(e);u.existsSync(t);if(i.isFile())$tw.utils.copyFile(e,t);else if(i.isDirectory())for(var r=u.readdirSync(e),n=0;n\u003Cr.length;n++){var l=r[n],l=o(e+f.sep+l,t+f.sep+l);if(l)return l}})(e,t),null)};exports.copyFile=function(e,t){o=o||Buffer.alloc(65536),$tw.utils.createDirectory(f.dirname(t));for(var i=u.openSync(e,'r'),r=u.openSync(t,'w'),n=1,l=0;0\u003Cn;)n=u.readSync(i,o,0,65536,l),u.writeSync(r,o,0,n),l+=n;return u.closeSync(i),u.closeSync(r),null},exports.removeTrailingSeparator=function(e){var t=e.length;return e=e.charAt(t-1)===f.sep?e.substr(0,t-1):e},exports.createDirectory=function(e){e.substr(e.length-1,1)!==f.sep&&(e+=f.sep);for(var t=1,t=e.indexOf(f.sep,t);-1!==t;){var i=e.substr(0,t);if(!$tw.utils.isDirectory(i))try{u.mkdirSync(i)}catch(e){return'Error creating directory \\\\''+i+'\\\\''}t=e.indexOf(f.sep,t+1)}return null},exports.createFileDirectories=function(e){return $tw.utils.createDirectory(f.dirname(e))},exports.deleteDirectory=function(e){if(u.existsSync(e)){for(var t=u.readdirSync(e),i=0;i\u003Ct.length;i++){var r=e+f.sep+t[i];u.lstatSync(r).isDirectory()?$tw.utils.deleteDirectory(r):u.unlinkSync(r)}u.rmdirSync(e)}return null},exports.isDirectory=function(e){return u.existsSync(e)&&u.statSync(e).isDirectory()},exports.isDirectoryEmpty=function(e){var i;return!!$tw.utils.isDirectory(e)&&(e=u.readdirSync(e),i=!0,$tw.utils.each(e,function(e,t){'.'!==e.charAt(0)&&(i=!1)}),i)},exports.deleteEmptyDirs=function(i,r){var n=this;u.readdir(i,function(e,t){return e?r(e):0\u003Ct.length?r(null):void u.rmdir(i,function(e){if(e)return r(e);n.deleteEmptyDirs(f.dirname(i),r)})})},exports.generateTiddlerFileInfo=function(e,t){var i,r={},n=(t.fileInfo&&t.fileInfo.isEditableFile&&(r.isEditableFile=!0,r.originalpath=t.fileInfo.originalpath),!1),l=($tw.utils.each(e.getFieldStrings(),function(e,t){n=(n='text'!==t?(n=n||/[\\\\x00-\\\\x1F]/gm.test(e))||$tw.utils.trim(e)!==e:n)||/:/gm.test(t)}),n?(r.type='application/json',r.hasMetaFile=!1):('text/vnd.tiddlywiki'===(l=e.fields.type||'text/vnd.tiddlywiki')?(r.type='application/x-tiddler',r.hasMetaFile=!1):(r.type=l,r.hasMetaFile=!0),t.extFilters&&(i=$tw.utils.generateTiddlerExtension(e.fields.title,{extFilters:t.extFilters,wiki:t.wiki}))&&('.tid'===i?(r.type='application/x-tiddler',r.hasMetaFile=!1):'.json'===i?(r.type='application/json',r.hasMetaFile=!1):(l=$tw.utils.getFileExtensionInfo(i),r.type=l?l.type:null,r.encoding=$tw.utils.getTypeEncoding(i),r.hasMetaFile=!0))),$tw.config.contentTypeInfo[r.type]||{extension:''});return r.filepath=$tw.utils.generateTiddlerFilepath(e.fields.title,{extension:i||l.extension,directory:t.directory,pathFilters:t.pathFilters,wiki:t.wiki,fileInfo:t.fileInfo}),r},exports.generateTiddlerExtension=function(i,r){var n;return r.extFilters&&r.wiki&&$tw.utils.each(r.extFilters,function(e){var t;n||(t=r.wiki.makeTiddlerIterator([i]),0\u003C(e=r.wiki.filterTiddlers(e,null,t)).length&&(n=e[0]))}),n},exports.generateTiddlerFilepath=function(i,r){var n,e=r.directory||'',t=r.extension||'',l=r.fileInfo&&r.fileInfo.originalpath?r.fileInfo.originalpath:'';r.pathFilters&&r.wiki&&$tw.utils.each(r.pathFilters,function(e){var t;n||(t=r.wiki.makeTiddlerIterator([i]),0\u003C(e=r.wiki.filterTiddlers(e,null,t)).length&&(n=e[0]))}),n=(n=(n=!n&&l?(c=f.extname(l),l.substring(0,l.length-c.length)):n||(n=i).replace(/\\\\/|\\\\\\\\/g,'_')).replace(/^(con|prn|aux|nul|com[0-9]|lpt[0-9])$/i,'_$1_')).replace(/^ +/,function(e){return e.replace(/ /g,'_')}),n=(n=/^\\\\.{1,2}[/\\\\\\\\]/g.test(n)?n:n.replace(/^\\\\.+/g,function(e){return e.replace(/\\\\./g,'_')})).replace(/[\\\\x00-\\\\x1f\\\\x80-\\\\x9f]/g,'_'),n=$tw.utils.transliterate(n.replace(/\u003C|>|~|\\\\:|\\\\\\\"|\\\\||\\\\?|\\\\*|\\\\^/g,'_')),32\u003C(t=t.replace(/[\\\\. ]+$/,function(e){return e.replace(/[\\\\. ]/g,'_')})).length&&(t=t.substr(0,32)),(n=200\u003C(n=n.substring(n.length-t.length)===t?n.substring(0,n.length-t.length):n).length?n.substr(0,200):n)&&!/^_+$/g.test(n)||(n='',$tw.utils.each(i.split(''),function(e){n&&(n+='-'),n+=e.charCodeAt(0).toString()}));for(var o,s=r.fileInfo?r.fileInfo.filepath:void 0,a=0;o=f.resolve(e,n+(a?'_'+a:'')+t),(!s||s!=o)&&(a++,u.existsSync(o)););var c=$tw.hooks.invokeHook('th-make-tiddler-path',o,o);return c=1==(r.fileInfo||{writeError:!1}).writeError||!(0==c.indexOf($tw.boot.wikiTiddlersPath)||0==c.indexOf(f.resolve(e))||0==c.indexOf(f.resolve($tw.boot.wikiPath))||0==c.indexOf(f.resolve($tw.boot.wikiTiddlersPath,l)))?f.resolve(e,encodeURIComponent(o)):c},exports.saveTiddlerToFile=function(t,i,r){var e;$tw.utils.createDirectory(f.dirname(i.filepath)),i.hasMetaFile?(e=$tw.config.contentTypeInfo[t.fields.type||'text/plain']||{encoding:'utf8'},u.writeFile(i.filepath,t.fields.text||'',e.encoding,function(e){if(e)return r(e);u.writeFile(i.filepath+'.meta',t.getFieldStringBlock({exclude:['text','bag']}),'utf8',function(e){return e?r(e):r(null,i)})})):'application/x-tiddler'===i.type?u.writeFile(i.filepath,t.getFieldStringBlock({exclude:['text','bag']})+(t.fields.text?'\\\\n\\\\n'+t.fields.text:''),'utf8',function(e){return e?r(e):r(null,i)}):u.writeFile(i.filepath,JSON.stringify([t.getFieldStrings({exclude:['bag']})],null,$tw.config.preferences.jsonSpaces),'utf8',function(e){return e?r(e):r(null,i)})},exports.saveTiddlerToFileSync=function(e,t){var i;return $tw.utils.createDirectory(f.dirname(t.filepath)),t.hasMetaFile?(i=$tw.config.contentTypeInfo[e.fields.type||'text/plain']||{encoding:'utf8'},u.writeFileSync(t.filepath,e.fields.text||'',i.encoding),u.writeFileSync(t.filepath+'.meta',e.getFieldStringBlock({exclude:['text','bag']}),'utf8')):'application/x-tiddler'===t.type?u.writeFileSync(t.filepath,e.getFieldStringBlock({exclude:['text','bag']})+(e.fields.text?'\\\\n\\\\n'+e.fields.text:''),'utf8'):u.writeFileSync(t.filepath,JSON.stringify([e.getFieldStrings({exclude:['bag']})],null,$tw.config.preferences.jsonSpaces),'utf8'),t},exports.deleteTiddlerFile=function(t,i){if(!t.filepath||!u.existsSync(t.filepath))return $tw.syncer.displayError('Server deleteTiddlerFile task failed for filepath: '+t.filepath),i(null,t);u.unlink(t.filepath,function(e){return e?i(e):t.hasMetaFile&&u.existsSync(t.filepath+'.meta')?void u.unlink(t.filepath+'.meta',function(e){return e?i(e):$tw.utils.deleteEmptyDirs(f.dirname(t.filepath),function(e){return e?i(e):i(null,t)})}):$tw.utils.deleteEmptyDirs(f.dirname(t.filepath),function(e){return e?i(e):i(null,t)})})},exports.cleanupTiddlerFiles=function(e,t){var i=e.adaptorInfo||{},r=e.bootInfo||{},n=e.title||'undefined';if(!i.filepath||!r.filepath||i.filepath===r.filepath)return t(null,r);$tw.utils.deleteTiddlerFile(i,function(e){return e?'EPERM'!=e.code&&'EACCES'!=e.code||'unlink'!=e.syscall?t(e):($tw.syncer.displayError('Server desynchronized. Error cleaning up previous file for tiddler: \\\"'+n+'\\\"',e),t(null,r)):t(null,r)})}}();\",\"type\":\"application/javascript\",\"module-type\":\"utils-node\"},\"$:/core/modules/utils/linkedlist.js\":{\"text\":\"function t(){this.clear()}function r(t,e){var r,n,i,s,l,o=t.next.get(e);void 0!==o&&(n=r=t.prev.get(e),i=o,Array.isArray(o)&&(i=o[0],n=r[0]),s=t.next.get(n),Array.isArray(s)?(l=s.indexOf(e),s[l]=i):t.next.set(n,i),s=t.prev.get(i),Array.isArray(s)?(l=s.indexOf(e),s[l]=n):t.prev.set(i,n),Array.isArray(o)&&1\u003Co.length?(o.shift(),r.shift()):(t.next.set(e,void 0),t.prev.set(e,void 0)),--t.length)}function n(t,e){var r,n=t.next.get(e),i=t.prev.get(null);void 0!==n?(Array.isArray(n)||(t.next.set(e,n=[n]),t.prev.set(e,[t.prev.get(e)])),n.push(null),t.prev.get(e).push(i)):(t.next.set(e,null),t.prev.set(e,i)),e!==i?(r=t.next.get(i),Array.isArray(r)?r[r.length-1]=e:t.next.set(i,e),t.prev.set(null,e)):(r=t.next.get(i))[r.length-2]=e,t.length+=1}function i(t){if('string'!=typeof t)throw'Linked List only accepts string values, not '+t}var e;t.prototype.clear=function(){this.next=new e,this.prev=new e,this.next.set(null,null),this.prev.set(null,null),this.length=0},t.prototype.remove=function(t){if($tw.utils.isArray(t)){for(var e=0;e\u003Ct.length;e++)i(t[e]);for(e=0;e\u003Ct.length;e++)r(this,t[e])}else i(t),r(this,t)},t.prototype.push=function(){var t,e=arguments;for($tw.utils.isArray(e[0])&&(e=e[0]),t=0;t\u003Ce.length;t++)i(e[t]);for(t=0;t\u003Ce.length;t++)n(this,e[t]);return this.length},t.prototype.pushTop=function(t){var e;if($tw.utils.isArray(t)){for(e=0;e\u003Ct.length;e++)i(t[e]);for(e=0;e\u003Ct.length;e++)r(this,t[e]);for(e=0;e\u003Ct.length;e++)n(this,t[e])}else i(t),r(this,t),n(this,t)},t.prototype.each=function(t){for(var e=Object.create(null),r=this.next.get(null);null!==r;){t(r);var n,i=this.next.get(r),r=Array.isArray(i)?(n=e[r]||0,e[r]=n+1,i[n]):i}},t.prototype.toArray=function(){var e=new Array(this.length),r=0;return this.each(function(t){e[r++]=t}),e},t.prototype.makeTiddlerIterator=function(r){var t=this;return function(e){t.each(function(t){e(r.getTiddler(t),t)})}},(e=function(){this.map=Object.create(null)}).prototype={set:function(t,e){null===t?this.null=e:this.map[t]=e},get:function(t){return null===t?this.null:this.map[t]}},exports.LinkedList=t;\",\"module-type\":\"utils\",\"type\":\"application/javascript\"},\"$:/core/modules/utils/logger.js\":{\"text\":\"!function(){'use strict';var s='$:/tags/Alert';function e(e,t){t=t||{},this.componentName=e||'',this.colour=t.colour||'white',this.enable=!('enable'in t)||t.enable,this.save=!('save'in t)||t.save,this.saveLimit=t.saveLimit||102400,(this.saveBufferLogger=this).buffer='',this.alertCount=0}e.prototype.setSaveBuffer=function(e){this.saveBufferLogger=e},e.prototype.log=function(){var e,i=this;if(this.enable&&(this.saveBufferLogger.save&&(this.saveBufferLogger.buffer+=$tw.utils.formatDateString(new Date,'YYYY MM DD 0hh:0mm:0ss.0XXX')+':',$tw.utils.each(Array.prototype.slice.call(arguments,0),function(e,t){i.saveBufferLogger.buffer+=' '+e}),this.saveBufferLogger.buffer+='\\\\n',this.saveBufferLogger.buffer=this.saveBufferLogger.buffer.slice(-this.saveBufferLogger.saveLimit)),void 0!==console&&void 0!==console.log))return(e=[$tw.utils.terminalColour(this.colour)+this.componentName+':'].concat(Array.prototype.slice.call(arguments,0)))[e.length-1]+=$tw.utils.terminalColour(),Function.apply.call(console.log,console,e)},e.prototype.getBuffer=function(){return this.saveBufferLogger.buffer},e.prototype.table=function(e){(console.table||console.log)(e)},e.prototype.alert=function(){var t,e,i,o,r;this.enable&&(t=Array.prototype.join.call(arguments,' '),$tw.browser?(e=$tw.wiki.getTiddlersWithTag(s),r=this,$tw.utils.each(e,function(e){e=$tw.wiki.getTiddler(e);e.fields.text===t&&e.fields.component===r.componentName&&e.fields.modified&&(!i||e.fields.modified\u003Ci.modified)&&(i=$tw.utils.extend({},e.fields))}),i?o=i.count||1:(i={title:$tw.wiki.generateNewTitle('$:/temp/alerts/alert',{prefix:''}),text:t,tags:[s],component:this.componentName},o=0,this.alertCount+=1),i.modified=new Date,1\u003C++o?i.count=o:i.count=void 0,$tw.wiki.addTiddler(new $tw.Tiddler(i)),this.log.apply(this,Array.prototype.slice.call(arguments,0))):console.error('\\u001b[1;33m'+t+'\\u001b[0m'))},e.prototype.clearAlerts=function(){var t=this;$tw.browser&&0\u003Cthis.alertCount&&($tw.utils.each($tw.wiki.getTiddlersWithTag(s),function(e){$tw.wiki.getTiddler(e).fields.component===t.componentName&&$tw.wiki.deleteTiddler(e)}),this.alertCount=0)},exports.Logger=e}();\",\"type\":\"application/javascript\",\"module-type\":\"utils\"},\"$:/core/modules/utils/parsetree.js\":{\"text\":\"!function(){'use strict';exports.addAttributeToParseTreeNode=function(t,r,e){var e='object'==typeof r?r:{name:r,type:'string',value:e},s=(r=e.name,t.attributes=t.attributes||{},t.orderedAttributes=t.orderedAttributes||[],t.attributes[r]=e,-1);$tw.utils.each(t.orderedAttributes,function(t,e){t.name===r&&(s=e)}),-1===s?t.orderedAttributes.push(e):t.orderedAttributes[s]=e},exports.getOrderedAttributesFromParseTreeNode=function(t){var e;return t.orderedAttributes||(e=[],$tw.utils.each(t.attributes,function(t){e.push(t)}),e.sort(function(t,e){return t.name\u003Ce.name?-1:t.name>e.name?1:0}))},exports.getAttributeValueFromParseTreeNode=function(t,e,r){return t.attributes&&t.attributes[e]&&void 0!==t.attributes[e].value?t.attributes[e].value:r},exports.addClassToParseTreeNode=function(t,e){var r,s=[];t.attributes=t.attributes||{},(r=t.attributes.class)||(t.attributes.class=r={name:'class',type:'string',value:''},t.orderedAttributes=t.orderedAttributes||[],t.orderedAttributes.push(r)),'string'===r.type&&(''!==r.value&&(s=r.value.split(' ')),''!==e&&$tw.utils.pushTop(s,e.split(' ')),r.value=s.join(' '))},exports.addStyleToParseTreeNode=function(t,e,r){var s;t.attributes=t.attributes||{},(s=t.attributes.style)||(t.attributes.style=s={name:'style',type:'string',value:''},t.orderedAttributes=t.orderedAttributes||[],t.orderedAttributes.push(s)),'string'===s.type&&(s.value+=e+':'+r+';')},exports.findParseTreeNode=function(t,e){for(var r=0;r\u003Ct.length;r++)if(t[r].type===e.type&&t[r].tag===e.tag)return t[r]},exports.getParseTreeText=function e(t){var r=[];if($tw.utils.isArray(t))$tw.utils.each(t,function(t){r.push(e(t))});else if('text'===t.type&&r.push(t.text),t.children)return e(t.children);return r.join('')}}();\",\"type\":\"application/javascript\",\"module-type\":\"utils\"},\"$:/core/modules/utils/performance.js\":{\"text\":\"!function(){'use strict';function e(e){this.enabled=!!e,this.measures={},this.logger=new $tw.utils.Logger('performance'),this.showGreeting()}e.prototype.showGreeting=function(){$tw.browser&&this.logger.log('Execute $tw.perf.log(); to see filter execution timings')},e.prototype.report=function(i,s){var r=this;return this.enabled?function(){var e=$tw.utils.timer(),t=s.apply(this,arguments);return r.logger.log(i+': '+$tw.utils.timer(e).toFixed(2)+'ms'),t}:s},e.prototype.log=function(){var i=this,s=0,e=Object.keys(this.measures).sort(function(e,t){return i.measures[e].time>i.measures[t].time?-1:i.measures[e].time\u003Ci.measures[t].time?1:0}),r=($tw.utils.each(e,function(e){s+=i.measures[e].time}),[]);$tw.utils.each(e,function(e){var t=i.measures[e];r.push({name:e,invocations:t.invocations,avgTime:t.time/t.invocations,totalTime:t.time,percentTime:t.time/s*100})}),i.logger.table(r)},e.prototype.measure=function(i,s){var r=this;return this.enabled?function(){var e=$tw.utils.timer(),t=s.apply(this,arguments);return i in r.measures||(r.measures[i]={time:0,invocations:0}),r.measures[i].time+=$tw.utils.timer(e),r.measures[i].invocations++,t}:s},exports.Performance=e}();\",\"type\":\"application/javascript\",\"module-type\":\"global\"},\"$:/core/modules/utils/pluginmaker.js\":{\"text\":\"!function(){'use strict';exports.repackPlugin=function(t,i,r){i=i||[],r=r||[];var l=$tw.wiki.getTiddler(t);if(!l)throw'No such tiddler as '+t;var s=$tw.utils.parseJSONSafe(l.fields.text,null);if(!s)throw'Cannot parse plugin tiddler '+t+'\\\\n'+$tw.language.getString('Error/Caption')+': '+e;var n=Object.keys(s.tiddlers);$tw.utils.pushTop(n,i);for(var d=n.length-1;0\u003C=d;d--)-1!==r.indexOf(n[d])&&n.splice(d,1);var a={},s=($tw.utils.each(n,function(t){var e=$tw.wiki.getTiddler(t),r={};$tw.utils.each(e.fields,function(t,i){r[i]=e.getFieldString(i)}),a[t]=r}),$tw.utils.parseVersion(l.getFieldString('version')||'0.0.0')||{major:'0',minor:'0',patch:'0'}),i=(s.patch++,s.major+'.'+s.minor+'.'+s.patch);return s.prerelease&&(i+='-'+s.prerelease),s.build&&(i+='+'+s.build),$tw.wiki.addTiddler(new $tw.Tiddler(l,{text:JSON.stringify({tiddlers:a},null,4),version:i})),$tw.utils.each(n,function(t){$tw.wiki.tiddlerExists(t)&&$tw.wiki.deleteTiddler(t)}),$tw.rootWidget.dispatchEvent({type:'tm-auto-save-wiki'}),'Plugin '+t+' successfully saved'}}();\",\"type\":\"application/javascript\",\"module-type\":\"utils\"},\"$:/core/modules/utils/transliterate.js\":{\"text\":\"!function(){'use strict';exports.transliterationPairs={'Á':'A','Ă':'A','Ắ':'A','Ặ':'A','Ằ':'A','Ẳ':'A','Ẵ':'A','Ǎ':'A','Â':'A','Ấ':'A','Ậ':'A','Ầ':'A','Ẩ':'A','Ẫ':'A','Ä':'A','Ǟ':'A','Ȧ':'A','Ǡ':'A','Ạ':'A','Ȁ':'A','À':'A','Ả':'A','Ȃ':'A','Ā':'A','Ą':'A','Å':'A','Ǻ':'A','Ḁ':'A','Ⱥ':'A','Ã':'A','Ꜳ':'AA','Æ':'AE','Ǽ':'AE','Ǣ':'AE','Ꜵ':'AO','Ꜷ':'AU','Ꜹ':'AV','Ꜻ':'AV','Ꜽ':'AY','Ḃ':'B','Ḅ':'B','Ɓ':'B','Ḇ':'B','Ƀ':'B','Ƃ':'B','Ć':'C','Č':'C','Ç':'C','Ḉ':'C','Ĉ':'C','Ċ':'C','Ƈ':'C','Ȼ':'C','Ď':'D','Ḑ':'D','Ḓ':'D','Ḋ':'D','Ḍ':'D','Ɗ':'D','Ḏ':'D','Dz':'D','Dž':'D','Đ':'D','Ƌ':'D','DZ':'DZ','DŽ':'DZ','É':'E','Ĕ':'E','Ě':'E','Ȩ':'E','Ḝ':'E','Ê':'E','Ế':'E','Ệ':'E','Ề':'E','Ể':'E','Ễ':'E','Ḙ':'E','Ë':'E','Ė':'E','Ẹ':'E','Ȅ':'E','È':'E','Ẻ':'E','Ȇ':'E','Ē':'E','Ḗ':'E','Ḕ':'E','Ę':'E','Ɇ':'E','Ẽ':'E','Ḛ':'E','':'ET','Ḟ':'F','Ƒ':'F','Ǵ':'G','Ğ':'G','Ǧ':'G','Ģ':'G','Ĝ':'G','Ġ':'G','Ɠ':'G','Ḡ':'G','Ǥ':'G','Ḫ':'H','Ȟ':'H','Ḩ':'H','Ĥ':'H','Ⱨ':'H','Ḧ':'H','Ḣ':'H','Ḥ':'H','Ħ':'H','Í':'I','Ĭ':'I','Ǐ':'I','Î':'I','Ï':'I','Ḯ':'I','İ':'I','Ị':'I','Ȉ':'I','Ì':'I','Ỉ':'I','Ȋ':'I','Ī':'I','Į':'I','Ɨ':'I','Ĩ':'I','Ḭ':'I','Ꝺ':'D','Ꝼ':'F','Ᵹ':'G','Ꞃ':'R','Ꞅ':'S','Ꞇ':'T','Ꝭ':'IS','Ĵ':'J','Ɉ':'J','Ḱ':'K','Ǩ':'K','Ķ':'K','Ⱪ':'K','Ꝃ':'K','Ḳ':'K','Ƙ':'K','Ḵ':'K','Ꝁ':'K','Ꝅ':'K','Ĺ':'L','Ƚ':'L','Ľ':'L','Ļ':'L','Ḽ':'L','Ḷ':'L','Ḹ':'L','Ⱡ':'L','Ꝉ':'L','Ḻ':'L','Ŀ':'L','Ɫ':'L','Lj':'L','Ł':'L','LJ':'LJ','Ḿ':'M','Ṁ':'M','Ṃ':'M','Ɱ':'M','Ń':'N','Ň':'N','Ņ':'N','Ṋ':'N','Ṅ':'N','Ṇ':'N','Ǹ':'N','Ɲ':'N','Ṉ':'N','Ƞ':'N','Nj':'N','Ñ':'N','NJ':'NJ','ð':'d','Ð':'D','Ó':'O','Ŏ':'O','Ǒ':'O','Ô':'O','Ố':'O','Ộ':'O','Ồ':'O','Ổ':'O','Ỗ':'O','Ö':'O','Ȫ':'O','Ȯ':'O','Ȱ':'O','Ọ':'O','Ő':'O','Ȍ':'O','Ò':'O','Ỏ':'O','Ơ':'O','Ớ':'O','Ợ':'O','Ờ':'O','Ở':'O','Ỡ':'O','Ȏ':'O','Ꝋ':'O','Ꝍ':'O','Ō':'O','Ṓ':'O','Ṑ':'O','Ɵ':'O','Ǫ':'O','Ǭ':'O','Ø':'O','Ǿ':'O','Õ':'O','Ṍ':'O','Ṏ':'O','Ȭ':'O','Ƣ':'OI','Ꝏ':'OO','Ɛ':'E','Ɔ':'O','Ȣ':'OU','Ṕ':'P','Ṗ':'P','Ꝓ':'P','Ƥ':'P','Ꝕ':'P','Ᵽ':'P','Ꝑ':'P','Ꝙ':'Q','Ꝗ':'Q','Ŕ':'R','Ř':'R','Ŗ':'R','Ṙ':'R','Ṛ':'R','Ṝ':'R','Ȑ':'R','Ȓ':'R','Ṟ':'R','Ɍ':'R','Ɽ':'R','Ꜿ':'C','Ǝ':'E','ß':'ss','ẞ':'SS','Ś':'S','Ṥ':'S','Š':'S','Ṧ':'S','Ş':'S','Ŝ':'S','Ș':'S','Ṡ':'S','Ṣ':'S','Ṩ':'S','þ':'th','Þ':'TH','Ť':'T','Ţ':'T','Ṱ':'T','Ț':'T','Ⱦ':'T','Ṫ':'T','Ṭ':'T','Ƭ':'T','Ṯ':'T','Ʈ':'T','Ŧ':'T','Ɐ':'A','Ꞁ':'L','Ɯ':'M','Ʌ':'V','Ꜩ':'TZ','Ú':'U','Ŭ':'U','Ǔ':'U','Û':'U','Ṷ':'U','Ü':'U','Ǘ':'U','Ǚ':'U','Ǜ':'U','Ǖ':'U','Ṳ':'U','Ụ':'U','Ű':'U','Ȕ':'U','Ù':'U','Ủ':'U','Ư':'U','Ứ':'U','Ự':'U','Ừ':'U','Ử':'U','Ữ':'U','Ȗ':'U','Ū':'U','Ṻ':'U','Ų':'U','Ů':'U','Ũ':'U','Ṹ':'U','Ṵ':'U','Ꝟ':'V','Ṿ':'V','Ʋ':'V','Ṽ':'V','Ꝡ':'VY','Ẃ':'W','Ŵ':'W','Ẅ':'W','Ẇ':'W','Ẉ':'W','Ẁ':'W','Ⱳ':'W','Ẍ':'X','Ẋ':'X','Ý':'Y','Ŷ':'Y','Ÿ':'Y','Ẏ':'Y','Ỵ':'Y','Ỳ':'Y','Ƴ':'Y','Ỷ':'Y','Ỿ':'Y','Ȳ':'Y','Ɏ':'Y','Ỹ':'Y','Ź':'Z','Ž':'Z','Ẑ':'Z','Ⱬ':'Z','Ż':'Z','Ẓ':'Z','Ȥ':'Z','Ẕ':'Z','Ƶ':'Z','IJ':'IJ','Œ':'OE','ᴀ':'A','ᴁ':'AE','ʙ':'B','ᴃ':'B','':'C','ᴅ':'D','ᴇ':'E','ꜰ':'F','ɢ':'G','ʛ':'G','ʜ':'H','ɪ':'I','ʁ':'R','ᴊ':'J','ᴋ':'K','ʟ':'L','ᴌ':'L','ᴍ':'M','ɴ':'N','':'O','ɶ':'OE','ᴐ':'O','ᴕ':'OU','ᴘ':'P','ʀ':'R','ᴎ':'N','ᴙ':'R','':'S','ᴛ':'T','ⱻ':'E','ᴚ':'R','':'U','':'V','':'W','ʏ':'Y','':'Z','á':'a','ă':'a','ắ':'a','ặ':'a','ằ':'a','ẳ':'a','ẵ':'a','ǎ':'a','â':'a','ấ':'a','ậ':'a','ầ':'a','ẩ':'a','ẫ':'a','ä':'a','ǟ':'a','ȧ':'a','ǡ':'a','ạ':'a','ȁ':'a','à':'a','ả':'a','ȃ':'a','ā':'a','ą':'a','ᶏ':'a','ẚ':'a','å':'a','ǻ':'a','ḁ':'a','ⱥ':'a','ã':'a','ꜳ':'aa','æ':'ae','ǽ':'ae','ǣ':'ae','ꜵ':'ao','ꜷ':'au','ꜹ':'av','ꜻ':'av','ꜽ':'ay','ḃ':'b','ḅ':'b','ɓ':'b','ḇ':'b','ᵬ':'b','ᶀ':'b','ƀ':'b','ƃ':'b','ɵ':'o','ć':'c','č':'c','ç':'c','ḉ':'c','ĉ':'c','ɕ':'c','ċ':'c','ƈ':'c','ȼ':'c','ď':'d','ḑ':'d','ḓ':'d','ȡ':'d','ḋ':'d','ḍ':'d','ɗ':'d','ᶑ':'d','ḏ':'d','ᵭ':'d','ᶁ':'d','đ':'d','ɖ':'d','ƌ':'d','ı':'i','ȷ':'j','ɟ':'j','ʄ':'j','dz':'dz','dž':'dz','é':'e','ĕ':'e','ě':'e','ȩ':'e','ḝ':'e','ê':'e','ế':'e','ệ':'e','ề':'e','ể':'e','ễ':'e','ḙ':'e','ë':'e','ė':'e','ẹ':'e','ȅ':'e','è':'e','ẻ':'e','ȇ':'e','ē':'e','ḗ':'e','ḕ':'e','ⱸ':'e','ę':'e','ᶒ':'e','ɇ':'e','ẽ':'e','ḛ':'e','ꝫ':'et','ḟ':'f','ƒ':'f','ᵮ':'f','ᶂ':'f','ǵ':'g','ğ':'g','ǧ':'g','ģ':'g','ĝ':'g','ġ':'g','ɠ':'g','ḡ':'g','':'g','ǥ':'g','ḫ':'h','ȟ':'h','ḩ':'h','ĥ':'h','ⱨ':'h','ḧ':'h','ḣ':'h','ḥ':'h','ɦ':'h','ẖ':'h','ħ':'h','ƕ':'hv','í':'i','ĭ':'i','ǐ':'i','î':'i','ï':'i','ḯ':'i','ị':'i','ȉ':'i','ì':'i','ỉ':'i','ȋ':'i','ī':'i','į':'i','ᶖ':'i','ɨ':'i','ĩ':'i','ḭ':'i','ꝺ':'d','ꝼ':'f','ᵹ':'g','ꞃ':'r','ꞅ':'s','ꞇ':'t','ꝭ':'is','ǰ':'j','ĵ':'j','ʝ':'j','ɉ':'j','ḱ':'k','ǩ':'k','ķ':'k','ⱪ':'k','ꝃ':'k','ḳ':'k','ƙ':'k','ḵ':'k','ᶄ':'k','ꝁ':'k','ꝅ':'k','ĺ':'l','ƚ':'l','ɬ':'l','ľ':'l','ļ':'l','ḽ':'l','ȴ':'l','ḷ':'l','ḹ':'l','ⱡ':'l','ꝉ':'l','ḻ':'l','ŀ':'l','ɫ':'l','ᶅ':'l','ɭ':'l','ł':'l','lj':'lj','ſ':'s','ẜ':'s','ẛ':'s','':'s','ḿ':'m','ṁ':'m','ṃ':'m','ɱ':'m','ᵯ':'m','ᶆ':'m','ń':'n','ň':'n','ņ':'n','ṋ':'n','ȵ':'n','ṅ':'n','ṇ':'n','ǹ':'n','ɲ':'n','ṉ':'n','ƞ':'n','ᵰ':'n','ᶇ':'n','ɳ':'n','ñ':'n','nj':'nj','ó':'o','ŏ':'o','ǒ':'o','ô':'o','ố':'o','ộ':'o','ồ':'o','ổ':'o','ỗ':'o','ö':'o','ȫ':'o','ȯ':'o','ȱ':'o','ọ':'o','ő':'o','ȍ':'o','ò':'o','ỏ':'o','ơ':'o','ớ':'o','ợ':'o','ờ':'o','ở':'o','ỡ':'o','ȏ':'o','ꝋ':'o','ꝍ':'o','ⱺ':'o','ō':'o','ṓ':'o','ṑ':'o','ǫ':'o','ǭ':'o','ø':'o','ǿ':'o','õ':'o','ṍ':'o','ṏ':'o','ȭ':'o','ƣ':'oi','ꝏ':'oo','ɛ':'e','ᶓ':'e','ɔ':'o','ᶗ':'o','ȣ':'ou','ṕ':'p','ṗ':'p','ꝓ':'p','ƥ':'p','ᵱ':'p','ᶈ':'p','ꝕ':'p','ᵽ':'p','ꝑ':'p','ꝙ':'q','ʠ':'q','ɋ':'q','ꝗ':'q','ŕ':'r','ř':'r','ŗ':'r','ṙ':'r','ṛ':'r','ṝ':'r','ȑ':'r','ɾ':'r','ᵳ':'r','ȓ':'r','ṟ':'r','ɼ':'r','ᵲ':'r','ᶉ':'r','ɍ':'r','ɽ':'r','ↄ':'c','ꜿ':'c','ɘ':'e','ɿ':'r','ś':'s','ṥ':'s','š':'s','ṧ':'s','ş':'s','ŝ':'s','ș':'s','ṡ':'s','ṣ':'s','ṩ':'s','ʂ':'s','ᵴ':'s','ᶊ':'s','ȿ':'s','ɡ':'g','':'o','ᴓ':'o','ᴝ':'u','ť':'t','ţ':'t','ṱ':'t','ț':'t','ȶ':'t','ẗ':'t','ⱦ':'t','ṫ':'t','ṭ':'t','ƭ':'t','ṯ':'t','ᵵ':'t','ƫ':'t','ʈ':'t','ŧ':'t','ᵺ':'th','ɐ':'a','ᴂ':'ae','ǝ':'e','ᵷ':'g','ɥ':'h','ʮ':'h','ʯ':'h','ᴉ':'i','ʞ':'k','ꞁ':'l','ɯ':'m','ɰ':'m','ᴔ':'oe','ɹ':'r','ɻ':'r','ɺ':'r','ⱹ':'r','ʇ':'t','ʌ':'v','ʍ':'w','ʎ':'y','ꜩ':'tz','ú':'u','ŭ':'u','ǔ':'u','û':'u','ṷ':'u','ü':'u','ǘ':'u','ǚ':'u','ǜ':'u','ǖ':'u','ṳ':'u','ụ':'u','ű':'u','ȕ':'u','ù':'u','ủ':'u','ư':'u','ứ':'u','ự':'u','ừ':'u','ử':'u','ữ':'u','ȗ':'u','ū':'u','ṻ':'u','ų':'u','ᶙ':'u','ů':'u','ũ':'u','ṹ':'u','ṵ':'u','ᵫ':'ue','':'um','ⱴ':'v','ꝟ':'v','ṿ':'v','ʋ':'v','':'v','ⱱ':'v','ṽ':'v','ꝡ':'vy','ẃ':'w','ŵ':'w','ẅ':'w','ẇ':'w','ẉ':'w','ẁ':'w','ⱳ':'w','ẘ':'w','ẍ':'x','ẋ':'x','ᶍ':'x','ý':'y','ŷ':'y','ÿ':'y','ẏ':'y','ỵ':'y','ỳ':'y','ƴ':'y','ỷ':'y','ỿ':'y','ȳ':'y','ẙ':'y','ɏ':'y','ỹ':'y','ź':'z','ž':'z','ẑ':'z','ʑ':'z','ⱬ':'z','ż':'z','ẓ':'z','ȥ':'z','ẕ':'z','ᵶ':'z','ᶎ':'z','ʐ':'z','ƶ':'z','ɀ':'z','ff':'ff','ffi':'ffi','ffl':'ffl','fi':'fi','fl':'fl','ij':'ij','œ':'oe','st':'st','ₐ':'a','ₑ':'e','ᵢ':'i','ⱼ':'j','ₒ':'o','ᵣ':'r','ᵤ':'u','ᵥ':'v','ₓ':'x','Ё':'YO','Й':'I','Ц':'TS','У':'U','К':'K','Е':'E','Н':'N','Г':'G','Ш':'SH','Щ':'SCH','З':'Z','Х':'H','Ъ':'\\\\'','ё':'yo','й':'i','ц':'ts','у':'u','к':'k','е':'e','н':'n','г':'g','ш':'sh','щ':'sch','з':'z','х':'h','ъ':'\\\\'','Ф':'F','Ы':'I','В':'V','А':'a','П':'P','Р':'R','О':'O','Л':'L','Д':'D','Ж':'ZH','Э':'E','ф':'f','ы':'i','в':'v','а':'a','п':'p','р':'r','о':'o','л':'l','д':'d','ж':'zh','э':'e','Я':'Ya','Ч':'CH','С':'S','М':'M','И':'I','Т':'T','Ь':'\\\\'','Б':'B','Ю':'YU','я':'ya','ч':'ch','с':'s','м':'m','и':'i','т':'t','ь':'\\\\'','б':'b','ю':'yu','…':'...'},exports.transliterate=function(o){return o.replace(/[^A-Za-z0-9\\\\[\\\\] ]/g,function(o){return exports.transliterationPairs[o]||o})},exports.transliterateToSafeASCII=function(o){return o.replace(/[^\\\\x00-\\\\x7F]/g,function(o){return exports.transliterationPairs[o]||''})}}();\",\"type\":\"application/javascript\",\"module-type\":\"utils\"},\"$:/core/modules/utils/utils.js\":{\"text\":\"!function(){'use strict';var t=require('$:/core/modules/utils/base64-utf8/base64-utf8.module.js');exports.log=function(e,t){console.log($tw.node?exports.terminalColour(t)+e+exports.terminalColour():e)},exports.terminalColour=function(e){if(!$tw.browser&&$tw.node&&process.stdout.isTTY){if(!e)return'\\u001b[0m';e=exports.terminalColourLookup[e];if(e)return'\\u001b['+e+'m'}return''},exports.terminalColourLookup={black:'0;30',red:'0;31',green:'0;32','brown/orange':'0;33',blue:'0;34',purple:'0;35',cyan:'0;36','light gray':'0;37'},exports.warning=function(e){exports.log(e,'brown/orange')},exports.logTable=function(e){console.table?console.table(e):$tw.utils.each(e,function(e,t){console.log(t+': '+e)})},exports.getInt=function(e,t){e=parseInt(e,10);return isNaN(e)?t:e},exports.replaceString=function(e,t,n){return e.replace(t,function(){return n})},exports.repeat=function(e,t){for(var n='',r=0;r\u003Ct;r++)n+=e;return n},exports.startsWith=function(e,t){return e.substring(0,t.length)===t},exports.endsWith=function(e,t){return e.substring(e.length-t.length)===t},exports.trim=function(e){return'string'==typeof e?e.replace(/^\\\\s\\\\s*/,'').replace(/\\\\s\\\\s*$/,''):e},exports.trimPrefix=function(e,t){return'string'==typeof e&&'string'==typeof t?''===t?e.replace(/^\\\\s\\\\s*/,''):(t=t.replace(/[\\\\\\\\^$*+?.()|[\\\\]{}]/g,'\\\\\\\\$&'),t=new RegExp('^('+t+')+'),e.replace(t,'')):e},exports.trimSuffix=function(e,t){return'string'==typeof e&&'string'==typeof t?''===t?e.replace(/\\\\s\\\\s*$/,''):(t=t.replace(/[\\\\\\\\^$*+?.()|[\\\\]{}]/g,'\\\\\\\\$&'),t=new RegExp('('+t+')+$'),e.replace(t,'')):e},exports.toSentenceCase=function(e){return(e||'').replace(/^\\\\S/,function(e){return e.toUpperCase()})},exports.toTitleCase=function(e){return(e||'').replace(/(^|\\\\s)\\\\S/g,function(e){return e.toUpperCase()})},exports.findPrecedingLineBreak=function(e,t){t=e.lastIndexOf('\\\\n',t-1);return-1===t?t=0:'\\\\r'===e.charAt(++t)&&t++,t},exports.findFollowingLineBreak=function(e,t){t=e.indexOf('\\\\n',t);return-1===t?t=e.length:'\\\\r'===e.charAt(t)&&t++,t},exports.count=function(e){return Object.keys(e||{}).length},exports.hopArray=function(e,t){for(var n=0;n\u003Ct.length;n++)if($tw.utils.hop(e,t[n]))return!0;return!1},exports.removeArrayEntries=function(e,t){var n,r;if($tw.utils.isArray(t))for(n=0;n\u003Ct.length;n++)-1!==(r=e.indexOf(t[n]))&&e.splice(r,1);else-1!==(r=e.indexOf(t))&&e.splice(r,1);return e},exports.checkDependencies=function(n,e){var r=!1;return $tw.utils.each(e,function(e,t){$tw.utils.hop(n,t)&&(r=!0)}),r},exports.extend=function(n){return $tw.utils.each(Array.prototype.slice.call(arguments,1),function(e){if(e)for(var t in e)n[t]=e[t]}),n},exports.deepCopy=function(e){var t,n;if($tw.utils.isArray(e))t=e.slice(0);else if('object'==typeof e)for(n in t={},e)void 0!==e[n]&&(t[n]=$tw.utils.deepCopy(e[n]));else t=e;return t},exports.extendDeepCopy=function(e,t){var n,r=$tw.utils.deepCopy(e);for(n in t)void 0!==t[n]&&(r[n]=$tw.utils.deepCopy(t[n]));return r},exports.deepFreeze=function e(t){var n,r;if(t)for(r in Object.freeze(t),t)n=t[r],$tw.utils.hop(t,r)&&'object'==typeof n&&!Object.isFrozen(n)&&e(n)},exports.slowInSlowOut=function(e){return 1-(Math.cos(e*Math.PI)+1)/2},exports.formatTitleString=function(e,t){for(var n=t.base||'',r=t.separator||'',o=t.counter||'',i='',u=e,a=[[/^\\\\$basename\\\\$/i,function(){return n}],[/^\\\\$count:(\\\\d+)\\\\$/i,function(e){return $tw.utils.pad(o,e[1])}],[/^\\\\$separator\\\\$/i,function(){return r}],[/^\\\\$count\\\\$/i,function(){return o+''}]];u.length;){var s='';$tw.utils.each(a,function(e){var t=e[0].exec(u);if(t)return s=e[1].call(null,t),u=u.substr(t[0].length),!1}),s?i+=s:(i+=u.charAt(0),u=u.substr(1))}return i=i.replace(/\\\\\\\\(.)/g,'$1')},exports.formatDateString=function(n,e){var t='',r=e,o=[[/^TIMESTAMP/,function(){return n.getTime()}],[/^0hh12/,function(){return $tw.utils.pad($tw.utils.getHours12(n))}],[/^wYYYY/,function(){return $tw.utils.pad($tw.utils.getYearForWeekNo(n),4)}],[/^hh12/,function(){return $tw.utils.getHours12(n)}],[/^DDth/,function(){return n.getDate()+$tw.utils.getDaySuffix(n)}],[/^YYYY/,function(){return $tw.utils.pad(n.getFullYear(),4)}],[/^aYYYY/,function(){return $tw.utils.pad(Math.abs(n.getFullYear()),4)}],[/^\\\\{era:([^,\\\\|}]*)\\\\|([^}\\\\|]*)\\\\|([^}]*)\\\\}/,function(e){var t=n.getFullYear();return 0===t?e[2]:t\u003C0?e[1]:e[3]}],[/^0hh/,function(){return $tw.utils.pad(n.getHours())}],[/^0mm/,function(){return $tw.utils.pad(n.getMinutes())}],[/^0ss/,function(){return $tw.utils.pad(n.getSeconds())}],[/^0XXX/,function(){return $tw.utils.pad(n.getMilliseconds(),3)}],[/^0DD/,function(){return $tw.utils.pad(n.getDate())}],[/^0MM/,function(){return $tw.utils.pad(n.getMonth()+1)}],[/^0WW/,function(){return $tw.utils.pad($tw.utils.getWeek(n))}],[/^0ddddd/,function(){return $tw.utils.pad(Math.floor((n-new Date(n.getFullYear(),0,0))/1e3/60/60/24),3)}],[/^ddddd/,function(){return Math.floor((n-new Date(n.getFullYear(),0,0))/1e3/60/60/24)}],[/^dddd/,function(){return[7,1,2,3,4,5,6][n.getDay()]}],[/^ddd/,function(){return $tw.language.getString('Date/Short/Day/'+n.getDay())}],[/^mmm/,function(){return $tw.language.getString('Date/Short/Month/'+(n.getMonth()+1))}],[/^DDD/,function(){return $tw.language.getString('Date/Long/Day/'+n.getDay())}],[/^MMM/,function(){return $tw.language.getString('Date/Long/Month/'+(n.getMonth()+1))}],[/^TZD/,function(){var e=n.getTimezoneOffset(),t=Math.abs(e);return(e\u003C0?'+':'-')+$tw.utils.pad(Math.floor(t/60))+':'+$tw.utils.pad(t%60)}],[/^wYY/,function(){return $tw.utils.pad($tw.utils.getYearForWeekNo(n)-2e3)}],[/^[ap]m/,function(){return $tw.utils.getAmPm(n).toLowerCase()}],[/^hh/,function(){return n.getHours()}],[/^mm/,function(){return n.getMinutes()}],[/^ss/,function(){return n.getSeconds()}],[/^XXX/,function(){return n.getMilliseconds()}],[/^[AP]M/,function(){return $tw.utils.getAmPm(n).toUpperCase()}],[/^DD/,function(){return n.getDate()}],[/^MM/,function(){return n.getMonth()+1}],[/^WW/,function(){return $tw.utils.getWeek(n)}],[/^YY/,function(){return $tw.utils.pad(n.getFullYear()-2e3)}]];if(0==r.indexOf('[UTC]')){if('[UTC]YYYY0MM0DD0hh0mm0ssXXX'==r)return $tw.utils.stringifyDate(n||new Date);e=n.getTimezoneOffset();n=new Date(n.getTime()+60*e*1e3),r=r.substr(5)}for(;r.length;){var i='';$tw.utils.each(o,function(e){var t=e[0].exec(r);if(t)return i=e[1].call(null,t),r=r.substr(t[0].length),!1}),i?t+=i:(t+=r.charAt(0),r=r.substr(1))}return t=t.replace(/\\\\\\\\(.)/g,'$1')},exports.getAmPm=function(e){return $tw.language.getString('Date/Period/'+(12\u003C=e.getHours()?'pm':'am'))},exports.getDaySuffix=function(e){return $tw.language.getString('Date/DaySuffix/'+e.getDate())},exports.getWeek=function(e){var e=new Date(e.getTime()),t=e.getDay(),t=(0===t&&(t=7),e.setTime(e.getTime()+864e5*(4-t)),new Date(e.getFullYear(),0,1)),e=Math.floor((e.getTime()-t.getTime())/864e5);return Math.floor(e/7)+1},exports.getYearForWeekNo=function(e){var e=new Date(e.getTime()),t=e.getDay();return 0===t&&(t=7),e.setTime(e.getTime()+864e5*(4-t)),e.getFullYear()},exports.getHours12=function(e){e=e.getHours();return 12\u003Ce?e-12:0\u003Ce?e:12},exports.getRelativeDate=function(e){for(var t=!1,n=(e\u003C0&&(e*=-1,t=!0),[{name:'Years',duration:31536e6},{name:'Months',duration:2628e6},{name:'Days',duration:864e5},{name:'Hours',duration:36e5},{name:'Minutes',duration:6e4},{name:'Seconds',duration:1e3}]),r=0;r\u003Cn.length;r++){var o=Math.floor(e/n[r].duration);if(2\u003C=o)return{delta:e,description:$tw.language.getString('RelativeDate/'+(t?'Future':'Past')+'/'+n[r].name,{variables:{period:o.toString()}}),updatePeriod:n[r].duration}}return{delta:e,description:$tw.language.getString('RelativeDate/'+(t?'Future':'Past')+'/Second',{variables:{period:'1'}}),updatePeriod:1e3}},exports.htmlEncode=function(e){return e?e.toString().replace(/&/gm,'&amp;').replace(/\u003C/gm,'&lt;').replace(/>/gm,'&gt;').replace(/\\\\\\\"/gm,'&quot;'):''},exports.htmlTextEncode=function(e){return e?e.toString().replace(/&/gm,'&amp;').replace(/\u003C/gm,'&lt;').replace(/>/gm,'&gt;'):''},exports.entityDecode=function(e){var t,n=String.fromCodePoint||String.fromCharCode,r=e.substr(1,e.length-2);return'#'===r.charAt(0)?(t='x'===r.charAt(1)||'X'===r.charAt(1)?parseInt(r.substr(2),16):parseInt(r.substr(1),10),isNaN(t)?e:n(t)):(t=$tw.config.htmlEntities[r])?n(t):e},exports.unescapeLineBreaks=function(e){return e.replace(/\\\\\\\\n/gm,'\\\\n').replace(/\\\\\\\\b/gm,' ').replace(/\\\\\\\\s/gm,'\\\\\\\\').replace(/\\\\r/gm,'')},exports.escape=function(e){e=e.charCodeAt(0);return e\u003C=255?'\\\\\\\\x'+$tw.utils.pad(e.toString(16).toUpperCase()):'\\\\\\\\u'+$tw.utils.pad(e.toString(16).toUpperCase(),4)},exports.stringify=function(e,t){t=t?/[\\\\x00-\\\\x1f]/g:/[\\\\x00-\\\\x1f\\\\x80-\\\\uFFFF]/g;return(e||'').replace(/\\\\\\\\/g,'\\\\\\\\\\\\\\\\').replace(/\\\"/g,'\\\\\\\\\\\"').replace(/'/g,'\\\\\\\\\\\\'').replace(/\\\\r/g,'\\\\\\\\r').replace(/\\\\n/g,'\\\\\\\\n').replace(t,exports.escape)},exports.jsonStringify=function(e,t){t=t?/[\\\\x00-\\\\x1f]/g:/[\\\\x00-\\\\x1f\\\\x80-\\\\uFFFF]/g;return(e||'').replace(/\\\\\\\\/g,'\\\\\\\\\\\\\\\\').replace(/\\\"/g,'\\\\\\\\\\\"').replace(/\\\\r/g,'\\\\\\\\r').replace(/\\\\n/g,'\\\\\\\\n').replace(/\\\\x08/g,'\\\\\\\\b').replace(/\\\\x0c/g,'\\\\\\\\f').replace(/\\\\t/g,'\\\\\\\\t').replace(t,function(e){return'\\\\\\\\u'+$tw.utils.pad(e.charCodeAt(0).toString(16).toUpperCase(),4)})},exports.escapeRegExp=function(e){return e.replace(/[\\\\-\\\\/\\\\\\\\\\\\^\\\\$\\\\*\\\\+\\\\?\\\\.\\\\(\\\\)\\\\|\\\\[\\\\]\\\\{\\\\}]/g,'\\\\\\\\$&')},exports.isLinkExternal=function(e){return/^(?:file|http|https|mailto|ftp|irc|news|data|skype):[^\\\\s\u003C>{}\\\\[\\\\]`|\\\"\\\\\\\\^]+(?:\\\\/|\\\\b)/i.test(e)},exports.nextTick=function(e){'undefined'==typeof process?window.setTimeout(e,0):process.nextTick(e)},exports.unHyphenateCss=function(e){return e.replace(/-([a-z])/gi,function(e,t){return t.toUpperCase()})},exports.hyphenateCss=function(e){return e.replace(/([A-Z])/g,function(e,t){return'-'+t.toLowerCase()})},exports.parseTextReference=function(e){var t=/(?:(.*?)!!(.+))|(?:(.*?)##(.+))|(.*)/gm,n=t.exec(e),r={};return n&&t.lastIndex===e.length?(n[1]&&(r.title=n[1]),n[2]&&(r.field=n[2]),n[3]&&(r.title=n[3]),n[4]&&(r.index=n[4]),n[5]&&(r.title=n[5])):r.title=e,r},exports.isValidFieldName=function(e){return!(!e||'string'!=typeof e)&&e},exports.extractVersionInfo=function(){if($tw.packageInfo)return $tw.packageInfo.version;for(var e=document.getElementsByTagName('meta'),t=0;t\u003Ce.length;t++){var n=e[t];if('tiddlywiki-version'===n.name)return n.content}return null},exports.getAnimationDuration=function(){return parseInt($tw.wiki.getTiddlerText('$:/config/AnimationDuration','400'),10)||0},exports.hashString=function(e){return e.split('').reduce(function(e,t){return(e=(e\u003C\u003C5)-e+t.charCodeAt(0))&e},0)},exports.base64Decode=function(e){return t.base64.decode.call(t,e)},exports.base64Encode=function(e){return t.base64.encode.call(t,e)},exports.makeTiddlerDictionary=function(e){var t,n=[];for(t in e)n.push(t+': '+e[t]);return n.join('\\\\n')},exports.timer=function(e){var t;return t=$tw.node?1e3*(t=process.hrtime())[0]+t[1]/1e6:(window.performance?performance:Date).now(),void 0!==e&&(t-=e),t},exports.makeDataUri=function(e,t,n){t=t||'text/vnd.tiddlywiki';var r='base64'===($tw.config.contentTypeInfo[t]||$tw.config.contentTypeInfo['text/plain']).encoding,o=[];return n?o.push(n):(o.push('data:'),o.push(t),o.push(r?';base64':''),o.push(','),o.push(r?e:encodeURIComponent(e))),o.join('')},exports.tagToCssSelector=function(e){return'tc-tagged-'+encodeURIComponent(e).replace(/[!\\\"#$%&'()*+,\\\\-./:;\u003C=>?@[\\\\\\\\\\\\]^`{\\\\|}~,]/gm,function(e){return'\\\\\\\\'+e})},exports.sign=Math.sign||function(e){return 0===(e=+e)||isNaN(e)?e:0\u003Ce?1:-1},exports.strEndsWith=function(e,t,n){return e.endsWith?e.endsWith(t,n):(('number'!=typeof n||!isFinite(n)||Math.floor(n)!==n||n>e.length)&&(n=e.length),n-=t.length,-1!==(e=e.indexOf(t,n))&&e===n)},exports.getSystemInfo=function(e,t,n){function r(e,t){o.push(e+': '+t)}var o=[];return $tw.browser&&(r('User Agent',navigator.userAgent),r('Online Status',window.navigator.onLine)),$tw.node&&r('Node Version',process.version),o.join('\\\\n')},exports.parseNumber=function(e){return parseFloat(e)||0},exports.parseInt=function(e){return parseInt(e,10)||0},exports.stringifyNumber=function(e){return e+''},exports.makeCompareFunction=function(e,n){function r(e,t){return t\u003Ce?i:e\u003Ct?u:0}var o=!1!==(n=n||{}).isCaseSensitive,i=n.invert?-1:1,u=n.invert?1:-1,t={number:function(e,t){return r($tw.utils.parseNumber(e),$tw.utils.parseNumber(t))},integer:function(e,t){return r($tw.utils.parseInt(e),$tw.utils.parseInt(t))},string:function(e,t){return o||(e=e.toLowerCase(),t=t.toLowerCase()),r(''+e,''+t)},date:function(e,t){e=$tw.utils.parseDate(e),t=$tw.utils.parseDate(t);return isFinite(e)||(e=new Date(0)),isFinite(t)||(t=new Date(0)),r(e,t)},version:function(e,t){return $tw.utils.compareVersions(e,t)},alphanumeric:function(e,t){return o||(e=e.toLowerCase(),t=t.toLowerCase()),n.invert?t.localeCompare(e,void 0,{numeric:!0,sensitivity:'base'}):e.localeCompare(t,void 0,{numeric:!0,sensitivity:'base'})}};return t[e]||t[n.defaultType]||t.number}}();\",\"type\":\"application/javascript\",\"module-type\":\"utils\"},\"$:/core/modules/widgets/action-confirm.js\":{\"text\":\"!function(){'use strict';function t(t,e){this.initialise(t,e)}var e=require('$:/core/modules/widgets/widget.js').widget;(t.prototype=new e).render=function(t,e){this.computeAttributes(),this.execute(),this.parentDomNode=t,this.renderChildren(t,e)},t.prototype.execute=function(){this.message=this.getAttribute('$message',$tw.language.getString('ConfirmAction')),this.prompt='no'!=this.getAttribute('$prompt','yes'),this.makeChildWidgets()},t.prototype.refresh=function(t){var e=this.computeAttributes();return e.$message||e.$prompt?(this.refreshSelf(),!0):this.refreshChildren(t)},t.prototype.invokeAction=function(t,e){var i=!0,r=!0,o=e&&e.event&&e.event.view?e.event.view:window;return r=(i=this.prompt?o.confirm(this.message):i)?this.invokeActions(t,e):r},t.prototype.allowActionPropagation=function(){return!1},exports['action-confirm']=t}();\",\"type\":\"application/javascript\",\"module-type\":\"widget\"},\"$:/core/modules/widgets/action-createtiddler.js\":{\"text\":\"!function(){'use strict';function t(t,e){this.initialise(t,e)}var e=require('$:/core/modules/widgets/widget.js').widget;(t.prototype=new e).render=function(t,e){this.parentDomNode=t,this.computeAttributes(),this.execute(),this.renderChildren(t,e)},t.prototype.execute=function(){this.actionBaseTitle=this.getAttribute('$basetitle'),this.hasBase=!!this.actionBaseTitle,this.actionSaveTitle=this.getAttribute('$savetitle'),this.actionSaveDraftTitle=this.getAttribute('$savedrafttitle'),this.actionTimestamp='yes'===this.getAttribute('$timestamp','yes'),this.actionTemplate=this.getAttribute('$template'),this.useTemplate=!!this.actionTemplate,this.actionOverwrite=this.getAttribute('$overwrite','no'),this.makeChildWidgets()},t.prototype.refresh=function(t){var e=this.computeAttributes();return 0\u003C$tw.utils.count(e)?(this.refreshSelf(),!0):this.refreshChildren(t)},t.prototype.invokeAction=function(t,e){var i,s,a=this.wiki.getTiddlerText('$:/language/DefaultNewTiddlerTitle'),r={},h=($tw.utils.each(this.attributes,function(t,e){'$'!==e.charAt(0)&&(r[e]=t)}),this.actionTimestamp&&(i=this.wiki.getCreationFields(),s=this.wiki.getModificationFields()),this.hasBase&&'no'===this.actionOverwrite?a=this.wiki.generateNewTitle(this.actionBaseTitle):this.hasBase&&'yes'===this.actionOverwrite&&(a=this.actionBaseTitle),!this.hasBase&&this.useTemplate?a=this.wiki.generateNewTitle(this.actionTemplate):this.hasBase||this.useTemplate||(a=this.wiki.generateNewTitle(a)),this.wiki.getTiddler(this.actionTemplate)||{}),h=(this.wiki.addTiddler(new $tw.Tiddler(h.fields,i,r,s,{title:a})),this.wiki.generateDraftTitle(a));return this.actionSaveTitle&&this.wiki.setTextReference(this.actionSaveTitle,a,this.getVariable('currentTiddler')),this.actionSaveDraftTitle&&this.wiki.setTextReference(this.actionSaveDraftTitle,h,this.getVariable('currentTiddler')),this.setVariable('createTiddler-title',a),this.setVariable('createTiddler-draftTitle',h),this.refreshChildren(),!0},exports['action-createtiddler']=t}();\",\"type\":\"application/javascript\",\"module-type\":\"widget\"},\"$:/core/modules/widgets/action-deletefield.js\":{\"text\":\"!function(){'use strict';function t(t,i){this.initialise(t,i)}var i=require('$:/core/modules/widgets/widget.js').widget;(t.prototype=new i).render=function(t,i){this.computeAttributes(),this.execute()},t.prototype.execute=function(){this.actionTiddler=this.getAttribute('$tiddler',this.getVariable('currentTiddler')),this.actionField=this.getAttribute('$field',null)},t.prototype.refresh=function(t){return this.computeAttributes().$tiddler?(this.refreshSelf(),!0):this.refreshChildren(t)},t.prototype.invokeAction=function(t,i){var e=this.wiki.getTiddler(this.actionTiddler),r={},d=!1;return null!==this.actionField&&e&&(r[this.actionField]=void 0,this.actionField in e.fields)&&(d=!0),e&&($tw.utils.each(this.attributes,function(t,i){'$'!==i.charAt(0)&&'title'!==i&&(d=!(r[i]=void 0))}),d)&&this.wiki.addTiddler(new $tw.Tiddler(this.wiki.getCreationFields(),e,r,this.wiki.getModificationFields())),!0},exports['action-deletefield']=t}();\",\"type\":\"application/javascript\",\"module-type\":\"widget\"},\"$:/core/modules/widgets/action-deletetiddler.js\":{\"text\":\"!function(){'use strict';function t(t,i){this.initialise(t,i)}var i=require('$:/core/modules/widgets/widget.js').widget;(t.prototype=new i).render=function(t,i){this.computeAttributes(),this.execute()},t.prototype.execute=function(){this.actionFilter=this.getAttribute('$filter'),this.actionTiddler=this.getAttribute('$tiddler')},t.prototype.refresh=function(t){var i=this.computeAttributes();return i.$filter||i.$tiddler?(this.refreshSelf(),!0):this.refreshChildren(t)},t.prototype.invokeAction=function(t,i){var e=[];this.actionFilter&&(e=this.wiki.filterTiddlers(this.actionFilter,this)),this.actionTiddler&&e.push(this.actionTiddler);for(var r=0;r\u003Ce.length;r++)this.wiki.deleteTiddler(e[r]);return!0},exports['action-deletetiddler']=t}();\",\"type\":\"application/javascript\",\"module-type\":\"widget\"},\"$:/core/modules/widgets/action-listops.js\":{\"text\":\"!function(){'use strict';function t(t,i){this.initialise(t,i)}var i=require('$:/core/modules/widgets/widget.js').widget;(t.prototype=new i).render=function(t,i){this.computeAttributes(),this.execute()},t.prototype.execute=function(){this.target=this.getAttribute('$tiddler',this.getVariable('currentTiddler')),this.filter=this.getAttribute('$filter'),this.subfilter=this.getAttribute('$subfilter'),this.listField=this.getAttribute('$field','list'),this.listIndex=this.getAttribute('$index'),this.filtertags=this.getAttribute('$tags')},t.prototype.refresh=function(t){var i=this.computeAttributes();return 0\u003C$tw.utils.count(i)?(this.refreshSelf(),!0):this.refreshChildren(t)},t.prototype.invokeAction=function(t,i){var s,e,r,h=this.listField;this.listField;return this.listIndex&&(h=void 0,s=this.listIndex,this.listIndex),this.filter&&this.wiki.setText(this.target,h,s,$tw.utils.stringifyList(this.wiki.filterTiddlers(this.filter,this))),this.subfilter&&(r=this.wiki.getTiddlerList(this.target,h,s),e='[all[]] '+this.subfilter,this.wiki.setText(this.target,h,s,$tw.utils.stringifyList(this.wiki.filterTiddlers(e,this,this.wiki.makeTiddlerIterator(r))))),this.filtertags&&(s=(h=this.wiki.getTiddler(this.target))?(h.fields.tags||[]).slice(0):[],e=$tw.utils.stringifyList(s)+' '+this.filtertags,r=this.wiki.filterTiddlers(e,this),$tw.utils.stringifyList(s.sort())!==$tw.utils.stringifyList(r.sort()))&&this.wiki.setText(this.target,'tags',void 0,$tw.utils.stringifyList(r)),!0},exports['action-listops']=t}();\",\"type\":\"application/javascript\",\"module-type\":\"widget\"},\"$:/core/modules/widgets/action-log.js\":{\"text\":\"!function(){'use strict';function t(t,e){this.initialise(t,e)}var e=require('$:/core/modules/widgets/widget.js').widget;(t.prototype=new e).render=function(t,e){this.computeAttributes(),this.execute()},t.prototype.execute=function(){this.message=this.getAttribute('$$message','debug'),this.logAll='yes'===this.getAttribute('$$all','no'),this.filter=this.getAttribute('$$filter')},t.prototype.refresh=function(t){return this.refreshSelf(),!0},t.prototype.invokeAction=function(t,e){return this.log(),!0},t.prototype.log=function(){var t,e,i={},s={};for(e in $tw.utils.each(this.attributes,function(t,e){'$$'!==e.substring(0,2)&&(i[e]=t)}),this.variables)s[e]=this.getVariable(e,{defaultValue:''});this.filter&&(t=this.wiki.compileFilter(this.filter).call(this.wiki,this.wiki.makeTiddlerIterator(s)),$tw.utils.each(t,function(t){i[t]=s[t]})),t=$tw.utils.count(i),console.group(this.message),0\u003Ct&&$tw.utils.logTable(i),!this.logAll&&t||(console.groupCollapsed('All variables'),$tw.utils.logTable(s),console.groupEnd()),console.groupEnd()},exports['action-log']=t}();\",\"type\":\"application/javascript\",\"module-type\":\"widget\"},\"$:/core/modules/widgets/action-navigate.js\":{\"text\":\"!function(){'use strict';function t(t,e){this.initialise(t,e)}var e=require('$:/core/modules/widgets/widget.js').widget;(t.prototype=new e).render=function(t,e){this.computeAttributes(),this.execute()},t.prototype.execute=function(){this.actionTo=this.getAttribute('$to'),this.actionScroll=this.getAttribute('$scroll')},t.prototype.refresh=function(t){var e=this.computeAttributes();return e.$to||e.$scroll?(this.refreshSelf(),!0):this.refreshChildren(t)},t.prototype.invokeAction=function(t,e){e=e||{};var i=t&&t.getBoundingClientRect&&t.getBoundingClientRect(),o=e.metaKey||e.ctrlKey||1===e.button;return'yes'===this.actionScroll?o=!1:'no'===this.actionScroll&&(o=!0),this.dispatchEvent({type:'tm-navigate',navigateTo:void 0===this.actionTo?this.getVariable('currentTiddler'):this.actionTo,navigateFromTitle:this.getVariable('storyTiddler'),navigateFromNode:t,navigateFromClientRect:i&&{top:i.top,left:i.left,width:i.width,right:i.right,bottom:i.bottom,height:i.height},navigateFromClientTop:i&&i.top,navigateFromClientLeft:i&&i.left,navigateFromClientWidth:i&&i.width,navigateFromClientRight:i&&i.right,navigateFromClientBottom:i&&i.bottom,navigateFromClientHeight:i&&i.height,navigateSuppressNavigation:o,metaKey:e.metaKey,ctrlKey:e.ctrlKey,altKey:e.altKey,shiftKey:e.shiftKey,event:e}),!0},exports['action-navigate']=t}();\",\"type\":\"application/javascript\",\"module-type\":\"widget\"},\"$:/core/modules/widgets/action-popup.js\":{\"text\":\"!function(){'use strict';function t(t,e){this.initialise(t,e)}var e=require('$:/core/modules/widgets/widget.js').widget,o=require('$:/core/modules/utils/dom/popup.js');(t.prototype=new e).render=function(t,e){this.computeAttributes(),this.execute()},t.prototype.execute=function(){this.actionState=this.getAttribute('$state'),this.actionCoords=this.getAttribute('$coords'),this.floating='yes'===this.getAttribute('$floating','no')},t.prototype.refresh=function(t){var e=this.computeAttributes();return e.$state||e.$coords?(this.refreshSelf(),!0):this.refreshChildren(t)},t.prototype.invokeAction=function(t,e){var i=o.parseCoordinates(this.actionCoords||'');return i?$tw.popup.triggerPopup({domNode:null,domNodeRect:{left:i.left,top:i.top,width:i.width,height:i.height},title:this.actionState,wiki:this.wiki,floating:this.floating,absolute:i.absolute}):$tw.popup.cancel(0),!0},exports['action-popup']=t}();\",\"type\":\"application/javascript\",\"module-type\":\"widget\"},\"$:/core/modules/widgets/action-sendmessage.js\":{\"text\":\"!function(){'use strict';function t(t,e){this.initialise(t,e)}var e=require('$:/core/modules/widgets/widget.js').widget;(t.prototype=new e).render=function(t,e){this.computeAttributes(),this.execute()},t.prototype.execute=function(){this.actionMessage=this.getAttribute('$message'),this.actionParam=this.getAttribute('$param'),this.actionName=this.getAttribute('$name'),this.actionValue=this.getAttribute('$value',''),this.actionNames=this.getAttribute('$names'),this.actionValues=this.getAttribute('$values')},t.prototype.refresh=function(t){var e=this.computeAttributes();return Object.keys(e).length?(this.refreshSelf(),!0):this.refreshChildren(t)},t.prototype.invokeAction=function(t,e){var i,s=this.actionParam,a=Object.create(null),r=(this.actionNames&&this.actionValues&&(r=this.wiki.filterTiddlers(this.actionNames,this),i=this.wiki.filterTiddlers(this.actionValues,this),$tw.utils.each(r,function(t,e){a[t]=i[e]||''})),$tw.utils.each(this.attributes,function(t,e){'$'!==e.charAt(0)&&(a[e]=t)}),this.actionName&&(a[this.actionName]=this.actionValue),{type:this.actionMessage,param:s,paramObject:a,event:e,tiddlerTitle:this.getVariable('currentTiddler'),navigateFromTitle:this.getVariable('storyTiddler')});return this.dispatchEvent(r),!0},exports['action-sendmessage']=t}();\",\"type\":\"application/javascript\",\"module-type\":\"widget\"},\"$:/core/modules/widgets/action-setfield.js\":{\"text\":\"!function(){'use strict';function t(t,i){this.initialise(t,i)}var i=require('$:/core/modules/widgets/widget.js').widget;(t.prototype=new i).render=function(t,i){this.computeAttributes(),this.execute()},t.prototype.execute=function(){this.actionTiddler=this.getAttribute('$tiddler')||!this.hasParseTreeNodeAttribute('$tiddler')&&this.getVariable('currentTiddler'),this.actionField=this.getAttribute('$field'),this.actionIndex=this.getAttribute('$index'),this.actionValue=this.getAttribute('$value'),this.actionTimestamp='yes'===this.getAttribute('$timestamp','yes')},t.prototype.refresh=function(t){return this.refreshChildren(t)},t.prototype.invokeAction=function(t,i){var e=this,s={};return this.actionTiddler&&(s.suppressTimestamp=!this.actionTimestamp,'string'!=typeof this.actionField&&'string'!=typeof this.actionIndex&&'string'!=typeof this.actionValue||this.wiki.setText(this.actionTiddler,this.actionField,this.actionIndex,this.actionValue,s),$tw.utils.each(this.attributes,function(t,i){'$'!==i.charAt(0)&&e.wiki.setText(e.actionTiddler,i,void 0,t,s)})),!0},exports['action-setfield']=t}();\",\"type\":\"application/javascript\",\"module-type\":\"widget\"},\"$:/core/modules/widgets/action-setmultiplefields.js\":{\"text\":\"!function(){'use strict';function i(i,t){this.initialise(i,t)}var t=require('$:/core/modules/widgets/widget.js').widget;(i.prototype=new t).render=function(i,t){this.computeAttributes(),this.execute()},i.prototype.execute=function(){this.actionTiddler=this.getAttribute('$tiddler',this.getVariable('currentTiddler')),this.actionFields=this.getAttribute('$fields'),this.actionIndexes=this.getAttribute('$indexes'),this.actionValues=this.getAttribute('$values'),this.actionTimestamp='yes'===this.getAttribute('$timestamp','yes')},i.prototype.refresh=function(i){var t=this.computeAttributes();return t.$tiddler||t.$fields||t.$indexes||t.$values||t.$timestamp?(this.refreshSelf(),!0):this.refreshChildren(i)},i.prototype.invokeAction=function(i,t){var e,s,r,d,n,h=this.wiki.getTiddler(this.actionTiddler),o=this.wiki.filterTiddlers(this.actionValues,this);return this.actionFields?(e={},s=this.wiki.filterTiddlers(this.actionFields,this),$tw.utils.each(s,function(i,t){e[i]=o[t]||''}),r=this.actionTimestamp?this.wiki.getCreationFields():void 0,d=this.actionTimestamp?this.wiki.getModificationFields():void 0,this.wiki.addTiddler(new $tw.Tiddler(r,h,{title:this.actionTiddler},d,e))):this.actionIndexes&&(n=this.wiki.getTiddlerData(this.actionTiddler,Object.create(null)),s=this.wiki.filterTiddlers(this.actionIndexes,this),$tw.utils.each(s,function(i,t){n[i]=o[t]||''}),this.wiki.setTiddlerData(this.actionTiddler,n,{},{suppressTimestamp:!this.actionTimestamp})),!0},exports['action-setmultiplefields']=i}();\",\"type\":\"application/javascript\",\"module-type\":\"widget\"},\"$:/core/modules/widgets/browse.js\":{\"text\":\"!function(){'use strict';function t(t,e){this.initialise(t,e)}var e=require('$:/core/modules/widgets/widget.js').widget;(t.prototype=new e).render=function(t,e){var i=this,s=(this.parentDomNode=t,this.computeAttributes(),this.execute(),this.document.createElement('input'));s.setAttribute('type','file'),this.browseMultiple&&s.setAttribute('multiple','multiple'),this.tooltip&&s.setAttribute('title',this.tooltip),this.nwsaveas&&s.setAttribute('nwsaveas',this.nwsaveas),this.accept&&s.setAttribute('accept',this.accept),this.webkitdirectory&&s.setAttribute('webkitdirectory',this.webkitdirectory),this.nwdirectory&&s.setAttribute('nwdirectory',this.nwdirectory),s.addEventListener('change',function(t){return i.message?i.dispatchEvent({type:i.message,param:i.param,files:t.target.files}):i.wiki.readFiles(t.target.files,{callback:function(t){i.dispatchEvent({type:'tm-import-tiddlers',param:JSON.stringify(t)})},deserializer:i.deserializer}),!1},!1),t.insertBefore(s,e),this.renderChildren(s,null),this.domNodes.push(s)},t.prototype.execute=function(){this.browseMultiple=this.getAttribute('multiple'),this.deserializer=this.getAttribute('deserializer'),this.message=this.getAttribute('message'),this.param=this.getAttribute('param'),this.tooltip=this.getAttribute('tooltip'),this.nwsaveas=this.getAttribute('nwsaveas'),this.accept=this.getAttribute('accept'),this.webkitdirectory=this.getAttribute('webkitdirectory'),this.nwdirectory=this.getAttribute('nwdirectory')},t.prototype.refresh=function(t){return!1},exports.browse=t}();\",\"type\":\"application/javascript\",\"module-type\":\"widget\"},\"$:/core/modules/widgets/button.js\":{\"text\":\"!function(){'use strict';function t(t,e){this.initialise(t,e)}var e=require('$:/core/modules/widgets/widget.js').widget,i=require('$:/core/modules/utils/dom/popup.js');(t.prototype=new e).render=function(t,e){var s=this,i='button',o=(this.parentDomNode=t,this.computeAttributes(),this.execute(),this.buttonTag&&-1===$tw.config.htmlUnsafeElements.indexOf(this.buttonTag)&&(i=this.buttonTag),i=this.document.createElement(i),this.domNode=i,this.class.split(' ')||[]),r=(this.popup||this.popupTitle)&&this.isPoppedUp();this.selectedClass&&((this.set||this.setTitle)&&this.setTo&&this.isSelected()&&($tw.utils.pushTop(o,this.selectedClass.split(' ')),i.setAttribute('aria-checked','true')),r)&&$tw.utils.pushTop(o,this.selectedClass.split(' ')),r&&$tw.utils.pushTop(o,'tc-popup-handle'),i.className=o.join(' '),this.style&&i.setAttribute('style',this.style),this.tooltip&&i.setAttribute('title',this.tooltip),this['aria-label']&&i.setAttribute('aria-label',this['aria-label']),this.role&&i.setAttribute('role',this.role),(this.popup||this.popupTitle)&&i.setAttribute('aria-expanded',r?'true':'false'),this.tabIndex&&i.setAttribute('tabindex',this.tabIndex),'yes'===this.isDisabled&&i.setAttribute('disabled',!0),i.addEventListener('click',function(t){var e,i=!1;return s.invokeActions(s,t)&&(i=!0),s.to&&(s.navigateTo(t),i=!0),s.message&&(s.dispatchMessage(t),i=!0),(s.popup||s.popupTitle)&&(s.triggerPopup(t),i=!0),(s.set||s.setTitle)&&(s.setTiddler(),i=!0),s.actions&&(e=$tw.keyboardManager.getEventModifierKeyDescriptor(t),s.invokeActionString(s.actions,s,t,{modifier:e})),i&&(t.preventDefault(),t.stopPropagation()),i},!1),(this.dragTiddler||this.dragFilter)&&$tw.utils.makeDraggable({domNode:i,dragTiddlerFn:function(){return s.dragTiddler},dragFilterFn:function(){return s.dragFilter},widget:this}),t.insertBefore(i,e),this.renderChildren(i,null),this.domNodes.push(i)},t.prototype.allowActionPropagation=function(){return!1},t.prototype.getBoundingClientRect=function(){return this.domNodes[0].getBoundingClientRect()},t.prototype.isSelected=function(){return this.setTitle?(this.setField?this.wiki.getTiddler(this.setTitle).getFieldString(this.setField)===this.setTo:this.setIndex?this.wiki.extractTiddlerDataItem(this.setTitle,this.setIndex)===this.setTo:this.wiki.getTiddlerText(this.setTitle))||this.defaultSetValue||this.getVariable('currentTiddler'):this.wiki.getTextReference(this.set,this.defaultSetValue,this.getVariable('currentTiddler'))===this.setTo},t.prototype.isPoppedUp=function(){var t=this.popupTitle?this.wiki.getTiddler(this.popupTitle):this.wiki.getTiddler(this.popup);return!(!t||!t.fields.text)&&i.readPopupState(t.fields.text)},t.prototype.navigateTo=function(t){var e=this.getBoundingClientRect();this.dispatchEvent({type:'tm-navigate',navigateTo:this.to,navigateFromTitle:this.getVariable('storyTiddler'),navigateFromNode:this,navigateFromClientRect:{top:e.top,left:e.left,width:e.width,right:e.right,bottom:e.bottom,height:e.height},navigateSuppressNavigation:t.metaKey||t.ctrlKey||1===t.button,event:t})},t.prototype.dispatchMessage=function(t){this.dispatchEvent({type:this.message,param:this.param,tiddlerTitle:this.getVariable('currentTiddler'),event:t})},t.prototype.triggerPopup=function(t){this.popupTitle?$tw.popup.triggerPopup({domNode:this.domNodes[0],absolute:'yes'===this.popupAbsCoords,title:this.popupTitle,wiki:this.wiki,noStateReference:!0}):$tw.popup.triggerPopup({domNode:this.domNodes[0],absolute:'yes'===this.popupAbsCoords,title:this.popup,wiki:this.wiki})},t.prototype.setTiddler=function(){this.setTitle?this.setField?this.wiki.setText(this.setTitle,this.setField,void 0,this.setTo):this.setIndex?this.wiki.setText(this.setTitle,void 0,this.setIndex,this.setTo):this.wiki.setText(this.setTitle,'text',void 0,this.setTo):this.wiki.setTextReference(this.set,this.setTo,this.getVariable('currentTiddler'))},t.prototype.execute=function(){this.actions=this.getAttribute('actions'),this.to=this.getAttribute('to'),this.message=this.getAttribute('message'),this.param=this.getAttribute('param'),this.set=this.getAttribute('set'),this.setTo=this.getAttribute('setTo'),this.popup=this.getAttribute('popup'),this.hover=this.getAttribute('hover'),this['aria-label']=this.getAttribute('aria-label'),this.role=this.getAttribute('role'),this.tooltip=this.getAttribute('tooltip'),this.style=this.getAttribute('style'),this.class=this.getAttribute('class',''),this.selectedClass=this.getAttribute('selectedClass'),this.defaultSetValue=this.getAttribute('default',''),this.buttonTag=this.getAttribute('tag'),this.dragTiddler=this.getAttribute('dragTiddler'),this.dragFilter=this.getAttribute('dragFilter'),this.setTitle=this.getAttribute('setTitle'),this.setField=this.getAttribute('setField'),this.setIndex=this.getAttribute('setIndex'),this.popupTitle=this.getAttribute('popupTitle'),this.popupAbsCoords=this.getAttribute('popupAbsCoords','no'),this.tabIndex=this.getAttribute('tabindex'),this.isDisabled=this.getAttribute('disabled','no'),this.makeChildWidgets()},t.prototype.updateDomNodeClasses=function(){var t,e=this.domNode.className.split(' '),i=this.class.split(' ');this.class=this.getAttribute('class',''),t=this.class.split(' '),$tw.utils.each(i,function(t){t=e.indexOf(t);-1!==t&&e.splice(t,1)}),$tw.utils.pushTop(e,t),this.domNode.className=e.join(' ')},t.prototype.refresh=function(t){var e=this.computeAttributes();return e.actions||e.to||e.message||e.param||e.set||e.setTo||e.popup||e.hover||e.selectedClass||e.style||e.dragFilter||e.dragTiddler||this.set&&t[this.set]||this.popup&&t[this.popup]||this.popupTitle&&t[this.popupTitle]||e.popupAbsCoords||e.setTitle||e.setField||e.setIndex||e.popupTitle||e.disabled||e.default?(this.refreshSelf(),!0):(e.class&&this.updateDomNodeClasses(),this.refreshChildren(t))},exports.button=t}();\",\"type\":\"application/javascript\",\"module-type\":\"widget\"},\"$:/core/modules/widgets/checkbox.js\":{\"text\":\"!function(){'use strict';function e(e,t){this.initialise(e,t)}var t=require('$:/core/modules/widgets/widget.js').widget;(e.prototype=new t).render=function(e,t){var i;this.parentDomNode=e,this.computeAttributes(),this.execute(),this.labelDomNode=this.document.createElement('label'),this.labelDomNode.setAttribute('class','tc-checkbox '+this.checkboxClass),this.inputDomNode=this.document.createElement('input'),this.inputDomNode.setAttribute('type','checkbox'),(i=this.getValue())&&(this.inputDomNode.setAttribute('checked','true'),$tw.utils.addClass(this.labelDomNode,'tc-checkbox-checked')),void 0===i&&'yes'===this.checkboxIndeterminate&&(this.inputDomNode.indeterminate=!0),'yes'===this.isDisabled&&this.inputDomNode.setAttribute('disabled',!0),this.labelDomNode.appendChild(this.inputDomNode),this.spanDomNode=this.document.createElement('span'),this.labelDomNode.appendChild(this.spanDomNode),$tw.utils.addEventListeners(this.inputDomNode,[{name:'change',handlerObject:this,handlerMethod:'handleChangeEvent'}]),e.insertBefore(this.labelDomNode,t),this.renderChildren(this.spanDomNode,null),this.domNodes.push(this.labelDomNode)},e.prototype.getValue=function(){var e=this.wiki.getTiddler(this.checkboxTitle);if(e||this.checkboxFilter){if(e&&this.checkboxTag)return'yes'===this.checkboxInvertTag?!e.hasTag(this.checkboxTag):e.hasTag(this.checkboxTag);if(e&&(this.checkboxField||this.checkboxIndex)){var t=this.checkboxField?$tw.utils.hop(e.fields,this.checkboxField)?e.fields[this.checkboxField]||'':this.checkboxDefault||'':this.wiki.extractTiddlerDataItem(e,this.checkboxIndex,this.checkboxDefault||'');if(t===this.checkboxChecked)return!0;if(t===this.checkboxUnchecked)return!1;if(this.checkboxChecked&&!this.checkboxUnchecked)return!1;if(this.checkboxUnchecked&&!this.checkboxChecked)return!0;if(this.checkboxChecked&&this.checkboxUnchecked)return'yes'===this.checkboxIndeterminate&&void 0}if(this.checkboxListField||this.checkboxListIndex||this.checkboxFilter)return-1!==(t=this.checkboxListField?$tw.utils.hop(e.fields,this.checkboxListField)?e.getFieldList(this.checkboxListField):$tw.utils.parseStringArray(this.checkboxDefault||'')||[]:this.checkboxListIndex?$tw.utils.parseStringArray(this.wiki.extractTiddlerDataItem(e,this.checkboxListIndex,this.checkboxDefault||''))||[]:this.wiki.filterTiddlers(this.checkboxFilter,this)||[]).indexOf(this.checkboxChecked)||-1===t.indexOf(this.checkboxUnchecked)&&!(this.checkboxChecked&&!this.checkboxUnchecked)&&(!(!this.checkboxUnchecked||this.checkboxChecked)||(this.checkboxChecked&&this.checkboxUnchecked?'yes'===this.checkboxIndeterminate&&void 0:!!t.length))}else{if(this.checkboxTag)return!1;if(this.checkboxField){if(this.checkboxDefault===this.checkboxChecked)return!0;if(this.checkboxDefault===this.checkboxUnchecked);}}return!1},e.prototype.handleChangeEvent=function(e){var t,i=this.inputDomNode.checked,h=this.wiki.getTiddler(this.checkboxTitle),c={title:this.checkboxTitle},s=!1,o=!1,d=h&&h.hasTag(this.checkboxTag),k=i?this.checkboxChecked:this.checkboxUnchecked,n=i?this.checkboxUnchecked:this.checkboxChecked,o=this.checkboxTag&&'yes'===this.checkboxInvertTag?d===i:d!==i;!this.checkboxTag||h&&!o||(c.tags=h?(h.fields.tags||[]).slice(0):[],-1!==(d=c.tags.indexOf(this.checkboxTag))&&c.tags.splice(d,1),('yes'===this.checkboxInvertTag&&!i||'yes'!==this.checkboxInvertTag&&i)&&c.tags.push(this.checkboxTag),s=!0),!this.checkboxField||h&&h.fields[this.checkboxField]===k||(c[this.checkboxField]=k,s=!0),this.checkboxIndex&&(o=this.wiki.extractTiddlerDataItem(this.checkboxTitle,this.checkboxIndex),h&&o===k||(s=!0)),(this.checkboxListField||this.checkboxListIndex)&&(d=this.checkboxListField?h?h.fields[this.checkboxListField]:void 0:this.wiki.extractTiddlerDataItem(this.checkboxTitle,this.checkboxListIndex),t=$tw.utils.isArray(d)?d.slice(0):$tw.utils.parseStringArray(d)||[],o=n?t.indexOf(n):-1,d=k?t.indexOf(k):-1,-1===o&&-1!==d||(-1===o?k&&(t.push(k),s=!0):s=(-1===d&&k?t[o]=k:t.splice(o,1),!0)),this.checkboxListField)&&(c[this.checkboxListField]=$tw.utils.stringifyList(t)),s&&(this.checkboxIndex?this.wiki.setText(this.checkboxTitle,'',this.checkboxIndex,k):this.checkboxListIndex?(n=t&&t.length?$tw.utils.stringifyList(t):void 0,this.wiki.setText(this.checkboxTitle,'',this.checkboxListIndex,n)):this.wiki.addTiddler(new $tw.Tiddler(this.wiki.getCreationFields(),{text:''},h,c,this.wiki.getModificationFields()))),this.checkboxActions&&this.invokeActionString(this.checkboxActions,this,e),this.checkboxCheckActions&&i&&this.invokeActionString(this.checkboxCheckActions,this,e),this.checkboxUncheckActions&&!i&&this.invokeActionString(this.checkboxUncheckActions,this,e)},e.prototype.execute=function(){this.checkboxActions=this.getAttribute('actions'),this.checkboxCheckActions=this.getAttribute('checkactions'),this.checkboxUncheckActions=this.getAttribute('uncheckactions'),this.checkboxTitle=this.getAttribute('tiddler',this.getVariable('currentTiddler')),this.checkboxTag=this.getAttribute('tag'),this.checkboxField=this.getAttribute('field'),this.checkboxIndex=this.getAttribute('index'),this.checkboxListField=this.getAttribute('listField'),this.checkboxListIndex=this.getAttribute('listIndex'),this.checkboxFilter=this.getAttribute('filter'),this.checkboxChecked=this.getAttribute('checked'),this.checkboxUnchecked=this.getAttribute('unchecked'),this.checkboxDefault=this.getAttribute('default'),this.checkboxIndeterminate=this.getAttribute('indeterminate','no'),this.checkboxClass=this.getAttribute('class',''),this.checkboxInvertTag=this.getAttribute('invertTag',''),this.isDisabled=this.getAttribute('disabled','no'),this.makeChildWidgets()},e.prototype.refresh=function(e){var t,i=this.computeAttributes();return i.tiddler||i.tag||i.invertTag||i.field||i.index||i.listField||i.listIndex||i.filter||i.checked||i.unchecked||i.default||i.indeterminate||i.class||i.disabled?(this.refreshSelf(),!0):(i=!1,e[this.checkboxTitle]&&(t=this.getValue(),this.inputDomNode.checked=!!t,this.inputDomNode.indeterminate=void 0===t,i=!0,t?$tw.utils.addClass(this.labelDomNode,'tc-checkbox-checked'):$tw.utils.removeClass(this.labelDomNode,'tc-checkbox-checked')),this.refreshChildren(e)||i)},exports.checkbox=e}();\",\"type\":\"application/javascript\",\"module-type\":\"widget\"},\"$:/core/modules/widgets/codeblock.js\":{\"text\":\"!function(){'use strict';function e(e,t){this.initialise(e,t)}var t=require('$:/core/modules/widgets/widget.js').widget;(e.prototype=new t).render=function(e,t){this.parentDomNode=e,this.computeAttributes(),this.execute();var i=this.document.createElement('code'),o=this.document.createElement('pre');i.appendChild(this.document.createTextNode(this.getAttribute('code'))),o.appendChild(i),e.insertBefore(o,t),this.domNodes.push(o),this.postRender&&this.postRender()},e.prototype.execute=function(){this.language=this.getAttribute('language')},e.prototype.refresh=function(e){var t=this.computeAttributes();return!(!t.code&&!t.language||(this.refreshSelf(),0))},exports.codeblock=e}();\",\"type\":\"application/javascript\",\"module-type\":\"widget\"},\"$:/core/modules/widgets/count.js\":{\"text\":\"!function(){'use strict';function t(t,e){this.initialise(t,e)}var e=require('$:/core/modules/widgets/widget.js').widget;(t.prototype=new e).render=function(t,e){this.parentDomNode=t,this.computeAttributes(),this.execute();var i=this.document.createTextNode(this.currentCount);t.insertBefore(i,e),this.domNodes.push(i)},t.prototype.execute=function(){this.filter=this.getAttribute('filter'),this.filter?this.currentCount=this.wiki.filterTiddlers(this.filter,this).length:this.currentCount='0'},t.prototype.refresh=function(t){this.computeAttributes();var e=this.currentCount;return this.execute(),this.currentCount!==e&&(this.refreshSelf(),!0)},exports.count=t}();\",\"type\":\"application/javascript\",\"module-type\":\"widget\"},\"$:/core/modules/widgets/diff-text.js\":{\"text\":\"!function(){'use strict';function e(e,t){this.initialise(e,t)}var t=require('$:/core/modules/widgets/widget.js').widget,f=require('$:/core/modules/utils/diff-match-patch/diff_match_patch.js');(e.prototype=new t).invisibleCharacters={'\\\\n':'↩︎\\\\n','\\\\r':'⇠','\\\\t':'⇥\\\\t'},e.prototype.render=function(e,t){this.parentDomNode=e,this.computeAttributes(),this.execute();var i=new f.diff_match_patch,r=i.diff_main(this.getAttribute('source'),this.getAttribute('dest'));switch(this.getAttribute('cleanup','semantic')){case'none':break;case'efficiency':i.diff_cleanupEfficiency(r);break;default:i.diff_cleanupSemantic(r)}var n=this.document.createElement('div'),s=this.createDiffDom(r);e.insertBefore(n,t),this.setVariable('diff-count',r.reduce(function(e,t){return t[0]!==f.DIFF_EQUAL&&e++,e},0).toString()),this.renderChildren(n,null),n.appendChild(s),this.domNodes.push(n)},e.prototype.createDiffDom=function(e){var h=this,t=this.document.createElement('pre'),u=this.document.createElement('code');return $tw.utils.each(e,function(e){var t,i,r=e[0]===f.DIFF_INSERT?'ins':e[0]===f.DIFF_DELETE?'del':'span',n=e[0]===f.DIFF_INSERT?'tc-diff-insert':e[0]===f.DIFF_DELETE?'tc-diff-delete':'tc-diff-equal',s=h.document.createElement(r),c=e[1],d=0,a=/([\\\\x00-\\\\x1F])/gm,o=a.exec(c);for(s.className=n;o;)d\u003Co.index&&s.appendChild(h.document.createTextNode(c.slice(d,o.index))),(t=h.document.createElement('span')).className='tc-diff-invisible',i=h.invisibleCharacters[o[0]]||'[0x'+o[0].charCodeAt(0).toString(16)+']',t.appendChild(h.document.createTextNode(i)),s.appendChild(t),d=o.index+o[0].length,o=a.exec(c);d\u003Cc.length&&s.appendChild(h.document.createTextNode(c.slice(d))),u.appendChild(s)}),t.appendChild(u),t},e.prototype.execute=function(){var e=this.parseTreeNode&&this.parseTreeNode.children&&0\u003Cthis.parseTreeNode.children.length?this.parseTreeNode.children:[{type:'transclude',attributes:{tiddler:{type:'string',value:'$:/language/Diffs/CountMessage'}}}];this.makeChildWidgets(e)},e.prototype.refresh=function(e){var t=this.computeAttributes();return t.source||t.dest||t.cleanup?(this.refreshSelf(),!0):this.refreshChildren(e)},exports['diff-text']=e}();\",\"type\":\"application/javascript\",\"module-type\":\"widget\"},\"$:/core/modules/widgets/draggable.js\":{\"text\":\"!function(){'use strict';function t(t,e){this.initialise(t,e)}var e=require('$:/core/modules/widgets/widget.js').widget;(t.prototype=new e).render=function(t,e){var s,i=this,r=[];this.parentDomNode=t,this.computeAttributes(),this.execute(),s=this.draggableTag,-1!==$tw.config.htmlUnsafeElements.indexOf(s)&&(s='div'),s=this.document.createElement(s),this.draggableClasses&&r.push(this.draggableClasses),!this.dragHandleSelector&&this.dragEnable&&r.push('tc-draggable'),s.setAttribute('class',r.join(' ')),t.insertBefore(s,e),this.renderChildren(s,null),this.dragEnable&&$tw.utils.makeDraggable({domNode:s,dragTiddlerFn:function(){return i.getAttribute('tiddler')},dragFilterFn:function(){return i.getAttribute('filter')},startActions:i.startActions,endActions:i.endActions,dragImageType:i.dragImageType,widget:this,selector:i.dragHandleSelector}),this.domNodes.push(s)},t.prototype.execute=function(){this.draggableTag=this.getAttribute('tag','div'),this.draggableClasses=this.getAttribute('class'),this.startActions=this.getAttribute('startactions'),this.endActions=this.getAttribute('endactions'),this.dragImageType=this.getAttribute('dragimagetype'),this.dragHandleSelector=this.getAttribute('selector'),this.dragEnable='yes'===this.getAttribute('enable','yes'),this.makeChildWidgets()},t.prototype.updateDomNodeClasses=function(){var e=this.domNodes[0].className.split(' '),t=this.draggableClasses.split(' ');this.draggableClasses=this.getAttribute('class'),$tw.utils.each(t,function(t){t=e.indexOf(t);-1!==t&&e.splice(t,1)}),$tw.utils.pushTop(e,this.draggableClasses),this.domNodes[0].setAttribute('class',e.join(' '))},t.prototype.refresh=function(t){var e=this.computeAttributes(),s=$tw.utils.count(e);if(1===s&&e.class)this.updateDomNodeClasses();else if(0\u003Cs)return this.refreshSelf(),!0;return this.refreshChildren(t)},exports.draggable=t}();\",\"type\":\"application/javascript\",\"module-type\":\"widget\"},\"$:/core/modules/widgets/droppable.js\":{\"text\":\"!function(){'use strict';function e(e,t){this.initialise(e,t)}var t=require('$:/core/modules/widgets/widget.js').widget;(e.prototype=new t).render=function(e,t){var r=this.parseTreeNode.isBlock?'div':'span';this.parentDomNode=e,this.computeAttributes(),this.execute(),this.droppableTag&&-1===$tw.config.htmlUnsafeElements.indexOf(this.droppableTag)&&(r=this.droppableTag),r=this.document.createElement(r),this.domNode=r,this.assignDomNodeClasses(),this.droppableEnable?$tw.utils.addEventListeners(r,[{name:'dragenter',handlerObject:this,handlerMethod:'handleDragEnterEvent'},{name:'dragover',handlerObject:this,handlerMethod:'handleDragOverEvent'},{name:'dragleave',handlerObject:this,handlerMethod:'handleDragLeaveEvent'},{name:'drop',handlerObject:this,handlerMethod:'handleDropEvent'}]):$tw.utils.addClass(this.domNode,this.disabledClass),e.insertBefore(r,t),this.renderChildren(r,null),this.domNodes.push(r),this.currentlyEntered=[]},e.prototype.enterDrag=function(e){-1===this.currentlyEntered.indexOf(e.target)&&this.currentlyEntered.push(e.target),$tw.utils.addClass(this.domNodes[0],'tc-dragover')},e.prototype.leaveDrag=function(e){e=this.currentlyEntered.indexOf(e.target);-1!==e&&this.currentlyEntered.splice(e,1),(0===this.currentlyEntered.length||1===this.currentlyEntered.length&&this.currentlyEntered[0]===$tw.dragInProgress)&&(this.currentlyEntered=[],this.domNodes[0])&&$tw.utils.removeClass(this.domNodes[0],'tc-dragover')},e.prototype.handleDragEnterEvent=function(e){return this.enterDrag(e),e.preventDefault(),e.stopPropagation(),!1},e.prototype.handleDragOverEvent=function(e){return-1===['TEXTAREA','INPUT'].indexOf(e.target.tagName)&&(e.preventDefault(),e.dataTransfer.dropEffect=this.droppableEffect),!1},e.prototype.handleDragLeaveEvent=function(e){return this.leaveDrag(e),!1},e.prototype.handleDropEvent=function(t){var e,r=this;return this.leaveDrag(t),-1===['TEXTAREA','INPUT'].indexOf(t.target.tagName)&&(e=t.dataTransfer,$tw.utils.removeClass(this.domNodes[0],'tc-dragover'),$tw.utils.importDataTransfer(e,null,function(e){e.forEach(function(e){r.performActions(e.title||e.text,t)})}),t.preventDefault(),t.stopPropagation()),!1},e.prototype.performActions=function(e,t){var r;this.droppableActions&&(r=$tw.keyboardManager.getEventModifierKeyDescriptor(t),this.invokeActionString(this.droppableActions,this,t,{actionTiddler:e,modifier:r}))},e.prototype.execute=function(){this.droppableActions=this.getAttribute('actions'),this.droppableEffect=this.getAttribute('effect','copy'),this.droppableTag=this.getAttribute('tag'),this.droppableEnable='yes'===(this.getAttribute('enable')||'yes'),this.disabledClass=this.getAttribute('disabledClass',''),this.makeChildWidgets()},e.prototype.assignDomNodeClasses=function(){var e=this.getAttribute('class','').split(' ');e.push('tc-droppable'),this.domNode.className=e.join(' ')},e.prototype.refresh=function(e){var t=this.computeAttributes();return t.tag||t.enable||t.disabledClass||t.actions||t.effect?(this.refreshSelf(),!0):(t.class&&this.assignDomNodeClasses(),this.refreshChildren(e))},exports.droppable=e}();\",\"type\":\"application/javascript\",\"module-type\":\"widget\"},\"$:/core/modules/widgets/dropzone.js\":{\"text\":\"!function(){'use strict';function e(e,t){this.initialise(e,t)}var t=require('$:/core/modules/widgets/widget.js').widget;(e.prototype=new t).render=function(e,t){this.parentDomNode=e,this.computeAttributes(),this.execute();var i=this.document.createElement('div');(this.domNode=i).className=this.dropzoneClass||'tc-dropzone',this.dropzoneEnable&&$tw.utils.addEventListeners(i,[{name:'dragenter',handlerObject:this,handlerMethod:'handleDragEnterEvent'},{name:'dragover',handlerObject:this,handlerMethod:'handleDragOverEvent'},{name:'dragleave',handlerObject:this,handlerMethod:'handleDragLeaveEvent'},{name:'drop',handlerObject:this,handlerMethod:'handleDropEvent'},{name:'paste',handlerObject:this,handlerMethod:'handlePasteEvent'},{name:'dragend',handlerObject:this,handlerMethod:'handleDragEndEvent'}]),e.insertBefore(i,t),this.renderChildren(i,null),this.domNodes.push(i),this.currentlyEntered=[]},e.prototype.handleEvent=function(e){'click'===e.type?this.currentlyEntered.length&&this.resetState():'dragenter'===e.type?e.target&&e.target!==this.domNode&&!$tw.utils.domContains(this.domNode,e.target)&&this.resetState():'dragleave'===e.type&&(null===e.relatedTarget||e.relatedTarget&&'HTML'===e.relatedTarget.nodeName)&&this.resetState()},e.prototype.resetState=function(){$tw.utils.removeClass(this.domNode,'tc-dragover'),this.currentlyEntered=[],this.document.body.removeEventListener('click',this,!0),this.document.body.removeEventListener('dragenter',this,!0),this.document.body.removeEventListener('dragleave',this,!0),this.dragInProgress=!1},e.prototype.enterDrag=function(e){-1===this.currentlyEntered.indexOf(e.target)&&this.currentlyEntered.push(e.target),this.dragInProgress||(this.dragInProgress=!0,$tw.utils.addClass(this.domNodes[0],'tc-dragover'),this.document.body.addEventListener('click',this,!0),this.document.body.addEventListener('dragenter',this,!0),this.document.body.addEventListener('dragleave',this,!0))},e.prototype.leaveDrag=function(e){e=this.currentlyEntered.indexOf(e.target);-1!==e&&this.currentlyEntered.splice(e,1),0===this.currentlyEntered.length&&this.resetState()},e.prototype.handleDragEnterEvent=function(e){return!($tw.dragInProgress||this.filesOnly&&!$tw.utils.dragEventContainsFiles(e))&&(this.enterDrag(e),e.preventDefault(),void e.stopPropagation())},e.prototype.handleDragOverEvent=function(e){return-1===['TEXTAREA','INPUT'].indexOf(e.target.tagName)&&!$tw.dragInProgress&&(e.preventDefault(),void(e.isTrusted&&(e.dataTransfer.dropEffect='copy')))},e.prototype.handleDragLeaveEvent=function(e){this.leaveDrag(e)},e.prototype.handleDragEndEvent=function(e){this.resetState()},e.prototype.filterByContentTypes=function(e){var t,i=[],r=[];return $tw.utils.each(e,function(e){r.push(e.type||'')}),t=this.wiki.filterTiddlers(this.contentTypesFilter,this,this.wiki.makeTiddlerIterator(r)),$tw.utils.each(e,function(e){-1!==t.indexOf(e.type)&&i.push(e)}),i},e.prototype.readFileCallback=function(e){(e=this.contentTypesFilter?this.filterByContentTypes(e):e).length&&(this.dispatchEvent({type:'tm-import-tiddlers',param:JSON.stringify(e),autoOpenOnImport:this.autoOpenOnImport,importTitle:this.importTitle}),this.actions)&&this.invokeActionString(this.actions,this,event,{importTitle:this.importTitle})},e.prototype.handleDropEvent=function(e){function t(e){i.readFileCallback(e)}var i=this;if(this.leaveDrag(e),-1!==['TEXTAREA','INPUT'].indexOf(e.target.tagName))return!1;if($tw.dragInProgress)return!1;var i=this,r=e.dataTransfer,n=(this.resetState(),0);if(0===(n=r.files&&!$tw.utils.dragEventContainsType(e,'text/vnd.tiddler')?this.wiki.readFiles(r.files,{callback:t,deserializer:this.dropzoneDeserializer}):n)){var s=i.wiki.generateNewTitle('Untitled');if(this.dropzoneDeserializer)for(var a=0;a\u003Cr.items.length;a++){var o=r.items[a];'string'===o.kind&&o.getAsString(function(e){e=i.wiki.deserializeTiddlers(null,e,{title:s},{deserializer:i.dropzoneDeserializer});e&&e.length&&t(e)})}else $tw.utils.importDataTransfer(r,s,t)}e.preventDefault(),e.stopPropagation()},e.prototype.handlePasteEvent=function(e){function t(e){i.readFileCallback(e)}var i=this;if(-1==['TEXTAREA','INPUT'].indexOf(e.target.tagName)&&!e.target.isContentEditable){for(var i=this,r=e.clipboardData.items,n=0;n\u003Cr.length;n++){var s,a,o=r[n];'file'===o.kind?this.wiki.readFile(o.getAsFile(),{callback:t,deserializer:this.dropzoneDeserializer}):'string'===o.kind&&(a=o.type,o.getAsString(function(e){i.dropzoneDeserializer?(s=i.wiki.deserializeTiddlers(null,e,{title:i.wiki.generateNewTitle('Untitled')},{deserializer:i.dropzoneDeserializer}))&&s.length&&t(s):(s={title:i.wiki.generateNewTitle('Untitled'),text:e,type:a},$tw.log.IMPORT&&console.log('Importing string \\\\''+e+'\\\\', type: \\\\''+a+'\\\\''),t([s]))}))}e.stopPropagation(),e.preventDefault()}},e.prototype.execute=function(){this.dropzoneClass=this.getAttribute('class'),this.dropzoneDeserializer=this.getAttribute('deserializer'),this.dropzoneEnable='yes'===(this.getAttribute('enable')||'yes'),this.autoOpenOnImport=this.getAttribute('autoOpenOnImport'),this.importTitle=this.getAttribute('importTitle','$:/Import'),this.actions=this.getAttribute('actions'),this.contentTypesFilter=this.getAttribute('contentTypesFilter'),this.filesOnly='yes'===this.getAttribute('filesOnly','no'),this.makeChildWidgets()},e.prototype.refresh=function(e){var t=this.computeAttributes();return 0\u003C$tw.utils.count(t)?(this.refreshSelf(),!0):this.refreshChildren(e)},exports.dropzone=e}();\",\"type\":\"application/javascript\",\"module-type\":\"widget\"},\"$:/core/modules/widgets/edit-binary.js\":{\"text\":\"!function(){'use strict';function e(e,t){this.initialise(e,t)}var t=require('$:/core/modules/widgets/widget.js').widget;(e.prototype=new t).render=function(e,t){this.parentDomNode=e,this.computeAttributes(),this.execute(),this.renderChildren(e,t)},e.prototype.execute=function(){var e=this.getAttribute('tiddler',this.getVariable('currentTiddler')),e=this.wiki.getTiddler(e),t=e.fields.type,e=e.fields.text,i={type:'element',tag:'p',children:[{type:'transclude',attributes:{tiddler:{type:'string',value:'$:/core/ui/BinaryWarning'}}}]},r={type:'element',tag:'a',attributes:{title:{type:'indirect',textReference:'!!draft.title'},download:{type:'indirect',textReference:'!!draft.title'}},children:[{type:'transclude',attributes:{tiddler:{type:'string',value:'$:/core/images/export-button'}}}]};e&&(r.attributes.href={type:'string',value:'data:'+t+';base64,'+e}),this.makeChildWidgets([{type:'element',tag:'div',attributes:{class:{type:'string',value:'tc-binary-warning'}},children:[i,r]}])},e.prototype.refresh=function(e){return this.refreshChildren(e)},exports['edit-binary']=e}();\",\"type\":\"application/javascript\",\"module-type\":\"widget\"},\"$:/core/modules/widgets/edit-bitmap.js\":{\"text\":\"!function(){'use strict';function i(t,e){this.initialise(t,e)}var t=require('$:/core/modules/widgets/widget.js').widget;(i.prototype=new t).render=function(t,e){this.editorOperations||(i.prototype.editorOperations={},$tw.modules.applyMethods('bitmapeditoroperation',this.editorOperations)),this.parentDomNode=t,this.computeAttributes(),this.execute(),this.toolbarNode=this.document.createElement('div'),this.toolbarNode.className='tc-editor-toolbar',t.insertBefore(this.toolbarNode,e),this.domNodes.push(this.toolbarNode),this.canvasDomNode=$tw.utils.domMaker('canvas',{document:this.document,class:'tc-edit-bitmapeditor',eventListeners:[{name:'touchstart',handlerObject:this,handlerMethod:'handleTouchStartEvent'},{name:'touchmove',handlerObject:this,handlerMethod:'handleTouchMoveEvent'},{name:'touchend',handlerObject:this,handlerMethod:'handleTouchEndEvent'},{name:'mousedown',handlerObject:this,handlerMethod:'handleMouseDownEvent'},{name:'mousemove',handlerObject:this,handlerMethod:'handleMouseMoveEvent'},{name:'mouseup',handlerObject:this,handlerMethod:'handleMouseUpEvent'}]}),this.setVariable('tv-bitmap-editor-width',this.canvasDomNode.width+'px'),this.setVariable('tv-bitmap-editor-height',this.canvasDomNode.height+'px'),this.renderChildren(this.toolbarNode,null),t.insertBefore(this.canvasDomNode,e),this.domNodes.push(this.canvasDomNode),$tw.browser&&this.loadCanvas(),this.addEventListeners([{type:'tm-edit-bitmap-operation',handler:'handleEditBitmapOperationMessage'}])},i.prototype.handleEditBitmapOperationMessage=function(t){var e=this.editorOperations[t.param];e&&e.call(this,t)},i.prototype.execute=function(){this.editTitle=this.getAttribute('tiddler',this.getVariable('currentTiddler')),this.makeChildWidgets()},i.prototype.refresh=function(t){return this.refreshChildren(t)},i.prototype.refreshToolbar=function(){this.setVariable('tv-bitmap-editor-width',this.canvasDomNode.width+'px'),this.setVariable('tv-bitmap-editor-height',this.canvasDomNode.height+'px'),$tw.utils.each(this.children,function(t){t.refreshSelf()})},i.prototype.loadCanvas=function(){var t=this.wiki.getTiddler(this.editTitle),e=new Image,i=this;e.onload=function(){i.initCanvas(i.canvasDomNode,e.width,e.height,e),i.currCanvas=i.document.createElement('canvas'),i.initCanvas(i.currCanvas,e.width,e.height,e),i.refreshToolbar()},e.onerror=function(){i.initCanvas(i.canvasDomNode,600,370),i.currCanvas=i.document.createElement('canvas'),i.initCanvas(i.currCanvas,600,370),i.refreshToolbar()},t&&t.fields.type&&t.fields.text?e.src='data:'+t.fields.type+';base64,'+t.fields.text:(e.width=600,e.height=370,e.onerror())},i.prototype.initCanvas=function(t,e,i,o){t.width=e,t.height=i;e=t.getContext('2d');o?e.drawImage(o,0,0):(e.fillStyle='#fff',e.fillRect(0,0,t.width,t.height))},i.prototype.changeCanvasSize=function(t,e){var i=this.document.createElement('canvas'),o=(this.initCanvas(i,t,e),i.getContext('2d'));o.drawImage(this.currCanvas,0,0),this.currCanvas=i,this.canvasDomNode.width=t,this.canvasDomNode.height=e,(o=this.canvasDomNode.getContext('2d')).drawImage(this.currCanvas,0,0)},i.prototype.rotateCanvasLeft=function(){var t=this.currCanvas.width,e=this.currCanvas.height,i=this.document.createElement('canvas'),o=e,a=t,n=(this.initCanvas(i,o,a),i.getContext('2d'));n.save(),n.translate(o/2,a/2),n.rotate(-Math.PI/2),n.drawImage(this.currCanvas,-t/2,-e/2),n.restore(),this.currCanvas=i,this.canvasDomNode.width=o,this.canvasDomNode.height=a,(n=this.canvasDomNode.getContext('2d')).drawImage(this.currCanvas,0,0)},i.prototype.handleTouchStartEvent=function(t){return this.brushDown=!0,this.strokeStart(t.touches[0].clientX,t.touches[0].clientY),t.preventDefault(),t.stopPropagation(),!1},i.prototype.handleTouchMoveEvent=function(t){return this.brushDown&&this.strokeMove(t.touches[0].clientX,t.touches[0].clientY),t.preventDefault(),t.stopPropagation(),!1},i.prototype.handleTouchEndEvent=function(t){return this.brushDown&&(this.brushDown=!1,this.strokeEnd()),t.preventDefault(),t.stopPropagation(),!1},i.prototype.handleMouseDownEvent=function(t){return this.strokeStart(t.clientX,t.clientY),this.brushDown=!0,t.preventDefault(),t.stopPropagation(),!1},i.prototype.handleMouseMoveEvent=function(t){return!this.brushDown||(this.strokeMove(t.clientX,t.clientY),t.preventDefault(),t.stopPropagation(),!1)},i.prototype.handleMouseUpEvent=function(t){return!this.brushDown||(this.brushDown=!1,this.strokeEnd(),t.preventDefault(),t.stopPropagation(),!1)},i.prototype.adjustCoordinates=function(t,e){var i=this.canvasDomNode.getBoundingClientRect(),o=this.canvasDomNode.width/i.width;return{x:(t-i.left)*o,y:(e-i.top)*o}},i.prototype.strokeStart=function(t,e){this.stroke=[this.adjustCoordinates(t,e)]},i.prototype.strokeMove=function(t,e){var i,o=this.canvasDomNode.getContext('2d');for(this.stroke.push(this.adjustCoordinates(t,e)),o.drawImage(this.currCanvas,0,0),o.globalAlpha=parseFloat(this.wiki.getTiddlerText('$:/config/BitmapEditor/Opacity','1.0')),o.strokeStyle=this.wiki.getTiddlerText('$:/config/BitmapEditor/Colour','#ff0'),o.lineWidth=parseFloat(this.wiki.getTiddlerText('$:/config/BitmapEditor/LineWidth','3')),o.lineCap='round',o.lineJoin='round',o.beginPath(),o.moveTo(this.stroke[0].x,this.stroke[0].y),i=1;i\u003Cthis.stroke.length-1;i++){var a=this.stroke[i],n=this.stroke[i-1],s=(a.x+n.x)/2,a=(a.y+n.y)/2;o.quadraticCurveTo(n.x,n.y,s,a)}o.stroke()},i.prototype.strokeEnd=function(){this.currCanvas.getContext('2d').drawImage(this.canvasDomNode,0,0),this.saveChanges()},i.prototype.saveChanges=function(){var t=this.wiki.getTiddler(this.editTitle)||new $tw.Tiddler({title:this.editTitle,type:'image/png'}),e=this.canvasDomNode.toDataURL(t.fields.type),i=e.indexOf(':'),o=e.indexOf(';'),a=e.indexOf(','),i={type:e.substring(i+1,o),text:e.substring(a+1)};this.wiki.addTiddler(new $tw.Tiddler(this.wiki.getModificationFields(),t,i,this.wiki.getCreationFields()))},exports['edit-bitmap']=i}();\",\"type\":\"application/javascript\",\"module-type\":\"widget\"},\"$:/core/modules/widgets/edit-shortcut.js\":{\"text\":\"!function(){'use strict';function t(t,e){this.initialise(t,e)}var e=require('$:/core/modules/widgets/widget.js').widget;(t.prototype=new e).render=function(t,e){this.parentDomNode=t,this.computeAttributes(),this.execute(),this.inputNode=this.document.createElement('input'),this.shortcutClass&&(this.inputNode.className=this.shortcutClass),this.shortcutStyle&&this.inputNode.setAttribute('style',this.shortcutStyle),this.shortcutTooltip&&this.inputNode.setAttribute('title',this.shortcutTooltip),this.shortcutPlaceholder&&this.inputNode.setAttribute('placeholder',this.shortcutPlaceholder),this.shortcutAriaLabel&&this.inputNode.setAttribute('aria-label',this.shortcutAriaLabel),this.updateInputNode(),$tw.utils.addEventListeners(this.inputNode,[{name:'keydown',handlerObject:this,handlerMethod:'handleKeydownEvent'}]),t.insertBefore(this.inputNode,e),this.domNodes.push(this.inputNode),'yes'!==this.shortcutFocus&&'true'!==this.shortcutFocus||this.focus()},t.prototype.execute=function(){this.shortcutTiddler=this.getAttribute('tiddler'),this.shortcutField=this.getAttribute('field'),this.shortcutIndex=this.getAttribute('index'),this.shortcutPlaceholder=this.getAttribute('placeholder'),this.shortcutDefault=this.getAttribute('default',''),this.shortcutClass=this.getAttribute('class'),this.shortcutStyle=this.getAttribute('style'),this.shortcutTooltip=this.getAttribute('tooltip'),this.shortcutAriaLabel=this.getAttribute('aria-label'),this.shortcutFocus=this.getAttribute('focus')},t.prototype.updateInputNode=function(){var t;this.shortcutField?(t=this.wiki.getTiddler(this.shortcutTiddler))&&$tw.utils.hop(t.fields,this.shortcutField)?this.inputNode.value=t.getFieldString(this.shortcutField):this.inputNode.value=this.shortcutDefault:this.shortcutIndex?this.inputNode.value=this.wiki.extractTiddlerDataItem(this.shortcutTiddler,this.shortcutIndex,this.shortcutDefault):this.inputNode.value=this.wiki.getTiddlerText(this.shortcutTiddler,this.shortcutDefault)},t.prototype.handleKeydownEvent=function(t){var e;return!(!t.keyCode||-1!==$tw.keyboardManager.getModifierKeys().indexOf(t.keyCode)||(0\u003C(e=$tw.keyboardManager.getPrintableShortcuts([{ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,altKey:t.altKey,metaKey:t.metaKey,keyCode:t.keyCode}])).length&&this.wiki.setText(this.shortcutTiddler,this.shortcutField,this.shortcutIndex,e[0]),t.preventDefault(),t.stopPropagation(),0))},t.prototype.focus=function(){this.inputNode.focus&&this.inputNode.select&&(this.inputNode.focus(),this.inputNode.select())},t.prototype.refresh=function(t){var e=this.computeAttributes();return e.tiddler||e.field||e.index||e.placeholder||e.default||e.class||e.style||e.tooltip||e['aria-label']||e.focus?(this.refreshSelf(),!0):!!t[this.shortcutTiddler]&&(this.updateInputNode(),!0)},exports['edit-shortcut']=t}();\",\"type\":\"application/javascript\",\"module-type\":\"widget\"},\"$:/core/modules/widgets/edit-text.js\":{\"text\":\"!function(){'use strict';var e=require('$:/core/modules/editor/factory.js').editTextWidgetFactory,r=require('$:/core/modules/editor/engines/framed.js').FramedEngine,i=require('$:/core/modules/editor/engines/simple.js').SimpleEngine;exports['edit-text']=e(r,i)}();\",\"type\":\"application/javascript\",\"module-type\":\"widget\"},\"$:/core/modules/widgets/edit.js\":{\"text\":\"!function(){'use strict';function t(t,e){this.initialise(t,e)}var e=require('$:/core/modules/widgets/widget.js').widget;(t.prototype=new e).render=function(t,e){this.parentDomNode=t,this.computeAttributes(),this.execute(),this.renderChildren(t,e)};t.prototype.execute=function(){this.editTitle=this.getAttribute('tiddler',this.getVariable('currentTiddler')),this.editField=this.getAttribute('field','text'),this.editIndex=this.getAttribute('index'),this.editClass=this.getAttribute('class'),this.editPlaceholder=this.getAttribute('placeholder'),this.editTabIndex=this.getAttribute('tabindex'),this.editFocus=this.getAttribute('focus',''),this.editCancelPopups=this.getAttribute('cancelPopups',''),this.editInputActions=this.getAttribute('inputActions'),this.editRefreshTitle=this.getAttribute('refreshTitle'),this.editAutoComplete=this.getAttribute('autocomplete'),this.editorType=this.getEditorType(),this.makeChildWidgets([{type:'edit-'+this.editorType,attributes:this.parseTreeNode.attributes,children:this.parseTreeNode.children}])},t.prototype.getEditorType=function(){'text'===this.editField&&(e=this.wiki.getTiddler(this.editTitle))&&(t=e.fields.type);var t,e=this.wiki.getTiddlerText('$:/config/EditorTypeMappings/'+(t=t||'text/vnd.tiddlywiki'));return e=e?e:(t=$tw.config.contentTypeInfo[t])&&'base64'===t.encoding?'binary':'text'},t.prototype.refresh=function(t){var e=this.computeAttributes();return e.tiddler||e.field||e.index||e.tabindex||e.cancelPopups||e.inputActions||e.refreshTitle||e.autocomplete||t[this.editTitle]&&this.getEditorType()!==this.editorType?(this.refreshSelf(),!0):this.refreshChildren(t)},exports.edit=t}();\",\"type\":\"application/javascript\",\"module-type\":\"widget\"},\"$:/core/modules/widgets/element.js\":{\"text\":\"!function(){'use strict';function t(t,e){this.initialise(t,e)}var e=require('$:/core/modules/widgets/widget.js').widget;(t.prototype=new e).render=function(t,e){this.parentDomNode=t,this.computeAttributes(),this.tag=this.parseTreeNode.tag,-1!==$tw.config.htmlUnsafeElements.indexOf(this.tag)&&(this.tag='safe-'+this.tag);var s=['h1','h2','h3','h4','h5','h6'].indexOf(this.tag),i=(-1!==s&&(i=parseInt(this.getVariable('tv-adjust-heading-level','0'),10)||0,s=Math.min(Math.max(s+1+i,1),6),this.tag='h'+s),'http://www.w3.org/1999/xhtml'),s=(this.namespace={svg:'http://www.w3.org/2000/svg',math:'http://www.w3.org/1998/Math/MathML',body:i}[this.tag],this.namespace?this.setVariable('namespace',this.namespace):this.hasAttribute('xmlns')?(this.namespace=this.getAttribute('xmlns'),this.setVariable('namespace',this.namespace)):this.namespace=this.getVariable('namespace',{defaultValue:i}),$tw.hooks.invokeHook('th-rendering-element',null,this));this.isReplaced=!!s,s?(this.makeChildWidgets(s),this.renderChildren(this.parentDomNode,null)):(this.makeChildWidgets(),i=this.document.createElementNS(this.namespace,this.tag),this.assignAttributes(i,{excludeEventAttributes:!0}),t.insertBefore(i,e),this.renderChildren(i,null),this.domNodes.push(i))},t.prototype.refresh=function(t){var e=this.computeAttributes(),e=0\u003C$tw.utils.count(e);if(e){if(this.isReplaced)return this.refreshSelf();this.assignAttributes(this.domNodes[0],{excludeEventAttributes:!0})}return this.refreshChildren(t)||e},exports.element=t}();\",\"type\":\"application/javascript\",\"module-type\":\"widget\"},\"$:/core/modules/widgets/encrypt.js\":{\"text\":\"!function(){'use strict';function t(t,e){this.initialise(t,e)}var e=require('$:/core/modules/widgets/widget.js').widget;(t.prototype=new e).render=function(t,e){this.parentDomNode=t,this.computeAttributes(),this.execute();var i=this.document.createTextNode(this.encryptedText);t.insertBefore(i,e),this.domNodes.push(i)},t.prototype.execute=function(){this.filter=this.getAttribute('filter','[!is[system]]');var t=this.wiki.filterTiddlers(this.filter),s={},n=this;$tw.utils.each(t,function(t){var e,i=n.wiki.getTiddler(t),r={};for(e in i.fields)r[e]=i.getFieldString(e);s[t]=r}),this.encryptedText=$tw.utils.htmlEncode($tw.crypto.encrypt(JSON.stringify(s)))},t.prototype.refresh=function(t){return!1},exports.encrypt=t}();\",\"type\":\"application/javascript\",\"module-type\":\"widget\"},\"$:/core/modules/widgets/entity.js\":{\"text\":\"!function(){'use strict';function t(t,e){this.initialise(t,e)}var e=require('$:/core/modules/widgets/widget.js').widget;(t.prototype=new e).render=function(t,e){this.parentDomNode=t,this.computeAttributes(),this.execute();var i=this.getAttribute('entity',this.parseTreeNode.entity||''),i=this.document.createTextNode($tw.utils.entityDecode(i));t.insertBefore(i,e),this.domNodes.push(i)},t.prototype.execute=function(){},t.prototype.refresh=function(t){return!!this.computeAttributes().entity&&(this.refreshSelf(),!0)},exports.entity=t}();\",\"type\":\"application/javascript\",\"module-type\":\"widget\"},\"$:/core/modules/widgets/error.js\":{\"text\":\"!function(){'use strict';function e(e,t){this.initialise(e,t)}var t=require('$:/core/modules/widgets/widget.js').widget;(e.prototype=new t).render=function(e,t){this.parentDomNode=e,this.computeAttributes(),this.execute();var r=this.getAttribute('$message','Unknown error'),s=this.document.createElement('span');s.appendChild(this.document.createTextNode(r)),s.className='tc-error',e.insertBefore(s,t),this.domNodes.push(s)},e.prototype.execute=function(){},e.prototype.refresh=function(e){return!!this.computeAttributes().$message&&(this.refreshSelf(),!0)},exports.error=e}();\",\"type\":\"application/javascript\",\"module-type\":\"widget\"},\"$:/core/modules/widgets/eventcatcher.js\":{\"text\":\"!function(){'use strict';function t(t,e){this.initialise(t,e)}var e=require('$:/core/modules/widgets/widget.js').widget;(t.prototype=new e).render=function(t,e){var u=this,i=(this.parentDomNode=t,this.computeAttributes(),this.execute(),this.parseTreeNode.isBlock?'div':'span'),l=(this.elementTag&&-1===$tw.config.htmlUnsafeElements.indexOf(this.elementTag)&&(i=this.elementTag),this.document.createElement(i));this.domNode=l,this.assignDomNodeClasses(),$tw.utils.each(this.types,function(a){l.addEventListener(a,function(t){var e=u.getAttribute('selector'),i=u.getAttribute('matchSelector'),s=u.getAttribute('$'+a)||u.getAttribute('actions-'+a),n=u.getAttribute('stopPropagation','onaction'),o=t.target,r={};if(3===o.nodeType&&(o=o.parentNode),i&&!$tw.utils.domMatchesSelector(o,i))return!1;if(e){for(;!$tw.utils.domMatchesSelector(o,e)&&o!==l;)o=o.parentNode;if(o===l)return!1;s&&(r=$tw.utils.collectDOMVariables(o,u.domNode,t))}return s&&(r.modifier=$tw.keyboardManager.getEventModifierKeyDescriptor(t),'button'in t&&(0===t.button?r['event-mousebutton']='left':1===t.button?r['event-mousebutton']='middle':2===t.button&&(r['event-mousebutton']='right')),r['event-type']=t.type.toString(),'object'==typeof t.detail&&t.detail?$tw.utils.each(t.detail,function(t,e){r['event-detail-'+e]=t.toString()}):t.detail&&(r['event-detail']=t.detail.toString()),u.invokeActionString(s,u,t,r)),!!(s&&'onaction'===n||'always'===n)&&(t.preventDefault(),t.stopPropagation(),!0)},!1)}),t.insertBefore(l,e),this.renderChildren(l,null),this.domNodes.push(l)},t.prototype.execute=function(){var i=this;this.types=[],$tw.utils.each(this.attributes,function(t,e){'$'===e.charAt(0)&&i.types.push(e.slice(1))}),this.types.length||(this.types=this.getAttribute('events','').split(' ')),this.elementTag=this.getAttribute('tag'),this.makeChildWidgets()},t.prototype.assignDomNodeClasses=function(){var t=this.getAttribute('class','').split(' ');t.push('tc-eventcatcher'),this.domNode.className=t.join(' ')},t.prototype.refresh=function(t){var e=this.computeAttributes(),i=$tw.utils.count(e);if(1===i&&e.class)this.assignDomNodeClasses();else if(0\u003Ci)return this.refreshSelf(),!0;return this.refreshChildren(t)},exports.eventcatcher=t}();\",\"type\":\"application/javascript\",\"module-type\":\"widget\"},\"$:/core/modules/widgets/fieldmangler.js\":{\"text\":\"!function(){'use strict';function e(e,t){this.initialise(e,t)}var t=require('$:/core/modules/widgets/widget.js').widget;(e.prototype=new t).render=function(e,t){this.addEventListeners([{type:'tm-remove-field',handler:'handleRemoveFieldEvent'},{type:'tm-add-field',handler:'handleAddFieldEvent'},{type:'tm-remove-tag',handler:'handleRemoveTagEvent'},{type:'tm-add-tag',handler:'handleAddTagEvent'}]),this.parentDomNode=e,this.computeAttributes(),this.execute(),this.renderChildren(e,t)},e.prototype.execute=function(){this.mangleTitle=this.getAttribute('tiddler',this.getVariable('currentTiddler')),this.makeChildWidgets()},e.prototype.refresh=function(e){return this.computeAttributes().tiddler?(this.refreshSelf(),!0):this.refreshChildren(e)},e.prototype.handleRemoveFieldEvent=function(e){var t=this.wiki.getTiddler(this.mangleTitle),i={};return i[e.param]=void 0,this.wiki.addTiddler(new $tw.Tiddler(t,i)),!1},e.prototype.handleAddFieldEvent=function(e){function t(e,t){e=e.trim(),!t&&i&&(t=i.fields[e]),d[e]=t||''}var i=this.wiki.getTiddler(this.mangleTitle),d=this.wiki.getModificationFields();if(d.title=this.mangleTitle,'string'==typeof e.param&&t(e.param,''),'object'==typeof e.paramObject)for(var r in e.paramObject)t(r,e.paramObject[r]);return this.wiki.addTiddler(new $tw.Tiddler(i,d)),!1},e.prototype.handleRemoveTagEvent=function(e){var t=this.wiki.getTiddler(this.mangleTitle),i=this.wiki.getModificationFields();return t&&t.fields.tags&&-1!==(e=t.fields.tags.indexOf(e.param))&&(i.tags=(t.fields.tags||[]).slice(0),i.tags.splice(e,1),0===i.tags.length&&(i.tags=void 0),this.wiki.addTiddler(new $tw.Tiddler(t,i))),!1},e.prototype.handleAddTagEvent=function(e){var t,i=this.wiki.getTiddler(this.mangleTitle),d=this.wiki.getModificationFields();return i&&'string'==typeof e.param?''!==(t=e.param.trim())&&(d.tags=(i.fields.tags||[]).slice(0),$tw.utils.pushTop(d.tags,t),this.wiki.addTiddler(new $tw.Tiddler(i,d))):'string'==typeof e.param&&''!==e.param.trim()&&''!==this.mangleTitle.trim()&&((t=[]).push(e.param.trim()),this.wiki.addTiddler(new $tw.Tiddler({title:this.mangleTitle,tags:t},d))),!1},exports.fieldmangler=e}();\",\"type\":\"application/javascript\",\"module-type\":\"widget\"},\"$:/core/modules/widgets/fields.js\":{\"text\":\"!function(){'use strict';function t(t,e){this.initialise(t,e)}var e=require('$:/core/modules/widgets/widget.js').widget;(t.prototype=new e).render=function(t,e){this.parentDomNode=t,this.computeAttributes(),this.execute();var i=this.document.createTextNode(this.text);t.insertBefore(i,e),this.domNodes.push(i)},t.prototype.execute=function(){this.tiddlerTitle=this.getAttribute('tiddler',this.getVariable('currentTiddler')),this.template=this.getAttribute('template'),this.sort='yes'===this.getAttribute('sort','yes'),this.sortReverse='yes'===this.getAttribute('sortReverse','no'),this.exclude=this.getAttribute('exclude'),this.include=this.getAttribute('include',null),this.stripTitlePrefix='yes'===this.getAttribute('stripTitlePrefix','no');var t=this.wiki.getTiddler(this.tiddlerTitle),e=this.exclude?this.exclude.split(' '):['text'],i=this.include?this.include.split(' '):null,s=[];if(this.template&&t){var r=[];if(i)for(var l=0;l\u003Ci.length;l++)t.fields[i[l]]&&r.push(i[l]);else for(var h in t.fields)-1===e.indexOf(h)&&r.push(h);this.sort&&r.sort(),this.sortReverse&&r.reverse();for(var u=0,d=r.length;u\u003Cd;u++){var o,h=r[u],n=this.template,c=t.getFieldString(h);this.stripTitlePrefix&&'title'===h&&(o=/^\\\\{[^\\\\}]+\\\\}(.+)/gm.exec(c))&&(c=o[1]),n=$tw.utils.replaceString(n,'$name$',h),n=$tw.utils.replaceString(n,'$value$',c),n=$tw.utils.replaceString(n,'$encoded_value$',$tw.utils.htmlEncode(c)),s.push(n)}}this.text=s.join('')},t.prototype.refresh=function(t){var e=this.computeAttributes();return!!(e.tiddler||e.template||e.exclude||e.include||e.sort||e.sortReverse||t[this.tiddlerTitle]||e.stripTitlePrefix)&&(this.refreshSelf(),!0)},exports.fields=t}();\",\"type\":\"application/javascript\",\"module-type\":\"widget\"},\"$:/core/modules/widgets/genesis.js\":{\"text\":\"!function(){'use strict';function t(t,e){this.initialise(t,e)}var e=require('$:/core/modules/widgets/widget.js').widget;(t.prototype=new e).render=function(t,e){this.parentDomNode=t,this.computeAttributes({filterFn:function(t){return'$'===t.charAt(0)&&'$'!==t.charAt(1)}}),this.execute(),this.renderChildren(t,e)},t.prototype.execute=function(){var i=this,t=(this.genesisType=this.getAttribute('$type','element'),this.genesisRemappable='yes'===this.getAttribute('$remappable','yes'),this.genesisNames=this.getAttribute('$names',''),this.genesisValues=this.getAttribute('$values',''),'$'!==this.genesisType.charAt(0)),s=[{type:t?'element':this.genesisType.substr(1),tag:t?this.genesisType:void 0,attributes:{},orderedAttributes:[],children:this.parseTreeNode.children||[],isNotRemappable:!this.genesisRemappable}];$tw.utils.each($tw.utils.getOrderedAttributesFromParseTreeNode(this.parseTreeNode),function(t){var e=t.name;if('$'===e.charAt(0)){if('$'!==e.charAt(1))return;e=e.substr(1)}$tw.utils.addAttributeToParseTreeNode(s[0],$tw.utils.extend({},t,{name:e}))}),this.attributeNames=[],this.attributeValues=[],this.genesisNames&&this.genesisValues&&(this.attributeNames=this.wiki.filterTiddlers(i.genesisNames,this),this.attributeValues=this.wiki.filterTiddlers(i.genesisValues,this),$tw.utils.each(this.attributeNames,function(t,e){$tw.utils.addAttributeToParseTreeNode(s[0],t,i.attributeValues[e]||'')})),this.makeChildWidgets(s)},t.prototype.refresh=function(t){var e=this.computeAttributes(),i=this.getAttribute('$names',''),s=this.getAttribute('$values',''),i=this.wiki.filterTiddlers(i,this),s=this.wiki.filterTiddlers(s,this);return 0\u003C$tw.utils.count(e)||!$tw.utils.isArrayEqual(this.attributeNames,i)||!$tw.utils.isArrayEqual(this.attributeValues,s)?(this.refreshSelf(),!0):this.refreshChildren(t)},exports.genesis=t}();\",\"type\":\"application/javascript\",\"module-type\":\"widget\"},\"$:/core/modules/widgets/image.js\":{\"text\":\"!function(){'use strict';function t(t,i){this.initialise(t,i)}var i=require('$:/core/modules/widgets/widget.js').widget;(t.prototype=new i).render=function(t,i){this.parentDomNode=t,this.computeAttributes(),this.execute();var e='img',s='',a=this.wiki.getTiddler(this.imageSource);if(a){if(this.wiki.isImageTiddler(this.imageSource)){var r=a.fields.type,o=a.fields.text,a=a.fields._canonical_uri;if(o)switch(r){case'application/pdf':e='embed',s='data:application/pdf;base64,'+o;break;case'image/svg+xml':s='data:image/svg+xml,'+encodeURIComponent(o);break;default:s='data:'+r+';base64,'+o}else a?s=('application/pdf'===r&&(e='embed'),a):this.wiki.getTiddlerText(this.imageSource)}}else s=this.getVariable('tv-get-export-image-link',{params:[{name:'src',value:this.imageSource}],defaultValue:this.imageSource});var g=this.document.createElement(e);g.setAttribute('src',s),this.imageClass&&g.setAttribute('class',this.imageClass),this.imageWidth&&g.setAttribute('width',this.imageWidth),this.imageHeight&&g.setAttribute('height',this.imageHeight),this.imageTooltip&&g.setAttribute('title',this.imageTooltip),this.imageAlt&&g.setAttribute('alt',this.imageAlt),this.lazyLoading&&'img'===e&&g.setAttribute('loading',this.lazyLoading),$tw.utils.addClass(g,'tc-image-loading'),g.addEventListener('load',function(){$tw.utils.removeClass(g,'tc-image-loading'),$tw.utils.addClass(g,'tc-image-loaded')},!1),g.addEventListener('error',function(){$tw.utils.removeClass(g,'tc-image-loading'),$tw.utils.addClass(g,'tc-image-error')},!1),t.insertBefore(g,i),this.domNodes.push(g)},t.prototype.execute=function(){this.imageSource=this.getAttribute('source'),this.imageWidth=this.getAttribute('width'),this.imageHeight=this.getAttribute('height'),this.imageClass=this.getAttribute('class'),this.imageTooltip=this.getAttribute('tooltip'),this.imageAlt=this.getAttribute('alt'),this.lazyLoading=this.getAttribute('loading')},t.prototype.refresh=function(t){var i=this.computeAttributes();return!!(i.source||i.width||i.height||i.class||i.tooltip||t[this.imageSource])&&(this.refreshSelf(),!0)},exports.image=t}();\",\"type\":\"application/javascript\",\"module-type\":\"widget\"},\"$:/core/modules/widgets/importvariables.js\":{\"text\":\"!function(){'use strict';function t(t,e){this.initialise(t,e)}var e=require('$:/core/modules/widgets/widget.js').widget;(t.prototype=new e).render=function(t,e){this.parentDomNode=t,this.computeAttributes(),this.execute(),this.renderChildren(t,e)},t.prototype.execute=function(t){var s=this;this.variables=Object.create(null),this.parentWidget&&Object.setPrototypeOf(this.variables,this.parentWidget.variables),this.filter=this.getAttribute('filter'),this.tiddlerList=t||this.wiki.filterTiddlers(this.filter,this),$tw.utils.each(this.tiddlerList,function(t){t=s.wiki.parseTiddler(t,{parseAsInline:!0});if(t)for(var e=t.tree[0];e&&'set'===e.type;){var i,r={type:'set',attributes:e.attributes,params:e.params,isMacroDefinition:e.isMacroDefinition};e.isMacroDefinition?((i=s.makeChildWidget(r)).computeAttributes(),i.execute(),$tw.utils.each(Object.keys(i.variables),function(t){s.variables[t]=i.variables[t]})):(s.children=[s.makeChildWidget(r)],s!=this&&(s.makeChildWidgets=function(){}),s=s.children[0]),e=e.children&&e.children[0]}}),s!=this?s.parseTreeNode.children=this.parseTreeNode.children:s.makeChildWidgets()},t.prototype.refresh=function(e){var i,t=this.computeAttributes(),r=this.wiki.filterTiddlers(this.getAttribute('filter'),this);return t.filter||!$tw.utils.isArrayEqual(this.tiddlerList,r)||(i=!1,r.forEach(function(t){e[t]&&(i=!0)}),i)?(this.removeChildDomNodes(),this.execute(r),this.renderChildren(this.parentDomNode,this.findNextSiblingDomNode()),!0):this.refreshChildren(e)},exports.importvariables=t}();\",\"type\":\"application/javascript\",\"module-type\":\"widget\"},\"$:/core/modules/widgets/jsontiddler.js\":{\"text\":\"!function(){'use strict';function t(t,e){this.initialise(t,e)}var e=require('$:/core/modules/widgets/widget.js').widget;(t.prototype=new e).render=function(t,e){this.parentDomNode=t,this.computeAttributes(),this.execute();var i=this.getTiddlerFields(),s=($tw.utils.each(this.attributes,function(t,e){'$'===e.charAt(0)&&(i[e.slice(1)]=t)}),JSON.stringify(i)),s=(this.attEscapeUnsafeScriptChars&&(s=s.replace(/\u003C/g,'\\\\\\\\u003C')),this.document.createTextNode(s));t.insertBefore(s,e),this.domNodes.push(s)},t.prototype.execute=function(){this.attTiddler=this.getAttribute('tiddler'),this.attExclude=this.getAttribute('exclude',''),this.attEscapeUnsafeScriptChars='yes'===this.getAttribute('escapeUnsafeScriptChars','no')},t.prototype.refresh=function(t){var e=this.computeAttributes();return!!(0\u003C$tw.utils.count(e)||this.attTiddler&&t[this.attTiddler])&&(this.refreshSelf(),!0)},t.prototype.getTiddlerFields=function(){var t,e={};return e=this.attTiddler?(t=this.wiki.getTiddler(this.attTiddler))?t.getFieldStrings({exclude:this.attExclude.split(' ')}):{title:this.attTiddler}:e},exports.jsontiddler=t}();\",\"type\":\"application/javascript\",\"module-type\":\"widget\"},\"$:/core/modules/widgets/keyboard.js\":{\"text\":\"!function(){'use strict';function t(t,e){this.initialise(t,e)}var e=require('$:/core/modules/widgets/widget.js').widget;(t.prototype=new e).render=function(t,e){this.parentDomNode=t,this.computeAttributes(),this.execute();var s=this.parseTreeNode.isBlock?'div':'span',s=(this.tag&&-1===$tw.config.htmlUnsafeElements.indexOf(this.tag)&&(s=this.tag),this.document.createElement(s));this.domNode=s,this.assignDomNodeClasses(),$tw.utils.addEventListeners(s,[{name:'keydown',handlerObject:this,handlerMethod:'handleChangeEvent'}]),t.insertBefore(s,e),this.renderChildren(s,null),this.domNodes.push(s)},t.prototype.handleChangeEvent=function(t){var e,s,i;return!!$tw.keyboardManager.handleKeydownEvent(t,{onlyPriority:!0})||!!(e=$tw.keyboardManager.getMatchingKeyDescriptor(t,this.keyInfoArray))&&(s=this.invokeActions(this,t),this.actions&&(i={'event-key':t.key,'event-code':t.code,modifier:$tw.keyboardManager.getEventModifierKeyDescriptor(t)},e.keyDescriptor&&(i['event-key-descriptor']=e.keyDescriptor),this.invokeActionString(this.actions,this,t,i)),this.dispatchMessage(t),(s||this.actions||this.message)&&(t.preventDefault(),t.stopPropagation()),!0)},t.prototype.dispatchMessage=function(t){this.dispatchEvent({type:this.message,param:this.param,tiddlerTitle:this.getVariable('currentTiddler')})},t.prototype.execute=function(){var e,s=this;this.actions=this.getAttribute('actions',''),this.message=this.getAttribute('message',''),this.param=this.getAttribute('param',''),this.key=this.getAttribute('key',''),this.tag=this.getAttribute('tag',''),this.keyInfoArray=$tw.keyboardManager.parseKeyDescriptors(this.key),'(('===this.key.substr(0,2)&&'))'===this.key.substr(-2,2)&&(this.shortcutTiddlers=[],e=this.key.substring(2,this.key.length-2),$tw.utils.each($tw.keyboardManager.lookupNames,function(t){s.shortcutTiddlers.push('$:/config/'+t+'/'+e)})),this.makeChildWidgets()},t.prototype.assignDomNodeClasses=function(){var t=this.getAttribute('class','').split(' ');t.push('tc-keyboard'),this.domNode.className=t.join(' ')},t.prototype.refresh=function(t){var e=this.computeAttributes();return e.message||e.param||e.key||e.tag?(this.refreshSelf(),!0):(e.class&&this.assignDomNodeClasses(),this.shortcutTiddlers&&$tw.utils.hopArray(t,this.shortcutTiddlers)&&(this.keyInfoArray=$tw.keyboardManager.parseKeyDescriptors(this.key)),this.refreshChildren(t))},exports.keyboard=t}();\",\"type\":\"application/javascript\",\"module-type\":\"widget\"},\"$:/core/modules/widgets/let.js\":{\"text\":\"!function(){'use strict';function t(t,e){this.initialise(t,e)}var r=require('$:/core/modules/widgets/widget.js').widget;(t.prototype=new r).render=function(t,e){this.parentDomNode=t,this.computeAttributes(),this.execute(),this.renderChildren(t,e)},t.prototype.computeAttributes=function(){var r={},i=this;return this.currentValueFor=Object.create(null),$tw.utils.each($tw.utils.getOrderedAttributesFromParseTreeNode(this.parseTreeNode),function(t){var e=i.computeAttribute(t),t=t.name;i.currentValueFor[t]=e}),$tw.utils.each(this.currentValueFor,function(t,e){i.attributes[e]!==t&&(i.attributes[e]=t,i.setVariable(e,t),r[e]=!0)}),r},t.prototype.getVariableInfo=function(t,e){return $tw.utils.hop(this.currentValueFor,t)?{text:this.currentValueFor[t]}:r.prototype.getVariableInfo.call(this,t,e)},t.prototype.refresh=function(t){var e=this.computeAttributes();return 0\u003C$tw.utils.count(e)?(this.refreshSelf(),!0):this.refreshChildren(t)},exports.let=t}();\",\"type\":\"application/javascript\",\"module-type\":\"widget\"},\"$:/core/modules/widgets/link.js\":{\"text\":\"!function(){'use strict';function t(t,e){this.initialise(t,e)}var e=require('$:/core/modules/widgets/widget.js').widget;(t.prototype=new e).render=function(t,e){this.parentDomNode=t,this.computeAttributes(),this.execute();var i=this.getVariable('tv-wikilinks'),i=!i||'no'!==i.trim(),s=!(this.hideMissingLinks&&this.isMissing&&!this.isShadow);i&&s?this.renderLink(t,e):(i=this.document.createElement('span'),t.insertBefore(i,e),this.renderChildren(i,null),this.domNodes.push(i))},t.prototype.renderLink=function(t,e){var i,s=this,r=this.linkTag,a=(-1!==$tw.config.htmlUnsafeElements.indexOf(r)&&(r='a'),this.getVariable('namespace',{defaultValue:'http://www.w3.org/1999/xhtml'})),n=this.document.createElementNS(a,r),h=[],h=(void 0===this.overrideClasses?(h.push('tc-tiddlylink'),this.isShadow&&h.push('tc-tiddlylink-shadow'),this.isMissing&&!this.isShadow?h.push('tc-tiddlylink-missing'):this.isMissing||h.push('tc-tiddlylink-resolves'),this.linkClasses&&h.push(this.linkClasses)):''!==this.overrideClasses&&h.push(this.overrideClasses),0\u003Ch.length&&n.setAttribute('class',h.join(' ')),this.getVariable('tv-filter-export-link')),h=(i=h?this.wiki.filterTiddlers(h,this,function(t){t(s.wiki.getTiddler(s.to),s.to)})[0]:(h=(h=this.getVariable('tv-wikilink-template'))?h.trim():'#$uri_encoded$',i=$tw.utils.replaceString(h,'$uri_encoded$',encodeURIComponent(this.to)),$tw.utils.replaceString(i,'$uri_doubleencoded$',encodeURIComponent(encodeURIComponent(this.to)))),i=this.getVariable('tv-get-export-link',{params:[{name:'to',value:this.to}],defaultValue:i}),'a'===r&&n.setAttributeNS('http://www.w3.org/2000/svg'===a?'http://www.w3.org/1999/xlink':void 0,'href',i),this.tabIndex&&n.setAttribute('tabindex',this.tabIndex),this.tooltip||this.getVariable('tv-wikilink-tooltip'));h&&(r=this.wiki.renderText('text/plain','text/vnd.tiddlywiki',h,{parseAsInline:!0,variables:{currentTiddler:this.to},parentWidget:this}),n.setAttribute('title',r)),this['aria-label']&&n.setAttribute('aria-label',this['aria-label']),$tw.utils.addEventListeners(n,[{name:'click',handlerObject:this,handlerMethod:'handleClickEvent'}]),'yes'===this.draggable&&$tw.utils.makeDraggable({domNode:n,dragTiddlerFn:function(){return s.to},widget:this}),t.insertBefore(n,e),this.renderChildren(n,null),this.domNodes.push(n)},t.prototype.handleClickEvent=function(t){var e=this.domNodes[0].getBoundingClientRect();return this.dispatchEvent({type:'tm-navigate',navigateTo:this.to,navigateFromTitle:this.getVariable('storyTiddler'),navigateFromNode:this,navigateFromClientRect:{top:e.top,left:e.left,width:e.width,right:e.right,bottom:e.bottom,height:e.height},navigateFromClientTop:e.top,navigateFromClientLeft:e.left,navigateFromClientWidth:e.width,navigateFromClientRight:e.right,navigateFromClientBottom:e.bottom,navigateFromClientHeight:e.height,navigateSuppressNavigation:t.metaKey||t.ctrlKey||1===t.button,metaKey:t.metaKey,ctrlKey:t.ctrlKey,altKey:t.altKey,shiftKey:t.shiftKey,event:t}),this.domNodes[0].hasAttribute('href')&&t.preventDefault(),t.stopPropagation(),!1},t.prototype.execute=function(){var t;this.to=this.getAttribute('to',this.getVariable('currentTiddler')),this.tooltip=this.getAttribute('tooltip'),this['aria-label']=this.getAttribute('aria-label'),this.linkClasses=this.getAttribute('class'),this.overrideClasses=this.getAttribute('overrideClass'),this.tabIndex=this.getAttribute('tabindex'),this.draggable=this.getAttribute('draggable','yes'),this.linkTag=this.getAttribute('tag','a'),this.isMissing=!this.wiki.tiddlerExists(this.to),this.isShadow=this.wiki.isShadowTiddler(this.to),this.hideMissingLinks='no'===(this.getVariable('tv-show-missing-links')||'yes'),t=this.parseTreeNode.children&&0\u003Cthis.parseTreeNode.children.length?this.parseTreeNode.children:[{type:'text',text:this.to}],this.makeChildWidgets(t)},t.prototype.refresh=function(t){var e=this.computeAttributes();return e.to||t[this.to]||e['aria-label']||e.tooltip||e.class||e.tabindex||e.draggable||e.tag?(this.refreshSelf(),!0):this.refreshChildren(t)},exports.link=t}();\",\"type\":\"application/javascript\",\"module-type\":\"widget\"},\"$:/core/modules/widgets/linkcatcher.js\":{\"text\":\"!function(){'use strict';function t(t,e){this.initialise(t,e)}var e=require('$:/core/modules/widgets/widget.js').widget;(t.prototype=new e).render=function(t,e){this.addEventListeners([{type:'tm-navigate',handler:'handleNavigateEvent'}]),this.parentDomNode=t,this.computeAttributes(),this.execute(),this.renderChildren(t,e)},t.prototype.execute=function(){this.catchTo=this.getAttribute('to'),this.catchMessage=this.getAttribute('message'),this.catchSet=this.getAttribute('set'),this.catchSetTo=this.getAttribute('setTo'),this.catchActions=this.getAttribute('actions'),this.makeChildWidgets(),this.executingActions=!1},t.prototype.refresh=function(t){var e=this.computeAttributes();return e.to||e.message||e.set||e.setTo?(this.refreshSelf(),!0):this.refreshChildren(t)},t.prototype.handleNavigateEvent=function(t){var e;return this.executingActions?this.parentWidget.dispatchEvent({type:'tm-navigate',param:t.navigateTo,navigateTo:t.navigateTo}):(this.catchTo&&this.wiki.setTextReference(this.catchTo,t.navigateTo,this.getVariable('currentTiddler')),this.catchMessage&&this.parentWidget&&this.parentWidget.dispatchEvent({type:this.catchMessage,param:t.navigateTo,navigateTo:t.navigateTo}),this.catchSet&&(e=this.wiki.getTiddler(this.catchSet),this.wiki.addTiddler(new $tw.Tiddler(e,{title:this.catchSet,text:this.catchSetTo}))),this.catchActions&&(this.executingActions=!0,e=$tw.keyboardManager.getEventModifierKeyDescriptor(t),this.invokeActionString(this.catchActions,this,t,{navigateTo:t.navigateTo,modifier:e}),this.executingActions=!1)),!1},exports.linkcatcher=t}();\",\"type\":\"application/javascript\",\"module-type\":\"widget\"},\"$:/core/modules/widgets/list.js\":{\"text\":\"!function(){'use strict';function i(t,e){this.initialise(t,e)}function t(t,e){this.initialise(t,e)}var e=require('$:/core/modules/widgets/widget.js').widget;(i.prototype=new e).render=function(t,e){this.storyViews||(i.prototype.storyViews={},$tw.modules.applyMethods('storyview',this.storyViews)),this.parentDomNode=t,this.computeAttributes(),this.execute(),this.renderChildren(t,e);t=this.storyViews[this.storyViewName];(t=this.storyViewName&&!t?this.storyViews.classic:t)&&!this.document.isTiddlyWikiFakeDom?this.storyview=new t(this):this.storyview=null,this.storyview&&this.storyview.renderEnd&&this.storyview.renderEnd()},i.prototype.execute=function(){this.template=this.getAttribute('template'),this.editTemplate=this.getAttribute('editTemplate'),this.variableName=this.getAttribute('variable','currentTiddler'),this.counterName=this.getAttribute('counter'),this.storyViewName=this.getAttribute('storyview'),this.historyTitle=this.getAttribute('history'),this.list=this.getTiddlerList();var i=[],s=this;0===this.list.length?i=this.getEmptyMessage():$tw.utils.each(this.list,function(t,e){i.push(s.makeItemTemplate(t,e))}),this.makeChildWidgets(i),this.history=[]},i.prototype.getTiddlerList=function(){return this.wiki.filterTiddlers(this.getAttribute('filter','[!is[system]sort[title]]'),this)},i.prototype.getEmptyMessage=function(){var t=this.getAttribute('emptyMessage','');return''!==t&&(t=this.wiki.parseText('text/vnd.tiddlywiki',t,{parseAsInline:!0}))?t.tree:[]},i.prototype.makeItemTemplate=function(t,e){var i=this.wiki.getTiddler(t),i=i&&i.hasField('draft.of'),s=this.template,s=(i=(s=i&&this.editTemplate?this.editTemplate:s)?[{type:'transclude',attributes:{tiddler:{type:'string',value:s}}}]:this.parseTreeNode.children&&0\u003Cthis.parseTreeNode.children.length?this.parseTreeNode.children:[{type:'element',tag:this.parseTreeNode.isBlock?'div':'span',children:[{type:'link',attributes:{to:{type:'string',value:t}},children:[{type:'text',text:t}]}]}],{type:'listitem',itemTitle:t,variableName:this.variableName,children:i});return this.counterName&&(s.counter=(e+1).toString(),s.counterName=this.counterName,s.isFirst=0===e,s.isLast=e===this.list.length-1),s},i.prototype.refresh=function(t){var e,i=this.computeAttributes();return this.storyview&&this.storyview.refreshStart&&this.storyview.refreshStart(t,i),i.filter||i.variable||i.counter||i.template||i.editTemplate||i.emptyMessage||i.storyview||i.history?(this.refreshSelf(),e=!0):(e=this.handleListChanges(t),this.historyTitle&&t[this.historyTitle]&&this.handleHistoryChanges()),this.storyview&&this.storyview.refreshEnd&&this.storyview.refreshEnd(t,i),e},i.prototype.handleHistoryChanges=function(){for(var t=this.wiki.getTiddlerDataCached(this.historyTitle,[]),e=0;e\u003Ct.length&&e\u003Cthis.history.length&&t[e].title===this.history[e].title;)e++;for(;e\u003Ct.length;)this.storyview&&this.storyview.navigateTo&&this.storyview.navigateTo(t[e]),e++;this.history=t},i.prototype.handleListChanges=function(t){var e=this.list;if(this.list=this.getTiddlerList(),0===this.list.length){if(0===e.length)return this.refreshChildren(t);for(s=this.children.length-1;0\u003C=s;s--)this.removeListItem(s);var i=this.findNextSiblingDomNode();return this.makeChildWidgets(this.getEmptyMessage()),this.renderChildren(this.parentDomNode,i),!0}0===e.length&&(this.removeChildDomNodes(),this.children=[]);var s,r=!1;if(this.counterName){for(s=0;s\u003Cthis.list.length;s++)r=r||!this.children[s]||this.children[s].parseTreeNode.itemTitle!==this.list[s]?(this.children[s]&&this.removeListItem(s),this.insertListItem(s,this.list[s]),!0):(n=this.children[s].refresh(t),r||n);!r&&this.children.length>this.list.length&&(this.removeListItem(this.list.length-1),this.insertListItem(this.list.length-1,this.list[this.list.length-1]))}else for(s=0;s\u003Cthis.list.length;s++){var h=this.findListItem(s,this.list[s]);if(void 0===h)this.insertListItem(s,this.list[s]),r=!0;else{for(var o=h-1;s\u003C=o;o--)this.removeListItem(o),r=!0;var n=this.children[s].refresh(t);r=r||n}}for(s=this.children.length-1;s>=this.list.length;s--)this.removeListItem(s),r=!0;return r},i.prototype.findListItem=function(t,e){for(;t\u003Cthis.children.length;){if(this.children[t].parseTreeNode.itemTitle===e)return t;t++}},i.prototype.insertListItem=function(t,e){e=this.makeChildWidget(this.makeItemTemplate(e,t)),e.parentDomNode=this.parentDomNode,this.children.splice(t,0,e),t=e.findNextSiblingDomNode();return e.render(this.parentDomNode,t),this.storyview&&this.storyview.insert&&this.storyview.insert(e),!0},i.prototype.removeListItem=function(t){var e=this.children[t];this.storyview&&this.storyview.remove?this.storyview.remove(e):e.removeChildDomNodes(),this.children.splice(t,1)},exports.list=i;(t.prototype=new e).render=function(t,e){this.parentDomNode=t,this.computeAttributes(),this.execute(),this.renderChildren(t,e)},t.prototype.execute=function(){this.setVariable(this.parseTreeNode.variableName,this.parseTreeNode.itemTitle),this.parseTreeNode.counterName&&(this.setVariable(this.parseTreeNode.counterName,this.parseTreeNode.counter),this.setVariable(this.parseTreeNode.counterName+'-first',this.parseTreeNode.isFirst?'yes':'no'),this.setVariable(this.parseTreeNode.counterName+'-last',this.parseTreeNode.isLast?'yes':'no')),this.makeChildWidgets()},t.prototype.refresh=function(t){return this.refreshChildren(t)},exports.listitem=t}();\",\"type\":\"application/javascript\",\"module-type\":\"widget\"},\"$:/core/modules/widgets/log.js\":{\"text\":\"!function(){'use strict';exports.baseClass='action-log',exports.name='log',exports.constructor=function(t,e){this.initialise(t,e)},exports.prototype={},exports.prototype.render=function(t){Object.getPrototypeOf(Object.getPrototypeOf(this)).render.call(this,t),Object.getPrototypeOf(Object.getPrototypeOf(this)).log.call(this)}}();\",\"type\":\"application/javascript\",\"module-type\":\"widget-subclass\"},\"$:/core/modules/widgets/macrocall.js\":{\"text\":\"!function(){'use strict';function e(e,t){this.initialise(e,t)}var t=require('$:/core/modules/widgets/widget.js').widget;(e.prototype=new t).render=function(e,t){this.parentDomNode=e,this.computeAttributes(),this.execute(),this.renderChildren(e,t)},e.prototype.execute=function(){this.parseType=this.getAttribute('$type','text/vnd.tiddlywiki'),this.renderOutput=this.getAttribute('$output','text/html');var e,t,r,i=this.parseTreeNode.params?this.parseTreeNode.params.slice(0):[],s=($tw.utils.each(this.attributes,function(e,t){'$'!==t.charAt(0)&&i.push({name:t,value:e})}),this.parseTreeNode.name||this.getAttribute('$name')),s=this.getVariableInfo(s,{params:i}),a=s.text;t='text/html'===this.renderOutput?(t=this.parseTreeNode.isBlock?'blockParser':'inlineParser',s.srcVariable&&s.srcVariable[t]?e=s.srcVariable[t]:(e=this.wiki.parseText(this.parseType,a,{parseAsInline:!this.parseTreeNode.isBlock}),s.isCacheable&&s.srcVariable&&(s.srcVariable[t]=e)),t=e?e.tree:[],r={},$tw.utils.each(s.params,function(e){var t='__'+e.name+'__';r[t]={name:t,type:'string',value:e.value}}),[{type:'vars',attributes:r,children:t}]):'text/raw'===this.renderOutput?[{type:'text',text:a}]:[{type:'text',text:this.wiki.renderText('text/plain',this.parseType,a,{parentWidget:this})}],this.makeChildWidgets(t)},e.prototype.refresh=function(e){var t=this.computeAttributes();return 0\u003C$tw.utils.count(t)?(this.refreshSelf(),!0):this.refreshChildren(e)},exports.macrocall=e}();\",\"type\":\"application/javascript\",\"module-type\":\"widget\"},\"$:/core/modules/widgets/messagecatcher.js\":{\"text\":\"!function(){'use strict';function t(t,e){this.initialise(t,e)}var e=require('$:/core/modules/widgets/widget.js').widget;(t.prototype=new e).render=function(t,e){function i(t,i){var r;t&&i&&(r=!1,n.addEventListener(t,function(t){var e;return!!r||(e=function(t,i){i=i||'';var r={},n=[];return $tw.utils.each(t,function(t,e){-1!==['string','boolean','number'].indexOf(typeof t)&&(n.push(e),r[i+'-'+e]=t.toString())}),r['list-'+i]=$tw.utils.stringifyList(n),r},e=$tw.utils.extend({},e(t.paramObject,'event-paramObject'),e(t,'event'),{modifier:$tw.keyboardManager.getEventModifierKeyDescriptor(t)}),r=!0,n.invokeActionString(i,n,t,e),r=!1)}))}var n=this;this.parentDomNode=t,this.computeAttributes(),this.execute();i(this.getAttribute('type'),this.getAttribute('actions')),$tw.utils.each(this.attributes,function(t,e){'$'===e.charAt(0)&&i(e.slice(1),t)}),this.renderChildren(t,null)},t.prototype.execute=function(){this.makeChildWidgets()},t.prototype.refresh=function(t){var e=this.computeAttributes();return 0\u003C$tw.utils.count(e)?(this.refreshSelf(),!0):this.refreshChildren(t)},exports.messagecatcher=t}();\",\"type\":\"application/javascript\",\"module-type\":\"widget\"},\"$:/core/modules/widgets/navigator.js\":{\"text\":\"!function(){'use strict';function t(t,e){this.initialise(t,e)}var e=require('$:/core/modules/widgets/widget.js').widget;(t.prototype=new e).render=function(t,e){this.addEventListeners([{type:'tm-navigate',handler:'handleNavigateEvent'},{type:'tm-edit-tiddler',handler:'handleEditTiddlerEvent'},{type:'tm-delete-tiddler',handler:'handleDeleteTiddlerEvent'},{type:'tm-save-tiddler',handler:'handleSaveTiddlerEvent'},{type:'tm-cancel-tiddler',handler:'handleCancelTiddlerEvent'},{type:'tm-close-tiddler',handler:'handleCloseTiddlerEvent'},{type:'tm-close-all-tiddlers',handler:'handleCloseAllTiddlersEvent'},{type:'tm-close-other-tiddlers',handler:'handleCloseOtherTiddlersEvent'},{type:'tm-new-tiddler',handler:'handleNewTiddlerEvent'},{type:'tm-import-tiddlers',handler:'handleImportTiddlersEvent'},{type:'tm-perform-import',handler:'handlePerformImportEvent'},{type:'tm-fold-tiddler',handler:'handleFoldTiddlerEvent'},{type:'tm-fold-other-tiddlers',handler:'handleFoldOtherTiddlersEvent'},{type:'tm-fold-all-tiddlers',handler:'handleFoldAllTiddlersEvent'},{type:'tm-unfold-all-tiddlers',handler:'handleUnfoldAllTiddlersEvent'}]),this.parentDomNode=t,this.computeAttributes(),this.execute(),this.renderChildren(t,e)},t.prototype.execute=function(){this.storyTitle=this.getAttribute('story'),this.historyTitle=this.getAttribute('history'),this.setVariable('tv-story-list',this.storyTitle),this.setVariable('tv-history-list',this.historyTitle),this.story=new $tw.Story({wiki:this.wiki,storyTitle:this.storyTitle,historyTitle:this.historyTitle}),this.makeChildWidgets()},t.prototype.refresh=function(t){var e=this.computeAttributes();return e.story||e.history?(this.refreshSelf(),!0):this.refreshChildren(t)},t.prototype.getStoryList=function(){return this.storyTitle?this.wiki.getTiddlerList(this.storyTitle):null},t.prototype.saveStoryList=function(t){var e;this.storyTitle&&(e=this.wiki.getTiddler(this.storyTitle),this.wiki.addTiddler(new $tw.Tiddler({title:this.storyTitle},e,{list:t})))},t.prototype.removeTitleFromStory=function(t,e){if(t)for(var i=t.indexOf(e);-1!==i;)t.splice(i,1),i=t.indexOf(e)},t.prototype.replaceFirstTitleInStory=function(t,e,i){if(t){var r=t.indexOf(e);if(-1!==r)for(t[r]=i;-1!==(r=t.indexOf(e,r+1))&&t.splice(r,1),-1!==r;);else t.splice(0,0,i)}},t.prototype.addToStory=function(t,e){this.storyTitle&&this.story.addToStory(t,e,{openLinkFromInsideRiver:this.getAttribute('openLinkFromInsideRiver','top'),openLinkFromOutsideRiver:this.getAttribute('openLinkFromOutsideRiver','top')})},t.prototype.addToHistory=function(t,e){this.story.addToHistory(t,e,this.historyTitle)},t.prototype.handleNavigateEvent=function(t){return(t=$tw.hooks.invokeHook('th-navigating',t)).navigateTo&&(this.addToStory(t.navigateTo,t.navigateFromTitle),t.navigateSuppressNavigation||this.addToHistory(t.navigateTo,t.navigateFromClientRect)),!1},t.prototype.handleCloseTiddlerEvent=function(t){var t=(t=$tw.hooks.invokeHook('th-closing-tiddler',t)).param||t.tiddlerTitle,e=this.getStoryList();return this.removeTitleFromStory(e,t),this.saveStoryList(e),!1},t.prototype.handleCloseAllTiddlersEvent=function(t){return this.saveStoryList([]),!1},t.prototype.handleCloseOtherTiddlersEvent=function(t){t=t.param||t.tiddlerTitle;return this.saveStoryList([t]),!1},t.prototype.handleEditTiddlerEvent=function(t){var e,i,r=$tw.hooks.invokeHook('th-editing-tiddler',t),d=t.event&&t.event.view?t.event.view:window;return!(!r||(r=this,e=t.param||t.tiddlerTitle,i=e,r.wiki.isShadowTiddler(i)&&!r.wiki.tiddlerExists(i)&&!d.confirm($tw.language.getString('ConfirmEditShadowTiddler',{variables:{title:e}}))))&&(r=this.makeDraftTiddler(e),t.paramObject&&'yes'===t.paramObject.suppressNavigation?void 0:(i=r.fields.title,d=this.getStoryList(),this.removeTitleFromStory(d,i),this.replaceFirstTitleInStory(d,e,i),this.addToHistory(i,t.navigateFromClientRect),this.saveStoryList(d),!1))},t.prototype.handleDeleteTiddlerEvent=function(t){var e,i=t.param||t.tiddlerTitle,r=this.wiki.getTiddler(i),d=this.getStoryList(),o=r?r.fields['draft.of']:'',s=o?this.wiki.getTiddler(o):void 0,t=t.event&&t.event.view?t.event.view:window;return r&&(e=o||i,!this.wiki.getTiddler(o)&&''===(r.fields.text||'')||t.confirm($tw.language.getString('ConfirmDeleteTiddler',{variables:{title:e}})))&&(o&&(s&&$tw.hooks.invokeHook('th-deleting-tiddler',s),this.wiki.deleteTiddler(o),this.removeTitleFromStory(d,o)),$tw.hooks.invokeHook('th-deleting-tiddler',r),this.wiki.deleteTiddler(i),this.removeTitleFromStory(d,i),this.saveStoryList(d),$tw.rootWidget.dispatchEvent({type:'tm-auto-save-wiki'})),!1},t.prototype.makeDraftTiddler=function(t){var e,i;return(e=this.wiki.findDraft(t))?this.wiki.getTiddler(e):(i=this.wiki.getTiddler(t),e=this.generateDraftTitle(t),i=new $tw.Tiddler({text:''},i,{title:e,'draft.title':t,'draft.of':t},this.wiki.getModificationFields()),this.wiki.addTiddler(i),i)},t.prototype.generateDraftTitle=function(t){return this.wiki.generateDraftTitle(t)},t.prototype.handleSaveTiddlerEvent=function(t){var e,i,r,d,o=t.param||t.tiddlerTitle,s=this.wiki.getTiddler(o),l=this.getStoryList(),n=t.event&&t.event.view?t.event.view:window;return s&&(e=(s.fields['draft.title']||'').trim(),i=(s.fields['draft.of']||'').trim(),e)&&(d=!0,d=(r=i!==e)&&this.wiki.tiddlerExists(e)?n.confirm($tw.language.getString('ConfirmOverwriteTiddler',{variables:{title:e}})):d)&&(n=new $tw.Tiddler(this.wiki.getCreationFields(),s,{title:e,'draft.title':void 0,'draft.of':void 0},this.wiki.getModificationFields()),n=$tw.hooks.invokeHook('th-saving-tiddler',n,s),this.wiki.addTiddler(n),d='yes'===this.getAttribute('relinkOnRename','no').toLowerCase().trim(),r&&d&&this.wiki.tiddlerExists(i)&&this.wiki.relinkTiddler(i,e),this.wiki.deleteTiddler(o),r&&this.wiki.deleteTiddler(i),this.removeTitleFromStory(l,e),this.removeTitleFromStory(l,i),t.paramObject&&'yes'===t.paramObject.suppressNavigation||(this.replaceFirstTitleInStory(l,o,e),this.addToHistory(e,t.navigateFromClientRect),e!==this.storyTitle&&this.saveStoryList(l)),$tw.rootWidget.dispatchEvent({type:'tm-auto-save-wiki'})),!1},t.prototype.handleCancelTiddlerEvent=function(t){var e,i,r=(t=$tw.hooks.invokeHook('th-cancelling-tiddler',t)).event&&t.event.view?t.event.view:window,d=t.param||t.tiddlerTitle,o=this.wiki.getTiddler(d),s=o&&o.fields['draft.of'];return o&&s&&(o=!0,e=this.wiki.getTiddler(s),i=this.getStoryList(),o=this.wiki.isDraftModified(d)?r.confirm($tw.language.getString('ConfirmCancelTiddler',{variables:{title:d}})):o)&&(this.wiki.deleteTiddler(d),t.paramObject&&'yes'===t.paramObject.suppressNavigation||(e?(this.replaceFirstTitleInStory(i,d,s),this.addToHistory(s,t.navigateFromClientRect)):this.removeTitleFromStory(i,d),this.saveStoryList(i))),!1},t.prototype.handleNewTiddlerEvent=function(t){t=$tw.hooks.invokeHook('th-new-tiddler',t);var e,i,r,d,o=this.getStoryList(),s=('string'==typeof t.param&&(n=this.wiki.getTiddler(t.param),e=this.wiki.generateNewTitle(t.param||$tw.language.getString('DefaultNewTiddlerTitle'))),'object'==typeof t.paramObject&&(d=t.paramObject),(d='object'==typeof t.param?t.param:d)&&d.title&&(e=d.title),$tw.utils.extend({},d)),l=(Object.keys(s).forEach(function(t){''===s[t]&&delete s[t]}),e=e||this.wiki.generateNewTitle($tw.language.getString('DefaultNewTiddlerTitle')),[]),n=((r=(i=this.wiki.findDraft(e))?this.wiki.getTiddler(i):(i=this.generateDraftTitle(e),this.wiki.getTiddler(e)))&&r.fields.tags&&$tw.utils.pushTop(l,r.fields.tags),d&&d.tags&&(l=$tw.utils.pushTop(l,$tw.utils.parseStringArray(d.tags))),n&&n.fields.tags&&(l=$tw.utils.pushTop(l,n.fields.tags)),new $tw.Tiddler({text:'','draft.title':e},n,d,this.wiki.getCreationFields(),r,s,{title:i,'draft.of':e,tags:l},this.wiki.getModificationFields()));return this.wiki.addTiddler(n),o&&-1===o.indexOf(i)&&(-1===(d=o.indexOf(t.navigateFromTitle))&&(d='bottom'===this.getAttribute('openLinkFromOutsideRiver','top')?o.length-1:d),o.splice(d+1,0,i)),o&&-1!==o.indexOf(e)&&o.splice(o.indexOf(e),1),this.saveStoryList(o),this.addToHistory(i),!1},t.prototype.handleImportTiddlersEvent=function(t){var e=$tw.utils.parseJSONSafe(t.param,[]),i=t.importTitle||'$:/Import',r=this.wiki.getTiddler(i),d=this.wiki.getTiddlerData(i,{}),o=new Object({title:i,type:'application/json','plugin-type':'import',status:'pending'}),s=[],e=(d.tiddlers=d.tiddlers||{},$tw.utils.each(e,function(t){t.title=$tw.utils.trim(t.title);var e=t.title;e&&(s.push(e),d.tiddlers[e]=t)}),this.wiki.invokeUpgraders(s,d.tiddlers)),l=$tw.language.getString('Import/Upgrader/Tiddler/Unselected');return $tw.utils.each(e,function(t,e){-1!==(o['message-'+e]=t).indexOf(l)&&(o['selection-'+e]='unchecked')}),$tw.utils.each(d.tiddlers,function(t,e){0===$tw.utils.count(t)&&(o['selection-'+e]='unchecked',o['suppressed-'+e]='yes')}),o.text=JSON.stringify(d,null,$tw.config.preferences.jsonSpaces),this.wiki.addTiddler(new $tw.Tiddler(r,o)),'no'!==(t.autoOpenOnImport||this.getVariable('tv-auto-open-on-import'))&&(e=[],(r=this.getStoryList())&&-1===r.indexOf(i)&&r.unshift(i),e.push(i),this.saveStoryList(r),this.addToHistory(e)),!1},t.prototype.handlePerformImportEvent=function(t){var e,i=this,r=this.wiki.getTiddler(t.param),d=[];d.push($tw.language.getString('Import/Imported/Hint')+'\\\\n'),r=$tw.hooks.invokeHook('th-before-importing',r),e=this.wiki.getTiddlerDataCached(t.param,{tiddlers:{}}),$tw.utils.each(e.tiddlers,function(t){var e=t.title;e&&r&&'unchecked'!==r.fields['selection-'+e]&&(e=$tw.utils.hop(r.fields,['rename-'+e])?new $tw.Tiddler(t,{title:r.fields['rename-'+e]}):new $tw.Tiddler(t),e=$tw.hooks.invokeHook('th-importing-tiddler',e),i.wiki.addTiddler(e),d.push('# [['+e.fields.title+']]'))}),this.wiki.addTiddler(new $tw.Tiddler({title:t.param,text:d.join('\\\\n'),status:'complete'})),this.addToHistory([t.param]),$tw.rootWidget.dispatchEvent({type:'tm-auto-save-wiki'})},t.prototype.handleFoldTiddlerEvent=function(t){var e,t=t.paramObject||{};t.foldedState&&(e='show'===this.wiki.getTiddlerText(t.foldedState,'show')?'hide':'show',this.wiki.setText(t.foldedState,'text',null,e))},t.prototype.handleFoldOtherTiddlersEvent=function(e){var i=this,r=(e.paramObject||{}).foldedStatePrefix;$tw.utils.each(this.getStoryList(),function(t){i.wiki.setText(r+t,'text',null,e.param===t?'show':'hide')})},t.prototype.handleFoldAllTiddlersEvent=function(t){var e=this,i=(t.paramObject||{}).foldedStatePrefix||'$:/state/folded/';$tw.utils.each(this.getStoryList(),function(t){e.wiki.setText(i+t,'text',null,'hide')})},t.prototype.handleUnfoldAllTiddlersEvent=function(t){var e=this,i=(t.paramObject||{}).foldedStatePrefix;$tw.utils.each(this.getStoryList(),function(t){e.wiki.setText(i+t,'text',null,'show')})},exports.navigator=t}();\",\"type\":\"application/javascript\",\"module-type\":\"widget\"},\"$:/core/modules/widgets/password.js\":{\"text\":\"!function(){'use strict';function e(e,t){this.initialise(e,t)}var t=require('$:/core/modules/widgets/widget.js').widget;(e.prototype=new t).render=function(e,t){this.parentDomNode=e,this.computeAttributes(),this.execute();var s=$tw.browser&&$tw.utils.getPassword(this.passwordName)||'',r=this.document.createElement('input');r.setAttribute('type','password'),r.setAttribute('value',s),$tw.utils.addEventListeners(r,[{name:'change',handlerObject:this,handlerMethod:'handleChangeEvent'}]),e.insertBefore(r,t),this.renderChildren(r,null),this.domNodes.push(r)},e.prototype.handleChangeEvent=function(e){var t=this.domNodes[0].value;return $tw.utils.savePassword(this.passwordName,t)},e.prototype.execute=function(){this.passwordName=this.getAttribute('name',''),this.makeChildWidgets()},e.prototype.refresh=function(e){return this.computeAttributes().name?(this.refreshSelf(),!0):this.refreshChildren(e)},exports.password=e}();\",\"type\":\"application/javascript\",\"module-type\":\"widget\"},\"$:/core/modules/widgets/qualify.js\":{\"text\":\"!function(){'use strict';function t(t,e){this.initialise(t,e)}var e=require('$:/core/modules/widgets/widget.js').widget;(t.prototype=new e).render=function(t,e){this.parentDomNode=t,this.computeAttributes(),this.execute(),this.renderChildren(t,e)},t.prototype.execute=function(){this.qualifyName=this.getAttribute('name'),this.qualifyTitle=this.getAttribute('title'),this.qualifyName&&this.setVariable(this.qualifyName,this.qualifyTitle+'-'+this.getStateQualifier()),this.makeChildWidgets()},t.prototype.refresh=function(t){var e=this.computeAttributes();return e.name||e.title?(this.refreshSelf(),!0):this.refreshChildren(t)},exports.qualify=t}();\",\"type\":\"application/javascript\",\"module-type\":\"widget\"},\"$:/core/modules/widgets/radio.js\":{\"text\":\"!function(){'use strict';function t(t,i){this.initialise(t,i)}var i=require('$:/core/modules/widgets/widget.js').widget;(t.prototype=new i).render=function(t,i){this.parentDomNode=t,this.computeAttributes(),this.execute();var e=this.getValue()===this.radioValue;this.labelDomNode=this.document.createElement('label'),this.labelDomNode.setAttribute('class','tc-radio '+this.radioClass+(e?' tc-radio-selected':'')),this.inputDomNode=this.document.createElement('input'),this.inputDomNode.setAttribute('type','radio'),e&&(this.inputDomNode.checked=!0),'yes'===this.isDisabled&&this.inputDomNode.setAttribute('disabled',!0),this.labelDomNode.appendChild(this.inputDomNode),this.spanDomNode=this.document.createElement('span'),this.labelDomNode.appendChild(this.spanDomNode),$tw.utils.addEventListeners(this.inputDomNode,[{name:'change',handlerObject:this,handlerMethod:'handleChangeEvent'}]),t.insertBefore(this.labelDomNode,i),this.renderChildren(this.spanDomNode,null),this.domNodes.push(this.labelDomNode)},t.prototype.getValue=function(){var t=this.wiki.getTiddler(this.radioTitle),t=t?this.radioIndex?this.wiki.extractTiddlerDataItem(this.radioTitle,this.radioIndex,this.radioDefault):t.getFieldString(this.radioField,this.radioDefault):this.radioDefault;return t},t.prototype.setValue=function(){var t,i;this.radioIndex?this.wiki.setText(this.radioTitle,'',this.radioIndex,this.radioValue):(t=this.wiki.getTiddler(this.radioTitle),(i={})[this.radioField]=this.radioValue,this.wiki.addTiddler(new $tw.Tiddler(this.wiki.getCreationFields(),{title:this.radioTitle},t,i,this.wiki.getModificationFields())))},t.prototype.handleChangeEvent=function(t){this.inputDomNode.checked&&this.setValue(),this.radioActions&&this.invokeActionString(this.radioActions,this,t,{actionValue:this.radioValue})},t.prototype.execute=function(){this.radioTitle=this.getAttribute('tiddler',this.getVariable('currentTiddler')),this.radioField=this.getAttribute('field','text'),this.radioIndex=this.getAttribute('index'),this.radioValue=this.getAttribute('value'),this.radioClass=this.getAttribute('class',''),this.radioDefault=this.getAttribute('default'),this.isDisabled=this.getAttribute('disabled','no'),this.radioActions=this.getAttribute('actions',''),this.makeChildWidgets()},t.prototype.refresh=function(t){var i=this.computeAttributes();return 0\u003C$tw.utils.count(i)?(this.refreshSelf(),!0):(t[this.radioTitle]&&(this.inputDomNode.checked=this.getValue()===this.radioValue,$tw.utils.toggleClass(this.labelDomNode,'tc-radio-selected',this.inputDomNode.checked)),this.refreshChildren(t))},exports.radio=t}();\",\"type\":\"application/javascript\",\"module-type\":\"widget\"},\"$:/core/modules/widgets/range.js\":{\"text\":\"!function(){'use strict';function t(t,e){this.initialise(t,e)}var e=require('$:/core/modules/widgets/widget.js').widget;(t.prototype=new e).render=function(t,e){this.parentDomNode=t,this.computeAttributes(),this.execute(),this.inputDomNode=this.document.createElement('input'),this.inputDomNode.setAttribute('type','range'),this.inputDomNode.setAttribute('class',this.elementClass),this.minValue&&this.inputDomNode.setAttribute('min',this.minValue),this.maxValue&&this.inputDomNode.setAttribute('max',this.maxValue),this.increment&&this.inputDomNode.setAttribute('step',this.increment),'yes'===this.isDisabled&&this.inputDomNode.setAttribute('disabled',!0),this.inputDomNode.value=this.getValue(),$tw.utils.addEventListeners(this.inputDomNode,[{name:'mousedown',handlerObject:this,handlerMethod:'handleMouseDownEvent'},{name:'mouseup',handlerObject:this,handlerMethod:'handleMouseUpEvent'},{name:'change',handlerObject:this,handlerMethod:'handleChangeEvent'},{name:'input',handlerObject:this,handlerMethod:'handleInputEvent'}]),t.insertBefore(this.inputDomNode,e),this.domNodes.push(this.inputDomNode)},t.prototype.getValue=function(){var t=this.wiki.getTiddler(this.tiddlerTitle),e=this.tiddlerField,i=this.defaultValue;return i=t?this.tiddlerIndex?this.wiki.extractTiddlerDataItem(t,this.tiddlerIndex,this.defaultValue):$tw.utils.hop(t.fields,e)?t.fields[e]||'':this.defaultValue:i},t.prototype.getActionVariables=function(t){t=t||{};var e=this.startValue!==this.inputDomNode.value?'yes':'no';return $tw.utils.extend({actionValue:this.inputDomNode.value,actionValueHasChanged:e},t)},t.prototype.handleMouseDownEvent=function(t){var e;this.mouseDown=!0,this.startValue=this.inputDomNode.value,this.handleEvent(t),this.actionsMouseDown&&(e=this.getActionVariables(),this.invokeActionString(this.actionsMouseDown,this,t,e))},t.prototype.handleMouseUpEvent=function(t){var e;this.mouseDown=!1,this.handleEvent(t),this.actionsMouseUp&&(e=this.getActionVariables(),this.invokeActionString(this.actionsMouseUp,this,t,e)),$tw.browser.isIE&&this.startValue!==this.inputDomNode.value&&(this.handleChangeEvent(t),this.startValue=this.inputDomNode.value)},t.prototype.handleChangeEvent=function(t){this.mouseDown&&this.handleInputEvent(t)},t.prototype.handleInputEvent=function(t){var e;this.handleEvent(t),this.actionsInput&&(e=this.getActionVariables({actionValueHasChanged:'yes'}),this.invokeActionString(this.actionsInput,this,t,e))},t.prototype.handleEvent=function(t){this.getValue()!==this.inputDomNode.value&&(this.tiddlerIndex?this.wiki.setText(this.tiddlerTitle,'',this.tiddlerIndex,this.inputDomNode.value):this.wiki.setText(this.tiddlerTitle,this.tiddlerField,null,this.inputDomNode.value))},t.prototype.execute=function(){this.mouseUp=!0,this.tiddlerTitle=this.getAttribute('tiddler',this.getVariable('currentTiddler')),this.tiddlerField=this.getAttribute('field','text'),this.tiddlerIndex=this.getAttribute('index'),this.minValue=this.getAttribute('min'),this.maxValue=this.getAttribute('max'),this.increment=this.getAttribute('increment'),this.defaultValue=this.getAttribute('default',''),this.elementClass=this.getAttribute('class',''),this.isDisabled=this.getAttribute('disabled','no'),this.actionsMouseDown=this.getAttribute('actionsStart',''),this.actionsMouseUp=this.getAttribute('actionsStop',''),this.actionsInput=this.getAttribute('actions',''),this.makeChildWidgets()},t.prototype.refresh=function(t){var e,i=this.computeAttributes();return 0\u003C$tw.utils.count(i)?(this.refreshSelf(),!0):(i=!1,t[this.tiddlerTitle]&&(e=this.getValue(),this.inputDomNode.value!==e&&(this.inputDomNode.value=e),i=!0),this.refreshChildren(t)||i)},exports.range=t}();\",\"type\":\"application/javascript\",\"module-type\":\"widget\"},\"$:/core/modules/widgets/raw.js\":{\"text\":\"!function(){'use strict';function e(e,t){this.initialise(e,t)}var t=require('$:/core/modules/widgets/widget.js').widget;(e.prototype=new t).render=function(e,t){this.parentDomNode=e,this.execute();var r=this.document.createElement('div');r.innerHTML=this.parseTreeNode.html,e.insertBefore(r,t),this.domNodes.push(r)},e.prototype.execute=function(){},e.prototype.refresh=function(e){return!1},exports.raw=e}();\",\"type\":\"application/javascript\",\"module-type\":\"widget\"},\"$:/core/modules/widgets/reveal.js\":{\"text\":\"!function(){'use strict';function t(t,e){this.initialise(t,e)}var e=require('$:/core/modules/widgets/widget.js').widget,i=require('$:/core/modules/utils/dom/popup.js');(t.prototype=new e).render=function(t,e){this.parentDomNode=t,this.computeAttributes(),this.execute();var i=this.parseTreeNode.isBlock?'div':'span',i=(this.revealTag&&-1===$tw.config.htmlUnsafeElements.indexOf(this.revealTag)&&(i=this.revealTag),this.document.createElement(i));this.domNode=i,this.assignDomNodeClasses(),this.style&&i.setAttribute('style',this.style),t.insertBefore(i,e),this.renderChildren(i,null),!i.isTiddlyWikiFakeDom&&'popup'===this.type&&this.isOpen&&(this.positionPopup(i),$tw.utils.addClass(i,'tc-popup')),this.isOpen||i.setAttribute('hidden','true'),this.domNodes.push(i)},t.prototype.positionPopup=function(t){var e,i;switch(t.style.position='absolute',t.style.zIndex='1000',this.position){case'left':e=this.popup.left-t.offsetWidth,i=this.popup.top;break;case'above':e=this.popup.left,i=this.popup.top-t.offsetHeight;break;case'aboveright':e=this.popup.left+this.popup.width,i=this.popup.top+this.popup.height-t.offsetHeight;break;case'belowright':e=this.popup.left+this.popup.width,i=this.popup.top+this.popup.height;break;case'right':e=this.popup.left+this.popup.width,i=this.popup.top;break;case'belowleft':e=this.popup.left+this.popup.width-t.offsetWidth,i=this.popup.top+this.popup.height;break;case'aboveleft':e=this.popup.left-t.offsetWidth,i=this.popup.top-t.offsetHeight;break;default:e=this.popup.left,i=this.popup.top+this.popup.height}if(this.positionAllowNegative||(e=Math.max(0,e),i=Math.max(0,i)),this.popup.absolute)for(var s=t.offsetParent;s;s=s.offsetParent)e-=s.offsetLeft,i-=s.offsetTop;t.style.left=e+'px',t.style.top=i+'px'},t.prototype.execute=function(){this.state=this.getAttribute('state'),this.revealTag=this.getAttribute('tag'),this.type=this.getAttribute('type'),this.text=this.getAttribute('text'),this.position=this.getAttribute('position'),this.positionAllowNegative='yes'===this.getAttribute('positionAllowNegative'),this.style=this.getAttribute('style',''),this.default=this.getAttribute('default',''),this.animate=this.getAttribute('animate','no'),this.retain=this.getAttribute('retain','no'),this.openAnimation='no'===this.animate?void 0:'open',this.closeAnimation='no'===this.animate?void 0:'close',this.updatePopupPosition='yes'===this.getAttribute('updatePopupPosition','no'),this.stateTiddlerTitle=this.state,this.stateTitle=this.getAttribute('stateTitle'),this.stateField=this.getAttribute('stateField'),this.stateIndex=this.getAttribute('stateIndex'),this.readState();var t=this.isOpen?this.parseTreeNode.children:[];this.hasChildNodes=this.isOpen,this.makeChildWidgets(t)},t.prototype.readState=function(){var t,e,i=this.default;switch(null===(e=this.stateTitle?(t=this.wiki.getTiddler(this.stateTitle),this.stateField?t&&t.getFieldString(this.stateField)||i:this.stateIndex?t&&this.wiki.extractTiddlerDataItem(this.stateTitle,this.stateIndex)||i:t&&this.wiki.getTiddlerText(this.stateTitle)||i):this.stateTiddlerTitle?this.wiki.getTextReference(this.state,this.default,this.getVariable('currentTiddler')):this.default)&&(e=this.default),this.type){case'popup':this.readPopupState(e);break;case'match':this.isOpen=this.text===e;break;case'nomatch':this.isOpen=this.text!==e;break;case'lt':this.isOpen=!!(this.compareStateText(e)\u003C0);break;case'gt':this.isOpen=!!(0\u003Cthis.compareStateText(e));break;case'lteq':this.isOpen=!(0\u003Cthis.compareStateText(e));break;case'gteq':this.isOpen=!(this.compareStateText(e)\u003C0)}},t.prototype.compareStateText=function(t){return t.localeCompare(this.text,void 0,{numeric:!0,sensitivity:'case'})},t.prototype.readPopupState=function(t){this.popup=i.parseCoordinates(t),this.popup?this.isOpen=!0:this.isOpen=!1},t.prototype.assignDomNodeClasses=function(){var t=this.getAttribute('class','').split(' ');t.push('tc-reveal'),this.domNode.className=t.join(' ')},t.prototype.refresh=function(t){var e=this.computeAttributes();if(e.state||e.type||e.text||e.position||e.positionAllowNegative||e.default||e.animate||e.stateTitle||e.stateField||e.stateIndex)return this.refreshSelf(),!0;var i=this.isOpen;if(this.readState(),this.isOpen!==i){if('yes'!==this.retain)return this.refreshSelf(),!0;this.updateState()}else'popup'===this.type&&this.isOpen&&this.updatePopupPosition&&(t[this.state]||t[this.stateTitle])&&this.positionPopup(this.domNode);return e.style&&(this.domNode.style=this.getAttribute('style','')),e.class&&this.assignDomNodeClasses(),this.refreshChildren(t)},t.prototype.updateState=function(){var t=this,e=(this.readState(),this.domNodes[0]);this.isOpen&&!this.hasChildNodes&&(this.hasChildNodes=!0,this.makeChildWidgets(this.parseTreeNode.children),this.renderChildren(e,null)),!e.isTiddlyWikiFakeDom&&'popup'===this.type&&this.isOpen&&(this.positionPopup(e),$tw.utils.addClass(e,'tc-popup')),this.isOpen?(e.removeAttribute('hidden'),$tw.anim.perform(this.openAnimation,e)):$tw.anim.perform(this.closeAnimation,e,{callback:function(){t.readState(),t.isOpen||e.setAttribute('hidden','true')}})},exports.reveal=t}();\",\"type\":\"application/javascript\",\"module-type\":\"widget\"},\"$:/core/modules/widgets/scrollable.js\":{\"text\":\"!function(){'use strict';function t(t,e){this.initialise(t,e)}var e=require('$:/core/modules/widgets/widget.js').widget;(t.prototype=new e).cancelScroll=function(){this.idRequestFrame&&(this.cancelAnimationFrame.call(window,this.idRequestFrame),this.idRequestFrame=null)},t.prototype.handleScrollEvent=function(t){var e;return this.outerDomNode.scrollWidth\u003C=this.outerDomNode.offsetWidth&&this.outerDomNode.scrollHeight\u003C=this.outerDomNode.offsetHeight&&'yes'===this.fallthrough||(e={},$tw.utils.hop(t.paramObject,'animationDuration')&&(e.animationDuration=t.paramObject.animationDuration),t.paramObject&&t.paramObject.selector?this.scrollSelectorIntoView(null,t.paramObject.selector,null,e):this.scrollIntoView(t.target,null,e),!1)},t.prototype.scrollIntoView=function(t,e,o){function i(t,e,o,i){return o\u003C=t&&t+e\u003C=o+i?o:t\u003C=o?t:e\u003Ci&&o\u003Ct+e-i?t+e-i:o\u003Ct?t:o}var n,r,s=$tw.utils.hop(o,'animationDuration')?parseInt(o.animationDuration):$tw.utils.getAnimationDuration(),l=t?t.ownerDocument.defaultView:window,a=(this.cancelScroll(),this.startTime=Date.now(),{x:this.outerDomNode.scrollLeft,y:this.outerDomNode.scrollTop}),o=this.outerDomNode.getBoundingClientRect(),t=t.getBoundingClientRect(),o={left:t.left+a.x-o.left,top:t.top+a.y-o.top,width:t.width,height:t.height},u=i(o.left,o.width,a.x,this.outerDomNode.offsetWidth),h=i(o.top,o.height,a.y,this.outerDomNode.offsetHeight);u===a.x&&h===a.y||(n=this,(r=function(){var t=s\u003C=0?1:(Date.now()-n.startTime)/s;1\u003C=t&&(n.cancelScroll(),t=1),t=$tw.utils.slowInSlowOut(t),n.outerDomNode.scrollLeft=a.x+(u-a.x)*t,n.outerDomNode.scrollTop=a.y+(h-a.y)*t,t\u003C1&&(n.idRequestFrame=n.requestAnimationFrame.call(l,r))})())},t.prototype.scrollSelectorIntoView=function(t,e,o,i){t=(t=t||document.body).querySelector(e);t&&this.scrollIntoView(t,o,i)},t.prototype.render=function(t,e){this.scaleFactor=1,this.addEventListeners([{type:'tm-scroll',handler:'handleScrollEvent'}]),$tw.browser&&(this.requestAnimationFrame=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||function(t){return window.setTimeout(t,1e3/60)},this.cancelAnimationFrame=window.cancelAnimationFrame||window.webkitCancelAnimationFrame||window.webkitCancelRequestAnimationFrame||window.mozCancelAnimationFrame||window.mozCancelRequestAnimationFrame||function(t){window.clearTimeout(t)}),this.parentDomNode=t,this.computeAttributes(),this.execute(),this.outerDomNode=this.document.createElement('div'),$tw.utils.setStyle(this.outerDomNode,[{overflowY:'auto'},{overflowX:'auto'},{webkitOverflowScrolling:'touch'}]),this.innerDomNode=this.document.createElement('div'),this.outerDomNode.appendChild(this.innerDomNode),this.outerDomNode.className=this.class||'',t.insertBefore(this.outerDomNode,e),this.renderChildren(this.innerDomNode,null),this.domNodes.push(this.outerDomNode)},t.prototype.execute=function(){this.fallthrough=this.getAttribute('fallthrough','yes'),this.class=this.getAttribute('class'),this.makeChildWidgets()},t.prototype.refresh=function(t){return this.computeAttributes().class?(this.refreshSelf(),!0):this.refreshChildren(t)},exports.scrollable=t}();\",\"type\":\"application/javascript\",\"module-type\":\"widget\"},\"$:/core/modules/widgets/select.js\":{\"text\":\"!function(){'use strict';function t(t,e){this.initialise(t,e)}var e=require('$:/core/modules/widgets/widget.js').widget;(t.prototype=new e).render=function(t,e){this.parentDomNode=t,this.computeAttributes(),this.execute(),this.renderChildren(t,e),this.setSelectValue(),'yes'==this.selectFocus&&this.getSelectDomNode().focus(),$tw.utils.addEventListeners(this.getSelectDomNode(),[{name:'change',handlerObject:this,handlerMethod:'handleChangeEvent'}])},t.prototype.handleChangeEvent=function(t){var e;e=0==this.selectMultiple?this.getSelectDomNode().value:(e=this.getSelectValues(),$tw.utils.stringifyList(e)),this.wiki.setText(this.selectTitle,this.selectField,this.selectIndex,e),this.selectActions&&this.invokeActionString(this.selectActions,this,t)},t.prototype.setSelectValue=function(){var t=this.selectDefault;if(this.selectIndex?t=this.wiki.extractTiddlerDataItem(this.selectTitle,this.selectIndex,t):(l=this.wiki.getTiddler(this.selectTitle))?'text'===this.selectField?t=this.wiki.getTiddlerText(this.selectTitle):$tw.utils.hop(l.fields,this.selectField)&&(t=l.getFieldString(this.selectField)):'title'===this.selectField&&(t=this.selectTitle),this.selectMultiple)for(var t=void 0===t?'':t,e=this.getSelectDomNode(),i=Array.isArray(t)?t:$tw.utils.parseStringArray(t),s=0;s\u003Ce.children.length;s++)e.children[s].selected=-1!==i.indexOf(e.children[s].value);else{var l=this.getSelectDomNode();l.value!==t&&(l.value=t)}},t.prototype.getSelectDomNode=function(){return this.children[0].domNodes[0]},t.prototype.getSelectValues=function(){for(var t,e=this.getSelectDomNode(),i=[],s=e&&e.options,l=0;l\u003Cs.length;l++)(t=s[l]).selected&&i.push(t.value||t.text);return i},t.prototype.execute=function(){this.selectActions=this.getAttribute('actions'),this.selectTitle=this.getAttribute('tiddler',this.getVariable('currentTiddler')),this.selectField=this.getAttribute('field','text'),this.selectIndex=this.getAttribute('index'),this.selectClass=this.getAttribute('class'),this.selectDefault=this.getAttribute('default'),this.selectMultiple=this.getAttribute('multiple',!1),this.selectSize=this.getAttribute('size'),this.selectTooltip=this.getAttribute('tooltip'),this.selectFocus=this.getAttribute('focus');var t={type:'element',tag:'select',children:this.parseTreeNode.children};this.selectClass&&$tw.utils.addAttributeToParseTreeNode(t,'class',this.selectClass),this.selectMultiple&&$tw.utils.addAttributeToParseTreeNode(t,'multiple','multiple'),this.selectSize&&$tw.utils.addAttributeToParseTreeNode(t,'size',this.selectSize),this.selectTooltip&&$tw.utils.addAttributeToParseTreeNode(t,'title',this.selectTooltip),this.makeChildWidgets([t])},t.prototype.refresh=function(t){var e=this.computeAttributes();return e.tiddler||e.field||e.index||e.tooltip?(this.refreshSelf(),!0):(e.class&&(this.selectClass=this.getAttribute('class'),this.getSelectDomNode().setAttribute('class',this.selectClass)),e=this.refreshChildren(t),(t[this.selectTitle]||e)&&this.setSelectValue(),e)},exports.select=t}();\",\"type\":\"application/javascript\",\"module-type\":\"widget\"},\"$:/core/modules/widgets/setmultiplevariables.js\":{\"text\":\"!function(){'use strict';function t(t,i){this.initialise(t,i)}var i=require('$:/core/modules/widgets/widget.js').widget;(t.prototype=new i).render=function(t,i){this.parentDomNode=t,this.computeAttributes(),this.execute(),this.renderChildren(t,i)},t.prototype.execute=function(){this.setVariables(),this.makeChildWidgets()},t.prototype.setVariables=function(){var e=this,t=this.getAttribute('$names',''),i=this.getAttribute('$values','');this.variableNames=[],this.variableValues=[],t&&i&&(this.variableNames=this.wiki.filterTiddlers(t,this),this.variableValues=this.wiki.filterTiddlers(i,this),$tw.utils.each(this.variableNames,function(t,i){e.setVariable(t,e.variableValues[i])}))},t.prototype.refresh=function(t){var i=this.getAttribute('$names',''),e=this.getAttribute('$values',''),i=this.wiki.filterTiddlers(i,this),e=this.wiki.filterTiddlers(e,this);return $tw.utils.isArrayEqual(this.variableNames,i)&&$tw.utils.isArrayEqual(this.variableValues,e)?this.refreshChildren(t):(this.refreshSelf(),!0)},exports.setmultiplevariables=t}();\",\"type\":\"application/javascript\",\"module-type\":\"widget\"},\"$:/core/modules/widgets/set.js\":{\"text\":\"!function(){'use strict';function t(t,e){this.initialise(t,e)}var e=require('$:/core/modules/widgets/widget.js').widget;(t.prototype=new e).render=function(t,e){this.parentDomNode=t,this.computeAttributes(),this.execute(),this.renderChildren(t,e)},t.prototype.execute=function(){this.setName=this.getAttribute('name','currentTiddler'),this.setFilter=this.getAttribute('filter'),this.setSelect=this.getAttribute('select'),this.setTiddler=this.getAttribute('tiddler'),this.setSubTiddler=this.getAttribute('subtiddler'),this.setField=this.getAttribute('field'),this.setIndex=this.getAttribute('index'),this.setValue=this.getAttribute('value'),this.setEmptyValue=this.getAttribute('emptyValue'),this.setVariable(this.setName,this.getValue(),this.parseTreeNode.params,!!this.parseTreeNode.isMacroDefinition),this.makeChildWidgets()},t.prototype.getValue=function(){var t,e,i=this.setValue;return this.setTiddler?i=(t=this.setSubTiddler?this.wiki.getSubTiddler(this.setTiddler,this.setSubTiddler):this.wiki.getTiddler(this.setTiddler))?this.setField?t.getFieldString(this.setField)||this.setEmptyValue:this.setIndex?this.wiki.extractTiddlerDataItem(this.setTiddler,this.setIndex,this.setEmptyValue):t.fields.text||this.setEmptyValue:this.setEmptyValue:this.setFilter?(t=this.wiki.filterTiddlers(this.setFilter,this),null==this.setValue&&(i=void 0!==(e=this.setSelect?parseInt(this.setSelect,10):e)?t[e]||'':$tw.utils.stringifyList(t)),0===t.length&&void 0!==this.setEmptyValue&&(i=this.setEmptyValue)):!i&&this.setEmptyValue&&(i=this.setEmptyValue),i||''},t.prototype.refresh=function(t){var e=this.computeAttributes();return e.name||e.filter||e.select||e.tiddler||this.setTiddler&&t[this.setTiddler]||e.field||e.index||e.value||e.emptyValue||this.setFilter&&this.getValue()!=this.variables[this.setName].value?(this.refreshSelf(),!0):this.refreshChildren(t)},exports.setvariable=t,exports.set=t}();\",\"type\":\"application/javascript\",\"module-type\":\"widget\"},\"$:/core/modules/widgets/text.js\":{\"text\":\"!function(){'use strict';function t(t,e){this.initialise(t,e)}var e=require('$:/core/modules/widgets/widget.js').widget;(t.prototype=new e).render=function(t,e){this.parentDomNode=t,this.computeAttributes(),this.execute();var r=(r=this.getAttribute('text',this.parseTreeNode.text||'')).replace(/\\\\r/gm,''),r=this.document.createTextNode(r);t.insertBefore(r,e),this.domNodes.push(r)},t.prototype.execute=function(){},t.prototype.refresh=function(t){return!!this.computeAttributes().text&&(this.refreshSelf(),!0)},exports.text=t}();\",\"type\":\"application/javascript\",\"module-type\":\"widget\"},\"$:/core/modules/widgets/tiddler.js\":{\"text\":\"!function(){'use strict';function t(t,e){this.initialise(t,e)}var e=require('$:/core/modules/widgets/widget.js').widget;(t.prototype=new e).render=function(t,e){this.parentDomNode=t,this.computeAttributes(),this.execute(),this.renderChildren(t,e)},t.prototype.execute=function(){this.tiddlerState=this.computeTiddlerState(),this.setVariable('currentTiddler',this.tiddlerState.currentTiddler),this.setVariable('missingTiddlerClass',this.tiddlerState.missingTiddlerClass),this.setVariable('shadowTiddlerClass',this.tiddlerState.shadowTiddlerClass),this.setVariable('systemTiddlerClass',this.tiddlerState.systemTiddlerClass),this.setVariable('tiddlerTagClasses',this.tiddlerState.tiddlerTagClasses),this.makeChildWidgets()},t.prototype.computeTiddlerState=function(){this.tiddlerTitle=this.getAttribute('tiddler',this.getVariable('currentTiddler'));var t={currentTiddler:this.tiddlerTitle||'',missingTiddlerClass:this.wiki.tiddlerExists(this.tiddlerTitle)||this.wiki.isShadowTiddler(this.tiddlerTitle)?'tc-tiddler-exists':'tc-tiddler-missing',shadowTiddlerClass:this.wiki.isShadowTiddler(this.tiddlerTitle)?'tc-tiddler-shadow':'',systemTiddlerClass:this.wiki.isSystemTiddler(this.tiddlerTitle)?'tc-tiddler-system':'',tiddlerTagClasses:this.getTagClasses()};return t.hash=t.currentTiddler+t.missingTiddlerClass+t.shadowTiddlerClass+t.systemTiddlerClass+t.tiddlerTagClasses,t},t.prototype.getTagClasses=function(){var e,t=this.wiki.getTiddler(this.tiddlerTitle);return t?(e=[],$tw.utils.each(t.fields.tags,function(t){e.push('tc-tagged-'+encodeURIComponent(t))}),e.join(' ')):''},t.prototype.refresh=function(t){var e=this.computeAttributes(),i=this.computeTiddlerState();return e.tiddler||i.hash!==this.tiddlerState.hash?(this.refreshSelf(),!0):this.refreshChildren(t)},exports.tiddler=t}();\",\"type\":\"application/javascript\",\"module-type\":\"widget\"},\"$:/core/modules/widgets/transclude.js\":{\"text\":\"!function(){'use strict';function e(e,t){this.initialise(e,t)}var t=require('$:/core/modules/widgets/widget.js').widget;(e.prototype=new t).render=function(e,t){this.parentDomNode=e,this.computeAttributes(),this.execute(),this.renderChildren(e,t)},e.prototype.execute=function(){this.transcludeTitle=this.getAttribute('tiddler',this.getVariable('currentTiddler')),this.transcludeSubTiddler=this.getAttribute('subtiddler'),this.transcludeField=this.getAttribute('field'),this.transcludeIndex=this.getAttribute('index'),this.transcludeMode=this.getAttribute('mode'),this.recursionMarker=this.getAttribute('recursionMarker','yes');var e=!this.parseTreeNode.isBlock,e=('inline'===this.transcludeMode?e=!0:'block'===this.transcludeMode&&(e=!1),this.wiki.parseTextReference(this.transcludeTitle,this.transcludeField,this.transcludeIndex,{parseAsInline:e,subTiddler:this.transcludeSubTiddler})),t=e?e.tree:this.parseTreeNode.children,r=(this.sourceText=e?e.source:null,this.parserType=e?e.type:null,this.makeRecursionMarker());'yes'===this.recursionMarker&&this.setVariable('transclusion',r),e&&this.parentWidget&&this.parentWidget.hasVariable('transclusion',r)&&(t=[{type:'error',attributes:{$message:{type:'string',value:$tw.language.getString('Error/RecursiveTransclusion')}}}]),this.makeChildWidgets(t)},e.prototype.makeRecursionMarker=function(){var e=[];return e.push('{'),e.push(this.getVariable('currentTiddler',{defaultValue:''})),e.push('|'),e.push(this.transcludeTitle||''),e.push('|'),e.push(this.transcludeField||''),e.push('|'),e.push(this.transcludeIndex||''),e.push('|'),e.push(this.transcludeSubTiddler||''),e.push('}'),e.join('')},e.prototype.parserNeedsRefresh=function(){var e=this.wiki.getTextReferenceParserInfo(this.transcludeTitle,this.transcludeField,this.transcludeIndex,{subTiddler:this.transcludeSubTiddler});return void 0===this.sourceText||e.sourceText!==this.sourceText||e.parserType!==this.parserType},e.prototype.refresh=function(e){var t=this.computeAttributes();return 0\u003C$tw.utils.count(t)||e[this.transcludeTitle]&&this.parserNeedsRefresh()?(this.refreshSelf(),!0):this.refreshChildren(e)},exports.transclude=e}();\",\"type\":\"application/javascript\",\"module-type\":\"widget\"},\"$:/core/modules/widgets/vars.js\":{\"text\":\"!function(){'use strict';function t(t,e){this.initialise(t,e)}var e=require('$:/core/modules/widgets/widget.js').widget;(t.prototype=new e).render=function(t,e){this.parentDomNode=t,this.computeAttributes(),this.execute(),this.renderChildren(t,e)},t.prototype.execute=function(){var i=this;$tw.utils.each(this.attributes,function(t,e){'$'!==e.charAt(0)&&i.setVariable(e,t)}),this.makeChildWidgets()},t.prototype.refresh=function(t){var e=this.computeAttributes();return 0\u003C$tw.utils.count(e)?(this.refreshSelf(),!0):this.refreshChildren(t)},exports.vars=t}();\",\"type\":\"application/javascript\",\"module-type\":\"widget\"},\"$:/core/modules/widgets/view.js\":{\"text\":\"!function(){'use strict';function t(t,e){this.initialise(t,e)}var e=require('$:/core/modules/widgets/widget.js').widget;(t.prototype=new e).render=function(t,e){var i;this.parentDomNode=t,this.computeAttributes(),this.execute(),this.text?(i=this.document.createTextNode(this.text),t.insertBefore(i,e),this.domNodes.push(i)):(this.makeChildWidgets(),this.renderChildren(t,e))},t.prototype.execute=function(){switch(this.viewTitle=this.getAttribute('tiddler',this.getVariable('currentTiddler')),this.viewSubtiddler=this.getAttribute('subtiddler'),this.viewField=this.getAttribute('field','text'),this.viewIndex=this.getAttribute('index'),this.viewFormat=this.getAttribute('format','text'),this.viewTemplate=this.getAttribute('template',''),this.viewMode=this.getAttribute('mode','block'),this.viewFormat){case'htmlwikified':this.text=this.getValueAsHtmlWikified(this.viewMode);break;case'plainwikified':this.text=this.getValueAsPlainWikified(this.viewMode);break;case'htmlencodedplainwikified':this.text=this.getValueAsHtmlEncodedPlainWikified(this.viewMode);break;case'htmlencoded':this.text=this.getValueAsHtmlEncoded();break;case'htmltextencoded':this.text=this.getValueAsHtmlTextEncoded();break;case'urlencoded':this.text=this.getValueAsUrlEncoded();break;case'doubleurlencoded':this.text=this.getValueAsDoubleUrlEncoded();break;case'date':this.text=this.getValueAsDate(this.viewTemplate);break;case'relativedate':this.text=this.getValueAsRelativeDate();break;case'stripcomments':this.text=this.getValueAsStrippedComments();break;case'jsencoded':this.text=this.getValueAsJsEncoded();break;default:this.text=this.getValueAsText()}},t.prototype.getValue=function(t){var e,i=(t=t||{}).asString?'':void 0;return this.viewIndex?i=this.wiki.extractTiddlerDataItem(this.viewTitle,this.viewIndex):(e=this.viewSubtiddler?this.wiki.getSubTiddler(this.viewTitle,this.viewSubtiddler):this.wiki.getTiddler(this.viewTitle))?'text'!==this.viewField||this.viewSubtiddler?$tw.utils.hop(e.fields,this.viewField)&&(i=t.asString?e.getFieldString(this.viewField):e.fields[this.viewField]):i=this.wiki.getTiddlerText(this.viewTitle):'title'===this.viewField&&(i=this.viewTitle),i},t.prototype.getValueAsText=function(){return this.getValue({asString:!0})},t.prototype.getValueAsHtmlWikified=function(t){return this.wiki.renderText('text/html','text/vnd.tiddlywiki',this.getValueAsText(),{parseAsInline:'block'!==t,parentWidget:this})},t.prototype.getValueAsPlainWikified=function(t){return this.wiki.renderText('text/plain','text/vnd.tiddlywiki',this.getValueAsText(),{parseAsInline:'block'!==t,parentWidget:this})},t.prototype.getValueAsHtmlEncodedPlainWikified=function(t){return $tw.utils.htmlEncode(this.wiki.renderText('text/plain','text/vnd.tiddlywiki',this.getValueAsText(),{parseAsInline:'block'!==t,parentWidget:this}))},t.prototype.getValueAsHtmlEncoded=function(){return $tw.utils.htmlEncode(this.getValueAsText())},t.prototype.getValueAsHtmlTextEncoded=function(){return $tw.utils.htmlTextEncode(this.getValueAsText())},t.prototype.getValueAsUrlEncoded=function(){return encodeURIComponent(this.getValueAsText())},t.prototype.getValueAsDoubleUrlEncoded=function(){return encodeURIComponent(encodeURIComponent(this.getValueAsText()))},t.prototype.getValueAsDate=function(t){t=t||'YYYY MM DD 0hh:0mm';var e=$tw.utils.parseDate(this.getValue());return e&&$tw.utils.isDate(e)&&'Invalid Date'!==e.toString()?$tw.utils.formatDateString(e,t):''},t.prototype.getValueAsRelativeDate=function(t){var e=$tw.utils.parseDate(this.getValue());return e&&$tw.utils.isDate(e)&&'Invalid Date'!==e.toString()?$tw.utils.getRelativeDate(new Date-new Date(e)).description:''},t.prototype.getValueAsStrippedComments=function(){for(var t=this.getValueAsText().split('\\\\n'),e=[],i=0;i\u003Ct.length;i++){var s=t[i];/^\\\\s*\\\\/\\\\/#/.test(s)||e.push(s)}return e.join('\\\\n')},t.prototype.getValueAsJsEncoded=function(){return $tw.utils.stringify(this.getValueAsText())},t.prototype.refresh=function(t){var e=this.computeAttributes();return!!(e.tiddler||e.field||e.index||e.template||e.format||t[this.viewTitle])&&(this.refreshSelf(),!0)},exports.view=t}();\",\"type\":\"application/javascript\",\"module-type\":\"widget\"},\"$:/core/modules/widgets/widget.js\":{\"text\":\"!function(){'use strict';function r(t,e){this.initialise(t,e)}r.prototype.initialise=function(t,e){void 0===t||(e=e||{},this.parseTreeNode=t,this.wiki=e.wiki,this.parentWidget=e.parentWidget,this.variables=Object.create(null),this.parentWidget&&Object.setPrototypeOf(this.variables,this.parentWidget.variables),this.document=e.document,this.attributes={},this.children=[],this.domNodes=[],this.eventListeners={},this.widgetClasses)||(r.prototype.widgetClasses=$tw.modules.applyMethods('widget'),$tw.modules.forEachModuleOfType('widget-subclass',function(t,e){if(e.baseClass){var i=r.prototype.widgetClasses[e.baseClass];if(!i)throw'Module \\\\''+t+'\\\\' is attemping to extend a non-existent base class \\\\''+e.baseClass+'\\\\'';t=e.constructor;t.prototype=new i,$tw.utils.extend(t.prototype,e.prototype),r.prototype.widgetClasses[e.name||e.baseClass]=t}}))},r.prototype.render=function(t,e){this.parentDomNode=t,this.execute(),this.renderChildren(t,e)},r.prototype.execute=function(){this.makeChildWidgets()},r.prototype.setVariable=function(t,e,i,r){this.variables[t]={value:e,params:i,isMacroDefinition:!!r}},r.prototype.getVariableInfo=function(t,e){var i,r,n,s=(e=e||{}).params||[],o=this.parentWidget;return o&&t in o.variables?(i=(o=o.variables[t]).value,r=i,n=this.resolveVariableParameters(o.params,s),$tw.utils.each(n,function(t){r=$tw.utils.replaceString(r,new RegExp('\\\\\\\\$'+$tw.utils.escapeRegExp(t.name)+'\\\\\\\\$','mg'),t.value)}),{text:r=o.isMacroDefinition?this.substituteVariableReferences(r,e):r,params:n,srcVariable:o,isCacheable:i===r}):{text:this.evaluateMacroModule(t,s,e.defaultValue)}},r.prototype.getVariable=function(t,e){return this.getVariableInfo(t,e).text},r.prototype.resolveVariableParameters=function(t,e){t=t||[],e=e||[];for(var i=0,r=[],n=0;n\u003Ct.length;n++){for(var s=t[n],o=void 0,a=0;a\u003Ce.length;a++)e[a].name===s.name&&(o=e[a].value);for(;i\u003Ce.length&&e[i].name;)i++;o=(o=void 0===o&&i\u003Ce.length?e[i++].value:o)||s.default||'',r.push({name:s.name,value:o})}return r},r.prototype.substituteVariableReferences=function(t,n){var s=this;return(t||'').replace(/\\\\$\\\\(([^\\\\)\\\\$]+)\\\\)\\\\$/g,function(t,e,i,r){return n.variables&&n.variables[e]||s.getVariable(e,{defaultValue:''})})},r.prototype.evaluateMacroModule=function(t,e,i){if($tw.utils.hop($tw.macros,t)){var r=$tw.macros[t],n=[];if(0\u003Cr.params.length)for(var s=0,o=0;o\u003Cr.params.length;o++){for(var a=r.params[o],u=void 0,l=0;l\u003Ce.length;l++)e[l].name===a.name&&(u=e[l].value);for(;s\u003Ce.length&&e[s].name;)s++;u=(u=void 0===u&&s\u003Ce.length?e[s++].value:u)||a.default||'',n.push(u)}else for(var h=0;h\u003Ce.length;++h)n.push(e[h].value);return(r.run.apply(this,n)||'').toString()}return i},r.prototype.hasVariable=function(t,e){for(var i=this;i;){if($tw.utils.hop(i.variables,t)&&i.variables[t].value===e)return!0;i=i.parentWidget}return!1},r.prototype.getStateQualifier=function(t){if(this.qualifiers=this.qualifiers||Object.create(null),this.qualifiers[t=t||'transclusion'])return this.qualifiers[t];for(var e=[],i=this;i&&i.parentWidget;)$tw.utils.hop(i.parentWidget.variables,t)&&e.push(i.getVariable(t)),i=i.parentWidget;var r=$tw.utils.hashString(e.join(''));return this.qualifiers[t]=r},r.prototype.computeAttributes=function(){var i={},r=this;return $tw.utils.each(this.parseTreeNode.attributes,function(t,e){t=r.computeAttribute(t);r.attributes[e]!==t&&(r.attributes[e]=t,i[e]=!0)}),i},r.prototype.computeAttribute=function(t){t='filtered'===t.type?this.wiki.filterTiddlers(t.filter,this)[0]||'':'indirect'===t.type?this.wiki.getTextReference(t.textReference,'',this.getVariable('currentTiddler')):'macro'===t.type?this.getVariable(t.value.name,{params:t.value.params}):t.value;return t},r.prototype.hasAttribute=function(t){return $tw.utils.hop(this.attributes,t)},r.prototype.hasParseTreeNodeAttribute=function(t){return $tw.utils.hop(this.parseTreeNode.attributes,t)},r.prototype.getAttribute=function(t,e){return $tw.utils.hop(this.attributes,t)?this.attributes[t]:e},r.prototype.assignAttributes=function(r,n){n=n||{};function i(t,e){if(void 0!==(e=n.excludeEventAttributes&&'on'===t.substr(0,2)?void 0:e)){var i=null;if('xlink:'===t.substr(0,6)&&6\u003Ct.length&&(i='http://www.w3.org/1999/xlink',t=t.substr(6)),'style.'===t.substr(0,6)&&6\u003Ct.length)r.style[$tw.utils.unHyphenateCss(t.substr(6))]=e;else try{r.setAttributeNS(i,t,e)}catch(t){}}}var s=this;this.parseTreeNode.orderedAttributes?$tw.utils.each(this.parseTreeNode.orderedAttributes,function(t,e){i(t.name,s.attributes[t.name])}):$tw.utils.each(Object.keys(s.attributes).sort(),function(t){i(t,s.attributes[t])})},r.prototype.getAncestorCount=function(){return void 0===this.ancestorCount&&(this.parentWidget?this.ancestorCount=this.parentWidget.getAncestorCount()+1:this.ancestorCount=0),this.ancestorCount},r.prototype.makeChildWidgets=function(i,t){t=t||{},this.children=[];var e=this;1e3\u003Cthis.getAncestorCount()?this.children.push(this.makeChildWidget({type:'error',attributes:{$message:{type:'string',value:$tw.language.getString('Error/RecursiveTransclusion')}}})):($tw.utils.each(t.variables,function(t,e){i=[{type:'set',attributes:{name:{type:'string',value:e},value:{type:'string',value:t}},children:i}]}),$tw.utils.each(i||this.parseTreeNode&&this.parseTreeNode.children,function(t){e.children.push(e.makeChildWidget(t))}))},r.prototype.makeChildWidget=function(i,t){t=t||{};var e=this.widgetClasses[i.type];return e||(e=this.widgetClasses.text,i={type:'text',text:'Undefined widget \\\\''+i.type+'\\\\''}),$tw.utils.each(t.variables,function(t,e){i={type:'set',attributes:{name:{type:'string',value:e},value:{type:'string',value:t}},children:[i]}}),new e(i,{wiki:this.wiki,parentWidget:this,document:this.document})},r.prototype.nextSibling=function(){if(this.parentWidget){var t=this.parentWidget.children.indexOf(this);if(-1!==t&&t\u003Cthis.parentWidget.children.length-1)return this.parentWidget.children[t+1]}return null},r.prototype.previousSibling=function(){if(this.parentWidget){var t=this.parentWidget.children.indexOf(this);if(-1!==t&&0\u003Ct)return this.parentWidget.children[t-1]}return null},r.prototype.renderChildren=function(t,e){for(var i=this.children,r=0;r\u003Ci.length;r++)i[r].render(t,e)},r.prototype.addEventListeners=function(t){var e=this;$tw.utils.each(t,function(t){e.addEventListener(t.type,t.handler)})},r.prototype.addEventListener=function(t,e){var i=this;this.eventListeners[t]='string'==typeof e?function(t){return i[e].call(i,t)}:function(t){return e.call(i,t)}},r.prototype.dispatchEvent=function(t){t.widget=t.widget||this;var e=this.eventListeners[t.type];return!(e&&!e(t))&&(!this.parentWidget||this.parentWidget.dispatchEvent(t))},r.prototype.refresh=function(t){return this.refreshChildren(t)},r.prototype.refreshSelf=function(){var t=this.findNextSiblingDomNode();this.removeChildDomNodes(),this.render(this.parentDomNode,t)},r.prototype.refreshChildren=function(t){for(var e=this.children,i=!1,r=0;r\u003Ce.length;r++)i=e[r].refresh(t)||i;return i},r.prototype.findNextSiblingDomNode=function(t){var e=this.parentWidget,i=void 0!==t?t:e.children.indexOf(this);if(-1===i)throw'node not found in parents children';for(;++i\u003Ce.children.length;){var r=e.children[i].findFirstDomNode();if(r)return r}t=e.parentWidget;return t&&e.parentDomNode===this.parentDomNode&&-1!==(i=t.children.indexOf(e))?e.findNextSiblingDomNode(i):null},r.prototype.findFirstDomNode=function(){if(0\u003Cthis.domNodes.length)return this.domNodes[0];for(var t=0;t\u003Cthis.children.length;t++){var e=this.children[t].findFirstDomNode();if(e)return e}return null},r.prototype.removeChildDomNodes=function(){0\u003Cthis.domNodes.length?($tw.utils.each(this.domNodes,function(t){t.parentNode.removeChild(t)}),this.domNodes=[]):$tw.utils.each(this.children,function(t){t.removeChildDomNodes()})},r.prototype.invokeActions=function(t,e){for(var i=!1,r=0;r\u003Cthis.children.length;r++){var n=this.children[r],s=!!n.invokeAction,o=n.getVariable('tv-action-refresh-policy');!s&&'always'!==o||n.refreshSelf(),s&&n.invokeAction(t,e)&&(i=!0),n.allowActionPropagation()&&n.invokeActions(t,e)&&(i=!0)}return i},r.prototype.invokeActionString=function(t,e,i,r){t=this.wiki.parseText('text/vnd.tiddlywiki',t=t||'',{parentWidget:this,document:this.document}),t=this.wiki.makeWidget(t,{parentWidget:this,document:this.document,variables:r}),r=this.document.createElement('div');return t.render(r,null),t.invokeActions(this,i)},r.prototype.invokeActionsByTag=function(t,e,i){var r=this;$tw.utils.each(r.wiki.filterTiddlers('[all[shadows+tiddlers]tag['+t+']!has[draft.of]]'),function(t){r.invokeActionString(r.wiki.getTiddlerText(t),r,e,i)})},r.prototype.allowActionPropagation=function(){return!0},exports.widget=r}();\",\"type\":\"application/javascript\",\"module-type\":\"widget\"},\"$:/core/modules/widgets/wikify.js\":{\"text\":\"!function(){'use strict';function t(t,e){this.initialise(t,e)}var e=require('$:/core/modules/widgets/widget.js').widget;(t.prototype=new e).render=function(t,e){this.parentDomNode=t,this.computeAttributes(),this.execute(),this.renderChildren(t,e)},t.prototype.execute=function(){this.wikifyName=this.getAttribute('name'),this.wikifyText=this.getAttribute('text'),this.wikifyType=this.getAttribute('type'),this.wikifyMode=this.getAttribute('mode','block'),this.wikifyOutput=this.getAttribute('output','text'),this.wikifyParser=this.wiki.parseText(this.wikifyType,this.wikifyText,{parseAsInline:'inline'===this.wikifyMode}),this.wikifyWidgetNode=this.wiki.makeWidget(this.wikifyParser,{document:$tw.fakeDocument,parentWidget:this}),this.wikifyContainer=$tw.fakeDocument.createElement('div'),this.wikifyWidgetNode.render(this.wikifyContainer,null),this.wikifyResult=this.getResult(),this.setVariable(this.wikifyName,this.wikifyResult),this.makeChildWidgets()},t.prototype.getResult=function(){var t;switch(this.wikifyOutput){case'text':t=this.wikifyContainer.textContent;break;case'formattedtext':t=this.wikifyContainer.formattedTextContent;break;case'html':t=this.wikifyContainer.innerHTML;break;case'parsetree':t=JSON.stringify(this.wikifyParser.tree,0,$tw.config.preferences.jsonSpaces);break;case'widgettree':t=JSON.stringify(this.getWidgetTree(),0,$tw.config.preferences.jsonSpaces)}return t},t.prototype.getWidgetTree=function(){function r(i,s){var t=i.parseTreeNode.type;switch(s.type=t){case'element':s.tag=i.parseTreeNode.tag;break;case'text':s.text=i.parseTreeNode.text}0\u003CObject.keys(i.attributes||{}).length&&(s.attributes={},$tw.utils.each(i.attributes,function(t,e){s.attributes[e]=i.getAttribute(e)})),0\u003CObject.keys(i.children||{}).length&&(s.children=[],$tw.utils.each(i.children,function(t){var e={};s.children.push(e),r(t,e)}))}var t={};return r(this.wikifyWidgetNode,t),t},t.prototype.refresh=function(t){var e=this.computeAttributes();if(e.name||e.text||e.type||e.mode||e.output)return this.refreshSelf(),!0;if(this.wikifyWidgetNode.refresh(t)){e=this.getResult();if(e!==this.wikifyResult)return this.wikifyResult=e,this.setVariable(this.wikifyName,this.wikifyResult),$tw.utils.each(this.children,function(t){t.refreshSelf()}),!0}return this.refreshChildren(t)},exports.wikify=t}();\",\"type\":\"application/javascript\",\"module-type\":\"widget\"},\"$:/core/modules/wiki-bulkops.js\":{\"text\":\"!function(){'use strict';exports.renameTiddler=function(i,e,t){var d,n;i=(i||'').trim(),e=(e||'').trim(),t=t||{},i&&e&&i!==e&&(d=this.getTiddler(i),n=new $tw.Tiddler(d,{title:e},this.getModificationFields()),n=$tw.hooks.invokeHook('th-renaming-tiddler',n,d),this.addTiddler(n),this.deleteTiddler(i),this.relinkTiddler(i,e,t))},exports.relinkTiddler=function(l,r,o){var a=this;l=(l||'').trim(),r=(r||'').trim(),o=o||{},l&&r&&l!==r&&this.each(function(i,e){var t,d,n,s=i.fields.type||'';i.fields['plugin-type']||'application/javascript'===s||(s=i.fields.tags?i.fields.tags.slice(0):void 0,t=i.fields.list?i.fields.list.slice(0):void 0,d=!1,n=function(t){if(t&&-1!==t.indexOf(l)){for(var i=t.indexOf(r);-1!==i;)t.splice(i,1),i=t.indexOf(r);$tw.utils.each(t,function(i,e){i===l&&(t[e]=r,d=!0)})}},o.dontRenameInTags||n(s),o.dontRenameInLists||n(t),d&&(n=new $tw.Tiddler(i,{tags:s,list:t},a.getModificationFields()),n=$tw.hooks.invokeHook('th-relinking-tiddler',n,i),a.addTiddler(n)))})}}();\",\"type\":\"application/javascript\",\"module-type\":\"wikimethod\"},\"$:/core/modules/wiki.js\":{\"text\":\"!function(){'use strict';var s=require('$:/core/modules/widgets/widget.js'),i='$:/status/UserName',r='$:/config/TimestampDisable';exports.addIndexersToWiki=function(){var i=this;$tw.utils.each($tw.modules.applyMethods('indexer'),function(e,t){i.addIndexer(new e(i),t)})},exports.getTextReference=function(e,t,i){var r,e=$tw.utils.parseTextReference(e),i=e.title||i;return e.field?(r=this.getTiddler(i),'title'===e.field?i||t:r&&$tw.utils.hop(r.fields,e.field)?r.getFieldString(e.field):t):e.index?this.extractTiddlerDataItem(i,e.index,t):this.getTiddlerText(i,t)},exports.setTextReference=function(e,t,i){e=$tw.utils.parseTextReference(e),i=e.title||i;this.setText(i,e.field,e.index,t)},exports.setText=function(e,t,i,r,s){var n,l=(s=s||{}).suppressTimestamp?{}:this.getCreationFields(),a=s.suppressTimestamp?{}:this.getModificationFields();i?(n=this.getTiddlerData(e,Object.create(null)),void 0!==r?n[i]=r:delete n[i],this.setTiddlerData(e,n,{},{suppressTimestamp:s.suppressTimestamp})):(i=this.getTiddler(e),(n={title:e})[t||'text']=r,this.addTiddler(new $tw.Tiddler(l,i,n,a)))},exports.deleteTextReference=function(e,t){var i,e=$tw.utils.parseTextReference(e);e.title&&!e.field?this.deleteTiddler(e.title):e.field&&(t=e.title||t,t=this.getTiddler(t))&&$tw.utils.hop(t.fields,e.field)&&((i=Object.create(null))[e.field]=void 0,this.addTiddler(new $tw.Tiddler(t,i,this.getModificationFields())))},exports.addEventListener=function(e,t){this.eventListeners=this.eventListeners||{},this.eventListeners[e]=this.eventListeners[e]||[],this.eventListeners[e].push(t)},exports.removeEventListener=function(e,t){e=this.eventListeners[e];e&&-1!==(t=e.indexOf(t))&&e.splice(t,1)},exports.dispatchEvent=function(e){var t=Array.prototype.slice.call(arguments,1),i=this.eventListeners[e];if(i)for(var r=0;r\u003Ci.length;r++){var s=i[r];s.apply(s,t)}},exports.enqueueTiddlerEvent=function(e,t){var i;this.changedTiddlers=this.changedTiddlers||Object.create(null),this.changedTiddlers[e]=this.changedTiddlers[e]||Object.create(null),this.changedTiddlers[e][t?'deleted':'modified']=!0,this.changeCount=this.changeCount||Object.create(null),$tw.utils.hop(this.changeCount,e)?this.changeCount[e]++:this.changeCount[e]=1,this.eventListeners=this.eventListeners||{},this.eventsTriggered||(i=this,$tw.utils.nextTick(function(){var e=i.changedTiddlers;i.changedTiddlers=Object.create(null),i.eventsTriggered=!1,0\u003C$tw.utils.count(e)&&i.dispatchEvent('change',e)}),this.eventsTriggered=!0)},exports.getSizeOfTiddlerEventQueue=function(){return $tw.utils.count(this.changedTiddlers)},exports.clearTiddlerEventQueue=function(){this.changedTiddlers=Object.create(null),this.changeCount=Object.create(null)},exports.getChangeCount=function(e){return this.changeCount=this.changeCount||Object.create(null),$tw.utils.hop(this.changeCount,e)?this.changeCount[e]:0},exports.generateNewTitle=function(e,t){var i=0,r=e,s=(t=t||{}).template,n='string'==typeof t.prefix?t.prefix:' ';if(s)for(s=/\\\\$count:?(\\\\d+)?\\\\$/i.test(s)?s:s+'$count$',r=$tw.utils.formatTitleString(s,{base:e,separator:n,counter:i});this.tiddlerExists(r)||this.isShadowTiddler(r)||this.findDraft(r);)r=$tw.utils.formatTitleString(s,{base:e,separator:n,counter:++i});else for(;this.tiddlerExists(r)||this.isShadowTiddler(r)||this.findDraft(r);)r=e+n+ ++i;return r},exports.isSystemTiddler=function(e){return e&&0===e.indexOf('$:/')},exports.isTemporaryTiddler=function(e){return e&&0===e.indexOf('$:/temp/')},exports.isVolatileTiddler=function(e){return e&&0===e.indexOf('$:/temp/volatile/')},exports.isImageTiddler=function(e){var e=this.getTiddler(e);return e?!!(e=$tw.config.contentTypeInfo[e.fields.type||'text/vnd.tiddlywiki'])&&-1!==e.flags.indexOf('image'):null},exports.isBinaryTiddler=function(e){var e=this.getTiddler(e);return e?!!(e=$tw.config.contentTypeInfo[e.fields.type||'text/vnd.tiddlywiki'])&&'base64'===e.encoding:null},exports.importTiddler=function(e){var t=this.getTiddler(e.fields.title);return!(e&&e.hasField('plugin-type')&&e.hasField('version')&&t&&t.hasField('plugin-type')&&t.hasField('version')&&!$tw.utils.checkVersions(e.fields.version,t.fields.version)||(this.addTiddler(e),0))},exports.getCreationFields=function(){var e,t;return'yes'!==this.getTiddlerText(r,'').toLowerCase()?(e={created:new Date},(t=this.getTiddlerText(i))&&(e.creator=t),e):{}},exports.getModificationFields=function(){var e,t;return'yes'!==this.getTiddlerText(r,'').toLowerCase()?(e=Object.create(null),t=this.getTiddlerText(i),e.modified=new Date,t&&(e.modifier=t),e):{}},exports.getTiddlers=function(i){i=i||Object.create(null);var e,r=this,s=i.sortField||'title',n=[],t=[];for(this.each(function(e,t){!i.includeSystem&&r.isSystemTiddler(t)||i.excludeTag&&e.hasTag(i.excludeTag)||n.push(e)}),n.sort(function(e,t){e=e.fields[s].toLowerCase()||'',t=t.fields[s].toLowerCase()||'';return e\u003Ct?-1:t\u003Ce?1:0}),e=0;e\u003Cn.length;e++)t.push(n[e].fields.title);return t},exports.countTiddlers=function(e){e=this.getTiddlers({excludeTag:e});return $tw.utils.count(e)},exports.makeTiddlerIterator=function(e){var i=this;return e=$tw.utils.isArray(e)?e.slice(0):Object.keys(e),function(t){e.forEach(function(e){t(i.getTiddler(e),e)})}},exports.sortTiddlers=function(e,s,n,l,a,d){var o=this;'title'===s?a||d?e.sort(function(e,t){var i,r;if(a){if(i=Number(e),r=Number(t),!isNaN(i))return isNaN(r)?n?1:-1:n?r-i:i-r;if(!isNaN(r))return n?-1:1}return d?n?t.localeCompare(e,void 0,{numeric:!0,sensitivity:'base'}):e.localeCompare(t,void 0,{numeric:!0,sensitivity:'base'}):(l||(e=e.toLowerCase(),t=t.toLowerCase()),n?t.localeCompare(e):e.localeCompare(t))}):l?n?e.sort(function(e,t){return t.localeCompare(e)}):e.sort(function(e,t){return e.localeCompare(t)}):n?e.sort(function(e,t){return t.toLowerCase().localeCompare(e.toLowerCase())}):e.sort(function(e,t){return e.toLowerCase().localeCompare(t.toLowerCase())}):e.sort(function(e,t){var i,r;if('title'!==s&&(i=o.getTiddler(e),r=o.getTiddler(t),e=i&&i.fields[s]||'',t=r&&r.fields[s]||''),a){if(i=Number(e),r=Number(t),!isNaN(i))return isNaN(r)?n?1:-1:n?r-i:i-r;if(!isNaN(r))return n?-1:1}return'[object Date]'===Object.prototype.toString.call(e)&&'[object Date]'===Object.prototype.toString.call(t)?n?t-e:e-t:(e=String(e),t=String(t),d?n?t.localeCompare(e,void 0,{numeric:!0,sensitivity:'base'}):e.localeCompare(t,void 0,{numeric:!0,sensitivity:'base'}):(l||(e=e.toLowerCase(),t=t.toLowerCase()),n?t.localeCompare(e):e.localeCompare(t)))})},exports.forEachTiddler=function(){for(var e,t=0,i=2\u003C=arguments.length?arguments[t++]:{},r=arguments[t++],s=this.getTiddlers(i),n=0;n\u003Cs.length;n++)(e=this.getTiddler(s[n]))&&r.call(this,e.fields.title,e)},exports.extractLinks=function(e){function s(e){for(var t=0;t\u003Ce.length;t++){var i,r=e[t];'link'===r.type&&r.attributes.to&&'string'===r.attributes.to.type&&(i=r.attributes.to.value,-1===n.indexOf(i))&&n.push(i),r.children&&s(r.children)}}var n=[];return s(e),n},exports.getTiddlerLinks=function(t){var i=this;return this.getCacheForTiddler(t,'links',function(){var e=i.parseTiddler(t);return e?i.extractLinks(e.tree):[]})},exports.getTiddlerBacklinks=function(i){var r=this,e=this.getIndexer('BacklinksIndexer'),s=e&&e.lookup(i);return s||(s=[],this.forEachTiddler(function(e,t){-1!==r.getTiddlerLinks(e).indexOf(i)&&s.push(e)})),s},exports.getMissingTitles=function(){var i=this,r=[];return this.forEachTiddler(function(e,t){e=i.getTiddlerLinks(e);$tw.utils.each(e,function(e){i.tiddlerExists(e)||i.isShadowTiddler(e)||-1!==r.indexOf(e)||r.push(e)})}),r},exports.getOrphanTitles=function(){var i=this,r=this.getTiddlers();return this.forEachTiddler(function(e,t){e=i.getTiddlerLinks(e);$tw.utils.each(e,function(e){e=r.indexOf(e);-1!==e&&r.splice(e,1)})}),r},exports.getTiddlersWithTag=function(t){var i=this,e=this.getIndexer('TagIndexer');return e&&e.subIndexers[3].lookup(t)||this.getGlobalCache('taglist-'+t,function(){var e=i.getTagMap();return i.sortByList(e[t],t)})},exports.getTagMap=function(){var r=this;return this.getGlobalCache('tagmap',function(){function i(e,t){if(e)for(var i=0;i\u003Ce.length;i++){var r=e[i];$tw.utils.hop(s,r)?s[r].push(t):s[r]=[t]}}var s=Object.create(null);return r.eachShadow(function(e,t){r.tiddlerExists(t)||(e=r.getTiddler(t),i(e.fields.tags,t))}),r.each(function(e,t){i(e.fields.tags,t)}),s})},exports.findListingsOfTiddler=function(e,a){a=a||'list';var t=this;return this.getGlobalCache('listings-'+a,function(){var l=Object.create(null);return t.each(function(e,t){var i=$tw.utils.parseStringArray(e.fields[a]);if(i)for(var r=0;r\u003Ci.length;r++){var s=i[r],n=l[s]||[];-1===n.indexOf(t)&&n.push(t),l[s]=n}}),l})[e]||[]},exports.sortByList=function(e,t){var n=this,l=Object.create(null);var i=this.getTiddlerList(t);if(e&&0!==e.length){for(var r,a=[],s=0;s\u003Ci.length;s++)r=i[s],-1!==e.indexOf(r)&&a.push(r);for(s=0;s\u003Ce.length;s++)r=e[s],-1===i.indexOf(r)&&a.push(r);var d=a.slice(0);for(s=0;s\u003Cd.length;s++)!function e(t){var i,r,s;$tw.utils.hop(l,t)||(l[t]=!0,i=-1,(r=n.getTiddler(t))&&(s=r.fields['list-before'],r=r.fields['list-after'],''===s?i=0:''===r?i=a.length:s?(e(s),i=a.indexOf(s)):r&&(e(r),0\u003C=(i=a.indexOf(r)))&&++i,-1!==i)&&0\u003C=(s=a.indexOf(t))&&i!==s&&(a.splice(s,1),s\u003C=i&&i--,a.splice(i,0,t)))}(r=d[s]);return a}return[]},exports.getSubTiddler=function(e,t){e=this.getPluginInfo(e)||this.getTiddlerDataCached(e);if(e&&e.tiddlers){e=e.tiddlers[t];if(e)return new $tw.Tiddler(e)}return null},exports.getTiddlerAsJson=function(e){var i,r=this.getTiddler(e);return r?(i=Object.create(null),$tw.utils.each(r.fields,function(e,t){i[t]=r.getFieldString(t)}),JSON.stringify(i)):JSON.stringify({title:e})},exports.getTiddlersAsJson=function(e,t){for(var i=this.filterTiddlers(e),t=void 0===t?$tw.config.preferences.jsonSpaces:t,r=[],s=0;s\u003Ci.length;s++){var n=this.getTiddler(i[s]);if(n){var l,a=new Object;for(l in n.fields)a[l]=n.getFieldString(l);r.push(a)}}return JSON.stringify(r,null,t)},exports.getTiddlerDataCached=function(e,t){var i=this,r=e;return(r=r instanceof $tw.Tiddler?r:this.getTiddler(r))&&this.getCacheForTiddler(r.fields.title,'data',function(){var e=i.getTiddlerData(r.fields.title,void 0);return $tw.utils.deepFreeze(e),e})||t},exports.getTiddlerData=function(e,t){var i=e;if((i=i instanceof $tw.Tiddler?i:this.getTiddler(i))&&i.fields.text)switch(i.fields.type){case'application/json':return $tw.utils.parseJSONSafe(i.fields.text,t);case'application/x-tiddler-dictionary':return $tw.utils.parseFields(i.fields.text)}return t},exports.extractTiddlerDataItem=function(e,t,i){var r,e=this.getTiddlerDataCached(e,Object.create(null));return'string'==typeof(r=e&&$tw.utils.hop(e,t)?e[t]:r)||'number'==typeof r?r.toString():i},exports.setTiddlerData=function(e,t,i,r){r=r||{};var s=this.getTiddler(e),n=r.suppressTimestamp?{}:this.getCreationFields(),r=r.suppressTimestamp?{}:this.getModificationFields(),e={title:e};s&&'application/x-tiddler-dictionary'===s.fields.type?e.text=$tw.utils.makeTiddlerDictionary(t):(e.type='application/json',e.text=JSON.stringify(t,null,$tw.config.preferences.jsonSpaces)),this.addTiddler(new $tw.Tiddler(n,s,i,e,r))},exports.getTiddlerList=function(e,t,i){if(i)return $tw.utils.parseStringArray(this.extractTiddlerDataItem(e,i,''));t=t||'list';i=this.getTiddler(e);return i?($tw.utils.parseStringArray(i.fields[t])||[]).slice(0):[]},exports.getGlobalCache=function(e,t){return this.globalCache=this.globalCache||Object.create(null),$tw.utils.hop(this.globalCache,e)||(this.globalCache[e]=t()),this.globalCache[e]},exports.clearGlobalCache=function(){this.globalCache=Object.create(null)},exports.getCacheForTiddler=function(e,t,i){this.caches=this.caches||Object.create(null);var r=this.caches[e];return r&&void 0!==r[t]||(r||(r=Object.create(null),this.caches[e]=r),r[t]=i()),r[t]},exports.clearCache=function(e){e?(this.caches=this.caches||Object.create(null),$tw.utils.hop(this.caches,e)&&delete this.caches[e]):this.caches=Object.create(null)},exports.initParsers=function(e){$tw.Wiki.parsers={};$tw.modules.forEachModuleOfType('parser',function(e,t){for(var i in t)$tw.utils.hop(t,i)&&($tw.Wiki.parsers[i]=t[i])}),$tw.Wiki.parsers['application/octet-stream']&&Object.keys($tw.config.contentTypeInfo).forEach(function(e){$tw.utils.hop($tw.Wiki.parsers,e)||'base64'!==$tw.config.contentTypeInfo[e].encoding||($tw.Wiki.parsers[e]=$tw.Wiki.parsers['application/octet-stream'])})},exports.parseText=function(e,t,i){t=t||'',i=i||{};var r=$tw.Wiki.parsers[e];return(r=(r=!r&&$tw.utils.getFileExtensionInfo(e)?$tw.Wiki.parsers[$tw.utils.getFileExtensionInfo(e).type]:r)||$tw.Wiki.parsers[i.defaultType||'text/vnd.tiddlywiki'])?new r(e,t,{parseAsInline:i.parseAsInline,wiki:this,_canonical_uri:i._canonical_uri}):null},exports.parseTiddler=function(e,t){var i=(t=$tw.utils.extend({},t)).parseAsInline?'inlineParseTree':'blockParseTree',r=this.getTiddler(e),s=this;return r?this.getCacheForTiddler(e,i,function(){return r.hasField('_canonical_uri')&&(t._canonical_uri=r.fields._canonical_uri),s.parseText(r.fields.type,r.fields.text,t)}):null},exports.parseTextReference=function(e,t,i,r){return r.subTiddler||(this.getTiddler(e),'text'!==t&&(t||i))?null!==(t=this.getTextReferenceParserInfo(e,t,i,r)).sourceText?this.parseText(t.parserType,t.sourceText,r):null:(this.getTiddlerText(e),this.parseTiddler(e,r))},exports.getTextReferenceParserInfo=function(e,t,i,r){var s={sourceText:null,parserType:'text/vnd.tiddlywiki'},r=r.subTiddler?this.getSubTiddler(e,r.subTiddler):this.getTiddler(e);return'text'===t||!t&&!i?r&&r.fields&&(s.sourceText=r.fields.text||'',r.fields.type)&&(s.parserType=r.fields.type):t?'title'===t?s.sourceText=e:r&&r.fields&&(s.sourceText=r.hasField(t)?r.fields[t].toString():null):i&&(this.getTiddlerText(e),s.sourceText=this.extractTiddlerDataItem(r,i,null)),null===s.sourceText&&(s.parserType=null),s},exports.makeWidget=function(e,t){t=t||{};var i={type:'widget',children:[]},r=i;return $tw.utils.each(t.variables,function(e,t){t={type:'set',attributes:{name:{type:'string',value:t},value:{type:'string',value:e}},children:[]};r.children=[t],r=t}),r.children=e?e.tree:[],new s.widget(i,{wiki:this,document:t.document||$tw.fakeDocument,parentWidget:t.parentWidget})},exports.makeTranscludeWidget=function(e,t){var i={tree:[{type:'element',tag:'div',children:[]}]},r={type:'importvariables',attributes:{filter:{name:'filter',type:'string'}},isBlock:!1,children:[]},e={type:'transclude',attributes:{recursionMarker:{name:'recursionMarker',type:'string',value:(t=t||{}).recursionMarker||'yes'},tiddler:{name:'tiddler',type:'string',value:e}},isBlock:!t.parseAsInline};return(t.importVariables||t.importPageMacros?(t.importVariables?r.attributes.filter.value=t.importVariables:t.importPageMacros&&(r.attributes.filter.value='[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]'),i.tree[0].children.push(r),r):i.tree[0]).children.push(e),t.field&&(e.attributes.field={type:'string',value:t.field}),t.mode&&(e.attributes.mode={type:'string',value:t.mode}),t.children&&(e.children=t.children),this.makeWidget(i,t)},exports.renderText=function(e,t,i,r){t=this.parseText(t,i,r=r||{}),i=this.makeWidget(t,r),t=$tw.fakeDocument.createElement('div');return i.render(t,null),'text/html'===e?t.innerHTML:t.textContent},exports.renderTiddler=function(e,t,i){t=this.parseTiddler(t,i=i||{}),t=this.makeWidget(t,i),i=$tw.fakeDocument.createElement('div');return t.render(i,null),'text/html'===e?i.innerHTML:'text/plain-formatted'===e?i.formattedTextContent:i.textContent},exports.search=function(t,c){var e,i,u,f=this,r='',s=!!(c=c||{}).invert,n=c.caseSensitive?'':'i',l=c.anchored?'^':'';if(c.literal)u=0===t.length?null:[new RegExp('('+l+$tw.utils.escapeRegExp(t)+')',n)];else if(c.whitespace)i=[],$tw.utils.each(t.split(/\\\\s+/g),function(e){e&&i.push($tw.utils.escapeRegExp(e))}),u=[new RegExp('('+l+i.join('\\\\\\\\s+')+')',n)];else if(c.regexp)try{u=[new RegExp('('+t+')',n)]}catch(e){u=null,console.log('Regexp error parsing /('+t+')/'+n+': ',e)}else if(c.some)if(1===(i=t.trim().split(/ +/)).length&&''===i[0])u=null;else{for(u=[],e=0;e\u003Ci.length;e++)r+=0===e?l+$tw.utils.escapeRegExp(i[e]):'|'+l+$tw.utils.escapeRegExp(i[e]);u.push(new RegExp('('+r+')',n))}else if(1===(i=t.split(/ +/)).length&&''===i[0])u=null;else for(u=[],e=0;e\u003Ci.length;e++)u.push(new RegExp('('+l+$tw.utils.escapeRegExp(i[e])+')',n));var h=[],a=(c.field&&($tw.utils.isArray(c.field)?$tw.utils.each(c.field,function(e){e&&h.push(e)}):h.push(c.field)),0!==h.length||c.excludeField||(h.push('title'),h.push('tags'),h.push('text')),[]);if((c.source||this.each)(function(e,t){(function(e){if(!u)return!0;var t,i=u.slice(),r=(r=f.getTiddler(e))||new $tw.Tiddler({title:e,text:'',type:'text/vnd.tiddlywiki'}),s=$tw.config.contentTypeInfo[r.fields.type]||$tw.config.contentTypeInfo['text/vnd.tiddlywiki'];c.excludeField?(t=Object.keys(r.fields),$tw.utils.each(h,function(e){e=t.indexOf(e);-1!==e&&t.splice(e,1)})):t=h;for(var n=0;0\u003Ci.length&&n\u003Ct.length;n++){var l=t[n];if('text'===l&&'utf8'!==s.encoding)break;var a,d=r.fields[l];if(d)if($tw.utils.isArray(d))for(var o=0;o\u003Cd.length;o++)for(a=0;a\u003Ci.length;)i[a].test(d[o])?i.splice(a,1):a++;else for(d=r.getFieldString(l),a=0;a\u003Ci.length;)i[a].test(d)?i.splice(a,1):a++}return 0==i.length})(t)!==s&&a.push(t)}),c.exclude)for(e=0;e\u003Cc.exclude.length;e++){var d=a.indexOf(c.exclude[e]);-1!==d&&a.splice(d,1)}return a},exports.getTiddlerText=function(e,t){var i=this.getTiddler(e);return i?i.hasField('_is_skinny')?(this.dispatchEvent('lazyLoad',e),null):i.fields.text||'':t},exports.checkTiddlerText=function(e,t,i){i=i||{};e=this.getTiddlerText(e,'');return i.noTrim||(e=e.trim()),i.caseSensitive||(e=e.toLowerCase(),t=t.toLowerCase()),e===t},exports.readFiles=function(e,t){'function'==typeof t?(i=t,t={}):i=t.callback;for(var i,r=[],s=e.length,n=function(e){r.push.apply(r,e),0==--s&&i(r)},l=0;l\u003Ce.length;l++)this.readFile(e[l],$tw.utils.extend({},t,{callback:n}));return e.length},exports.readFile=function(e,t){'function'==typeof t?(i=t,t={}):i=t.callback;var i,r=e.type,s=(''!==r&&r||-1!==(s=e.name.lastIndexOf('.'))&&(s=$tw.utils.getFileExtensionInfo(e.name.substr(s)))&&(r=s.type),$tw.config.contentTypeInfo[r]),s=!!s&&'base64'===s.encoding;$tw.log.IMPORT&&console.log('Importing file \\\\''+e.name+'\\\\', type: \\\\''+r+'\\\\', isBinary: '+s),!0!==$tw.hooks.invokeHook('th-importing-file',{file:e,type:r,isBinary:s,callback:i})&&this.readFileContent(e,r,s,t.deserializer,i)},exports.readFileContent=function(r,s,n,l,a){var d=this,e=new FileReader;e.onload=function(e){var e=e.target.result,t={title:r.name||'Untitled'},i=(n&&-1!==(i=e.indexOf(','))&&(e=e.substr(i+1)),$tw.utils.extractEncryptedStoreArea(e));i?$tw.utils.decryptStoreAreaInteractive(i,function(e){a(e)}):a(d.deserializeTiddlers(s,e,t,{deserializer:l}))},n?e.readAsDataURL(r):e.readAsText(r)},exports.findDraft=function(i){var r=void 0;return this.forEachTiddler({includeSystem:!0},function(e,t){t.fields['draft.title']&&t.fields['draft.of']===i&&(r=e)}),r},exports.isDraftModified=function(e){var t,e=this.getTiddler(e);return!!e.isDraft()&&(t=this.getTiddler(e.fields['draft.of'])||new $tw.Tiddler({text:'',tags:[]}),e.fields['draft.title']!==e.fields['draft.of']||!e.isEqual(t,['created','modified','title','draft.title','draft.of']))},exports.addToHistory=function(e,t,i){new $tw.Story({wiki:this,historyTitle:i}).addToHistory(e,t),console.log('$tw.wiki.addToHistory() is deprecated since V5.1.23! Use the this.story.addToHistory() from the story-object!')},exports.addToStory=function(e,t,i,r){new $tw.Story({wiki:this,storyTitle:i}).addToStory(e,t,r),console.log('$tw.wiki.addToStory() is deprecated since V5.1.23! Use the this.story.addToStory() from the story-object!')},exports.generateDraftTitle=function(e){for(var t,i=0,r=this.getTiddlerText('$:/status/UserName'),s=r?' by '+r:'';t='Draft '+(i?i+1+' ':'')+'of \\\\''+e+'\\\\''+s,i++,this.tiddlerExists(t););return t},exports.invokeUpgraders=function(e,t){for(var i=this,r=(this.upgraderModules||(this.upgraderModules=[],$tw.modules.forEachModuleOfType('upgrader',function(e,t){t.upgrade&&i.upgraderModules.push(t)})),{}),s=0;s\u003Cthis.upgraderModules.length;s++){var n=this.upgraderModules[s].upgrade(this,e,t);$tw.utils.extend(r,n)}return r},exports.doesPluginRequireReload=function(e){var t=this.getTiddler(e);return(!t||'application/json'!==t.fields.type||!t.fields['plugin-type']||'import'!==t.fields['plugin-type'])&&this.doesPluginInfoRequireReload(this.getPluginInfo(e)||this.getTiddlerDataCached(e))},exports.doesPluginInfoRequireReload=function(e){var t;return e?(t=!1,$tw.utils.each(e.tiddlers,function(e){'application/javascript'===e.type&&$tw.utils.hop(e,'module-type')&&(t=!0)}),t):null},exports.slugify=function(e,t){var i,r=this.getTiddler(e),r=r&&r.fields.slug?r.fields.slug:$tw.utils.transliterate(e.toString().toLowerCase()).replace(/\\\\s+/g,'-').replace(/[^\\\\w\\\\-\\\\.]+/g,'').replace(/\\\\-\\\\-+/g,'-').replace(/^-+/,'').replace(/-+$/,'');return r||(i=[],$tw.utils.each(e.split(''),function(e){i.push(e.charCodeAt(0).toString())}),r=i.join('-')),r}}();\",\"type\":\"application/javascript\",\"module-type\":\"wikimethod\"},\"$:/palettes/Blanca\":{\"name\":\"Blanca\",\"color-scheme\":\"light\",\"description\":\"A clean white palette to let you focus\",\"tags\":\"$:/tags/Palette\",\"type\":\"application/x-tiddler-dictionary\",\"text\":\"alert-background: #ffe476\\nalert-border: #b99e2f\\nalert-highlight: #881122\\nalert-muted-foreground: #b99e2f\\nbackground: #ffffff\\nblockquote-bar: \u003C\u003Ccolour muted-foreground>>\\nbutton-background:\\nbutton-foreground:\\nbutton-border:\\ncode-background: #f7f7f9\\ncode-border: #e1e1e8\\ncode-foreground: #dd1144\\ndirty-indicator: #ff0000\\ndownload-background: #66cccc\\ndownload-foreground: \u003C\u003Ccolour background>>\\ndragger-background: \u003C\u003Ccolour foreground>>\\ndragger-foreground: \u003C\u003Ccolour background>>\\ndropdown-background: \u003C\u003Ccolour background>>\\ndropdown-border: \u003C\u003Ccolour muted-foreground>>\\ndropdown-tab-background-selected: #fff\\ndropdown-tab-background: #ececec\\ndropzone-background: rgba(0,200,0,0.7)\\nexternal-link-background-hover: inherit\\nexternal-link-background-visited: inherit\\nexternal-link-background: inherit\\nexternal-link-foreground-hover: inherit\\nexternal-link-foreground-visited: #0000aa\\nexternal-link-foreground: #0000ee\\nforeground: #333333\\nhighlight-background: #ffff00\\nhighlight-foreground: #000000\\nmessage-background: #ecf2ff\\nmessage-border: #cfd6e6\\nmessage-foreground: #547599\\nmodal-backdrop: \u003C\u003Ccolour foreground>>\\nmodal-background: \u003C\u003Ccolour background>>\\nmodal-border: #999999\\nmodal-footer-background: #f5f5f5\\nmodal-footer-border: #dddddd\\nmodal-header-border: #eeeeee\\nmuted-foreground: #999999\\nnotification-background: #ffffdd\\nnotification-border: #999999\\npage-background: #ffffff\\npre-background: #f5f5f5\\npre-border: #cccccc\\nprimary: #7897f3\\nselect-tag-background:\\nselect-tag-foreground:\\nsidebar-button-foreground: \u003C\u003Ccolour foreground>>\\nsidebar-controls-foreground-hover: #000000\\nsidebar-controls-foreground: #ccc\\nsidebar-foreground-shadow: rgba(255,255,255, 0.8)\\nsidebar-foreground: #acacac\\nsidebar-muted-foreground-hover: #444444\\nsidebar-muted-foreground: #c0c0c0\\nsidebar-tab-background-selected: #ffffff\\nsidebar-tab-background: \u003C\u003Ccolour tab-background>>\\nsidebar-tab-border-selected: \u003C\u003Ccolour tab-border-selected>>\\nsidebar-tab-border: \u003C\u003Ccolour tab-border>>\\nsidebar-tab-divider: \u003C\u003Ccolour tab-divider>>\\nsidebar-tab-foreground-selected: \\nsidebar-tab-foreground: \u003C\u003Ccolour tab-foreground>>\\nsidebar-tiddler-link-foreground-hover: #444444\\nsidebar-tiddler-link-foreground: #7897f3\\nsite-title-foreground: \u003C\u003Ccolour tiddler-title-foreground>>\\nstatic-alert-foreground: #aaaaaa\\ntab-background-selected: #ffffff\\ntab-background: #eeeeee\\ntab-border-selected: #cccccc\\ntab-border: #cccccc\\ntab-divider: #d8d8d8\\ntab-foreground-selected: \u003C\u003Ccolour tab-foreground>>\\ntab-foreground: #666666\\ntable-border: #dddddd\\ntable-footer-background: #a8a8a8\\ntable-header-background: #f0f0f0\\ntag-background: #ffeedd\\ntag-foreground: #000\\ntiddler-background: \u003C\u003Ccolour background>>\\ntiddler-border: #eee\\ntiddler-controls-foreground-hover: #888888\\ntiddler-controls-foreground-selected: #444444\\ntiddler-controls-foreground: #cccccc\\ntiddler-editor-background: #f8f8f8\\ntiddler-editor-border-image: #ffffff\\ntiddler-editor-border: #cccccc\\ntiddler-editor-fields-even: #e0e8e0\\ntiddler-editor-fields-odd: #f0f4f0\\ntiddler-info-background: #f8f8f8\\ntiddler-info-border: #dddddd\\ntiddler-info-tab-background: #f8f8f8\\ntiddler-link-background: \u003C\u003Ccolour background>>\\ntiddler-link-foreground: \u003C\u003Ccolour primary>>\\ntiddler-subtitle-foreground: #c0c0c0\\ntiddler-title-foreground: #ff9900\\ntoolbar-new-button:\\ntoolbar-options-button:\\ntoolbar-save-button:\\ntoolbar-info-button:\\ntoolbar-edit-button:\\ntoolbar-close-button:\\ntoolbar-delete-button:\\ntoolbar-cancel-button:\\ntoolbar-done-button:\\nuntagged-background: #999999\\nvery-muted-foreground: #888888\\n\"},\"$:/palettes/Blue\":{\"name\":\"Blue\",\"color-scheme\":\"light\",\"description\":\"A blue theme\",\"tags\":\"$:/tags/Palette\",\"type\":\"application/x-tiddler-dictionary\",\"text\":\"alert-background: #ffe476\\nalert-border: #b99e2f\\nalert-highlight: #881122\\nalert-muted-foreground: #b99e2f\\nbackground: #fff\\nblockquote-bar: \u003C\u003Ccolour muted-foreground>>\\nbutton-background:\\nbutton-foreground:\\nbutton-border:\\ncode-background: #f7f7f9\\ncode-border: #e1e1e8\\ncode-foreground: #dd1144\\ndirty-indicator: #ff0000\\ndownload-background: #34c734\\ndownload-foreground: \u003C\u003Ccolour foreground>>\\ndragger-background: \u003C\u003Ccolour foreground>>\\ndragger-foreground: \u003C\u003Ccolour background>>\\ndropdown-background: \u003C\u003Ccolour background>>\\ndropdown-border: \u003C\u003Ccolour muted-foreground>>\\ndropdown-tab-background-selected: #fff\\ndropdown-tab-background: #ececec\\ndropzone-background: rgba(0,200,0,0.7)\\nexternal-link-background-hover: inherit\\nexternal-link-background-visited: inherit\\nexternal-link-background: inherit\\nexternal-link-foreground-hover: inherit\\nexternal-link-foreground-visited: #0000aa\\nexternal-link-foreground: #0000ee\\nforeground: #333353\\nhighlight-background: #ffff00\\nhighlight-foreground: #000000\\nmessage-background: #ecf2ff\\nmessage-border: #cfd6e6\\nmessage-foreground: #547599\\nmodal-backdrop: \u003C\u003Ccolour foreground>>\\nmodal-background: \u003C\u003Ccolour background>>\\nmodal-border: #999999\\nmodal-footer-background: #f5f5f5\\nmodal-footer-border: #dddddd\\nmodal-header-border: #eeeeee\\nmuted-foreground: #999999\\nnotification-background: #ffffdd\\nnotification-border: #999999\\npage-background: #ddddff\\npre-background: #f5f5f5\\npre-border: #cccccc\\nprimary: #5778d8\\nselect-tag-background:\\nselect-tag-foreground:\\nsidebar-button-foreground: \u003C\u003Ccolour foreground>>\\nsidebar-controls-foreground-hover: #000000\\nsidebar-controls-foreground: #ffffff\\nsidebar-foreground-shadow: rgba(255,255,255, 0.8)\\nsidebar-foreground: #acacac\\nsidebar-muted-foreground-hover: #444444\\nsidebar-muted-foreground: #c0c0c0\\nsidebar-tab-background-selected: \u003C\u003Ccolour page-background>>\\nsidebar-tab-background: \u003C\u003Ccolour tab-background>>\\nsidebar-tab-border-selected: \u003C\u003Ccolour tab-border-selected>>\\nsidebar-tab-border: \u003C\u003Ccolour tab-border>>\\nsidebar-tab-divider: \u003C\u003Ccolour tab-divider>>\\nsidebar-tab-foreground-selected: \\nsidebar-tab-foreground: \u003C\u003Ccolour tab-foreground>>\\nsidebar-tiddler-link-foreground-hover: #444444\\nsidebar-tiddler-link-foreground: #5959c0\\nsite-title-foreground: \u003C\u003Ccolour tiddler-title-foreground>>\\nstatic-alert-foreground: #aaaaaa\\ntab-background-selected: \u003C\u003Ccolour background>>\\ntab-background: #ccccdd\\ntab-border-selected: #ccccdd\\ntab-border: #cccccc\\ntab-divider: #d8d8d8\\ntab-foreground-selected: \u003C\u003Ccolour tab-foreground>>\\ntab-foreground: #666666\\ntable-border: #dddddd\\ntable-footer-background: #a8a8a8\\ntable-header-background: #f0f0f0\\ntag-background: #eeeeff\\ntag-foreground: #000\\ntiddler-background: \u003C\u003Ccolour background>>\\ntiddler-border: \u003C\u003Ccolour background>>\\ntiddler-controls-foreground-hover: #666666\\ntiddler-controls-foreground-selected: #444444\\ntiddler-controls-foreground: #cccccc\\ntiddler-editor-background: #f8f8f8\\ntiddler-editor-border-image: #ffffff\\ntiddler-editor-border: #cccccc\\ntiddler-editor-fields-even: #e0e8e0\\ntiddler-editor-fields-odd: #f0f4f0\\ntiddler-info-background: #ffffff\\ntiddler-info-border: #dddddd\\ntiddler-info-tab-background: #ffffff\\ntiddler-link-background: \u003C\u003Ccolour background>>\\ntiddler-link-foreground: \u003C\u003Ccolour primary>>\\ntiddler-subtitle-foreground: #c0c0c0\\ntiddler-title-foreground: #5959c0\\ntoolbar-new-button: #5eb95e\\ntoolbar-options-button: rgb(128, 88, 165)\\ntoolbar-save-button: #0e90d2\\ntoolbar-info-button: #0e90d2\\ntoolbar-edit-button: rgb(243, 123, 29)\\ntoolbar-close-button: #dd514c\\ntoolbar-delete-button: #dd514c\\ntoolbar-cancel-button: rgb(243, 123, 29)\\ntoolbar-done-button: #5eb95e\\nuntagged-background: #999999\\nvery-muted-foreground: #888888\\n\"},\"$:/palettes/Muted\":{\"name\":\"Muted\",\"color-scheme\":\"light\",\"description\":\"Bright tiddlers on a muted background\",\"tags\":\"$:/tags/Palette\",\"type\":\"application/x-tiddler-dictionary\",\"text\":\"alert-background: #ffe476\\nalert-border: #b99e2f\\nalert-highlight: #881122\\nalert-muted-foreground: #b99e2f\\nbackground: #ffffff\\nblockquote-bar: \u003C\u003Ccolour muted-foreground>>\\nbutton-background:\\nbutton-foreground:\\nbutton-border:\\ncode-background: #f7f7f9\\ncode-border: #e1e1e8\\ncode-foreground: #dd1144\\ndirty-indicator: #ff0000\\ndownload-background: #34c734\\ndownload-foreground: \u003C\u003Ccolour background>>\\ndragger-background: \u003C\u003Ccolour foreground>>\\ndragger-foreground: \u003C\u003Ccolour background>>\\ndropdown-background: \u003C\u003Ccolour background>>\\ndropdown-border: \u003C\u003Ccolour muted-foreground>>\\ndropdown-tab-background-selected: #fff\\ndropdown-tab-background: #ececec\\ndropzone-background: rgba(0,200,0,0.7)\\nexternal-link-background-hover: inherit\\nexternal-link-background-visited: inherit\\nexternal-link-background: inherit\\nexternal-link-foreground-hover: inherit\\nexternal-link-foreground-visited: #0000aa\\nexternal-link-foreground: #0000ee\\nforeground: #333333\\nhighlight-background: #ffff00\\nhighlight-foreground: #000000\\nmessage-background: #ecf2ff\\nmessage-border: #cfd6e6\\nmessage-foreground: #547599\\nmodal-backdrop: \u003C\u003Ccolour foreground>>\\nmodal-background: \u003C\u003Ccolour background>>\\nmodal-border: #999999\\nmodal-footer-background: #f5f5f5\\nmodal-footer-border: #dddddd\\nmodal-header-border: #eeeeee\\nmuted-foreground: #bbb\\nnotification-background: #ffffdd\\nnotification-border: #999999\\npage-background: #6f6f70\\npre-background: #f5f5f5\\npre-border: #cccccc\\nprimary: #29a6ee\\nselect-tag-background:\\nselect-tag-foreground:\\nsidebar-button-foreground: \u003C\u003Ccolour foreground>>\\nsidebar-controls-foreground-hover: #000000\\nsidebar-controls-foreground: #c2c1c2\\nsidebar-foreground-shadow: rgba(255,255,255,0)\\nsidebar-foreground: #d3d2d4\\nsidebar-muted-foreground-hover: #444444\\nsidebar-muted-foreground: #c0c0c0\\nsidebar-tab-background-selected: #6f6f70\\nsidebar-tab-background: #666667\\nsidebar-tab-border-selected: #999\\nsidebar-tab-border: #515151\\nsidebar-tab-divider: #999\\nsidebar-tab-foreground-selected: \\nsidebar-tab-foreground: #999\\nsidebar-tiddler-link-foreground-hover: #444444\\nsidebar-tiddler-link-foreground: #d1d0d2\\nsite-title-foreground: \u003C\u003Ccolour tiddler-title-foreground>>\\nstatic-alert-foreground: #aaaaaa\\ntab-background-selected: #ffffff\\ntab-background: #d8d8d8\\ntab-border-selected: #d8d8d8\\ntab-border: #cccccc\\ntab-divider: #d8d8d8\\ntab-foreground-selected: \u003C\u003Ccolour tab-foreground>>\\ntab-foreground: #666666\\ntable-border: #dddddd\\ntable-footer-background: #a8a8a8\\ntable-header-background: #f0f0f0\\ntag-background: #d5ad34\\ntag-foreground: #ffffff\\ntiddler-background: \u003C\u003Ccolour background>>\\ntiddler-border: \u003C\u003Ccolour background>>\\ntiddler-controls-foreground-hover: #888888\\ntiddler-controls-foreground-selected: #444444\\ntiddler-controls-foreground: #cccccc\\ntiddler-editor-background: #f8f8f8\\ntiddler-editor-border-image: #ffffff\\ntiddler-editor-border: #cccccc\\ntiddler-editor-fields-even: #e0e8e0\\ntiddler-editor-fields-odd: #f0f4f0\\ntiddler-info-background: #f8f8f8\\ntiddler-info-border: #dddddd\\ntiddler-info-tab-background: #f8f8f8\\ntiddler-link-background: \u003C\u003Ccolour background>>\\ntiddler-link-foreground: \u003C\u003Ccolour primary>>\\ntiddler-subtitle-foreground: #c0c0c0\\ntiddler-title-foreground: #182955\\ntoolbar-new-button: \\ntoolbar-options-button: \\ntoolbar-save-button: \\ntoolbar-info-button: \\ntoolbar-edit-button: \\ntoolbar-close-button: \\ntoolbar-delete-button: \\ntoolbar-cancel-button: \\ntoolbar-done-button: \\nuntagged-background: #999999\\nvery-muted-foreground: #888888\\n\"},\"$:/palettes/ContrastLight\":{\"name\":\"Contrast (Light)\",\"color-scheme\":\"light\",\"description\":\"High contrast and unambiguous (light version)\",\"tags\":\"$:/tags/Palette\",\"type\":\"application/x-tiddler-dictionary\",\"text\":\"alert-background: #f00\\nalert-border: \u003C\u003Ccolour background>>\\nalert-highlight: \u003C\u003Ccolour foreground>>\\nalert-muted-foreground: #800\\nbackground: #fff\\nblockquote-bar: \u003C\u003Ccolour muted-foreground>>\\nbutton-background: \u003C\u003Ccolour background>>\\nbutton-foreground: \u003C\u003Ccolour foreground>>\\nbutton-border: \u003C\u003Ccolour foreground>>\\ncode-background: \u003C\u003Ccolour background>>\\ncode-border: \u003C\u003Ccolour foreground>>\\ncode-foreground: \u003C\u003Ccolour foreground>>\\ndirty-indicator: #f00\\ndownload-background: #080\\ndownload-foreground: \u003C\u003Ccolour background>>\\ndragger-background: \u003C\u003Ccolour foreground>>\\ndragger-foreground: \u003C\u003Ccolour background>>\\ndropdown-background: \u003C\u003Ccolour background>>\\ndropdown-border: \u003C\u003Ccolour muted-foreground>>\\ndropdown-tab-background-selected: \u003C\u003Ccolour foreground>>\\ndropdown-tab-background: \u003C\u003Ccolour foreground>>\\ndropzone-background: rgba(0,200,0,0.7)\\nexternal-link-background-hover: inherit\\nexternal-link-background-visited: inherit\\nexternal-link-background: inherit\\nexternal-link-foreground-hover: inherit\\nexternal-link-foreground-visited: #00a\\nexternal-link-foreground: #00e\\nforeground: #000\\nhighlight-background: #ffff00\\nhighlight-foreground: #000000\\nmessage-background: \u003C\u003Ccolour foreground>>\\nmessage-border: \u003C\u003Ccolour background>>\\nmessage-foreground: \u003C\u003Ccolour background>>\\nmodal-backdrop: \u003C\u003Ccolour foreground>>\\nmodal-background: \u003C\u003Ccolour background>>\\nmodal-border: \u003C\u003Ccolour foreground>>\\nmodal-footer-background: \u003C\u003Ccolour background>>\\nmodal-footer-border: \u003C\u003Ccolour foreground>>\\nmodal-header-border: \u003C\u003Ccolour foreground>>\\nmuted-foreground: \u003C\u003Ccolour foreground>>\\nnotification-background: \u003C\u003Ccolour background>>\\nnotification-border: \u003C\u003Ccolour foreground>>\\npage-background: \u003C\u003Ccolour background>>\\npre-background: \u003C\u003Ccolour background>>\\npre-border: \u003C\u003Ccolour foreground>>\\nprimary: #00f\\nselect-tag-background:\\nselect-tag-foreground:\\nsidebar-button-foreground: \u003C\u003Ccolour foreground>>\\nsidebar-controls-foreground-hover: \u003C\u003Ccolour background>>\\nsidebar-controls-foreground: \u003C\u003Ccolour foreground>>\\nsidebar-foreground-shadow: rgba(0,0,0, 0)\\nsidebar-foreground: \u003C\u003Ccolour foreground>>\\nsidebar-muted-foreground-hover: #444444\\nsidebar-muted-foreground: \u003C\u003Ccolour foreground>>\\nsidebar-tab-background-selected: \u003C\u003Ccolour background>>\\nsidebar-tab-background: \u003C\u003Ccolour tab-background>>\\nsidebar-tab-border-selected: \u003C\u003Ccolour tab-border-selected>>\\nsidebar-tab-border: \u003C\u003Ccolour tab-border>>\\nsidebar-tab-divider: \u003C\u003Ccolour tab-divider>>\\nsidebar-tab-foreground-selected: \u003C\u003Ccolour foreground>>\\nsidebar-tab-foreground: \u003C\u003Ccolour tab-foreground>>\\nsidebar-tiddler-link-foreground-hover: \u003C\u003Ccolour foreground>>\\nsidebar-tiddler-link-foreground: \u003C\u003Ccolour primary>>\\nsite-title-foreground: \u003C\u003Ccolour tiddler-title-foreground>>\\nstatic-alert-foreground: #aaaaaa\\ntab-background-selected: \u003C\u003Ccolour background>>\\ntab-background: \u003C\u003Ccolour foreground>>\\ntab-border-selected: \u003C\u003Ccolour foreground>>\\ntab-border: \u003C\u003Ccolour foreground>>\\ntab-divider: \u003C\u003Ccolour foreground>>\\ntab-foreground-selected: \u003C\u003Ccolour foreground>>\\ntab-foreground: \u003C\u003Ccolour background>>\\ntable-border: #dddddd\\ntable-footer-background: #a8a8a8\\ntable-header-background: #f0f0f0\\ntag-background: #000\\ntag-foreground: #fff\\ntiddler-background: \u003C\u003Ccolour background>>\\ntiddler-border: \u003C\u003Ccolour foreground>>\\ntiddler-controls-foreground-hover: #ddd\\ntiddler-controls-foreground-selected: #fdd\\ntiddler-controls-foreground: \u003C\u003Ccolour foreground>>\\ntiddler-editor-background: \u003C\u003Ccolour background>>\\ntiddler-editor-border-image: \u003C\u003Ccolour foreground>>\\ntiddler-editor-border: #cccccc\\ntiddler-editor-fields-even: \u003C\u003Ccolour background>>\\ntiddler-editor-fields-odd: \u003C\u003Ccolour background>>\\ntiddler-info-background: \u003C\u003Ccolour background>>\\ntiddler-info-border: \u003C\u003Ccolour foreground>>\\ntiddler-info-tab-background: \u003C\u003Ccolour background>>\\ntiddler-link-background: \u003C\u003Ccolour background>>\\ntiddler-link-foreground: \u003C\u003Ccolour primary>>\\ntiddler-subtitle-foreground: \u003C\u003Ccolour foreground>>\\ntiddler-title-foreground: \u003C\u003Ccolour foreground>>\\ntoolbar-new-button: \\ntoolbar-options-button: \\ntoolbar-save-button: \\ntoolbar-info-button: \\ntoolbar-edit-button: \\ntoolbar-close-button: \\ntoolbar-delete-button: \\ntoolbar-cancel-button: \\ntoolbar-done-button: \\nuntagged-background: \u003C\u003Ccolour foreground>>\\nvery-muted-foreground: #888888\\n\"},\"$:/palettes/ContrastDark\":{\"name\":\"Contrast (Dark)\",\"color-scheme\":\"dark\",\"description\":\"High contrast and unambiguous (dark version)\",\"tags\":\"$:/tags/Palette\",\"type\":\"application/x-tiddler-dictionary\",\"text\":\"alert-background: #f00\\nalert-border: \u003C\u003Ccolour background>>\\nalert-highlight: \u003C\u003Ccolour foreground>>\\nalert-muted-foreground: #800\\nbackground: #000\\nblockquote-bar: \u003C\u003Ccolour muted-foreground>>\\nbutton-background: \u003C\u003Ccolour background>>\\nbutton-foreground: \u003C\u003Ccolour foreground>>\\nbutton-border: \u003C\u003Ccolour foreground>>\\ncode-background: \u003C\u003Ccolour background>>\\ncode-border: \u003C\u003Ccolour foreground>>\\ncode-foreground: \u003C\u003Ccolour foreground>>\\ndirty-indicator: #f00\\ndownload-background: #080\\ndownload-foreground: \u003C\u003Ccolour background>>\\ndragger-background: \u003C\u003Ccolour foreground>>\\ndragger-foreground: \u003C\u003Ccolour background>>\\ndropdown-background: \u003C\u003Ccolour background>>\\ndropdown-border: \u003C\u003Ccolour muted-foreground>>\\ndropdown-tab-background-selected: \u003C\u003Ccolour foreground>>\\ndropdown-tab-background: \u003C\u003Ccolour foreground>>\\ndropzone-background: rgba(0,200,0,0.7)\\nexternal-link-background-hover: inherit\\nexternal-link-background-visited: inherit\\nexternal-link-background: inherit\\nexternal-link-foreground-hover: inherit\\nexternal-link-foreground-visited: #00a\\nexternal-link-foreground: #00e\\nforeground: #fff\\nhighlight-background: #ffff00\\nhighlight-foreground: #000000\\nmessage-background: \u003C\u003Ccolour foreground>>\\nmessage-border: \u003C\u003Ccolour background>>\\nmessage-foreground: \u003C\u003Ccolour background>>\\nmodal-backdrop: \u003C\u003Ccolour foreground>>\\nmodal-background: \u003C\u003Ccolour background>>\\nmodal-border: \u003C\u003Ccolour foreground>>\\nmodal-footer-background: \u003C\u003Ccolour background>>\\nmodal-footer-border: \u003C\u003Ccolour foreground>>\\nmodal-header-border: \u003C\u003Ccolour foreground>>\\nmuted-foreground: \u003C\u003Ccolour foreground>>\\nnotification-background: \u003C\u003Ccolour background>>\\nnotification-border: \u003C\u003Ccolour foreground>>\\npage-background: \u003C\u003Ccolour background>>\\npre-background: \u003C\u003Ccolour background>>\\npre-border: \u003C\u003Ccolour foreground>>\\nprimary: #00f\\nselect-tag-background:\\nselect-tag-foreground:\\nsidebar-button-foreground: \u003C\u003Ccolour foreground>>\\nsidebar-controls-foreground-hover: \u003C\u003Ccolour background>>\\nsidebar-controls-foreground: \u003C\u003Ccolour foreground>>\\nsidebar-foreground-shadow: rgba(0,0,0, 0)\\nsidebar-foreground: \u003C\u003Ccolour foreground>>\\nsidebar-muted-foreground-hover: #444444\\nsidebar-muted-foreground: \u003C\u003Ccolour foreground>>\\nsidebar-tab-background-selected: \u003C\u003Ccolour background>>\\nsidebar-tab-background: \u003C\u003Ccolour tab-background>>\\nsidebar-tab-border-selected: \u003C\u003Ccolour tab-border-selected>>\\nsidebar-tab-border: \u003C\u003Ccolour tab-border>>\\nsidebar-tab-divider: \u003C\u003Ccolour tab-divider>>\\nsidebar-tab-foreground-selected: \u003C\u003Ccolour foreground>>\\nsidebar-tab-foreground: \u003C\u003Ccolour tab-foreground>>\\nsidebar-tiddler-link-foreground-hover: \u003C\u003Ccolour foreground>>\\nsidebar-tiddler-link-foreground: \u003C\u003Ccolour primary>>\\nsite-title-foreground: \u003C\u003Ccolour tiddler-title-foreground>>\\nstatic-alert-foreground: #aaaaaa\\ntab-background-selected: \u003C\u003Ccolour background>>\\ntab-background: \u003C\u003Ccolour foreground>>\\ntab-border-selected: \u003C\u003Ccolour foreground>>\\ntab-border: \u003C\u003Ccolour foreground>>\\ntab-divider: \u003C\u003Ccolour foreground>>\\ntab-foreground-selected: \u003C\u003Ccolour foreground>>\\ntab-foreground: \u003C\u003Ccolour background>>\\ntable-border: #dddddd\\ntable-footer-background: #a8a8a8\\ntable-header-background: #f0f0f0\\ntag-background: #fff\\ntag-foreground: #000\\ntiddler-background: \u003C\u003Ccolour background>>\\ntiddler-border: \u003C\u003Ccolour foreground>>\\ntiddler-controls-foreground-hover: #ddd\\ntiddler-controls-foreground-selected: #fdd\\ntiddler-controls-foreground: \u003C\u003Ccolour foreground>>\\ntiddler-editor-background: \u003C\u003Ccolour background>>\\ntiddler-editor-border-image: \u003C\u003Ccolour foreground>>\\ntiddler-editor-border: #cccccc\\ntiddler-editor-fields-even: \u003C\u003Ccolour background>>\\ntiddler-editor-fields-odd: \u003C\u003Ccolour background>>\\ntiddler-info-background: \u003C\u003Ccolour background>>\\ntiddler-info-border: \u003C\u003Ccolour foreground>>\\ntiddler-info-tab-background: \u003C\u003Ccolour background>>\\ntiddler-link-background: \u003C\u003Ccolour background>>\\ntiddler-link-foreground: \u003C\u003Ccolour primary>>\\ntiddler-subtitle-foreground: \u003C\u003Ccolour foreground>>\\ntiddler-title-foreground: \u003C\u003Ccolour foreground>>\\ntoolbar-new-button: \\ntoolbar-options-button: \\ntoolbar-save-button: \\ntoolbar-info-button: \\ntoolbar-edit-button: \\ntoolbar-close-button: \\ntoolbar-delete-button: \\ntoolbar-cancel-button: \\ntoolbar-done-button: \\nuntagged-background: \u003C\u003Ccolour foreground>>\\nvery-muted-foreground: #888888\\n\"},\"$:/palettes/CupertinoDark\":{\"tags\":\"$:/tags/Palette\",\"color-scheme\":\"dark\",\"name\":\"Cupertino Dark\",\"description\":\"A macOS inspired dark palette\",\"type\":\"application/x-tiddler-dictionary\",\"text\":\"alert-background: #FF453A\\nalert-border: #FF453A\\nalert-highlight: #FFD60A\\nalert-muted-foreground: \u003C\u003Ccolour muted-foreground>>\\nbackground: #282828\\nblockquote-bar: \u003C\u003Ccolour page-background>>\\nbutton-foreground: \u003C\u003Ccolour foreground>>\\ncode-background: \u003C\u003Ccolour pre-background>>\\ncode-border: \u003C\u003Ccolour pre-border>>\\ncode-foreground: rgba(255, 255, 255, 0.54)\\ndirty-indicator: #FF453A\\ndownload-background: \u003C\u003Ccolour primary>>\\ndownload-foreground: \u003C\u003Ccolour foreground>>\\ndragger-background: \u003C\u003Ccolour foreground>>\\ndragger-foreground: \u003C\u003Ccolour background>>\\ndropdown-background: \u003C\u003Ccolour tiddler-info-background>>\\ndropdown-border: \u003C\u003Ccolour dropdown-background>>\\ndropdown-tab-background-selected: #3F638B\\ndropdown-tab-background: #323232\\ndropzone-background: #30D158\\nexternal-link-background-hover: transparent\\nexternal-link-background-visited: transparent\\nexternal-link-background: transparent\\nexternal-link-foreground-hover: \\nexternal-link-foreground-visited: #BF5AF2\\nexternal-link-foreground: #32D74B\\nforeground: #FFFFFF\\nhighlight-background: #ffff78\\nhighlight-foreground: #000000\\nmenubar-background: #464646\\nmenubar-foreground: #ffffff\\nmessage-background: \u003C\u003Ccolour background>>\\nmessage-border: \u003C\u003Ccolour very-muted-foreground>>\\nmessage-foreground: rgba(255, 255, 255, 0.54)\\nmodal-backdrop: \u003C\u003Ccolour page-background>>\\nmodal-background: \u003C\u003Ccolour background>>\\nmodal-border: \u003C\u003Ccolour very-muted-foreground>>\\nmodal-footer-background: \u003C\u003Ccolour background>>\\nmodal-footer-border: \u003C\u003Ccolour background>>\\nmodal-header-border: \u003C\u003Ccolour very-muted-foreground>>\\nmuted-foreground: #98989D\\nnotification-background: \u003C\u003Ccolour dropdown-background>>\\nnotification-border: \u003C\u003Ccolour dropdown-background>>\\npage-background: #323232\\npre-background: #464646\\npre-border: transparent\\nprimary: #0A84FF\\nselect-tag-background: \u003C\u003Ccolour background>>\\nselect-tag-foreground: \u003C\u003Ccolour foreground>>\\nsidebar-button-foreground: \u003C\u003Ccolour foreground>>\\nsidebar-controls-foreground-hover: #FF9F0A\\nsidebar-controls-foreground: #8E8E93\\nsidebar-foreground-shadow: transparent\\nsidebar-foreground: rgba(255, 255, 255, 0.54)\\nsidebar-muted-foreground-hover: rgba(255, 255, 255, 0.54)\\nsidebar-muted-foreground: rgba(255, 255, 255, 0.38)\\nsidebar-tab-background-selected: #3F638B\\nsidebar-tab-background: \u003C\u003Ccolour background>>\\nsidebar-tab-border-selected: \u003C\u003Ccolour background>>\\nsidebar-tab-border: \u003C\u003Ccolour background>>\\nsidebar-tab-divider: \u003C\u003Ccolour background>>\\nsidebar-tab-foreground-selected: rgba(255, 255, 255, 0.87)\\nsidebar-tab-foreground: rgba(255, 255, 255, 0.54)\\nsidebar-tiddler-link-foreground-hover: rgba(255, 255, 255, 0.7)\\nsidebar-tiddler-link-foreground: rgba(255, 255, 255, 0.54)\\nsite-title-foreground: #ffffff\\nstatic-alert-foreground: #B4B4B4\\ntab-background-selected: #3F638B\\ntab-background: \u003C\u003Ccolour page-background>>\\ntab-border-selected: \u003C\u003Ccolour page-background>>\\ntab-border: \u003C\u003Ccolour page-background>>\\ntab-divider: \u003C\u003Ccolour page-background>>\\ntab-foreground-selected: rgba(255, 255, 255, 0.87)\\ntab-foreground: rgba(255, 255, 255, 0.54)\\ntable-border: #464646\\ntable-footer-background: \u003C\u003Ccolour tiddler-editor-fields-odd>>\\ntable-header-background: \u003C\u003Ccolour tiddler-editor-fields-even>>\\ntag-background: #48484A\\ntag-foreground: #323232\\ntiddler-background: \u003C\u003Ccolour background>>\\ntiddler-border: transparent\\ntiddler-controls-foreground-hover: \u003C\u003Ccolour sidebar-controls-foreground-hover>>\\ntiddler-controls-foreground-selected: \u003C\u003Ccolour sidebar-controls-foreground-hover>>\\ntiddler-controls-foreground: #48484A\\ntiddler-editor-background: \u003C\u003Ccolour background>>\\ntiddler-editor-border-image: \\ntiddler-editor-border: rgba(255, 255, 255, 0.08)\\ntiddler-editor-fields-even: rgba(255, 255, 255, 0.1)\\ntiddler-editor-fields-odd: rgba(255, 255, 255, 0.04)\\ntiddler-info-background: #1E1E1E\\ntiddler-info-border: #1E1E1E\\ntiddler-info-tab-background: #3F638B\\ntiddler-link-background: \u003C\u003Ccolour background>>\\ntiddler-link-foreground: \u003C\u003Ccolour primary>>\\ntiddler-subtitle-foreground: \u003C\u003Ccolour muted-foreground>>\\ntiddler-title-foreground: #FFFFFF\\ntoolbar-new-button: \\ntoolbar-options-button: \\ntoolbar-save-button: \\ntoolbar-info-button: \\ntoolbar-edit-button: \\ntoolbar-close-button: \\ntoolbar-delete-button: \\ntoolbar-cancel-button: \\ntoolbar-done-button: \\nuntagged-background: \u003C\u003Ccolour very-muted-foreground>>\\nvery-muted-foreground: #464646\\nselection-background: #3F638B\\nselection-foreground: #ffffff\\nwikilist-background: \u003C\u003Ccolour page-background>>\\nwikilist-button-background: #3F638B\\nwikilist-button-foreground: \u003C\u003Ccolour foreground>>\\nwikilist-button-open: #32D74B\\nwikilist-button-open-hover: #32D74B\\nwikilist-button-reveal: #0A84FF\\nwikilist-button-reveal-hover: #0A84FF\\nwikilist-button-remove: #FF453A\\nwikilist-button-remove-hover: #FF453A\\nwikilist-droplink-dragover: #32D74B\\nwikilist-item: \u003C\u003Ccolour background>>\\nwikilist-toolbar-background: \u003C\u003Ccolour background>>\\nwikilist-title: \u003C\u003Ccolour foreground>>\\nwikilist-title-svg: \u003C\u003Ccolour foreground>>\\nwikilist-toolbar-foreground: \u003C\u003Ccolour foreground>>\\nwikilist-url: \u003C\u003Ccolour muted-foreground>>\\n\"},\"$:/palettes/DarkPhotos\":{\"created\":\"20150402111612188\",\"description\":\"Good with dark photo backgrounds\",\"modified\":\"20150402112344080\",\"name\":\"DarkPhotos\",\"tags\":\"$:/tags/Palette\",\"type\":\"application/x-tiddler-dictionary\",\"color-scheme\":\"light\",\"text\":\"alert-background: #ffe476\\nalert-border: #b99e2f\\nalert-highlight: #881122\\nalert-muted-foreground: #b99e2f\\nbackground: #ffffff\\nblockquote-bar: \u003C\u003Ccolour muted-foreground>>\\nbutton-background: \\nbutton-foreground: \\nbutton-border: \\ncode-background: #f7f7f9\\ncode-border: #e1e1e8\\ncode-foreground: #dd1144\\ndirty-indicator: #ff0000\\ndownload-background: #34c734\\ndownload-foreground: \u003C\u003Ccolour background>>\\ndragger-background: \u003C\u003Ccolour foreground>>\\ndragger-foreground: \u003C\u003Ccolour background>>\\ndropdown-background: \u003C\u003Ccolour background>>\\ndropdown-border: \u003C\u003Ccolour muted-foreground>>\\ndropdown-tab-background-selected: #fff\\ndropdown-tab-background: #ececec\\ndropzone-background: rgba(0,200,0,0.7)\\nexternal-link-background-hover: inherit\\nexternal-link-background-visited: inherit\\nexternal-link-background: inherit\\nexternal-link-foreground-hover: inherit\\nexternal-link-foreground-visited: #0000aa\\nexternal-link-foreground: #0000ee\\nforeground: #333333\\nhighlight-background: #ffff00\\nhighlight-foreground: #000000\\nmessage-background: #ecf2ff\\nmessage-border: #cfd6e6\\nmessage-foreground: #547599\\nmodal-backdrop: \u003C\u003Ccolour foreground>>\\nmodal-background: \u003C\u003Ccolour background>>\\nmodal-border: #999999\\nmodal-footer-background: #f5f5f5\\nmodal-footer-border: #dddddd\\nmodal-header-border: #eeeeee\\nmuted-foreground: #ddd\\nnotification-background: #ffffdd\\nnotification-border: #999999\\npage-background: #336438\\npre-background: #f5f5f5\\npre-border: #cccccc\\nprimary: #5778d8\\nselect-tag-background:\\nselect-tag-foreground:\\nsidebar-button-foreground: \u003C\u003Ccolour foreground>>\\nsidebar-controls-foreground-hover: #ccf\\nsidebar-controls-foreground: #fff\\nsidebar-foreground-shadow: rgba(0,0,0, 0.5)\\nsidebar-foreground: #fff\\nsidebar-muted-foreground-hover: #444444\\nsidebar-muted-foreground: #eee\\nsidebar-tab-background-selected: rgba(255,255,255, 0.8)\\nsidebar-tab-background: rgba(255,255,255, 0.4)\\nsidebar-tab-border-selected: \u003C\u003Ccolour tab-border-selected>>\\nsidebar-tab-border: \u003C\u003Ccolour tab-border>>\\nsidebar-tab-divider: rgba(255,255,255, 0.2)\\nsidebar-tab-foreground-selected: \\nsidebar-tab-foreground: \u003C\u003Ccolour tab-foreground>>\\nsidebar-tiddler-link-foreground-hover: #aaf\\nsidebar-tiddler-link-foreground: #ddf\\nsite-title-foreground: #fff\\nstatic-alert-foreground: #aaaaaa\\ntab-background-selected: #ffffff\\ntab-background: #d8d8d8\\ntab-border-selected: #d8d8d8\\ntab-border: #cccccc\\ntab-divider: #d8d8d8\\ntab-foreground-selected: \u003C\u003Ccolour tab-foreground>>\\ntab-foreground: #666666\\ntable-border: #dddddd\\ntable-footer-background: #a8a8a8\\ntable-header-background: #f0f0f0\\ntag-background: #ec6\\ntag-foreground: #ffffff\\ntiddler-background: \u003C\u003Ccolour background>>\\ntiddler-border: \u003C\u003Ccolour background>>\\ntiddler-controls-foreground-hover: #888888\\ntiddler-controls-foreground-selected: #444444\\ntiddler-controls-foreground: #cccccc\\ntiddler-editor-background: #f8f8f8\\ntiddler-editor-border-image: #ffffff\\ntiddler-editor-border: #cccccc\\ntiddler-editor-fields-even: #e0e8e0\\ntiddler-editor-fields-odd: #f0f4f0\\ntiddler-info-background: #f8f8f8\\ntiddler-info-border: #dddddd\\ntiddler-info-tab-background: #f8f8f8\\ntiddler-link-background: \u003C\u003Ccolour background>>\\ntiddler-link-foreground: \u003C\u003Ccolour primary>>\\ntiddler-subtitle-foreground: #c0c0c0\\ntiddler-title-foreground: #182955\\ntoolbar-new-button: \\ntoolbar-options-button: \\ntoolbar-save-button: \\ntoolbar-info-button: \\ntoolbar-edit-button: \\ntoolbar-close-button: \\ntoolbar-delete-button: \\ntoolbar-cancel-button: \\ntoolbar-done-button: \\nuntagged-background: #999999\\nvery-muted-foreground: #888888\\n\"},\"$:/palettes/DesertSand\":{\"tags\":\"$:/tags/Palette\",\"color-scheme\":\"light\",\"name\":\"Desert Sand\",\"description\":\"A desert sand palette\",\"type\":\"application/x-tiddler-dictionary\",\"text\":\"alert-background: #ffe476\\nalert-border: #b99e2f\\nalert-highlight: #881122\\nalert-muted-foreground: #b99e2f\\nbackground: #E9E0C7\\nblockquote-bar: \u003C\u003Ccolour muted-foreground>>\\nbutton-foreground: \u003C\u003Ccolour foreground>>\\ncode-background: #F3EDDF\\ncode-border: #C3BAA1\\ncode-foreground: #ab3250\\ndiff-delete-background: #bd8b8b\\ndiff-delete-foreground: \u003C\u003Ccolour foreground>>\\ndiff-equal-background: \\ndiff-equal-foreground: \u003C\u003Ccolour foreground>>\\ndiff-insert-background: #91c093\\ndiff-insert-foreground: \u003C\u003Ccolour foreground>>\\ndiff-invisible-background: \\ndiff-invisible-foreground: \u003C\u003Ccolour muted-foreground>>\\ndirty-indicator: #ad3434\\ndownload-background: #6ca16c\\ndownload-foreground: \u003C\u003Ccolour background>>\\ndragger-background: \u003C\u003Ccolour foreground>>\\ndragger-foreground: \u003C\u003Ccolour background>>\\ndropdown-background: \u003C\u003Ccolour background>>\\ndropdown-border: \u003C\u003Ccolour muted-foreground>>\\ndropdown-tab-background-selected: #E9E0C7\\ndropdown-tab-background: #BAB29C\\ndropzone-background: rgba(0,200,0,0.7)\\nexternal-link-background-hover: inherit\\nexternal-link-background-visited: inherit\\nexternal-link-background: inherit\\nexternal-link-foreground-hover: inherit\\nexternal-link-foreground-visited: #313163\\nexternal-link-foreground: #555592\\nforeground: #2D2A23\\nhighlight-background: #ffff00\\nhighlight-foreground: #000000\\nmenubar-background: #CDC2A6\\nmenubar-foreground: #5A5446\\nmessage-background: #ECE5CF\\nmessage-border: #D6CBAA\\nmessage-foreground: #5f6e7d\\nmodal-backdrop: \u003C\u003Ccolour foreground>>\\nmodal-background: \u003C\u003Ccolour background>>\\nmodal-border: #8A8885\\nmodal-footer-background: #CDC2A6\\nmodal-footer-border: #9D998E\\nmodal-header-border: #9D998E\\nmuted-foreground: #9D998E\\nnotification-background: #F0E9D7\\nnotification-border: #939189\\npage-background: #e0d3af\\npre-background: #D6CBAA\\npre-border: #CDC2A6\\nprimary: #5B6F55\\nselection-background: #9D947B\\nselection-foreground: \u003C\u003Ccolour foreground>>\\nselect-tag-background: #F0E9D7\\nselect-tag-foreground: #2D2A23\\nsidebar-button-foreground: \u003C\u003Ccolour foreground>>\\nsidebar-controls-foreground-hover: #2D2A23\\nsidebar-controls-foreground: #867F69\\nsidebar-foreground-shadow: transparent\\nsidebar-foreground: #867F69\\nsidebar-muted-foreground-hover: #706A58\\nsidebar-muted-foreground: #B3A98C\\nsidebar-tab-background-selected: #e0d3af\\nsidebar-tab-background: #A6A193\\nsidebar-tab-border-selected: #C3BAA1\\nsidebar-tab-border: #C3BAA1\\nsidebar-tab-divider: #CDC2A6\\nsidebar-tab-foreground-selected: \\nsidebar-tab-foreground: #2D2A23\\nsidebar-tiddler-link-foreground-hover: #433F35\\nsidebar-tiddler-link-foreground: #706A58\\nsite-title-foreground: \u003C\u003Ccolour tiddler-title-foreground>>\\nstatic-alert-foreground: #A6A193\\ntab-background-selected: #E9E0C7\\ntab-background: #A6A193\\ntab-border-selected: #C3BAA1\\ntab-border: #C3BAA1\\ntab-divider: #CDC2A6\\ntab-foreground-selected: \u003C\u003Ccolour tab-foreground>>\\ntab-foreground: #2D2A23\\ntable-border: #9D998E\\ntable-footer-background: #8A8885\\ntable-header-background: #B0AA98\\ntag-background: #706A58\\ntag-foreground: #E3D7B7\\ntiddler-background: \u003C\u003Ccolour background>>\\ntiddler-border: \u003C\u003Ccolour background>>\\ntiddler-controls-foreground-hover: #9D947B\\ntiddler-controls-foreground-selected: #706A58\\ntiddler-controls-foreground: #C3BAA1\\ntiddler-editor-background: #E9E0C7\\ntiddler-editor-border-image: #A6A193\\ntiddler-editor-border: #A6A193\\ntiddler-editor-fields-even: #D6CBAA\\ntiddler-editor-fields-odd: #C3BAA1\\ntiddler-info-background: #E3D7B7\\ntiddler-info-border: #BAB29C\\ntiddler-info-tab-background: #E9E0C7\\ntiddler-link-background: \u003C\u003Ccolour background>>\\ntiddler-link-foreground: \u003C\u003Ccolour primary>>\\ntiddler-subtitle-foreground: #867F69\\ntiddler-title-foreground: #374464\\ntoolbar-new-button: \\ntoolbar-options-button: \\ntoolbar-save-button: \\ntoolbar-info-button: \\ntoolbar-edit-button: \\ntoolbar-close-button: \\ntoolbar-delete-button: \\ntoolbar-cancel-button: \\ntoolbar-done-button: \\nuntagged-background: #8A8885\\nvery-muted-foreground: #CDC2A6\\nwikilist-background: \u003C\u003Ccolour page-background>>\\nwikilist-item: #CDC2A6\\nwikilist-info: #161512\\nwikilist-title: #433F35\\nwikilist-title-svg: \u003C\u003Ccolour wikilist-title>>\\nwikilist-url: #706A58\\nwikilist-button-open: #7db66a\\nwikilist-button-open-hover: #56a556\\nwikilist-button-reveal: #5a6c9e\\nwikilist-button-reveal-hover: #454591\\nwikilist-button-remove: #bc5972\\nwikilist-button-remove-hover: #814040\\nwikilist-toolbar-background: #CDC2A6\\nwikilist-toolbar-foreground: #2D2A23\\nwikilist-droplink-dragover: rgba(255,192,192,0.5)\\nwikilist-button-background: #A6A193\\nwikilist-button-foreground: #161512\\n\"},\"$:/palettes/GruvboxDark\":{\"name\":\"Gruvbox Dark\",\"color-scheme\":\"dark\",\"description\":\"Retro groove color scheme\",\"tags\":\"$:/tags/Palette\",\"type\":\"application/x-tiddler-dictionary\",\"license\":\"https://github.com/morhetz/gruvbox\",\"text\":\"alert-background: #cc241d\\nalert-border: #cc241d\\nalert-highlight: #d79921\\nalert-muted-foreground: #504945\\nbackground: #3c3836\\nblockquote-bar: \u003C\u003Ccolour muted-foreground>>\\nbutton-foreground: \u003C\u003Ccolour foreground>>\\ncode-background: #504945\\ncode-border: #504945\\ncode-foreground: #fb4934\\ndiff-delete-background: #fb4934\\ndiff-delete-foreground: \u003C\u003Ccolour foreground>>\\ndiff-equal-background: \\ndiff-equal-foreground: \u003C\u003Ccolour foreground>>\\ndiff-insert-background: #b8bb26\\ndiff-insert-foreground: \u003C\u003Ccolour foreground>>\\ndiff-invisible-background: \\ndiff-invisible-foreground: \u003C\u003Ccolour muted-foreground>>\\ndirty-indicator: #fb4934\\ndownload-background: #b8bb26\\ndownload-foreground: \u003C\u003Ccolour background>>\\ndragger-background: \u003C\u003Ccolour foreground>>\\ndragger-foreground: \u003C\u003Ccolour background>>\\ndropdown-background: #665c54\\ndropdown-border: \u003C\u003Ccolour background>>\\ndropdown-tab-background-selected: #ebdbb2\\ndropdown-tab-background: #665c54\\ndropzone-background: #98971a\\nexternal-link-background-hover: inherit\\nexternal-link-background-visited: inherit\\nexternal-link-background: inherit\\nexternal-link-foreground-hover: inherit\\nexternal-link-foreground-visited: #d3869b\\nexternal-link-foreground: #8ec07c\\nforeground: #fbf1c7\\nhighlight-background: #ffff79\\nhighlight-foreground: #000000\\nmenubar-background: #504945\\nmenubar-foreground: \u003C\u003Ccolour foreground>>\\nmessage-background: #83a598\\nmessage-border: #83a598\\nmessage-foreground: #3c3836\\nmodal-backdrop: \u003C\u003Ccolour foreground>>\\nmodal-background: \u003C\u003Ccolour background>>\\nmodal-border: #504945\\nmodal-footer-background: #3c3836\\nmodal-footer-border: #3c3836\\nmodal-header-border: #3c3836\\nmuted-foreground: #d5c4a1\\nnotification-background: \u003C\u003Ccolour primary>>\\nnotification-border: \u003C\u003Ccolour primary>>\\npage-background: #282828\\npre-background: #504945\\npre-border: #504945\\nprimary: #d79921\\nselect-tag-background: #665c54\\nselect-tag-foreground: \u003C\u003Ccolour foreground>>\\nselection-background: #458588\\nselection-foreground: \u003C\u003Ccolour foreground>>\\nsidebar-button-foreground: \u003C\u003Ccolour foreground>>\\nsidebar-controls-foreground-hover: #7c6f64\\nsidebar-controls-foreground: #504945\\nsidebar-foreground-shadow: transparent\\nsidebar-foreground: #fbf1c7\\nsidebar-muted-foreground-hover: #7c6f64\\nsidebar-muted-foreground: #504945\\nsidebar-tab-background-selected: #bdae93\\nsidebar-tab-background: #3c3836\\nsidebar-tab-border-selected: \u003C\u003Ccolour tab-border-selected>>\\nsidebar-tab-border: #bdae93\\nsidebar-tab-divider: \u003C\u003Ccolour page-background>>\\nsidebar-tab-foreground-selected: #282828\\nsidebar-tab-foreground: \u003C\u003Ccolour tab-foreground>>\\nsidebar-tiddler-link-foreground-hover: #458588\\nsidebar-tiddler-link-foreground: #98971a\\nsite-title-foreground: \u003C\u003Ccolour tiddler-title-foreground>>\\nstatic-alert-foreground: #B48EAD\\ntab-background-selected: #ebdbb2\\ntab-background: #665c54\\ntab-border-selected: #665c54\\ntab-border: #665c54\\ntab-divider: #bdae93\\ntab-foreground-selected: #282828\\ntab-foreground: #ebdbb2\\ntable-border: #7c6f64\\ntable-footer-background: #665c54\\ntable-header-background: #504945\\ntag-background: #d3869b\\ntag-foreground: #282828\\ntiddler-background: \u003C\u003Ccolour background>>\\ntiddler-border: \u003C\u003Ccolour background>>\\ntiddler-controls-foreground-hover: #7c6f64\\ntiddler-controls-foreground-selected: \u003C\u003Ccolour primary>>\\ntiddler-controls-foreground: #665c54\\ntiddler-editor-background: #32302f\\ntiddler-editor-border-image: #282828\\ntiddler-editor-border: #282828\\ntiddler-editor-fields-even: #504945\\ntiddler-editor-fields-odd: #7c6f64\\ntiddler-info-background: #32302f\\ntiddler-info-border: #ebdbb2\\ntiddler-info-tab-background: #ebdbb2\\ntiddler-link-background: \u003C\u003Ccolour background>>\\ntiddler-link-foreground: \u003C\u003Ccolour primary>>\\ntiddler-subtitle-foreground: #7c6f64\\ntiddler-title-foreground: #a89984\\ntoolbar-new-button: \\ntoolbar-options-button: \\ntoolbar-save-button: \\ntoolbar-info-button: \\ntoolbar-edit-button: \\ntoolbar-close-button: \\ntoolbar-delete-button: \\ntoolbar-cancel-button: \\ntoolbar-done-button: \\nuntagged-background: #504945\\nvery-muted-foreground: #bdae93\\nwikilist-background: \u003C\u003Ccolour page-background>>\\nwikilist-button-background: #acacac\\nwikilist-button-foreground: \u003C\u003Ccolour button-foreground>>\\nwikilist-item: \u003C\u003Ccolour background>>\\nwikilist-toolbar-background: \u003C\u003Ccolour background>>\\nwikilist-toolbar-foreground: \u003C\u003Ccolour foreground>>\\nwikilist-title: \u003C\u003Ccolour foreground>>\\nwikilist-title-svg: \u003C\u003Ccolour wikilist-title>>\\nwikilist-url: \u003C\u003Ccolour muted-foreground>>\\nwikilist-button-open-hover: \u003C\u003Ccolour primary>>\\nwikilist-button-open: \u003C\u003Ccolour dropzone-background>>\\nwikilist-button-remove: \u003C\u003Ccolour dirty-indicator>>\\nwikilist-button-remove-hover: \u003C\u003Ccolour alert-background>>\\nwikilist-droplink-dragover: \u003C\u003Ccolour dropzone-background>>\\nwikilist-button-reveal: \u003C\u003Ccolour sidebar-tiddler-link-foreground-hover>>\\nwikilist-button-reveal-hover: \u003C\u003Ccolour message-background>>\\n\"},\"$:/palettes/Nord\":{\"name\":\"Nord\",\"color-scheme\":\"dark\",\"description\":\"An arctic, north-bluish color palette.\",\"tags\":\"$:/tags/Palette\",\"type\":\"application/x-tiddler-dictionary\",\"license\":\"MIT, arcticicestudio, https://github.com/arcticicestudio/nord/blob/develop/LICENSE.md\",\"text\":\"alert-background: #D08770\\nalert-border: #D08770\\nalert-highlight: #B48EAD\\nalert-muted-foreground: #4C566A\\nbackground: #3b4252\\nblockquote-bar: \u003C\u003Ccolour muted-foreground>>\\nbutton-foreground: \u003C\u003Ccolour foreground>>\\ncode-background: #2E3440\\ncode-border: #2E3440\\ncode-foreground: #BF616A\\ndiff-delete-background: #BF616A\\ndiff-delete-foreground: \u003C\u003Ccolour foreground>>\\ndiff-equal-background: \\ndiff-equal-foreground: \u003C\u003Ccolour foreground>>\\ndiff-insert-background: #A3BE8C\\ndiff-insert-foreground: \u003C\u003Ccolour foreground>>\\ndiff-invisible-background: \\ndiff-invisible-foreground: \u003C\u003Ccolour muted-foreground>>\\ndirty-indicator: #BF616A\\ndownload-background: #A3BE8C\\ndownload-foreground: \u003C\u003Ccolour background>>\\ndragger-background: \u003C\u003Ccolour foreground>>\\ndragger-foreground: \u003C\u003Ccolour background>>\\ndropdown-background: \u003C\u003Ccolour background>>\\ndropdown-border: \u003C\u003Ccolour background>>\\ndropdown-tab-background-selected: #ECEFF4\\ndropdown-tab-background: #4C566A\\ndropzone-background: #A3BE8C\\nexternal-link-background-hover: inherit\\nexternal-link-background-visited: inherit\\nexternal-link-background: inherit\\nexternal-link-foreground-hover: inherit\\nexternal-link-foreground-visited: #5E81AC\\nexternal-link-foreground: #8FBCBB\\nforeground: #d8dee9\\nhighlight-background: #ffff78\\nhighlight-foreground: #000000\\nmenubar-background: #2E3440\\nmenubar-foreground: #d8dee9\\nmessage-background: #2E3440\\nmessage-border: #2E3440\\nmessage-foreground: #547599\\nmodal-backdrop: \u003C\u003Ccolour foreground>>\\nmodal-background: \u003C\u003Ccolour background>>\\nmodal-border: #3b4252\\nmodal-footer-background: #3b4252\\nmodal-footer-border: #3b4252\\nmodal-header-border: #3b4252\\nmuted-foreground: #4C566A\\nnotification-background: \u003C\u003Ccolour primary>>\\nnotification-border: #EBCB8B\\npage-background: #2e3440\\npre-background: #2E3440\\npre-border: #2E3440\\nprimary: #5E81AC\\nselect-tag-background: #3b4252\\nselect-tag-foreground: \u003C\u003Ccolour foreground>>\\nselection-background: #5E81AC\\nselection-foreground: \u003C\u003Ccolour foreground>>\\nsidebar-button-foreground: \u003C\u003Ccolour foreground>>\\nsidebar-controls-foreground-hover: #D8DEE9\\nsidebar-controls-foreground: #4C566A\\nsidebar-foreground-shadow: transparent\\nsidebar-foreground: #D8DEE9\\nsidebar-muted-foreground-hover: #4C566A\\nsidebar-muted-foreground: #4C566A\\nsidebar-tab-background-selected: #ECEFF4\\nsidebar-tab-background: #4C566A\\nsidebar-tab-border-selected: \u003C\u003Ccolour tab-border-selected>>\\nsidebar-tab-border: #4C566A\\nsidebar-tab-divider: \u003C\u003Ccolour page-background>>\\nsidebar-tab-foreground-selected: #4C566A\\nsidebar-tab-foreground: \u003C\u003Ccolour tab-foreground>>\\nsidebar-tiddler-link-foreground-hover: #A3BE8C\\nsidebar-tiddler-link-foreground: #81A1C1\\nsite-title-foreground: \u003C\u003Ccolour tiddler-title-foreground>>\\nstatic-alert-foreground: #B48EAD\\ntab-background-selected: #ECEFF4\\ntab-background: #4C566A\\ntab-border-selected: #4C566A\\ntab-border: #4C566A\\ntab-divider: #4C566A\\ntab-foreground-selected: #4C566A\\ntab-foreground: #D8DEE9\\ntable-border: #4C566A\\ntable-footer-background: #2e3440\\ntable-header-background: #2e3440\\ntag-background: #A3BE8C\\ntag-foreground: #4C566A\\ntiddler-background: \u003C\u003Ccolour background>>\\ntiddler-border: \u003C\u003Ccolour background>>\\ntiddler-controls-foreground-hover: \\ntiddler-controls-foreground-selected: #EBCB8B\\ntiddler-controls-foreground: #4C566A\\ntiddler-editor-background: #2e3440\\ntiddler-editor-border-image: #2e3440\\ntiddler-editor-border: #3b4252\\ntiddler-editor-fields-even: #2e3440\\ntiddler-editor-fields-odd: #2e3440\\ntiddler-info-background: #2e3440\\ntiddler-info-border: #2e3440\\ntiddler-info-tab-background: #2e3440\\ntiddler-link-background: \u003C\u003Ccolour background>>\\ntiddler-link-foreground: \u003C\u003Ccolour primary>>\\ntiddler-subtitle-foreground: #4C566A\\ntiddler-title-foreground: #81A1C1\\ntoolbar-new-button: \\ntoolbar-options-button: \\ntoolbar-save-button: \\ntoolbar-info-button: \\ntoolbar-edit-button: \\ntoolbar-close-button: \\ntoolbar-delete-button: \\ntoolbar-cancel-button: \\ntoolbar-done-button: \\nuntagged-background: #2d3038\\nvery-muted-foreground: #2d3038\\nwikilist-background: \u003C\u003Ccolour page-background>>\\nwikilist-toolbar-background: \u003C\u003Ccolour background>>\\nwikilist-item: \u003C\u003Ccolour background>>\\nwikilist-title: \u003C\u003Ccolour foreground>>\\nwikilist-info: \u003C\u003Ccolour muted-foreground>>\\nwikilist-button-open: #A3BE8C\\nwikilist-button-open-hover: #A3BE8C\\nwikilist-button-reveal: #81A1C1\\nwikilist-button-reveal-hover: #81A1C1\\nwikilist-button-remove: #B48EAD\\nwikilist-button-remove-hover: #B48EAD\\n\"},\"$:/palettes/Rocker\":{\"name\":\"Rocker\",\"color-scheme\":\"dark\",\"description\":\"A dark theme\",\"tags\":\"$:/tags/Palette\",\"type\":\"application/x-tiddler-dictionary\",\"text\":\"alert-background: #ffe476\\nalert-border: #b99e2f\\nalert-highlight: #881122\\nalert-muted-foreground: #b99e2f\\nbackground: #ffffff\\nblockquote-bar: \u003C\u003Ccolour muted-foreground>>\\nbutton-background:\\nbutton-foreground:\\nbutton-border:\\ncode-background: #f7f7f9\\ncode-border: #e1e1e8\\ncode-foreground: #dd1144\\ndirty-indicator: #ff0000\\ndownload-background: #34c734\\ndownload-foreground: \u003C\u003Ccolour background>>\\ndragger-background: \u003C\u003Ccolour foreground>>\\ndragger-foreground: \u003C\u003Ccolour background>>\\ndropdown-background: \u003C\u003Ccolour background>>\\ndropdown-border: \u003C\u003Ccolour muted-foreground>>\\ndropdown-tab-background-selected: #fff\\ndropdown-tab-background: #ececec\\ndropzone-background: rgba(0,200,0,0.7)\\nexternal-link-background-hover: inherit\\nexternal-link-background-visited: inherit\\nexternal-link-background: inherit\\nexternal-link-foreground-hover: inherit\\nexternal-link-foreground-visited: #0000aa\\nexternal-link-foreground: #0000ee\\nforeground: #333333\\nhighlight-background: #ffff00\\nhighlight-foreground: #000000\\nmessage-background: #ecf2ff\\nmessage-border: #cfd6e6\\nmessage-foreground: #547599\\nmodal-backdrop: \u003C\u003Ccolour foreground>>\\nmodal-background: \u003C\u003Ccolour background>>\\nmodal-border: #999999\\nmodal-footer-background: #f5f5f5\\nmodal-footer-border: #dddddd\\nmodal-header-border: #eeeeee\\nmuted-foreground: #999999\\nnotification-background: #ffffdd\\nnotification-border: #999999\\npage-background: #000\\npre-background: #f5f5f5\\npre-border: #cccccc\\nprimary: #cc0000\\nselect-tag-background:\\nselect-tag-foreground:\\nsidebar-button-foreground: \u003C\u003Ccolour foreground>>\\nsidebar-controls-foreground-hover: #000000\\nsidebar-controls-foreground: #ffffff\\nsidebar-foreground-shadow: rgba(255,255,255, 0.0)\\nsidebar-foreground: #acacac\\nsidebar-muted-foreground-hover: #444444\\nsidebar-muted-foreground: #c0c0c0\\nsidebar-tab-background-selected: #000\\nsidebar-tab-background: \u003C\u003Ccolour tab-background>>\\nsidebar-tab-border-selected: \u003C\u003Ccolour tab-border-selected>>\\nsidebar-tab-border: \u003C\u003Ccolour tab-border>>\\nsidebar-tab-divider: \u003C\u003Ccolour tab-divider>>\\nsidebar-tab-foreground-selected: \\nsidebar-tab-foreground: \u003C\u003Ccolour tab-foreground>>\\nsidebar-tiddler-link-foreground-hover: #ffbb99\\nsidebar-tiddler-link-foreground: #cc0000\\nsite-title-foreground: \u003C\u003Ccolour tiddler-title-foreground>>\\nstatic-alert-foreground: #aaaaaa\\ntab-background-selected: #ffffff\\ntab-background: #d8d8d8\\ntab-border-selected: #d8d8d8\\ntab-border: #cccccc\\ntab-divider: #d8d8d8\\ntab-foreground-selected: \u003C\u003Ccolour tab-foreground>>\\ntab-foreground: #666666\\ntable-border: #dddddd\\ntable-footer-background: #a8a8a8\\ntable-header-background: #f0f0f0\\ntag-background: #ffbb99\\ntag-foreground: #000\\ntiddler-background: \u003C\u003Ccolour background>>\\ntiddler-border: \u003C\u003Ccolour background>>\\ntiddler-controls-foreground-hover: #888888\\ntiddler-controls-foreground-selected: #444444\\ntiddler-controls-foreground: #cccccc\\ntiddler-editor-background: #f8f8f8\\ntiddler-editor-border-image: #ffffff\\ntiddler-editor-border: #cccccc\\ntiddler-editor-fields-even: #e0e8e0\\ntiddler-editor-fields-odd: #f0f4f0\\ntiddler-info-background: #f8f8f8\\ntiddler-info-border: #dddddd\\ntiddler-info-tab-background: #f8f8f8\\ntiddler-link-background: \u003C\u003Ccolour background>>\\ntiddler-link-foreground: \u003C\u003Ccolour primary>>\\ntiddler-subtitle-foreground: #c0c0c0\\ntiddler-title-foreground: #cc0000\\ntoolbar-new-button:\\ntoolbar-options-button:\\ntoolbar-save-button:\\ntoolbar-info-button:\\ntoolbar-edit-button:\\ntoolbar-close-button:\\ntoolbar-delete-button:\\ntoolbar-cancel-button:\\ntoolbar-done-button:\\nuntagged-background: #999999\\nvery-muted-foreground: #888888\\n\"},\"$:/palettes/SolarFlare\":{\"name\":\"Solar Flare\",\"color-scheme\":\"light\",\"description\":\"Warm, relaxing earth colours\",\"tags\":\"$:/tags/Palette\",\"type\":\"application/x-tiddler-dictionary\",\"text\":\": Background Tones\\n\\nbase03: #002b36\\nbase02: #073642\\n\\n: Content Tones\\n\\nbase01: #586e75\\nbase00: #657b83\\nbase0: #839496\\nbase1: #93a1a1\\n\\n: Background Tones\\n\\nbase2: #eee8d5\\nbase3: #fdf6e3\\n\\n: Accent Colors\\n\\nyellow: #b58900\\norange: #cb4b16\\nred: #dc322f\\nmagenta: #d33682\\nviolet: #6c71c4\\nblue: #268bd2\\ncyan: #2aa198\\ngreen: #859900\\n\\n: Additional Tones (RA)\\n\\nbase10: #c0c4bb\\nviolet-muted: #7c81b0\\nblue-muted: #4e7baa\\n\\nyellow-hot: #ffcc44\\norange-hot: #eb6d20\\nred-hot: #ff2222\\nblue-hot: #2298ee\\ngreen-hot: #98ee22\\n\\n: Palette\\n\\n: Do not use colour macro for background and foreground\\nbackground: #fdf6e3\\n download-foreground: \u003C\u003Ccolour background>>\\n dragger-foreground: \u003C\u003Ccolour background>>\\n dropdown-background: \u003C\u003Ccolour background>>\\n modal-background: \u003C\u003Ccolour background>>\\n sidebar-foreground-shadow: \u003C\u003Ccolour background>>\\n tiddler-background: \u003C\u003Ccolour background>>\\n tiddler-border: \u003C\u003Ccolour background>>\\n tiddler-link-background: \u003C\u003Ccolour background>>\\n tab-background-selected: \u003C\u003Ccolour background>>\\n dropdown-tab-background-selected: \u003C\u003Ccolour tab-background-selected>>\\nforeground: #657b83\\n dragger-background: \u003C\u003Ccolour foreground>>\\n tab-foreground: \u003C\u003Ccolour foreground>>\\n tab-foreground-selected: \u003C\u003Ccolour tab-foreground>>\\n sidebar-tab-foreground-selected: \u003C\u003Ccolour tab-foreground-selected>>\\n sidebar-tab-foreground: \u003C\u003Ccolour tab-foreground>>\\n sidebar-button-foreground: \u003C\u003Ccolour foreground>>\\n sidebar-controls-foreground: \u003C\u003Ccolour foreground>>\\n sidebar-foreground: \u003C\u003Ccolour foreground>>\\n: base03\\n: base02\\n: base01\\n alert-muted-foreground: \u003C\u003Ccolour base01>>\\n: base00\\n code-foreground: \u003C\u003Ccolour base00>>\\n message-foreground: \u003C\u003Ccolour base00>>\\n tag-foreground: \u003C\u003Ccolour base00>>\\n: base0\\n sidebar-tiddler-link-foreground: \u003C\u003Ccolour base0>>\\n: base1\\n muted-foreground: \u003C\u003Ccolour base1>>\\n blockquote-bar: \u003C\u003Ccolour muted-foreground>>\\n dropdown-border: \u003C\u003Ccolour muted-foreground>>\\n sidebar-muted-foreground: \u003C\u003Ccolour muted-foreground>>\\n tiddler-title-foreground: \u003C\u003Ccolour muted-foreground>>\\n site-title-foreground: \u003C\u003Ccolour tiddler-title-foreground>>\\n: base2\\n modal-footer-background: \u003C\u003Ccolour base2>>\\n page-background: \u003C\u003Ccolour base2>>\\n modal-backdrop: \u003C\u003Ccolour page-background>>\\n notification-background: \u003C\u003Ccolour page-background>>\\n code-background: \u003C\u003Ccolour page-background>>\\n code-border: \u003C\u003Ccolour code-background>>\\n pre-background: \u003C\u003Ccolour page-background>>\\n pre-border: \u003C\u003Ccolour pre-background>>\\n sidebar-tab-background-selected: \u003C\u003Ccolour page-background>>\\n table-header-background: \u003C\u003Ccolour base2>>\\n tag-background: \u003C\u003Ccolour base2>>\\n tiddler-editor-background: \u003C\u003Ccolour base2>>\\n tiddler-info-background: \u003C\u003Ccolour base2>>\\n tiddler-info-tab-background: \u003C\u003Ccolour base2>>\\n tab-background: \u003C\u003Ccolour base2>>\\n dropdown-tab-background: \u003C\u003Ccolour tab-background>>\\n: base3\\n alert-background: \u003C\u003Ccolour base3>>\\n message-background: \u003C\u003Ccolour base3>>\\n: yellow\\n: orange\\n: red\\n: magenta\\n alert-highlight: \u003C\u003Ccolour magenta>>\\n: violet\\n external-link-foreground: \u003C\u003Ccolour violet>>\\n: blue\\n: cyan\\n: green\\n: base10\\n tiddler-controls-foreground: \u003C\u003Ccolour base10>>\\n: violet-muted\\n external-link-foreground-visited: \u003C\u003Ccolour violet-muted>>\\n: blue-muted\\n primary: \u003C\u003Ccolour blue-muted>>\\n download-background: \u003C\u003Ccolour primary>>\\n tiddler-link-foreground: \u003C\u003Ccolour primary>>\\n\\nalert-border: #b99e2f\\ndirty-indicator: #ff0000\\ndropzone-background: rgba(0,200,0,0.7)\\nexternal-link-background-hover: inherit\\nexternal-link-background-visited: inherit\\nexternal-link-background: inherit\\nexternal-link-foreground-hover: inherit\\nhighlight-background: #ffff00\\nhighlight-foreground: #000000\\nmessage-border: #cfd6e6\\nmodal-border: #999999\\nselect-tag-background:\\nselect-tag-foreground:\\nsidebar-controls-foreground-hover:\\nsidebar-muted-foreground-hover:\\nsidebar-tab-background: #ded8c5\\nsidebar-tiddler-link-foreground-hover:\\nstatic-alert-foreground: #aaaaaa\\ntab-border: #cccccc\\n modal-footer-border: \u003C\u003Ccolour tab-border>>\\n modal-header-border: \u003C\u003Ccolour tab-border>>\\n notification-border: \u003C\u003Ccolour tab-border>>\\n sidebar-tab-border: \u003C\u003Ccolour tab-border>>\\n tab-border-selected: \u003C\u003Ccolour tab-border>>\\n sidebar-tab-border-selected: \u003C\u003Ccolour tab-border-selected>>\\ntab-divider: #d8d8d8\\n sidebar-tab-divider: \u003C\u003Ccolour tab-divider>>\\ntable-border: #dddddd\\ntable-footer-background: #a8a8a8\\ntiddler-controls-foreground-hover: #888888\\ntiddler-controls-foreground-selected: #444444\\ntiddler-editor-border-image: #ffffff\\ntiddler-editor-border: #cccccc\\ntiddler-editor-fields-even: #e0e8e0\\ntiddler-editor-fields-odd: #f0f4f0\\ntiddler-info-border: #dddddd\\ntiddler-subtitle-foreground: #c0c0c0\\ntoolbar-new-button:\\ntoolbar-options-button:\\ntoolbar-save-button:\\ntoolbar-info-button:\\ntoolbar-edit-button:\\ntoolbar-close-button:\\ntoolbar-delete-button:\\ntoolbar-cancel-button:\\ntoolbar-done-button:\\nuntagged-background: #999999\\nvery-muted-foreground: #888888\\n\"},\"$:/palettes/SolarizedDark\":{\"tags\":\"$:/tags/Palette\",\"type\":\"application/x-tiddler-dictionary\",\"description\":\"Precision dark colors for machines and people\",\"license\":\"MIT, Ethan Schoonover, https://github.com/altercation/solarized/blob/master/LICENSE\",\"name\":\"SolarizedDark\",\"color-scheme\":\"dark\",\"text\":\"alert-background: #073642\\nalert-border: #93a1a1\\nalert-highlight: #d33682\\nalert-muted-foreground: #d33682\\nbackground: #073642\\nblockquote-bar: #d33682\\nbutton-background: #073642\\nbutton-border: #586e75\\nbutton-foreground: #93a1a1\\ncode-background: #073642\\ncode-border: #586e75\\ncode-foreground: #93a1a1\\ndirty-indicator: inherit\\ndownload-background: #859900\\ndownload-foreground: #073642\\ndragger-background: #073642\\ndragger-foreground: #839496\\ndropdown-background: #073642\\ndropdown-border: #93a1a1\\ndropdown-tab-background: #002b36\\ndropdown-tab-background-selected: #073642\\ndropzone-background: #859900\\nexternal-link-background: inherit\\nexternal-link-background-hover: inherit\\nexternal-link-background-visited: inherit\\nexternal-link-foreground: #268bd2\\nexternal-link-foreground-hover:\\nexternal-link-foreground-visited: #268bd2\\nforeground: #839496\\nhighlight-background: #ffff78\\nhighlight-foreground: #000000\\nmessage-background: #002b36\\nmessage-border: #586e75\\nmessage-foreground: #839496\\nmodal-backdrop: #657b83\\nmodal-background: #002b36\\nmodal-border: #586e75\\nmodal-footer-background: #073642\\nmodal-footer-border: #586e75\\nmodal-header-border: #586e75\\nmuted-foreground: #93a1a1\\nnotification-background: #002b36\\nnotification-border: #586e75\\npage-background: #073642\\npre-background: inherit\\npre-border: #657b83\\nprimary: #859900\\nselect-tag-background: #002b36\\nselect-tag-foreground: #839496\\nsidebar-button-foreground: #93a1a1\\nsidebar-controls-foreground: #93a1a1\\nsidebar-controls-foreground-hover: #eee8d5\\nsidebar-foreground: #93a1a1\\nsidebar-foreground-shadow: transparent\\nsidebar-muted-foreground: #839496\\nsidebar-muted-foreground-hover: #93a1a1\\nsidebar-tab-background: #002b36\\nsidebar-tab-background-selected: #073642\\nsidebar-tab-border: #073642\\nsidebar-tab-border-selected: #839496\\nsidebar-tab-divider: #002b36\\nsidebar-tab-foreground: #657b83\\nsidebar-tab-foreground-selected: #93a1a1\\nsidebar-tiddler-link-foreground: #2aa198\\nsidebar-tiddler-link-foreground-hover: #eee8d5\\nsite-title-foreground: #d33682\\nstatic-alert-foreground: #93a1a1\\ntab-background: #073642\\ntab-background-selected: #002b36\\ntab-border: #586e75\\ntab-border-selected: #93a1a1\\ntab-divider: #93a1a1\\ntab-foreground: #839496\\ntab-foreground-selected: #93a1a1\\ntable-border: #586e75\\ntable-footer-background: #073642\\ntable-header-background: #073642\\ntag-background: #b58900\\ntag-foreground: #002b36\\ntiddler-background: #002b36\\ntiddler-border: #586e75\\ntiddler-controls-foreground: inherit\\ntiddler-controls-foreground-hover: #d33682\\ntiddler-controls-foreground-selected: #2aa198\\ntiddler-editor-background: #002b36\\ntiddler-editor-border: #073642\\ntiddler-editor-border-image: #002b36\\ntiddler-editor-fields-even: #002b36\\ntiddler-editor-fields-odd: #073642\\ntiddler-info-background: #073642\\ntiddler-info-border: #657b83\\ntiddler-info-tab-background: #002b36\\ntiddler-link-background: #002b36\\ntiddler-link-foreground: #2aa198\\ntiddler-subtitle-foreground: #839496\\ntiddler-title-foreground: #d33682\\ntoolbar-cancel-button: #839496\\ntoolbar-close-button: #839496\\ntoolbar-delete-button: #dc322f\\ntoolbar-done-button: #839496\\ntoolbar-edit-button: #839496\\ntoolbar-info-button: #839496\\ntoolbar-new-button: #839496\\ntoolbar-options-button: #839496\\ntoolbar-save-button: inherit\\nuntagged-background: #586e75\\nvery-muted-foreground: #586e75\\n\"},\"$:/palettes/SolarizedLight\":{\"tags\":\"$:/tags/Palette\",\"type\":\"application/x-tiddler-dictionary\",\"description\":\"Precision colors for machines and people\",\"license\":\"MIT, Ethan Schoonover, https://github.com/altercation/solarized/blob/master/LICENSE\",\"name\":\"SolarizedLight\",\"color-scheme\":\"light\",\"text\":\"alert-background: #eee8d5\\nalert-border: #586e75\\nalert-highlight: #d33682\\nalert-muted-foreground: #d33682\\nbackground: #eee8d5\\nblockquote-bar: #d33682\\nbutton-background: #eee8d5\\nbutton-border: #93a1a1\\nbutton-foreground: #586e75\\ncode-background: #eee8d5\\ncode-border: #93a1a1\\ncode-foreground: #586e75\\ndirty-indicator: inherit\\ndownload-background: #859900\\ndownload-foreground: #eee8d5\\ndragger-background: #eee8d5\\ndragger-foreground: #657b83\\ndropdown-background: #eee8d5\\ndropdown-border: #586e75\\ndropdown-tab-background: #fdf6e3\\ndropdown-tab-background-selected: #eee8d5\\ndropzone-background: #859900\\nexternal-link-background: inherit\\nexternal-link-background-hover: inherit\\nexternal-link-background-visited: inherit\\nexternal-link-foreground: #268bd2\\nexternal-link-foreground-hover: inherit\\nexternal-link-foreground-visited: #268bd2\\nforeground: #657b83\\nhighlight-background: #ffff00\\nhighlight-foreground: #000000\\nmessage-background: #fdf6e3\\nmessage-border: #93a1a1\\nmessage-foreground: #657b83\\nmodal-backdrop: #839496\\nmodal-background: #fdf6e3\\nmodal-border: #93a1a1\\nmodal-footer-background: #eee8d5\\nmodal-footer-border: #93a1a1\\nmodal-header-border: #93a1a1\\nmuted-foreground: #586e75\\nnotification-background: #fdf6e3\\nnotification-border: #93a1a1\\npage-background: #eee8d5\\npre-background: #eee8d5\\npre-border: #839496\\nprimary: #859900\\nselect-tag-background: #fdf6e3\\nselect-tag-foreground: #657b83\\nsidebar-button-foreground: #586e75\\nsidebar-controls-foreground: #586e75\\nsidebar-controls-foreground-hover: #d33682\\nsidebar-foreground: #586e75\\nsidebar-foreground-shadow: transparent\\nsidebar-muted-foreground: #657b83\\nsidebar-muted-foreground-hover: #586e75\\nsidebar-tab-background: #fdf6e3\\nsidebar-tab-background-selected: #eee8d5\\nsidebar-tab-border: #eee8d5\\nsidebar-tab-border-selected: #657b83\\nsidebar-tab-divider: #fdf6e3\\nsidebar-tab-foreground: #839496\\nsidebar-tab-foreground-selected: #586e75\\nsidebar-tiddler-link-foreground: #2aa198\\nsidebar-tiddler-link-foreground-hover: #002b36\\nsite-title-foreground: #d33682\\nstatic-alert-foreground: #586e75\\ntab-background: #eee8d5\\ntab-background-selected: #fdf6e3\\ntab-border: #93a1a1\\ntab-border-selected: #586e75\\ntab-divider: #586e75\\ntab-foreground: #657b83\\ntab-foreground-selected: #586e75\\ntable-border: #93a1a1\\ntable-footer-background: #eee8d5\\ntable-header-background: #eee8d5\\ntag-background: #b58900\\ntag-foreground: #fdf6e3\\ntiddler-background: #fdf6e3\\ntiddler-border: #93a1a1\\ntiddler-controls-foreground: inherit\\ntiddler-controls-foreground-hover: #d33682\\ntiddler-controls-foreground-selected: #2aa198\\ntiddler-editor-background: #fdf6e3\\ntiddler-editor-border: #eee8d5\\ntiddler-editor-border-image: #fdf6e3\\ntiddler-editor-fields-even: #fdf6e3\\ntiddler-editor-fields-odd: #eee8d5\\ntiddler-info-background: #eee8d5\\ntiddler-info-border: #839496\\ntiddler-info-tab-background: #fdf6e3\\ntiddler-link-background: #fdf6e3\\ntiddler-link-foreground: #2aa198\\ntiddler-subtitle-foreground: #657b83\\ntiddler-title-foreground: #d33682\\ntoolbar-cancel-button: #657b83\\ntoolbar-close-button: #657b83\\ntoolbar-delete-button: #dc322f\\ntoolbar-done-button: #657b83\\ntoolbar-edit-button: #657b83\\ntoolbar-info-button: #657b83\\ntoolbar-new-button: #657b83\\ntoolbar-options-button: #657b83\\ntoolbar-save-button: inherit\\nuntagged-background: #586e75\\nvery-muted-foreground: #93a1a1\\n\"},\"$:/palettes/SpartanDay\":{\"tags\":\"$:/tags/Palette\",\"type\":\"application/x-tiddler-dictionary\",\"description\":\"Cold, spartan day colors\",\"name\":\"Spartan Day\",\"color-scheme\":\"light\",\"text\":\"alert-background: \u003C\u003Ccolour background>>\\nalert-border: \u003C\u003Ccolour very-muted-foreground>>\\nalert-highlight: \u003C\u003Ccolour very-muted-foreground>>\\nalert-muted-foreground: \u003C\u003Ccolour muted-foreground>>\\nbackground: #FAFAFA\\nblockquote-bar: \u003C\u003Ccolour page-background>>\\nbutton-background: transparent\\nbutton-foreground: inherit\\nbutton-border: \u003C\u003Ccolour tag-background>>\\ncode-background: #ececec\\ncode-border: #ececec\\ncode-foreground: \\ndirty-indicator: #c80000\\ndownload-background: \u003C\u003Ccolour primary>>\\ndownload-foreground: \u003C\u003Ccolour background>>\\ndragger-background: \u003C\u003Ccolour foreground>>\\ndragger-foreground: \u003C\u003Ccolour background>>\\ndropdown-background: #FFFFFF\\ndropdown-border: \u003C\u003Ccolour dropdown-background>>\\ndropdown-tab-background-selected: \u003C\u003Ccolour dropdown-background>>\\ndropdown-tab-background: #F5F5F5\\ndropzone-background: \u003C\u003Ccolour tag-background>>\\nexternal-link-background-hover: transparent\\nexternal-link-background-visited: transparent\\nexternal-link-background: transparent\\nexternal-link-foreground-hover: \\nexternal-link-foreground-visited: \\nexternal-link-foreground: \\nforeground: rgba(0, 0, 0, 0.87)\\nhighlight-background: #ffff00\\nhighlight-foreground: #000000\\nmessage-background: \u003C\u003Ccolour background>>\\nmessage-border: \u003C\u003Ccolour very-muted-foreground>>\\nmessage-foreground: rgba(0, 0, 0, 0.54)\\nmodal-backdrop: \u003C\u003Ccolour foreground>>\\nmodal-background: \u003C\u003Ccolour background>>\\nmodal-border: \u003C\u003Ccolour very-muted-foreground>>\\nmodal-footer-background: \u003C\u003Ccolour background>>\\nmodal-footer-border: \u003C\u003Ccolour very-muted-foreground>>\\nmodal-header-border: \u003C\u003Ccolour very-muted-foreground>>\\nmuted-foreground: rgba(0, 0, 0, 0.54)\\nnotification-background: \u003C\u003Ccolour dropdown-background>>\\nnotification-border: \u003C\u003Ccolour dropdown-background>>\\npage-background: #f4f4f4\\npre-background: #ececec\\npre-border: #ececec\\nprimary: #3949ab\\nselect-tag-background: \u003C\u003Ccolour background>>\\nselect-tag-foreground: \u003C\u003Ccolour foreground>>\\nsidebar-button-foreground: \u003C\u003Ccolour foreground>>\\nsidebar-controls-foreground-hover: #aeaeae\\nsidebar-controls-foreground: #c6c6c6\\nsidebar-foreground-shadow: transparent\\nsidebar-foreground: rgba(0, 0, 0, 0.54)\\nsidebar-muted-foreground-hover: rgba(0, 0, 0, 0.54)\\nsidebar-muted-foreground: rgba(0, 0, 0, 0.38)\\nsidebar-tab-background-selected: \u003C\u003Ccolour page-background>>\\nsidebar-tab-background: transparent\\nsidebar-tab-border-selected: \u003C\u003Ccolour table-border>>\\nsidebar-tab-border: transparent\\nsidebar-tab-divider: \u003C\u003Ccolour table-border>>\\nsidebar-tab-foreground-selected: rgba(0, 0, 0, 0.87)\\nsidebar-tab-foreground: rgba(0, 0, 0, 0.54)\\nsidebar-tiddler-link-foreground-hover: rgba(0, 0, 0, 0.87)\\nsidebar-tiddler-link-foreground: rgba(0, 0, 0, 0.54)\\nsite-title-foreground: rgba(0, 0, 0, 0.87)\\nstatic-alert-foreground: #aaaaaa\\ntab-background-selected: \u003C\u003Ccolour background>>\\ntab-background: transparent\\ntab-border-selected: \u003C\u003Ccolour table-border>>\\ntab-border: transparent\\ntab-divider: \u003C\u003Ccolour table-border>>\\ntab-foreground-selected: rgba(0, 0, 0, 0.87)\\ntab-foreground: rgba(0, 0, 0, 0.54)\\ntable-border: #d8d8d8\\ntable-footer-background: \u003C\u003Ccolour tiddler-editor-fields-odd>>\\ntable-header-background: \u003C\u003Ccolour tiddler-editor-fields-even>>\\ntag-background: #ec6\\ntag-foreground: \u003C\u003Ccolour button-foreground>>\\ntiddler-background: \u003C\u003Ccolour background>>\\ntiddler-border: #f9f9f9\\ntiddler-controls-foreground-hover: \u003C\u003Ccolour sidebar-controls-foreground-hover>>\\ntiddler-controls-foreground-selected: \u003C\u003Ccolour sidebar-controls-foreground-hover>>\\ntiddler-controls-foreground: \u003C\u003Ccolour sidebar-controls-foreground>>\\ntiddler-editor-background: transparent\\ntiddler-editor-border-image: \\ntiddler-editor-border: #e8e7e7\\ntiddler-editor-fields-even: rgba(0, 0, 0, 0.1)\\ntiddler-editor-fields-odd: rgba(0, 0, 0, 0.04)\\ntiddler-info-background: #F5F5F5\\ntiddler-info-border: #F5F5F5\\ntiddler-info-tab-background: \u003C\u003Ccolour tiddler-editor-fields-odd>>\\ntiddler-link-background: \u003C\u003Ccolour background>>\\ntiddler-link-foreground: \u003C\u003Ccolour primary>>\\ntiddler-subtitle-foreground: \u003C\u003Ccolour muted-foreground>>\\ntiddler-title-foreground: #000000\\ntoolbar-new-button: \\ntoolbar-options-button: \\ntoolbar-save-button: \\ntoolbar-info-button: \\ntoolbar-edit-button: \\ntoolbar-close-button: \\ntoolbar-delete-button: \\ntoolbar-cancel-button: \\ntoolbar-done-button: \\nuntagged-background: \u003C\u003Ccolour very-muted-foreground>>\\nvery-muted-foreground: rgba(0, 0, 0, 0.12)\\n\"},\"$:/palettes/SpartanNight\":{\"tags\":\"$:/tags/Palette\",\"type\":\"application/x-tiddler-dictionary\",\"description\":\"Dark spartan colors\",\"name\":\"Spartan Night\",\"color-scheme\":\"dark\",\"text\":\"alert-background: \u003C\u003Ccolour background>>\\nalert-border: \u003C\u003Ccolour very-muted-foreground>>\\nalert-highlight: \u003C\u003Ccolour very-muted-foreground>>\\nalert-muted-foreground: \u003C\u003Ccolour muted-foreground>>\\nbackground: #303030\\nblockquote-bar: \u003C\u003Ccolour page-background>>\\nbutton-background: transparent\\nbutton-foreground: inherit\\nbutton-border: \u003C\u003Ccolour tag-background>>\\ncode-background: \u003C\u003Ccolour pre-background>>\\ncode-border: \u003C\u003Ccolour pre-border>>\\ncode-foreground: rgba(255, 255, 255, 0.54)\\ndirty-indicator: #c80000\\ndownload-background: \u003C\u003Ccolour primary>>\\ndownload-foreground: \u003C\u003Ccolour foreground>>\\ndragger-background: \u003C\u003Ccolour foreground>>\\ndragger-foreground: \u003C\u003Ccolour background>>\\ndropdown-background: #424242\\ndropdown-border: \u003C\u003Ccolour dropdown-background>>\\ndropdown-tab-background-selected: \u003C\u003Ccolour dropdown-background>>\\ndropdown-tab-background: #050505\\ndropzone-background: \u003C\u003Ccolour tag-background>>\\nexternal-link-background-hover: transparent\\nexternal-link-background-visited: transparent\\nexternal-link-background: transparent\\nexternal-link-foreground-hover: \\nexternal-link-foreground-visited: #7c318c\\nexternal-link-foreground: #9e3eb3\\nforeground: rgba(255, 255, 255, 0.7)\\nhighlight-background: #ffff78\\nhighlight-foreground: #000000\\nmessage-background: \u003C\u003Ccolour background>>\\nmessage-border: \u003C\u003Ccolour very-muted-foreground>>\\nmessage-foreground: rgba(255, 255, 255, 0.54)\\nmodal-backdrop: \u003C\u003Ccolour page-background>>\\nmodal-background: \u003C\u003Ccolour background>>\\nmodal-border: \u003C\u003Ccolour very-muted-foreground>>\\nmodal-footer-background: \u003C\u003Ccolour background>>\\nmodal-footer-border: \u003C\u003Ccolour background>>\\nmodal-header-border: \u003C\u003Ccolour very-muted-foreground>>\\nmuted-foreground: rgba(255, 255, 255, 0.54)\\nnotification-background: \u003C\u003Ccolour dropdown-background>>\\nnotification-border: \u003C\u003Ccolour dropdown-background>>\\npage-background: #212121\\npre-background: #2a2a2a\\npre-border: transparent\\nprimary: #5656f3\\nselect-tag-background: \u003C\u003Ccolour background>>\\nselect-tag-foreground: \u003C\u003Ccolour foreground>>\\nsidebar-button-foreground: \u003C\u003Ccolour foreground>>\\nsidebar-controls-foreground-hover: #494949\\nsidebar-controls-foreground: #5d5d5d\\nsidebar-foreground-shadow: transparent\\nsidebar-foreground: rgba(255, 255, 255, 0.54)\\nsidebar-muted-foreground-hover: rgba(255, 255, 255, 0.54)\\nsidebar-muted-foreground: rgba(255, 255, 255, 0.38)\\nsidebar-tab-background-selected: \u003C\u003Ccolour page-background>>\\nsidebar-tab-background: transparent\\nsidebar-tab-border-selected: \u003C\u003Ccolour table-border>>\\nsidebar-tab-border: transparent\\nsidebar-tab-divider: \u003C\u003Ccolour table-border>>\\nsidebar-tab-foreground-selected: rgba(255, 255, 255, 0.87)\\nsidebar-tab-foreground: rgba(255, 255, 255, 0.54)\\nsidebar-tiddler-link-foreground-hover: rgba(255, 255, 255, 0.7)\\nsidebar-tiddler-link-foreground: rgba(255, 255, 255, 0.54)\\nsite-title-foreground: rgba(255, 255, 255, 0.7)\\nstatic-alert-foreground: #aaaaaa\\ntab-background-selected: \u003C\u003Ccolour background>>\\ntab-background: transparent\\ntab-border-selected: \u003C\u003Ccolour table-border>>\\ntab-border: transparent\\ntab-divider: \u003C\u003Ccolour table-border>>\\ntab-foreground-selected: rgba(255, 255, 255, 0.87)\\ntab-foreground: rgba(255, 255, 255, 0.54)\\ntable-border: #3a3a3a\\ntable-footer-background: \u003C\u003Ccolour tiddler-editor-fields-odd>>\\ntable-header-background: \u003C\u003Ccolour tiddler-editor-fields-even>>\\ntag-background: #ec6\\ntag-foreground: \u003C\u003Ccolour button-foreground>>\\ntiddler-background: \u003C\u003Ccolour background>>\\ntiddler-border: rgb(55,55,55)\\ntiddler-controls-foreground-hover: \u003C\u003Ccolour sidebar-controls-foreground-hover>>\\ntiddler-controls-foreground-selected: \u003C\u003Ccolour sidebar-controls-foreground-hover>>\\ntiddler-controls-foreground: \u003C\u003Ccolour sidebar-controls-foreground>>\\ntiddler-editor-background: transparent\\ntiddler-editor-border-image: \\ntiddler-editor-border: rgba(255, 255, 255, 0.08)\\ntiddler-editor-fields-even: rgba(255, 255, 255, 0.1)\\ntiddler-editor-fields-odd: rgba(255, 255, 255, 0.04)\\ntiddler-info-background: #454545\\ntiddler-info-border: #454545\\ntiddler-info-tab-background: \u003C\u003Ccolour tiddler-editor-fields-odd>>\\ntiddler-link-background: \u003C\u003Ccolour background>>\\ntiddler-link-foreground: \u003C\u003Ccolour primary>>\\ntiddler-subtitle-foreground: \u003C\u003Ccolour muted-foreground>>\\ntiddler-title-foreground: #FFFFFF\\ntoolbar-new-button: \\ntoolbar-options-button: \\ntoolbar-save-button: \\ntoolbar-info-button: \\ntoolbar-edit-button: \\ntoolbar-close-button: \\ntoolbar-delete-button: \\ntoolbar-cancel-button: \\ntoolbar-done-button: \\nuntagged-background: \u003C\u003Ccolour very-muted-foreground>>\\nvery-muted-foreground: rgba(255, 255, 255, 0.12)\\n\"},\"$:/palettes/Twilight\":{\"tags\":\"$:/tags/Palette\",\"author\":\"Thomas Elmiger\",\"type\":\"application/x-tiddler-dictionary\",\"name\":\"Twilight\",\"description\":\"Delightful, soft darkness.\",\"color-scheme\":\"dark\",\"text\":\"alert-background: rgb(255, 255, 102)\\nalert-border: rgb(232, 232, 125)\\nalert-highlight: rgb(255, 51, 51)\\nalert-muted-foreground: rgb(224, 82, 82)\\nbackground: rgb(38, 38, 38)\\nblockquote-bar: rgba(240, 196, 117, 0.7)\\nbutton-background: rgb(63, 63, 63)\\nbutton-border: rgb(127, 127, 127)\\nbutton-foreground: rgb(179, 179, 179)\\ncode-background: rgba(0,0,0,0.03)\\ncode-border: rgba(0,0,0,0.08)\\ncode-foreground: rgb(255, 94, 94)\\ndiff-delete-background: #ffc9c9\\ndiff-delete-foreground: \u003C\u003Ccolour foreground>>\\ndiff-equal-background: \\ndiff-equal-foreground: \u003C\u003Ccolour foreground>>\\ndiff-insert-background: #aaefad\\ndiff-insert-foreground: \u003C\u003Ccolour foreground>>\\ndiff-invisible-background: \\ndiff-invisible-foreground: \u003C\u003Ccolour muted-foreground>>\\ndirty-indicator: rgb(255, 94, 94)\\ndownload-background: #19a974\\ndownload-foreground: rgb(38, 38, 38)\\ndragger-background: rgb(179, 179, 179)\\ndragger-foreground: rgb(38, 38, 38)\\ndropdown-background: rgb(38, 38, 38)\\ndropdown-border: rgb(255, 255, 255)\\ndropdown-tab-background: rgba(0,0,0,.1)\\ndropdown-tab-background-selected: rgba(255,255,255,1)\\ndropzone-background: #9eebcf\\nexternal-link-background: inherit\\nexternal-link-background-hover: inherit\\nexternal-link-background-visited: inherit\\nexternal-link-foreground: rgb(179, 179, 255)\\nexternal-link-foreground-hover: inherit\\nexternal-link-foreground-visited: rgb(153, 153, 255)\\nforeground: rgb(179, 179, 179)\\nhighlight-background: #ffff78\\nhighlight-foreground: #000000\\nmessage-background: \u003C\u003Ccolour tag-foreground>>\\nmessage-border: #96ccff\\nmessage-foreground: \u003C\u003Ccolour tag-background>>\\nmodal-backdrop: rgb(179, 179, 179)\\nmodal-background: rgb(38, 38, 38)\\nmodal-border: rgba(0,0,0,.5)\\nmodal-footer-background: #f4f4f4\\nmodal-footer-border: rgba(0,0,0,.1)\\nmodal-header-border: rgba(0,0,0,.2)\\nmuted-foreground: rgb(255, 255, 255)\\nnotification-background: \u003C\u003Ccolour tag-foreground>>\\nnotification-border: \u003C\u003Ccolour tag-background>>\\npage-background: rgb(26, 26, 26)\\npre-background: rgb(25, 25, 25)\\npre-border: rgba(0,0,0,.2)\\nprimary: rgb(255, 201, 102)\\nselect-tag-background: \\nselect-tag-foreground: \\nsidebar-button-foreground: rgb(179, 179, 179)\\nsidebar-controls-foreground: rgb(153, 153, 153)\\nsidebar-controls-foreground-hover: \u003C\u003Ccolour tiddler-controls-foreground-hover>>\\nsidebar-foreground: rgb(141, 141, 141)\\nsidebar-foreground-shadow: transparent\\nsidebar-muted-foreground: rgba(0, 0, 0, 0.5)\\nsidebar-muted-foreground-hover: rgb(141, 141, 141)\\nsidebar-tab-background: rgba(141, 141, 141, 0.2)\\nsidebar-tab-background-selected: rgb(26, 26, 26)\\nsidebar-tab-border: rgb(127, 127, 127)\\nsidebar-tab-border-selected: rgb(127, 127, 127)\\nsidebar-tab-divider: rgb(127, 127, 127)\\nsidebar-tab-foreground: rgb(179, 179, 179)\\nsidebar-tab-foreground-selected: rgb(179, 179, 179)\\nsidebar-tiddler-link-foreground: rgb(179, 179, 179)\\nsidebar-tiddler-link-foreground-hover: rgb(115, 115, 115)\\nsite-title-foreground: rgb(255, 201, 102)\\nstatic-alert-foreground: rgba(0,0,0,.3)\\ntab-background: rgba(0,0,0,0.125)\\ntab-background-selected: rgb(38, 38, 38)\\ntab-border: rgb(255, 201, 102)\\ntab-border-selected: rgb(255, 201, 102)\\ntab-divider: rgb(255, 201, 102)\\ntab-foreground: rgb(179, 179, 179)\\ntab-foreground-selected: rgb(179, 179, 179)\\ntable-border: rgba(255,255,255,.3)\\ntable-footer-background: rgba(0,0,0,.4)\\ntable-header-background: rgba(0,0,0,.1)\\ntag-background: rgb(255, 201, 102)\\ntag-foreground: rgb(25, 25, 25)\\ntiddler-background: rgb(38, 38, 38)\\ntiddler-border: rgba(240, 196, 117, 0.7)\\ntiddler-controls-foreground: rgb(128, 128, 128)\\ntiddler-controls-foreground-hover: rgba(255, 255, 255, 0.8)\\ntiddler-controls-foreground-selected: rgba(255, 255, 255, 0.9)\\ntiddler-editor-background: rgb(33, 33, 33)\\ntiddler-editor-border: rgb(63, 63, 63)\\ntiddler-editor-border-image: rgb(25, 25, 25)\\ntiddler-editor-fields-even: rgb(33, 33, 33)\\ntiddler-editor-fields-odd: rgb(28, 28, 28)\\ntiddler-info-background: rgb(43, 43, 43)\\ntiddler-info-border: rgb(25, 25, 25)\\ntiddler-info-tab-background: rgb(43, 43, 43)\\ntiddler-link-background: rgb(38, 38, 38)\\ntiddler-link-foreground: rgb(204, 204, 255)\\ntiddler-subtitle-foreground: rgb(255, 255, 255)\\ntiddler-title-foreground: rgb(255, 192, 76)\\ntoolbar-cancel-button: \\ntoolbar-close-button: \\ntoolbar-delete-button: \\ntoolbar-done-button: \\ntoolbar-edit-button: \\ntoolbar-info-button: \\ntoolbar-new-button: \\ntoolbar-options-button: \\ntoolbar-save-button: \\nuntagged-background: rgb(255, 255, 255)\\nvery-muted-foreground: rgba(240, 196, 117, 0.7)\\n\"},\"$:/palettes/Vanilla\":{\"name\":\"Vanilla\",\"description\":\"Pale and unobtrusive\",\"tags\":\"$:/tags/Palette\",\"type\":\"application/x-tiddler-dictionary\",\"color-scheme\":\"light\",\"text\":\"alert-background: #ffe476\\nalert-border: #b99e2f\\nalert-highlight: #881122\\nalert-muted-foreground: #b99e2f\\nbackground: #ffffff\\nblockquote-bar: \u003C\u003Ccolour muted-foreground>>\\nbutton-background:\\nbutton-foreground:\\nbutton-border:\\ncode-background: #f7f7f9\\ncode-border: #e1e1e8\\ncode-foreground: #dd1144\\ndiff-delete-background: #ffc9c9\\ndiff-delete-foreground: \u003C\u003Ccolour foreground>>\\ndiff-equal-background: \\ndiff-equal-foreground: \u003C\u003Ccolour foreground>>\\ndiff-insert-background: #aaefad\\ndiff-insert-foreground: \u003C\u003Ccolour foreground>>\\ndiff-invisible-background: \\ndiff-invisible-foreground: \u003C\u003Ccolour muted-foreground>>\\ndirty-indicator: #ff0000\\ndownload-background: #34c734\\ndownload-foreground: \u003C\u003Ccolour background>>\\ndragger-background: \u003C\u003Ccolour foreground>>\\ndragger-foreground: \u003C\u003Ccolour background>>\\ndropdown-background: \u003C\u003Ccolour background>>\\ndropdown-border: \u003C\u003Ccolour muted-foreground>>\\ndropdown-tab-background-selected: #fff\\ndropdown-tab-background: #ececec\\ndropzone-background: rgba(0,200,0,0.7)\\nexternal-link-background-hover: inherit\\nexternal-link-background-visited: inherit\\nexternal-link-background: inherit\\nexternal-link-foreground-hover: inherit\\nexternal-link-foreground-visited: #0000aa\\nexternal-link-foreground: #0000ee\\nforeground: #333333\\nhighlight-background: #ffff00\\nhighlight-foreground: #000000\\nmessage-background: #ecf2ff\\nmessage-border: #cfd6e6\\nmessage-foreground: #547599\\nmodal-backdrop: \u003C\u003Ccolour foreground>>\\nmodal-background: \u003C\u003Ccolour background>>\\nmodal-border: #999999\\nmodal-footer-background: #f5f5f5\\nmodal-footer-border: #dddddd\\nmodal-header-border: #eeeeee\\nmuted-foreground: #bbb\\nnotification-background: #ffffdd\\nnotification-border: #999999\\npage-background: #f4f4f4\\npre-background: #f5f5f5\\npre-border: #cccccc\\nprimary: #5778d8\\nselection-background:\\nselection-foreground:\\nselect-tag-background:\\nselect-tag-foreground:\\nsidebar-button-foreground: \u003C\u003Ccolour foreground>>\\nsidebar-controls-foreground-hover: #000000\\nsidebar-controls-foreground: #aaaaaa\\nsidebar-foreground-shadow: rgba(255,255,255, 0.8)\\nsidebar-foreground: #acacac\\nsidebar-muted-foreground-hover: #444444\\nsidebar-muted-foreground: #c0c0c0\\nsidebar-tab-background-selected: #f4f4f4\\nsidebar-tab-background: #e0e0e0\\nsidebar-tab-border-selected: \u003C\u003Ccolour tab-border-selected>>\\nsidebar-tab-border: \u003C\u003Ccolour tab-border>>\\nsidebar-tab-divider: #e4e4e4\\nsidebar-tab-foreground-selected:\\nsidebar-tab-foreground: \u003C\u003Ccolour tab-foreground>>\\nsidebar-tiddler-link-foreground-hover: #444444\\nsidebar-tiddler-link-foreground: #999999\\nsite-title-foreground: \u003C\u003Ccolour tiddler-title-foreground>>\\nstatic-alert-foreground: #aaaaaa\\ntab-background-selected: #ffffff\\ntab-background: #d8d8d8\\ntab-border-selected: #d8d8d8\\ntab-border: #cccccc\\ntab-divider: #d8d8d8\\ntab-foreground-selected: \u003C\u003Ccolour tab-foreground>>\\ntab-foreground: #666666\\ntable-border: #dddddd\\ntable-footer-background: #a8a8a8\\ntable-header-background: #f0f0f0\\ntag-background: #ec6\\ntag-foreground: #ffffff\\ntiddler-background: \u003C\u003Ccolour background>>\\ntiddler-border: \u003C\u003Ccolour background>>\\ntiddler-controls-foreground-hover: #888888\\ntiddler-controls-foreground-selected: #444444\\ntiddler-controls-foreground: #cccccc\\ntiddler-editor-background: #f8f8f8\\ntiddler-editor-border-image: #ffffff\\ntiddler-editor-border: #cccccc\\ntiddler-editor-fields-even: #e0e8e0\\ntiddler-editor-fields-odd: #f0f4f0\\ntiddler-info-background: #f8f8f8\\ntiddler-info-border: #dddddd\\ntiddler-info-tab-background: #f8f8f8\\ntiddler-link-background: \u003C\u003Ccolour background>>\\ntiddler-link-foreground: \u003C\u003Ccolour primary>>\\ntiddler-subtitle-foreground: #c0c0c0\\ntiddler-title-foreground: #182955\\ntoolbar-new-button:\\ntoolbar-options-button:\\ntoolbar-save-button:\\ntoolbar-info-button:\\ntoolbar-edit-button:\\ntoolbar-close-button:\\ntoolbar-delete-button:\\ntoolbar-cancel-button:\\ntoolbar-done-button:\\nuntagged-background: #999999\\nvery-muted-foreground: #888888\\nwikilist-background: #e5e5e5\\nwikilist-item: #fff\\nwikilist-info: #000\\nwikilist-title: #666\\nwikilist-title-svg: \u003C\u003Ccolour wikilist-title>>\\nwikilist-url: #aaa\\nwikilist-button-open: #4fb82b\\nwikilist-button-open-hover: green\\nwikilist-button-reveal: #5778d8\\nwikilist-button-reveal-hover: blue\\nwikilist-button-remove: #d85778\\nwikilist-button-remove-hover: red\\nwikilist-toolbar-background: #d3d3d3\\nwikilist-toolbar-foreground: #888\\nwikilist-droplink-dragover: rgba(255,192,192,0.5)\\nwikilist-button-background: #acacac\\nwikilist-button-foreground: #000\\n\"},\"$:/core/readme\":{\"text\":\"This plugin contains TiddlyWiki's core components, comprising:\\n\\n* JavaScript code modules\\n* Icons\\n* Templates needed to create TiddlyWiki's user interface\\n* British English (''en-GB'') translations of the localisable strings used by the core\\n\"},\"$:/library/sjcl.js/license\":{\"type\":\"text/plain\",\"text\":\"SJCL is open. You can use, modify and redistribute it under a BSD\\nlicense or under the GNU GPL, version 2.0.\\n\\n---------------------------------------------------------------------\\n\\nhttp://opensource.org/licenses/BSD-2-Clause\\n\\nCopyright (c) 2009-2015, Emily Stark, Mike Hamburg and Dan Boneh at\\nStanford University. All rights reserved.\\n\\nRedistribution and use in source and binary forms, with or without\\nmodification, are permitted provided that the following conditions are\\nmet:\\n\\n1. Redistributions of source code must retain the above copyright\\nnotice, this list of conditions and the following disclaimer.\\n\\n2. Redistributions in binary form must reproduce the above copyright\\nnotice, this list of conditions and the following disclaimer in the\\ndocumentation and/or other materials provided with the distribution.\\n\\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \\\"AS\\nIS\\\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED\\nTO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A\\nPARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\\nHOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED\\nTO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\\nPROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\\nLIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\\nNEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\\n\\n---------------------------------------------------------------------\\n\\nhttp://opensource.org/licenses/GPL-2.0\\n\\nThe Stanford Javascript Crypto Library (hosted here on GitHub) is a\\nproject by the Stanford Computer Security Lab to build a secure,\\npowerful, fast, small, easy-to-use, cross-browser library for\\ncryptography in Javascript.\\n\\nCopyright (c) 2009-2015, Emily Stark, Mike Hamburg and Dan Boneh at\\nStanford University.\\n\\nThis program is free software; you can redistribute it and/or modify it\\nunder the terms of the GNU General Public License as published by the\\nFree Software Foundation; either version 2 of the License, or (at your\\noption) any later version.\\n\\nThis program is distributed in the hope that it will be useful, but\\nWITHOUT ANY WARRANTY; without even the implied warranty of\\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General\\nPublic License for more details.\\n\\nYou should have received a copy of the GNU General Public License along\\nwith this program; if not, write to the Free Software Foundation, Inc.,\\n59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\"},\"$:/core/templates/MOTW.html\":{\"text\":\"\\\\rules only filteredtranscludeinline transcludeinline entity\\n\u003C!-- The following comment is called a MOTW comment and is necessary for the TiddlyIE Internet Explorer extension -->\\n\u003C!-- saved from url=(0021)https://tiddlywiki.com -->&#13;&#10;\"},\"$:/core/templates/alltiddlers.template.html\":{\"type\":\"text/vnd.tiddlywiki-html\",\"text\":\"\u003C!-- This template is provided for backwards compatibility with older versions of TiddlyWiki -->\\n\\n\u003C$set name=\\\"exportFilter\\\" value=\\\"[!is[system]sort[title]]\\\">\\n\\n{{$:/core/templates/exporters/StaticRiver}}\\n\\n\u003C/$set>\\n\"},\"$:/core/templates/canonical-uri-external-image\":{\"text\":\"./images/\u003C$view field=title format=doubleurlencoded/>\"},\"$:/core/templates/canonical-uri-external-raw\":{\"text\":\"\u003C$view field=title format=doubleurlencoded/>\"},\"$:/core/templates/canonical-uri-external-text\":{\"text\":\"./text/\u003C$view field=title format=doubleurlencoded/>.tid\"},\"$:/core/templates/css-tiddler\":{\"text\":\"\\n`\u003Cstyle`\u003C$fields template=' data-tiddler-$name$=\\\"$encoded_value$\\\"'>\u003C/$fields>` type=\\\"text/css\\\">`\u003C$view field=text format=text/>`\u003C/style>\"},\"$:/core/templates/exporters/CsvFile\":{\"tags\":\"$:/tags/Exporter\",\"description\":\"{{$:/language/Exporters/CsvFile}}\",\"extension\":\".csv\",\"text\":\"\u003C$macrocall $name=csvtiddlers filter=\u003C\u003CexportFilter>>$output=\\\"text/raw\\\"format=quoted-comma-sep/>\\n\"},\"$:/core/templates/exporters/JsonFile\":{\"tags\":\"$:/tags/Exporter\",\"description\":\"{{$:/language/Exporters/JsonFile}}\",\"extension\":\".json\",\"text\":\"\u003C$macrocall filter=\u003C\u003CexportFilter>>$output=\\\"text/raw\\\"$name=jsontiddlers/>\\n\"},\"$:/core/templates/exporters/StaticRiver\":{\"tags\":\"$:/tags/Exporter\",\"description\":\"{{$:/language/Exporters/StaticRiver}}\",\"extension\":\".html\",\"text\":\"\\\\define tv-wikilink-template()#$uri_encoded$\\n\\\\define tv-config-toolbar-icons()no\\n\\\\define tv-config-toolbar-text()no\\n\\\\define tv-config-toolbar-class()tc-btn-invisible\\n\\\\rules only filteredtranscludeinline transcludeinline\\n\u003C!doctype html>\\n\u003Chtml>\\n\u003Chead>\\n\u003Cmeta http-equiv=\\\"Content-Type\\\" content=\\\"text/html;charset=utf-8\\\" />\\n\u003Cmeta name=\\\"generator\\\" content=\\\"TiddlyWiki\\\" />\\n\u003Cmeta name=\\\"tiddlywiki-version\\\" content=\\\"{{$:/core/templates/version}}\\\" />\\n\u003Cmeta name=\\\"format-detection\\\" content=\\\"telephone=no\\\">\\n\u003Clink id=\\\"faviconLink\\\" rel=\\\"shortcut icon\\\" href=\\\"favicon.ico\\\">\\n\u003Ctitle>{{$:/core/wiki/title}}\u003C/title>\\n\u003Cdiv id=\\\"styleArea\\\">\\n{{$:/boot/boot.css||$:/core/templates/css-tiddler}}\\n\u003C/div>\\n\u003Cstyle type=\\\"text/css\\\">\\n{{$:/core/ui/PageStylesheet||$:/core/templates/wikified-tiddler}}\\n\u003C/style>\\n\u003C/head>\\n\u003Cbody class=\\\"tc-body\\\">\\n{{$:/StaticBanner||$:/core/templates/html-tiddler}}\\n\u003Csection class=\\\"tc-story-river tc-static-story-river\\\">\\n{{$:/core/templates/exporters/StaticRiver/Content||$:/core/templates/html-tiddler}}\\n\u003C/section>\\n\u003C/body>\\n\u003C/html>\\n\"},\"$:/core/templates/exporters/StaticRiver/Content\":{\"text\":\"\\\\define renderContent(){{{ $(exportFilter)$ ||$:/core/templates/static-tiddler}}}\\n\\\\import $:/core/ui/PageMacros[[$:/tags/Macro]tagging[]!is[draft]]\\n\u003C\u003CrenderContent>>\"},\"$:/core/templates/exporters/TidFile\":{\"tags\":\"$:/tags/Exporter\",\"description\":\"{{$:/language/Exporters/TidFile}}\",\"extension\":\".tid\",\"condition\":\"[\u003Ccount>compare:lte[1]]\",\"text\":\"\\\\define renderContent(){{{$(exportFilter)$ +[nth[]]||$:/core/templates/tid-tiddler}}}\\n\\\\import $:/core/ui/PageMacros[[$:/tags/Macro]tagging[]!is[draft]]\\n\u003C\u003CrenderContent>>\"},\"$:/core/save/all-external-js\":{\"text\":\"\\\\import $:/core/ui/PageMacros[[$:/tags/Macro]tagging[]!is[draft]]\\n\\\\define saveTiddlerFilter()[is[tiddler]] -[prefix[$:/state/popup/]] -[prefix[$:/temp/]] -[prefix[$:/HistoryList]] -[status[pending]plugin-type[import]] -[[$:/core]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] +[sort[title]] $(publishFilter)$\\n\\\\define defaultCoreURL()%24%3A%2Fcore%2Ftemplates%2Ftiddlywiki5.js\\n\u003C$let coreURL={{{[[coreURL]is[variable]then\u003CcoreURL>else\u003CdefaultCoreURL>]}}}>\\n\\t{{$:/core/templates/tiddlywiki5-external-js.html}}\\n\u003C/$let>\\n\"},\"$:/core/save/offline-external-js\":{\"text\":\"\\\\import $:/core/ui/PageMacros[[$:/tags/Macro]tagging[]!is[draft]]\\n\\\\define saveTiddlerFilter()[is[tiddler]] -[prefix[$:/state/popup/]] -[prefix[$:/temp/]] -[prefix[$:/HistoryList]] -[status[pending]plugin-type[import]] -[[$:/core]] -[[$:/plugins/tiddlywiki/filesystem]] -[[$:/plugins/tiddlywiki/tiddlyweb]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] +[sort[title]] $(publishFilter)$\\n\\\\define defaultCoreURL()tiddlywikicore-$(version)$.js\\n\u003C$let coreURL={{{[[coreURL]is[variable]then\u003CcoreURL>else\u003CdefaultCoreURL>]}}}>\\n\\t{{$:/core/templates/tiddlywiki5-external-js.html}}\\n\u003C/$let>\\n\"},\"$:/core/templates/tiddlywiki5.js\":{\"text\":\"\\\\rules only filteredtranscludeinline transcludeinline codeinline\\n/*\\n{{$:/core/copyright.txt||$:/core/templates/plain-text-tiddler}}\\n`*/\\n`\u003C!--~~ Library modules ~~-->\\n{{{[is[system]type[application/javascript]library[yes]]||$:/core/templates/plain-text-tiddler}}}\\n\u003C!--~~ Boot prefix ~~-->\\n{{$:/boot/bootprefix.js||$:/core/templates/plain-text-tiddler}}\\n\u003C!--~~ Core plugin ~~-->\\n{{$:/core/templates/tiddlywiki5.js/tiddlers}}\\n\u003C!--~~ Boot kernel ~~-->\\n{{$:/boot/boot.js||$:/core/templates/plain-text-tiddler}}\\n\"},\"$:/core/templates/tiddlywiki5.js/tiddlers\":{\"text\":\"`\\n$tw.preloadTiddlerArray(`\u003C$text text=\u003C\u003Cjsontiddlers\\\"[[$:/core]]\\\">>/>`);\\n$tw.preloadTiddlerArray([{\\n\\ttitle: \\\"$:/config/SaveWikiButton/Template\\\",\\n\\ttext: \\\"$:/core/save/offline-external-js\\\"\\n}]);\\n`\\n\"},\"$:/core/templates/tiddlywiki5-external-js.html\":{\"text\":\"\\\\rules only filteredtranscludeinline transcludeinline\\n\u003C!doctype html>\\n{{$:/core/templates/MOTW.html}}\u003Chtml lang=\\\"{{{[{$:/language}get[name]]}}}\\\">\\n\u003Chead>\\n\u003Cmeta http-equiv=\\\"Content-Type\\\" content=\\\"text/html;charset=utf-8\\\" />\\n\u003C!--~~ Raw markup for the top of the head section ~~-->\\n{{{[[$:/tags/RawMarkupWikified/TopHead]tagging[]]||$:/core/templates/raw-static-tiddler}}}\\n\u003Cmeta http-equiv=\\\"X-UA-Compatible\\\" content=\\\"IE=Edge\\\"/>\\n\u003Cmeta name=\\\"application-name\\\" content=\\\"TiddlyWiki\\\" />\\n\u003Cmeta name=\\\"generator\\\" content=\\\"TiddlyWiki\\\" />\\n\u003Cmeta name=\\\"tiddlywiki-version\\\" content=\\\"{{$:/core/templates/version}}\\\" />\\n\u003Cmeta name=\\\"viewport\\\" content=\\\"width=device-width, initial-scale=1.0\\\" />\\n\u003Cmeta name=\\\"apple-mobile-web-app-capable\\\" content=\\\"yes\\\" />\\n\u003Cmeta name=\\\"apple-mobile-web-app-status-bar-style\\\" content=\\\"black-translucent\\\" />\\n\u003Cmeta name=\\\"mobile-web-app-capable\\\" content=\\\"yes\\\"/>\\n\u003Cmeta name=\\\"format-detection\\\" content=\\\"telephone=no\\\" />\\n\u003Cmeta name=\\\"copyright\\\" content=\\\"{{$:/core/copyright.txt}}\\\" />\\n\u003Clink id=\\\"faviconLink\\\" rel=\\\"shortcut icon\\\" href=\\\"favicon.ico\\\">\\n\u003Ctitle>{{$:/core/wiki/title}}\u003C/title>\\n\u003C!--~~ This is a Tiddlywiki file. The points of interest in the file are marked with this pattern ~~-->\\n\\n\u003C!--~~ Raw markup ~~-->\\n{{{[[$:/core/wiki/rawmarkup]tagging[]][[$:/tags/RawMarkup]tagging[]]||$:/core/templates/plain-text-tiddler}}}\\n{{{[[$:/tags/RawMarkupWikified]tagging[]]||$:/core/templates/raw-static-tiddler}}}\\n\u003C/head>\\n\u003Cbody class=\\\"tc-body\\\">\\n\u003C!--~~ Raw markup for the top of the body section ~~-->\\n{{{[[$:/tags/RawMarkupWikified/TopBody]tagging[]]||$:/core/templates/raw-static-tiddler}}}\\n\u003C!--~~ Static styles ~~-->\\n\u003Cdiv id=\\\"styleArea\\\">\\n{{$:/boot/boot.css||$:/core/templates/css-tiddler}}\\n\u003C/div>\\n\u003C!--~~ Static content for Google and browsers without JavaScript ~~-->\\n\u003Cnoscript>\\n\u003Cdiv id=\\\"splashArea\\\">\\n{{$:/core/templates/static.area}}\\n\u003C/div>\\n\u003C/noscript>\\n\u003C!--~~ Ordinary tiddlers ~~-->\\n{{$:/core/templates/store.area.template.html}}\\n\u003C!--~~ Raw markup for the bottom of the body section ~~-->\\n{{{[[$:/tags/RawMarkupWikified/BottomBody]tagging[]]||$:/core/templates/raw-static-tiddler}}}\\n\u003C/body>\\n\u003C!--~~ Load external JS ~~-->\\n\u003Cscript src=\\\"{{{[\u003CcoreURL>]}}}\\\" onerror=\\\"alert('Error: Cannot load {{{[\u003CcoreURL>]}}}');\\\">\u003C/script>\\n\u003C/html>\\n\"},\"$:/core/templates/html-div-skinny-tiddler\":{\"text\":\"\\n`\u003Cdiv`\u003C$fields template=' $name$=\\\"$encoded_value$\\\"'>\u003C/$fields>`>\\n\u003Cpre>\u003C/pre>\\n\u003C/div>`\\n\"},\"$:/core/templates/html-div-tiddler\":{\"text\":\"\\n`\u003Cdiv`\u003C$fields template=' $name$=\\\"$encoded_value$\\\"'>\u003C/$fields>`>\\n\u003Cpre>`\u003C$view field=text format=htmltextencoded/>`\u003C/pre>\\n\u003C/div>`\\n\"},\"$:/core/templates/html-json-skinny-tiddler\":{\"text\":\"\u003C$list filter=\\\"[\u003CnumTiddlers>compare:number:gteq[1]]~[\u003Ccounter>!match[1]]\\\">`,`\u003C$text text=\u003C\u003Cnewline>>/>\u003C/$list>\\n\u003C$jsontiddler tiddler={{!!title}}exclude=text escapeUnsafeScriptChars=yes/>\\n\"},\"$:/core/templates/html-json-tiddler\":{\"text\":\"\u003C$list filter=\\\"[\u003Ccounter>!match[1]]\\\">`,`\u003C$text text=\u003C\u003Cnewline>>/>\u003C/$list>\u003C$jsontiddler tiddler={{!!title}}escapeUnsafeScriptChars=yes/>\"},\"$:/core/templates/html-tiddler\":{\"text\":\"\\n\u003C$view field=text format=htmlwikified/>\"},\"$:/core/templates/javascript-tiddler\":{\"text\":\"\\n`\u003Cscript`\u003C$fields template=' data-tiddler-$name$=\\\"$encoded_value$\\\"'>\u003C/$fields>` type=\\\"text/javascript\\\">`\u003C$view field=text format=text/>`\u003C/script>\"},\"$:/core/templates/json-tiddler\":{\"text\":\"\\n\u003C$text text=\u003C\u003Cjsontiddler>>/>\"},\"$:/core/templates/module-tiddler\":{\"text\":\"\\n`\u003Cscript`\u003C$fields template=' data-tiddler-$name$=\\\"$encoded_value$\\\"'>\u003C/$fields>` type=\\\"text/javascript\\\" data-module=\\\"yes\\\">$tw.modules.define(\\\"`\u003C$view field=title format=jsencoded/>`\\\",\\\"`\u003C$view field=module-type format=jsencoded/>`\\\",function(module,exports,require) {`\u003C$view field=text format=text/>`});\\n\u003C/script>\"},\"$:/core/templates/plain-text-tiddler\":{\"text\":\"\u003C$view field=text format=text/>\"},\"$:/core/templates/raw-static-tiddler\":{\"text\":\"\\n\u003C$view field=text format=plainwikified/>\"},\"$:/core/save/all\":{\"text\":\"\\\\import $:/core/ui/PageMacros[[$:/tags/Macro]tagging[]!is[draft]]\\n\\\\define saveTiddlerFilter()[is[tiddler]] -[prefix[$:/state/popup/]] -[prefix[$:/temp/]] -[prefix[$:/HistoryList]] -[status[pending]plugin-type[import]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] +[sort[title]] $(publishFilter)$\\n{{$:/core/templates/tiddlywiki5.html}}\"},\"$:/core/save/empty\":{\"text\":\"\\\\define saveTiddlerFilter()[is[system]] -[prefix[$:/state/popup/]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] +[sort[title]]\\n{{$:/core/templates/tiddlywiki5.html}}\"},\"$:/core/save/lazy-all\":{\"text\":\"\\\\define saveTiddlerFilter()[is[system]] -[prefix[$:/state/popup/]] -[[$:/HistoryList]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] [is[tiddler]type[application/javascript]] +[sort[title]]\\n\\\\define skinnySaveTiddlerFilter()[!is[system]] -[type[application/javascript]]\\n{{$:/core/templates/tiddlywiki5.html}}\"},\"$:/core/save/lazy-images\":{\"text\":\"\\\\define saveTiddlerFilter()[is[tiddler]] -[prefix[$:/state/popup/]] -[[$:/HistoryList]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] -[!is[system]is[image]] +[sort[title]] \\n\\\\define skinnySaveTiddlerFilter()[!is[system]is[image]]\\n{{$:/core/templates/tiddlywiki5.html}}\"},\"$:/core/templates/server/static.sidebar.wikitext\":{\"text\":\"\u003Cdiv class=tc-sidebar-scrollable style=\\\"overflow: auto;\\\"aria-label={{$:/language/SideBar/Caption}}role=region>\u003Cdiv class=tc-sidebar-header>\u003Ch1 class=tc-site-title>{{||$:/SiteTitle}}\u003C/h1>\u003Cdiv class=tc-site-subtitle>{{||$:/SiteSubtitle}}\u003C/div>\u003Ch2>\u003C/h2>\u003Cdiv class=tc-sidebar-lists>\u003C$list filter={{$:/DefaultTiddlers}}>\u003Cdiv class=tc-menu-list-subitem>\u003C$link/>\"},\"$:/core/templates/server/static.tiddler.html\":{\"text\":\"\\\\define tv-wikilink-template()$uri_encoded$\\n\\\\import $:/core/ui/PageMacros[[$:/tags/Macro]tagging[]!is[draft]]\\n\u003Chtml>\u003Chead>\u003Cmeta content=\\\"text/html;charset=utf-8\\\"http-equiv=Content-Type>\u003Cmeta name=generator content=TiddlyWiki>\u003Cmeta content={{$:/core/templates/version}}name=tiddlywiki-version>\u003Cmeta content=\\\"width=device-width, initial-scale=1.0\\\"name=viewport>\u003Cmeta name=apple-mobile-web-app-capable content=yes>\u003Cmeta name=apple-mobile-web-app-status-bar-style content=black-translucent>\u003Cmeta name=mobile-web-app-capable content=yes>\u003Cmeta content=\\\"telephone=no\\\"name=format-detection>\u003Clink id=faviconLink rel=\\\"shortcut icon\\\"href=favicon.ico>\u003Clink rel=stylesheet href=%24%3A%2Fcore%2Ftemplates%2Fstatic.template.css>\u003Ctitle>\u003C$view field=caption format=plainwikified>\u003C$view field=title/>\u003C/$view>:\u003C$view tiddler=\\\"$:/core/wiki/title\\\"format=plainwikified/>\u003C/title>\u003C/head>\u003Cbody class=tc-body>\u003C$transclude tiddler=\\\"$:/core/templates/server/static.sidebar.wikitext\\\"mode=inline/>\u003Csection class=tc-story-river role=main>\u003Cdiv class=tc-tiddler-frame role=article>\u003C$transclude tiddler=\\\"$:/core/templates/server/static.tiddler.wikitext\\\"mode=inline/>\"},\"$:/core/templates/server/static.tiddler.wikitext\":{\"text\":\"\u003Cdiv class=tc-tiddler-title>\u003Cdiv class=tc-titlebar>\u003Ch2>\u003C$text text={{!!title}}/>\u003C/h2>\u003C/div>\u003C/div>\u003Cdiv class=tc-subtitle>\u003C$link to={{!!modifier}}>\u003C$view field=modifier/>\u003C/$link>\u003C$view field=modified template={{$:/language/Tiddler/DateFormat}}format=date/>\u003C/div>\u003Cdiv class=tc-tags-wrapper>\u003C$list filter=[{!!title}tags[]sort[title]]>\u003Ca href={{{[{!!title}encodeuricomponent[]]}}}>\u003C$macrocall tag={{!!title}}$name=tag-pill/>\u003C/a>\u003C/$list>\u003C/div>\u003Cdiv class=tc-tiddler-body>\u003C$transclude mode=block/>\"},\"$:/core/templates/single.tiddler.window\":{\"text\":\"\\\\define containerClasses()tc-page-container tc-page-view-$(storyviewTitle)$ tc-language-$(languageTitle)$\\n\\\\import $:/core/ui/PageMacros[[$:/tags/Macro]tagging[]!is[draft]]\\n\u003C$let languageTitle={{{[{$:/language}get[name]]}}}tv-config-toolbar-icons={{$:/config/Toolbar/Icons}}tv-config-toolbar-text={{$:/config/Toolbar/Text}}tv-config-toolbar-class={{$:/config/Toolbar/ButtonClass}}tv-show-missing-links={{$:/config/MissingLinks}}storyviewTitle={{$:/view}}>\\n\\n\u003Cdiv class=\u003C\u003CcontainerClasses>>>\\n\\n\u003C$navigator story=\\\"$:/StoryList\\\"history=\\\"$:/HistoryList\\\">\\n\\n\u003C$transclude tiddler=\\\"$:/core/ui/ViewTemplate/body\\\"mode=block/>\\n\"},\"$:/core/templates/split-recipe\":{\"text\":\"\u003C$list filter=[!is[system]]>\\ntiddler: \u003C$view field=title format=urlencoded/>.tid\\n\u003C/$list>\\n\"},\"$:/core/templates/static-tiddler\":{\"text\":\"\u003Ca name={{!!title}}>\\n{{||$:/core/ui/ViewTemplate}}\\n\"},\"$:/core/templates/static.area\":{\"text\":\"\u003C$reveal type=nomatch state='$:/isEncrypted'text=yes>\\n{{{[[$:/tags/RawStaticContent]tagging[]!is[draft]]||$:/core/templates/raw-static-tiddler}}}\\n{{$:/core/templates/static.content||$:/core/templates/html-tiddler}}\\n\u003C/$reveal>\\n\u003C$reveal type=match state='$:/isEncrypted'text=yes>\\nThis file contains an encrypted ~TiddlyWiki. Enable ~JavaScript and enter the decryption password when prompted.\\n\u003C/$reveal>\\n\u003C!---->\\n`\u003Cstyle>\\n.tc-remove-when-wiki-loaded {display: none;}\\n\u003C/style>`\\n\"},\"$:/core/templates/static.content\":{\"text\":\"This [[TiddlyWiki|https://tiddlywiki.com]] contains the following tiddlers:\\n\\n\u003Cul>\\n\u003C$list filter=\u003C\u003CsaveTiddlerFilter>>>\\n\u003Cli>\u003C$view field=title format=text>\u003C/$view>\u003C/li>\\n\u003C/$list>\\n\u003C/ul>\\n\"},\"$:/core/templates/static.template.css\":{\"text\":\"{{$:/boot/boot.css||$:/core/templates/plain-text-tiddler}}\\n{{$:/core/ui/PageStylesheet||$:/core/templates/wikified-tiddler}}\"},\"$:/core/templates/static.template.html\":{\"type\":\"text/vnd.tiddlywiki-html\",\"text\":\"\\\\define tv-wikilink-template() static/$uri_doubleencoded$.html\\n\\\\define tv-config-toolbar-icons() no\\n\\\\define tv-config-toolbar-text() no\\n\\\\define tv-config-toolbar-class() tc-btn-invisible\\n\\\\rules only filteredtranscludeinline transcludeinline\\n\u003C!doctype html>\\n\u003Chtml>\\n\u003Chead>\\n\u003Cmeta http-equiv=\\\"Content-Type\\\" content=\\\"text/html;charset=utf-8\\\" />\\n\u003Cmeta name=\\\"generator\\\" content=\\\"TiddlyWiki\\\" />\\n\u003Cmeta name=\\\"tiddlywiki-version\\\" content=\\\"{{$:/core/templates/version}}\\\" />\\n\u003Cmeta name=\\\"viewport\\\" content=\\\"width=device-width, initial-scale=1.0\\\" />\\n\u003Cmeta name=\\\"apple-mobile-web-app-capable\\\" content=\\\"yes\\\" />\\n\u003Cmeta name=\\\"apple-mobile-web-app-status-bar-style\\\" content=\\\"black-translucent\\\" />\\n\u003Cmeta name=\\\"mobile-web-app-capable\\\" content=\\\"yes\\\"/>\\n\u003Cmeta name=\\\"format-detection\\\" content=\\\"telephone=no\\\">\\n\u003Clink id=\\\"faviconLink\\\" rel=\\\"shortcut icon\\\" href=\\\"favicon.ico\\\">\\n\u003Ctitle>{{$:/core/wiki/title}}\u003C/title>\\n\u003Cdiv id=\\\"styleArea\\\">\\n{{$:/boot/boot.css||$:/core/templates/css-tiddler}}\\n\u003C/div>\\n\u003Cstyle type=\\\"text/css\\\">\\n{{$:/core/ui/PageStylesheet||$:/core/templates/wikified-tiddler}}\\n\u003C/style>\\n\u003C/head>\\n\u003Cbody class=\\\"tc-body\\\">\\n{{$:/StaticBanner||$:/core/templates/html-tiddler}}\\n{{$:/core/ui/PageTemplate||$:/core/templates/html-tiddler}}\\n\u003C/body>\\n\u003C/html>\\n\"},\"$:/core/templates/static.tiddler.html\":{\"text\":\"\\\\define tv-wikilink-template()$uri_doubleencoded$.html\\n\\\\define tv-config-toolbar-icons()no\\n\\\\define tv-config-toolbar-text()no\\n\\\\define tv-config-toolbar-class()tc-btn-invisible\\n\\\\import $:/core/ui/PageMacros[[$:/tags/Macro]tagging[]!is[draft]]\\n`\u003C!doctype html>\\n\u003Chtml>\\n\u003Chead>\\n\u003Cmeta http-equiv=\\\"Content-Type\\\" content=\\\"text/html;charset=utf-8\\\" />\\n\u003Cmeta name=\\\"generator\\\" content=\\\"TiddlyWiki\\\" />\\n\u003Cmeta name=\\\"tiddlywiki-version\\\" content=\\\"`{{$:/core/templates/version}}`\\\" />\\n\u003Cmeta name=\\\"viewport\\\" content=\\\"width=device-width, initial-scale=1.0\\\" />\\n\u003Cmeta name=\\\"apple-mobile-web-app-capable\\\" content=\\\"yes\\\" />\\n\u003Cmeta name=\\\"apple-mobile-web-app-status-bar-style\\\" content=\\\"black-translucent\\\" />\\n\u003Cmeta name=\\\"mobile-web-app-capable\\\" content=\\\"yes\\\"/>\\n\u003Cmeta name=\\\"format-detection\\\" content=\\\"telephone=no\\\">\\n\u003Clink id=\\\"faviconLink\\\" rel=\\\"shortcut icon\\\" href=\\\"favicon.ico\\\">\\n\u003Clink rel=\\\"stylesheet\\\" href=\\\"static.css\\\">\\n\u003Ctitle>`\u003C$view field=caption>\u003C$view field=title/>\u003C/$view>: {{$:/core/wiki/title}}`\u003C/title>\\n\u003C/head>\\n\u003Cbody class=\\\"tc-body\\\">\\n`{{$:/StaticBanner||$:/core/templates/html-tiddler}}`\\n\u003Csection class=\\\"tc-story-river tc-static-story-river\\\">\\n`\u003C$view tiddler=\\\"$:/core/ui/ViewTemplate\\\"format=htmlwikified/>`\\n\u003C/section>\\n\u003C/body>\\n\u003C/html>\\n`\\n\"},\"$:/core/templates/store.area.template.html\":{\"text\":\"\u003C$list filter=\\\"[[$:/isEncrypted]get[text]else[no]match[no]]\\\">\u003C$list filter=[[storeAreaFormat]is[variable]getvariable[]else[json]match[json]]>`\u003Cscript class=\\\"tiddlywiki-tiddler-store\\\" type=\\\"application/json\\\">[`\u003C$let newline={{{[charcode[10]]}}}>\u003C$text text=\u003C\u003Cnewline>>/>\u003C$list filter=\u003C\u003CsaveTiddlerFilter>>template=\\\"$:/core/templates/html-json-tiddler\\\"counter=counter/>\u003C$let numTiddlers={{{[subfilter\u003CsaveTiddlerFilter>count[]]}}}>\u003C$list filter={{{[\u003CskinnySaveTiddlerFilter>]}}}template=\\\"$:/core/templates/html-json-skinny-tiddler\\\"counter=counter/>\u003C/$let>\u003C$text text=\u003C\u003Cnewline>>/>\u003C/$let>`]\u003C/script>``\u003Cdiv id=\\\"storeArea\\\" style=\\\"display:none;\\\">``\u003C/div>`\u003C/$list>\u003C$list filter=[[storeAreaFormat]is[variable]getvariable[]else[json]match[div]]>\u003C$reveal type=nomatch state=\\\"$:/isEncrypted\\\"text=yes>`\u003Cdiv id=\\\"storeArea\\\" style=\\\"display:none;\\\">`\u003C$list filter=\u003C\u003CsaveTiddlerFilter>>template=\\\"$:/core/templates/html-div-tiddler\\\"/>\u003C$list filter={{{[\u003CskinnySaveTiddlerFilter>]}}}template=\\\"$:/core/templates/html-div-skinny-tiddler\\\"/>`\u003C/div>`\u003C/$reveal>\u003C/$list>\u003C/$list>\u003C$list filter=\\\"[[$:/isEncrypted]get[text]else[no]match[yes]]\\\">`\u003C!--~~ Encrypted tiddlers ~~-->``\u003Cpre id=\\\"encryptedStoreArea\\\" type=\\\"text/plain\\\" style=\\\"display:none;\\\">`\u003C$encrypt filter=\u003C\u003CsaveTiddlerFilter>>/>`\u003C/pre>\"},\"$:/core/templates/tid-tiddler\":{\"text\":\"\\n\u003C$fields exclude='text bag'template='$name$: $value$\\n'>\u003C/$fields>`\\n`\u003C$view field=text format=text/>\"},\"$:/core/templates/tiddler-metadata\":{\"text\":\"\\n\u003C$fields exclude='text bag'template='$name$: $value$\\n'>\"},\"$:/core/templates/tiddlywiki5.html\":{\"text\":\"\u003C$set filter=\\\"[subfilter\u003CsaveTiddlerFilter>][subfilter\u003CsaveTiddlerFilter>plugintiddlers[]]\\\"name=saveTiddlerAndShadowsFilter>\\n`\u003C!doctype html>\\n`{{$:/core/templates/MOTW.html}}`\u003Chtml lang=\\\"`\u003C$text text={{{[{$:/language}get[name]]}}}/>`\\\">\\n\u003Chead>\\n\u003Cmeta http-equiv=\\\"Content-Type\\\" content=\\\"text/html;charset=utf-8\\\" />\\n\u003C!--~~ Raw markup for the top of the head section ~~-->\\n`{{{[enlist\u003CsaveTiddlerAndShadowsFilter>tag[$:/tags/RawMarkupWikified/TopHead]]||$:/core/templates/raw-static-tiddler}}}`\\n\u003Cmeta http-equiv=\\\"X-UA-Compatible\\\" content=\\\"IE=Edge\\\"/>\\n\u003Cmeta name=\\\"application-name\\\" content=\\\"TiddlyWiki\\\" />\\n\u003Cmeta name=\\\"generator\\\" content=\\\"TiddlyWiki\\\" />\\n\u003Cmeta name=\\\"tiddlywiki-version\\\" content=\\\"`{{$:/core/templates/version}}`\\\" />\\n\u003Cmeta name=\\\"viewport\\\" content=\\\"width=device-width, initial-scale=1.0\\\" />\\n\u003Cmeta name=\\\"apple-mobile-web-app-capable\\\" content=\\\"yes\\\" />\\n\u003Cmeta name=\\\"apple-mobile-web-app-status-bar-style\\\" content=\\\"black-translucent\\\" />\\n\u003Cmeta name=\\\"mobile-web-app-capable\\\" content=\\\"yes\\\"/>\\n\u003Cmeta name=\\\"format-detection\\\" content=\\\"telephone=no\\\" />\\n\u003Cmeta name=\\\"copyright\\\" content=\\\"`{{$:/core/copyright.txt}}`\\\" />\\n\u003Clink id=\\\"faviconLink\\\" rel=\\\"shortcut icon\\\" href=\\\"favicon.ico\\\">\\n\u003Ctitle>`{{$:/core/wiki/title}}`\u003C/title>\\n\u003C!--~~ This is a Tiddlywiki file. The points of interest in the file are marked with this pattern ~~-->\\n\\n\u003C!--~~ Raw markup ~~-->\\n`{{{[enlist\u003CsaveTiddlerAndShadowsFilter>tag[$:/core/wiki/rawmarkup]]||$:/core/templates/plain-text-tiddler}}}\\n{{{[enlist\u003CsaveTiddlerAndShadowsFilter>tag[$:/tags/RawMarkup]]||$:/core/templates/plain-text-tiddler}}}\\n{{{[enlist\u003CsaveTiddlerAndShadowsFilter>tag[$:/tags/RawMarkupWikified]]||$:/core/templates/raw-static-tiddler}}}`\\n\u003C/head>\\n\u003Cbody class=\\\"tc-body\\\">\\n\u003C!--~~ Raw markup for the top of the body section ~~-->\\n`{{{[enlist\u003CsaveTiddlerAndShadowsFilter>tag[$:/tags/RawMarkupWikified/TopBody]]||$:/core/templates/raw-static-tiddler}}}`\\n\u003C!--~~ Static styles ~~-->\\n\u003Cdiv id=\\\"styleArea\\\">\\n`{{$:/boot/boot.css||$:/core/templates/css-tiddler}}`\\n\u003C/div>\\n\u003C!--~~ Static content for Google and browsers without JavaScript ~~-->\\n\u003Cnoscript>\\n\u003Cdiv id=\\\"splashArea\\\">\\n`{{$:/core/templates/static.area}}`\\n\u003C/div>\\n\u003C/noscript>\\n\u003C!--~~ Ordinary tiddlers ~~-->\\n`{{$:/core/templates/store.area.template.html}}`\\n\u003C!--~~ Library modules ~~-->\\n\u003Cdiv id=\\\"libraryModules\\\" style=\\\"display:none;\\\">\\n`{{{[is[system]type[application/javascript]library[yes]]||$:/core/templates/javascript-tiddler}}}`\\n\u003C/div>\\n\u003C!--~~ Boot kernel prologue ~~-->\\n\u003Cdiv id=\\\"bootKernelPrefix\\\" style=\\\"display:none;\\\">\\n`{{$:/boot/bootprefix.js||$:/core/templates/javascript-tiddler}}`\\n\u003C/div>\\n\u003C!--~~ Boot kernel ~~-->\\n\u003Cdiv id=\\\"bootKernel\\\" style=\\\"display:none;\\\">\\n`{{$:/boot/boot.js||$:/core/templates/javascript-tiddler}}`\\n\u003C/div>\\n\u003C!--~~ Raw markup for the bottom of the body section ~~-->\\n`{{{[enlist\u003CsaveTiddlerAndShadowsFilter>tag[$:/tags/RawMarkupWikified/BottomBody]]||$:/core/templates/raw-static-tiddler}}}`\\n\u003C/body>\\n\u003C/html>`\\n\"},\"$:/core/templates/version\":{\"text\":\"\u003C\u003Cversion>>\"},\"$:/core/templates/wikified-tiddler\":{\"text\":\"{{}}\u003C!---->\"},\"$:/core/ui/AboveStory/tw2-plugin-check\":{\"tags\":\"$:/tags/AboveStory\",\"text\":\"\\\\define lingo-base()$:/language/AboveStory/ClassicPlugin/\\n\u003C$list filter=[all[system+tiddlers]tag[systemConfig]nth[]]>\\n\\n\u003Cdiv class=tc-message-box>\\n\\n\u003C\u003Clingo Warning>>\\n\\n\u003Cul>\\n\\n\u003C$list filter=[all[system+tiddlers]tag[systemConfig]]>\\n\\n\u003Cli>\\n\\n\u003C$link>\"},\"$:/core/ui/Actions/new-image\":{\"tags\":\"$:/tags/Actions\",\"description\":\"create a new image tiddler\",\"text\":\"\u003C$action-sendmessage type={{{[{$:/config/NewImageType}addprefix[image/]]}}}$message=tm-new-tiddler/>\\n\"},\"$:/core/ui/Actions/new-journal\":{\"tags\":\"$:/tags/Actions\",\"description\":\"create a new journal tiddler\",\"text\":\"\\\\define get-tags()$(textFieldTags)$ $(tagsFieldTags)$\\n\u003C$let journalTitleTemplate={{$:/config/NewJournal/Title}}textFieldTags={{$:/config/NewJournal/Tags}}tagsFieldTags={{$:/config/NewJournal/Tags!!tags}}journalText={{$:/config/NewJournal/Text}}>\u003C$wikify text='\u003C$macrocall format=\u003C\u003CjournalTitleTemplate>>$name=now/>'name=journalTitle>\u003C$reveal state=\u003C\u003CjournalTitle>>text=''type=nomatch>\u003C$action-sendmessage title=\u003C\u003CjournalTitle>>tags=\u003C\u003Cget-tags>>text={{{[\u003CjournalTitle>get[]]}}}$message=tm-new-tiddler/>\u003C/$reveal>\u003C$reveal state=\u003C\u003CjournalTitle>>text=''type=match>\u003C$action-sendmessage title=\u003C\u003CjournalTitle>>tags=\u003C\u003Cget-tags>>text=\u003C\u003CjournalText>>$message=tm-new-tiddler/>\"},\"$:/core/ui/Actions/new-tiddler\":{\"tags\":\"$:/tags/Actions\",\"description\":\"create a new empty tiddler\",\"text\":\"\\\\define get-tags()$(textFieldTags)$ $(tagsFieldTags)$\\n\u003C$let textFieldTags={{$:/config/NewTiddler/Tags}}tagsFieldTags={{$:/config/NewTiddler/Tags!!tags}}>\u003C$action-sendmessage tags=\u003C\u003Cget-tags>>$message=tm-new-tiddler/>\"},\"$:/core/ui/AdvancedSearch/Filter\":{\"tags\":\"$:/tags/AdvancedSearch\",\"caption\":\"{{$:/language/Search/Filter/Caption}}\",\"text\":\"\\\\define lingo-base()$:/language/Search/\\n\\\\define set-next-input-tab(beforeafter:after)\u003C$macrocall stateTitle='$:/state/tab--1498284803'tag='$:/tags/AdvancedSearch'beforeafter=\\\"$beforeafter$\\\"defaultState='$:/core/ui/AdvancedSearch/System'actions=\\\"\u003C$action-setfield $tiddler='$:/state/advancedsearch/currentTab' text=\u003C\u003CnextTab>>/>\\\"$name=change-input-tab/>\\n\\\\define cancel-search-actions()\u003C$list filter='[{$:/temp/advancedsearch/input}!match{$:/temp/advancedsearch}]'emptyMessage=\\\"\u003C$action-deletetiddler $filter='[[$:/temp/advancedsearch]] [[$:/temp/advancedsearch/input]] [[$:/temp/advancedsearch/selected-item]]'/>\\\">\u003C$action-setfield $tiddler='$:/temp/advancedsearch/input'text={{$:/temp/advancedsearch}}/>\u003C$action-setfield $tiddler='$:/temp/advancedsearch/refresh'text=yes/>\\n\\\\define input-accept-actions()\u003C$list filter='[{$:/config/Search/NavigateOnEnter/enable}match[yes]]'emptyMessage=\\\"\u003C$list filter='[\u003C__tiddler__>get[text]!is[missing]]~[\u003C__tiddler__>get[text]is[shadow]]'>\u003C$action-navigate $to={{{[\u003C__tiddler__>get[text]]}}}/>\\\">\u003C$action-navigate $to={{{[\u003C__tiddler__>get[text]]}}}/>\\n\\\\define input-accept-variant-actions()\u003C$list filter='[{$:/config/Search/NavigateOnEnter/enable}match[yes]]'emptyMessage=\\\"\u003C$list filter='[\u003C__tiddler__>get[text]!is[missing]]~[\u003C__tiddler__>get[text]is[shadow]]'>\u003C$list filter='[\u003C__tiddler__>get[text]minlength[1]]'>\u003C$action-sendmessage $param={{{[\u003C__tiddler__>get[text]]}}}$message=tm-edit-tiddler/>\\\">\u003C$list filter='[\u003C__tiddler__>get[text]minlength[1]]'>\u003C$action-sendmessage $param={{{[\u003C__tiddler__>get[text]]}}}$message=tm-edit-tiddler/>\\n\u003C\u003Clingo Filter/Hint>>\\n\\n\u003Cdiv class='tc-search tc-advanced-search'>\u003C$keyboard actions=\u003C\u003Cset-next-input-tab>>key=((input-tab-right))>\u003C$keyboard actions=\u003C\u003Cset-next-input-tab before>>key=((input-tab-left))>\u003C$macrocall $name=keyboard-driven-input tiddler='$:/temp/advancedsearch/input'storeTitle='$:/temp/advancedsearch'refreshTitle='$:/temp/advancedsearch/refresh'selectionStateTitle='$:/temp/advancedsearch/selected-item'type=search tag=input focus={{$:/config/Search/AutoFocus}}configTiddlerFilter='[[$:/temp/advancedsearch]]'inputAcceptActions=\u003C\u003Cinput-accept-actions>>inputAcceptVariantActions=\u003C\u003Cinput-accept-variant-actions>>inputCancelActions=\u003C\u003Ccancel-search-actions>>firstSearchFilterField=text/>\u003C/$keyboard>\u003C/$keyboard> \u003C$list filter='[[$:/tags/AdvancedSearch/FilterButton]tagging[]!is[draft]]'>{{}}\u003C/$list>\u003C/div>\\n\\n\u003C$reveal state='$:/temp/advancedsearch'text=''type=nomatch>\u003C$let resultCount='\u003C$count filter={{$:/temp/advancedsearch}}/>'>\u003Cdiv class=tc-search-results>\u003C\u003Clingo Filter/Matches>>\u003C$list filter={{$:/temp/advancedsearch}}>\u003Cspan class={{{[{!!title}addsuffix[-primaryList]]-[[$:/temp/advancedsearch/selected-item]get[text]]+[then[]else[tc-list-item-selected]]}}}>{{||$:/core/ui/ListItemTemplate}}\"},\"$:/core/ui/AdvancedSearch/Filter/FilterButtons/clear\":{\"tags\":\"$:/tags/AdvancedSearch/FilterButton\",\"text\":\"\u003C$reveal state=\\\"$:/temp/advancedsearch\\\"text=\\\"\\\"type=nomatch>\u003C$button class=tc-btn-invisible>\u003C\u003Ccancel-search-actions>>\u003C$action-sendmessage $param=\\\".tc-advanced-search input\\\"$message=tm-focus-selector/>{{$:/core/images/close-button}}\"},\"$:/core/ui/AdvancedSearch/Filter/FilterButtons/delete\":{\"tags\":\"$:/tags/AdvancedSearch/FilterButton\",\"text\":\"\u003C$reveal state=\\\"$:/temp/advancedsearch\\\"text=\\\"\\\"type=nomatch>\u003C$button tooltip={{$:/language/Buttons/DeleteTiddlers/Hint}}popup=\u003C\u003Cqualify\\\"$:/state/filterDeleteDropdown\\\">>class=tc-btn-invisible>{{$:/core/images/delete-button}}\u003C/$button>\u003C/$reveal>\\n\\n\u003C$reveal state=\u003C\u003Cqualify\\\"$:/state/filterDeleteDropdown\\\">>type=popup position=belowleft animate=yes>\u003Cdiv class=tc-block-dropdown-wrapper>\u003Cdiv class=\\\"tc-block-dropdown tc-edit-type-dropdown\\\">\u003Cdiv class=tc-dropdown-item-plain>\u003C$let resultCount=\\\"\u003C$count filter={{$:/temp/advancedsearch}}/>\\\">{{$:/language/ConfirmDeleteTiddlers}}\u003C/$let>\u003C/div>\u003Cdiv class=tc-dropdown-item-plain>\u003C$button class=tc-btn>\u003C$action-deletetiddler $filter={{$:/temp/advancedsearch}}/>{{$:/language/Buttons/DeleteTiddlers/Hint}}\"},\"$:/core/ui/AdvancedSearch/Filter/FilterButtons/dropdown\":{\"tags\":\"$:/tags/AdvancedSearch/FilterButton\",\"text\":\"\u003Cspan class=tc-popup-keep>\u003C$button popup=\u003C\u003Cqualify'$:/state/filterDropdown'>>class=tc-btn-invisible>{{$:/core/images/down-arrow}}\u003C/$button>\u003C/span>\\n\\n\u003C$reveal state=\u003C\u003Cqualify'$:/state/filterDropdown'>>type=popup position=belowleft animate=yes>\u003C$let tv-show-missing-links=yes>\u003C$linkcatcher actions=\\\"\u003C$action-setfield $tiddler='$:/temp/advancedsearch'text=\u003C\u003CnavigateTo>>/>\u003C$action-setfield $tiddler='$:/temp/advancedsearch/input'text=\u003C\u003CnavigateTo>>/>\u003C$action-setfield $tiddler='$:/temp/advancedsearch/refresh'text=yes/>\u003C$action-sendmessage $param='.tc-advanced-search input'$message=tm-focus-selector/>\\\">\u003Cdiv class=tc-block-dropdown-wrapper>\u003Cdiv class='tc-block-dropdown tc-edit-type-dropdown'>\u003C$list filter='[[$:/tags/Filter]tagging[]!is[draft]]'>\u003C$link to={{!!filter}}>\u003C$let tv-wikilinks=no>\u003C$transclude field=description/>\"},\"$:/core/ui/AdvancedSearch/Filter/FilterButtons/export\":{\"tags\":\"$:/tags/AdvancedSearch/FilterButton\",\"text\":\"\u003C$reveal state=\\\"$:/temp/advancedsearch\\\"text=\\\"\\\"type=nomatch>\u003C$macrocall exportFilter={{$:/temp/advancedsearch}}lingoBase=\\\"$:/language/Buttons/ExportTiddlers/\\\"$name=exportButton/>\"},\"$:/core/ui/AdvancedSearch/Shadows\":{\"tags\":\"$:/tags/AdvancedSearch\",\"caption\":\"{{$:/language/Search/Shadows/Caption}}\",\"first-search-filter\":\"[all[shadows]search\u003CuserInput>sort[title]limit[250]] -[[$:/temp/advancedsearch]] -[[$:/temp/advancedsearch/input]]\",\"text\":\"\\\\define lingo-base()$:/language/Search/\\n\\\\define set-next-input-tab(beforeafter:after)\u003C$macrocall stateTitle='$:/state/tab--1498284803'tag='$:/tags/AdvancedSearch'beforeafter=\\\"$beforeafter$\\\"defaultState='$:/core/ui/AdvancedSearch/System'actions=\\\"\u003C$action-setfield $tiddler='$:/state/advancedsearch/currentTab' text=\u003C\u003CnextTab>>/>\\\"$name=change-input-tab/>\\n\\\\define cancel-search-actions()\u003C$list filter='[{$:/temp/advancedsearch}!match{$:/temp/advancedsearch/input}]'emptyMessage=\\\"\u003C$action-deletetiddler $filter='[[$:/temp/advancedsearch]] [[$:/temp/advancedsearch/input]] [[$:/temp/advancedsearch/selected-item]]'/>\\\">\u003C$action-setfield $tiddler='$:/temp/advancedsearch/input'text={{$:/temp/advancedsearch}}/>\u003C$action-setfield $tiddler='$:/temp/advancedsearch/refresh'text=yes/>\u003C/$list>\u003C$action-sendmessage $param='.tc-advanced-search input'$message=tm-focus-selector/>\\n\\\\define input-accept-actions()\u003C$list filter='[{$:/config/Search/NavigateOnEnter/enable}match[yes]]'emptyMessage=\\\"\u003C$list filter='[\u003C__tiddler__>get[text]!is[missing]]~[\u003C__tiddler__>get[text]is[shadow]]'>\u003C$action-navigate $to={{{[\u003C__tiddler__>get[text]]}}}/>\\\">\u003C$action-navigate $to={{{[\u003C__tiddler__>get[text]]}}}/>\\n\\\\define input-accept-variant-actions()\u003C$list filter='[{$:/config/Search/NavigateOnEnter/enable}match[yes]]'emptyMessage=\\\"\u003C$list filter='[\u003C__tiddler__>get[text]!is[missing]]~[\u003C__tiddler__>get[text]is[shadow]]'>\u003C$list filter='[\u003C__tiddler__>get[text]minlength[1]]'>\u003C$action-sendmessage $param={{{[\u003C__tiddler__>get[text]]}}}$message=tm-edit-tiddler/>\\\">\u003C$list filter='[\u003C__tiddler__>get[text]minlength[1]]'>\u003C$action-sendmessage $param={{{[\u003C__tiddler__>get[text]]}}}$message=tm-edit-tiddler/>\\n\u003C\u003Clingo Shadows/Hint>>\\n\\n\u003Cdiv class=tc-search>\u003C$keyboard actions=\u003C\u003Cset-next-input-tab>>key=((input-tab-right))>\u003C$keyboard actions=\u003C\u003Cset-next-input-tab before>>key=((input-tab-left))>\u003C$macrocall $name=keyboard-driven-input tiddler='$:/temp/advancedsearch/input'storeTitle='$:/temp/advancedsearch'refreshTitle='$:/temp/advancedsearch/refresh'selectionStateTitle='$:/temp/advancedsearch/selected-item'type=search focus={{$:/config/Search/AutoFocus}}configTiddlerFilter='[[$:/core/ui/AdvancedSearch/Shadows]]'inputCancelActions=\u003C\u003Ccancel-search-actions>>inputAcceptActions=\u003C\u003Cinput-accept-actions>>inputAcceptVariantActions=\u003C\u003Cinput-accept-variant-actions>>filterMinLength={{$:/config/Search/MinLength}}tag=input/>\u003C/$keyboard>\u003C/$keyboard> \u003C$reveal state='$:/temp/advancedsearch'text=''type=nomatch>\u003C$button class=tc-btn-invisible>\u003C\u003Ccancel-search-actions>>{{$:/core/images/close-button}}\u003C/$button>\u003C/$reveal>\u003C/div>\\n\\n\u003C$reveal state='$:/temp/advancedsearch'text=''type=nomatch>\\n\\n\u003C$list filter='[{$:/temp/advancedsearch}minlength{$:/config/Search/MinLength}nth[]]'emptyMessage='\u003Cdiv class=tc-search-results>{{$:/language/Search/Search/TooShort}}'variable=listItem>\\n\\n\u003C$let resultCount=\\\"\u003C$count filter='[all[shadows]search{$:/temp/advancedsearch}] -[[$:/temp/advancedsearch]] -[[$:/temp/advancedsearch/input]]'/>\\\">\\n\\n\u003Cdiv class=tc-search-results>\\n\\n\u003C\u003Clingo Shadows/Matches>>\\n\\n\u003C$list filter='[all[shadows]search{$:/temp/advancedsearch}sort[title]limit[250]]-$:/temp/advancedsearch -$:/temp/advancedsearch/input'>\u003Cspan class={{{[{!!title}addsuffix[-primaryList]]-[[$:/temp/advancedsearch/selected-item]get[text]]+[then[]else[tc-list-item-selected]]}}}>{{||$:/core/ui/ListItemTemplate}}\u003C/span>\u003C/$list>\\n\\n\u003C/div>\u003C/$let>\u003C/$list>\u003C/$reveal>\u003C$reveal state='$:/temp/advancedsearch'text=''type=match>\\n\\n\"},\"$:/core/ui/AdvancedSearch/Standard\":{\"tags\":\"$:/tags/AdvancedSearch\",\"caption\":\"{{$:/language/Search/Standard/Caption}}\",\"text\":\"\\\\define lingo-base()$:/language/Search/\\n\\\\define set-next-input-tab(beforeafter:after)\u003C$macrocall stateTitle='$:/state/tab--1498284803'tag='$:/tags/AdvancedSearch'beforeafter=\\\"$beforeafter$\\\"defaultState='$:/core/ui/AdvancedSearch/System'actions=\\\"\u003C$action-setfield $tiddler='$:/state/advancedsearch/currentTab' text=\u003C\u003CnextTab>>/>\\\"$name=change-input-tab/>\\n\\\\define next-search-tab(beforeafter:after)\u003C$macrocall stateTitle='$:/state/tab/search-results/advancedsearch'tag='$:/tags/SearchResults'beforeafter=\\\"$beforeafter$\\\"defaultState={{$:/config/SearchResults/Default}}actions=\\\"\u003C$action-setfield $tiddler='$:/state/advancedsearch/standard/currentTab' text=\u003C\u003CnextTab>>/>\\\"$name=change-input-tab/>\\n\\\\define cancel-search-actions()\u003C$list filter='[{$:/temp/advancedsearch}!match{$:/temp/advancedsearch/input}]'emptyMessage=\\\"\u003C$action-deletetiddler $filter='[[$:/temp/advancedsearch]] [[$:/temp/advancedsearch/input]] [[$:/temp/advancedsearch/selected-item]]'/>\\\">\u003C$action-setfield $tiddler='$:/temp/advancedsearch/input'text={{$:/temp/advancedsearch}}/>\u003C$action-setfield $tiddler='$:/temp/advancedsearch/refresh'text=yes/>\u003C/$list>\u003C$action-sendmessage $param='.tc-advanced-search input'$message=tm-focus-selector/>\\n\\\\define input-accept-actions()\u003C$list filter='[{$:/config/Search/NavigateOnEnter/enable}match[yes]]'emptyMessage=\\\"\u003C$list filter='[\u003C__tiddler__>get[text]!is[missing]]~[\u003C__tiddler__>get[text]is[shadow]]'>\u003C$action-navigate $to={{{[\u003C__tiddler__>get[text]]}}}/>\\\">\u003C$action-navigate $to={{{[\u003C__tiddler__>get[text]]}}}/>\\n\\\\define input-accept-variant-actions()\u003C$list filter='[{$:/config/Search/NavigateOnEnter/enable}match[yes]]'emptyMessage=\\\"\u003C$list filter='[\u003C__tiddler__>get[text]!is[missing]]~[\u003C__tiddler__>get[text]is[shadow]]'>\u003C$list filter='[\u003C__tiddler__>get[text]minlength[1]]'>\u003C$action-sendmessage $param={{{[\u003C__tiddler__>get[text]]}}}$message=tm-edit-tiddler/>\\\">\u003C$list filter='[\u003C__tiddler__>get[text]minlength[1]]'>\u003C$action-sendmessage $param={{{[\u003C__tiddler__>get[text]]}}}$message=tm-edit-tiddler/>\\n\u003C\u003Clingo Standard/Hint>>\\n\\n\u003Cdiv class=tc-search>\u003C$keyboard actions=\u003C\u003Cset-next-input-tab>>key=((input-tab-right))>\u003C$keyboard actions=\u003C\u003Cset-next-input-tab before>>key=((input-tab-left))>\u003C$keyboard actions=\u003C\u003Cnext-search-tab>>key=shift-alt-Right>\u003C$keyboard actions=\u003C\u003Cnext-search-tab before>>key=shift-alt-Left>\u003C$macrocall $name=keyboard-driven-input tiddler='$:/temp/advancedsearch/input'storeTitle='$:/temp/advancedsearch'refreshTitle='$:/temp/advancedsearch/refresh'selectionStateTitle='$:/temp/advancedsearch/selected-item'type=search focus={{$:/config/Search/AutoFocus}}inputCancelActions=\u003C\u003Ccancel-search-actions>>inputAcceptActions=\u003C\u003Cinput-accept-actions>>inputAcceptVariantActions=\u003C\u003Cinput-accept-variant-actions>>configTiddlerFilter='[[$:/state/search/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}]'filterMinLength={{$:/config/Search/MinLength}}tag=input/>\u003C/$keyboard>\u003C/$keyboard>\u003C/$keyboard>\u003C/$keyboard>\u003C$reveal state='$:/temp/advancedsearch'text=''type=nomatch>\u003C$button class=tc-btn-invisible>\u003C\u003Ccancel-search-actions>>{{$:/core/images/close-button}}\u003C/$button>\u003C/$reveal>\u003C/div>\\n\\n\u003C$reveal state='$:/temp/advancedsearch'text=''type=nomatch>\u003C$list filter='[{$:/temp/advancedsearch}minlength{$:/config/Search/MinLength}nth[]]'emptyMessage='\u003Cdiv class=tc-search-results>{{$:/language/Search/Search/TooShort}}'variable=listItem>\u003C$vars userInput={{{[[$:/temp/advancedsearch]get[text]]}}}configTiddler={{{[[$:/state/search/currentTab]!is[missing]get[text]]~[{$:/config/SearchResults/Default}]}}}searchListState='$:/temp/advancedsearch/selected-item'>\u003C$list filter='[[$:/tags/SearchResults]tagging[]!is[draft]butfirst[]nth[]]'emptyMessage=\\\"\u003C$list filter='[[$:/tags/SearchResults]tagging[]!is[draft]]'>{{}}\\\">\u003C$macrocall tabsList='[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]'default={{$:/config/SearchResults/Default}}actions=\\\"\u003C$action-setfield $tiddler='$:/state/advancedsearch/standard/currentTab' text=\u003C\u003CcurrentTab>>/>\\\"explicitState='$:/state/tab/search-results/advancedsearch'$name=tabs/>\"},\"$:/core/ui/AdvancedSearch/System\":{\"tags\":\"$:/tags/AdvancedSearch\",\"caption\":\"{{$:/language/Search/System/Caption}}\",\"first-search-filter\":\"[is[system]search\u003CuserInput>sort[title]limit[250]] -[[$:/temp/advancedsearch]] -[[$:/temp/advancedsearch/input]] -[[$:/temp/advancedsearch/selected-item]]\",\"text\":\"\\\\define lingo-base()$:/language/Search/\\n\\\\define set-next-input-tab(beforeafter:after stateTitle tag defaultState currentTabTiddler)\u003C$macrocall stateTitle='$:/state/tab--1498284803'tag='$:/tags/AdvancedSearch'beforeafter=\\\"$beforeafter$\\\"defaultState='$:/core/ui/AdvancedSearch/System'actions=\\\"\u003C$action-setfield $tiddler='$:/state/advancedsearch/currentTab' text=\u003C\u003CnextTab>>/>\\\"$name=change-input-tab/>\\n\\\\define cancel-search-actions()\u003C$list filter='[{$:/temp/advancedsearch}!match{$:/temp/advancedsearch/input}]'emptyMessage=\\\"\u003C$action-deletetiddler $filter='[[$:/temp/advancedsearch]] [[$:/temp/advancedsearch/input]] [[$:/temp/advancedsearch/selected-item]]'/>\\\">\u003C$action-setfield $tiddler='$:/temp/advancedsearch/input'text={{$:/temp/advancedsearch}}/>\u003C$action-setfield $tiddler='$:/temp/advancedsearch/refresh'text=yes/>\u003C/$list>\u003C$action-sendmessage $param='.tc-advanced-search input'$message=tm-focus-selector/>\\n\\\\define input-accept-actions()\u003C$list filter='[{$:/config/Search/NavigateOnEnter/enable}match[yes]]'emptyMessage=\\\"\u003C$list filter='[\u003C__tiddler__>get[text]!is[missing]]~[\u003C__tiddler__>get[text]is[shadow]]'>\u003C$action-navigate $to={{{[\u003C__tiddler__>get[text]]}}}/>\\\">\u003C$action-navigate $to={{{[\u003C__tiddler__>get[text]]}}}/>\\n\\\\define input-accept-variant-actions()\u003C$list filter='[{$:/config/Search/NavigateOnEnter/enable}match[yes]]'emptyMessage=\\\"\u003C$list filter='[\u003C__tiddler__>get[text]!is[missing]]~[\u003C__tiddler__>get[text]is[shadow]]'>\u003C$list filter='[\u003C__tiddler__>get[text]minlength[1]]'>\u003C$action-sendmessage $param={{{[\u003C__tiddler__>get[text]]}}}$message=tm-edit-tiddler/>\\\">\u003C$list filter='[\u003C__tiddler__>get[text]minlength[1]]'>\u003C$action-sendmessage $param={{{[\u003C__tiddler__>get[text]]}}}$message=tm-edit-tiddler/>\\n\u003C\u003Clingo System/Hint>>\\n\\n\u003Cdiv class=tc-search>\u003C$keyboard actions=\u003C\u003Cset-next-input-tab>>key=((input-tab-right))>\u003C$keyboard actions=\u003C\u003Cset-next-input-tab before>>key=((input-tab-left))>\u003C$macrocall $name=keyboard-driven-input tiddler='$:/temp/advancedsearch/input'storeTitle='$:/temp/advancedsearch'refreshTitle='$:/temp/advancedsearch/refresh'selectionStateTitle='$:/temp/advancedsearch/selected-item'type=search focus={{$:/config/Search/AutoFocus}}configTiddlerFilter='[[$:/core/ui/AdvancedSearch/System]]'inputCancelActions=\u003C\u003Ccancel-search-actions>>inputAcceptActions=\u003C\u003Cinput-accept-actions>>inputAcceptVariantActions=\u003C\u003Cinput-accept-variant-actions>>filterMinLength={{$:/config/Search/MinLength}}tag=input/>\u003C/$keyboard>\u003C/$keyboard> \u003C$reveal state='$:/temp/advancedsearch'text=''type=nomatch>\u003C$button class=tc-btn-invisible>\u003C\u003Ccancel-search-actions>>{{$:/core/images/close-button}}\u003C/$button>\u003C/$reveal>\u003C/div>\\n\\n\u003C$reveal state='$:/temp/advancedsearch'text=''type=nomatch>\\n\\n\u003C$list filter='[{$:/temp/advancedsearch}minlength{$:/config/Search/MinLength}nth[]]'emptyMessage='\u003Cdiv class=tc-search-results>{{$:/language/Search/Search/TooShort}}'variable=listItem>\\n\\n\u003C$let resultCount=\\\"\u003C$count filter='[is[system]search{$:/temp/advancedsearch}] -[[$:/temp/advancedsearch]] -[[$:/temp/advancedsearch/input]] -[[$:/temp/advancedsearch/selected-item]]'/>\\\">\\n\\n\u003Cdiv class=tc-search-results>\\n\\n\u003C\u003Clingo System/Matches>>\\n\\n\u003C$list filter='[is[system]search{$:/temp/advancedsearch}sort[title]limit[250]]-$:/temp/advancedsearch -$:/temp/advancedsearch/input -$:/temp/advancedsearch/selected-item'>\u003Cspan class={{{[{!!title}addsuffix[-primaryList]]-[[$:/temp/advancedsearch/selected-item]get[text]]+[then[]else[tc-list-item-selected]]}}}>{{||$:/core/ui/ListItemTemplate}}\u003C/span>\u003C/$list>\\n\\n\u003C/div>\u003C/$let>\u003C/$list>\u003C/$reveal>\u003C$reveal state='$:/temp/advancedsearch'text=''type=match>\\n\\n\"},\"$:/AdvancedSearch\":{\"icon\":\"$:/core/images/advanced-search-button\",\"color\":\"#bbb\",\"text\":\"\u003Cdiv class=tc-advanced-search>\u003C$macrocall tabsList=\\\"[all[shadows+tiddlers]tag[$:/tags/AdvancedSearch]!has[draft.of]]\\\"default=\\\"$:/core/ui/AdvancedSearch/System\\\"actions=\\\"\\\"\\\"\u003C$action-setfield $tiddler=\\\"$:/state/advancedsearch/currentTab\\\" text=\u003C\u003CcurrentTab>>/>\\\"\\\"\\\"explicitState=\\\"$:/state/tab--1498284803\\\"$name=tabs/>\"},\"$:/core/ui/AlertTemplate\":{\"text\":\"\u003Cdiv class=tc-alert>\u003Cdiv class=tc-alert-toolbar>\u003C$button class=tc-btn-invisible>\u003C$action-deletetiddler $tiddler={{!!title}}/>{{$:/core/images/cancel-button}}\u003C/$button>\u003C/div>\u003Cdiv class=tc-alert-subtitle>\u003C$wikify text=\u003C\u003Clingo Tiddler/DateFormat>>name=format>\u003C$view field=component/> - \u003C$view field=modified template=\u003C\u003Cformat>>format=date/> \u003C$reveal type=nomatch text=\\\"\\\"state=!!count>\u003Cspan class=tc-alert-highlight>({{$:/language/Count}}: \u003C$view field=count/>)\u003C/span>\u003C/$reveal>\u003C/$wikify>\u003C/div>\u003Cdiv class=tc-alert-body>\\n\\n{{}}\"},\"$:/core/ui/BinaryWarning\":{\"text\":\"\\\\define lingo-base()$:/language/BinaryWarning/\\n\u003C\u003Clingo Prompt>>\"},\"$:/core/ui/Components/plugin-info\":{\"text\":\"\\\\define lingo-base()$:/language/ControlPanel/Plugins/\\n\\\\define popup-state-macro()$(qualified-state)$-$(currentTiddler)$\\n\\\\define tabs-state-macro()$(popup-state)$-$(pluginInfoType)$\\n\\\\define plugin-icon-title()$(currentTiddler)$/icon\\n\\\\define plugin-disable-title()$:/config/Plugins/Disabled/$(currentTiddler)$\\n\\\\define plugin-table-body(type disabledMessage default-popup-state)\\n\\\\whitespace trim\\n\u003Cdiv class='tc-plugin-info-chunk tc-plugin-info-toggle'>\u003C$reveal type=nomatch state=\u003C\u003Cpopup-state>>default=\\\"\\\"\\\"$default-popup-state$\\\"\\\"\\\"text=yes>\u003C$button class='tc-btn-invisible tc-btn-dropdown'set=\u003C\u003Cpopup-state>>setTo=yes>{{$:/core/images/chevron-right}}\u003C/$button>\u003C/$reveal>\u003C$reveal type=match state=\u003C\u003Cpopup-state>>default=\\\"\\\"\\\"$default-popup-state$\\\"\\\"\\\"text=yes>\u003C$button class='tc-btn-invisible tc-btn-dropdown'set=\u003C\u003Cpopup-state>>setTo=no>{{$:/core/images/chevron-down}}\u003C/$button>\u003C/$reveal>\u003C/div>\u003Cdiv class='tc-plugin-info-chunk tc-plugin-info-icon'>\u003C$transclude tiddler={{!!title}}subtiddler=\u003C\u003Cplugin-icon-title>>>\u003C$transclude tiddler=\\\"$:/core/images/plugin-generic-$type$\\\"/>\u003C/$transclude>\u003C/div>\u003Cdiv class='tc-plugin-info-chunk tc-plugin-info-description'>\u003Ch1>''\u003C$text text={{{[{!!title}get[name]]~[{!!title}split[/]last[1]]}}}/>'':&nbsp;\u003C$view field=description>\u003C$view field=title/>\u003C/$view>&nbsp;$disabledMessage$\\n\\t\u003C/h1>\u003Ch2>\u003C$view field=title/>\u003C/h2>\u003Ch2>\u003Cdiv>\u003Cem>\u003C$view field=version/>\\n\\\\end\\n\\\\define plugin-info(type default-popup-state)\u003C$let popup-state=\u003C\u003Cpopup-state-macro>>>\u003C$reveal type=nomatch state=\u003C\u003Cplugin-disable-title>>text=yes>\u003C$link class=tc-plugin-info>\u003C\u003Cplugin-table-body type:\\\"$type$\\\"default-popup-state:\\\"\\\"\\\"$default-popup-state$\\\"\\\"\\\">>\u003C/$link>\u003C/$reveal>\u003C$reveal type=match state=\u003C\u003Cplugin-disable-title>>text=yes>\u003C$link class='tc-plugin-info tc-plugin-info-disabled'>\u003C\u003Cplugin-table-body type:\\\"$type$\\\"default-popup-state:\\\"\\\"\\\"$default-popup-state$\\\"\\\"\\\"disabledMessage:[[\u003C$macrocall $name='lingo' title='Disabled/Status'/>]]>>\u003C/$link>\u003C/$reveal>\u003C$reveal type=match state=\u003C\u003Cpopup-state>>default=\\\"\\\"\\\"$default-popup-state$\\\"\\\"\\\"text=yes>\u003Cdiv class=tc-plugin-info-dropdown>\u003Cdiv class=tc-plugin-info-dropdown-body>\u003C$list filter='[{!!title}]-$:/core'>\u003Cdiv style=float:right;>\u003C$reveal type=nomatch state=\u003C\u003Cplugin-disable-title>>text=yes>\u003C$button set=\u003C\u003Cplugin-disable-title>>tooltip={{$:/language/ControlPanel/Plugins/Disable/Hint}}aria-label={{$:/language/ControlPanel/Plugins/Disable/Caption}}setTo=yes>\u003C\u003Clingo Disable/Caption>>\u003C/$button>\u003C/$reveal>\u003C$reveal type=match state=\u003C\u003Cplugin-disable-title>>text=yes>\u003C$button set=\u003C\u003Cplugin-disable-title>>tooltip={{$:/language/ControlPanel/Plugins/Enable Hint}}aria-label={{$:/language/ControlPanel/Plugins/Enable/Caption}}setTo=no>\u003C\u003Clingo Enable/Caption>>\u003C/$button>\u003C/$reveal>\u003C/div>\u003C/$list>\u003C$set name=tabsList filter=[{!!title}list[]]contents>\u003C$macrocall state=\u003C\u003Ctabs-state-macro>>tabsList=\u003C\u003CtabsList>>default={{{[enlist\u003CtabsList>]}}}template='$:/core/ui/PluginInfo'$name=tabs/>\\n\u003C$macrocall type=\u003C\u003Cplugin-type>>default-popup-state=\u003C\u003Cdefault-popup-state>>$name=plugin-info/>\\n\"},\"$:/core/ui/Components/tag-link\":{\"text\":\"\u003C$link>\u003C$let backgroundColor={{{[{!!title}]:cascade[[$:/tags/TiddlerColourFilter]tagging[]!is[draft]get[text]]}}}>\u003Cspan style=\u003C\u003Ctag-styles>>class=tc-tag-label>\u003C$view field=title format=text/>\"},\"$:/core/ui/ControlPanel/Advanced\":{\"tags\":\"$:/tags/ControlPanel/Info\",\"caption\":\"{{$:/language/ControlPanel/Advanced/Caption}}\",\"text\":\"{{$:/language/ControlPanel/Advanced/Hint}}\\n\u003Cdiv class=tc-control-panel>\u003C$macrocall tabsList=\\\"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Advanced]!has[draft.of]]\\\"default=\\\"$:/core/ui/ControlPanel/TiddlerFields\\\"explicitState=\\\"$:/state/tab--959111941\\\"$name=tabs/>\"},\"$:/core/ui/ControlPanel/Appearance\":{\"tags\":\"$:/tags/ControlPanel\",\"caption\":\"{{$:/language/ControlPanel/Appearance/Caption}}\",\"text\":\"{{$:/language/ControlPanel/Appearance/Hint}}\\n\u003Cdiv class=tc-control-panel>\u003C$macrocall tabsList=\\\"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Appearance]!has[draft.of]]\\\"default=\\\"$:/core/ui/ControlPanel/Theme\\\"explicitState=\\\"$:/state/tab--1963855381\\\"$name=tabs/>\"},\"$:/snippets/retain-story-ordering-button\":{\"text\":\"\u003C$button set=\\\"$:/DefaultTiddlers\\\"setTo={{$:/config/ControlPanel/Basics/DefaultTiddlers/RetainStory}}>\u003C\u003CcurrentTiddler>>\"},\"$:/core/ui/ControlPanel/Basics\":{\"tags\":\"$:/tags/ControlPanel/Info\",\"caption\":\"{{$:/language/ControlPanel/Basics/Caption}}\",\"text\":\"\\\\define lingo-base()$:/language/ControlPanel/Basics/\\n\\\\define show-filter-count(filter)\u003C$button class=tc-btn-invisible>\u003C$action-setfield $tiddler='$:/temp/advancedsearch'$value=\\\"\\\"\\\"$filter$\\\"\\\"\\\"/>\u003C$action-setfield $tiddler='$:/temp/advancedsearch/input'$value=\\\"\\\"\\\"$filter$\\\"\\\"\\\"/>\u003C$action-setfield $tiddler='$:/temp/advancedsearch/refresh'text=yes/>\u003C$action-setfield $tiddler='$:/state/tab--1498284803'$value='$:/core/ui/AdvancedSearch/Filter'/>\u003C$action-navigate $to='$:/AdvancedSearch'/>\u003C$action-sendmessage $param='.tc-advanced-search input'$message=tm-focus-selector/>''\u003C$count filter=\\\"\\\"\\\"$filter$\\\"\\\"\\\"/>'' {{$:/core/images/advanced-search-button}}\\n|\u003C\u003Clingo Version/Prompt>> |''\u003C\u003Cversion>>'' |\\n|\u003C$link to='$:/SiteTitle'>\u003C\u003Clingo Title/Prompt>>\u003C/$link> |\u003C$edit-text tiddler='$:/SiteTitle'default=''tag=input/> |\\n|\u003C$link to='$:/SiteSubtitle'>\u003C\u003Clingo Subtitle/Prompt>>\u003C/$link> |\u003C$edit-text tiddler='$:/SiteSubtitle'default=''tag=input/> |\\n|\u003C$link to='$:/status/UserName'>\u003C\u003Clingo Username/Prompt>>\u003C/$link> |\u003C$edit-text tiddler='$:/status/UserName'default=''tag=input/> |\\n|\u003C$link to='$:/config/AnimationDuration'>\u003C\u003Clingo AnimDuration/Prompt>>\u003C/$link> |\u003C$edit-text tiddler='$:/config/AnimationDuration'default=''tag=input/> |\\n|\u003C$link to='$:/DefaultTiddlers'>\u003C\u003Clingo DefaultTiddlers/Prompt>>\u003C/$link> |\u003C\u003Clingo DefaultTiddlers/TopHint>>\u003Cbr>\u003C$edit tiddler='$:/DefaultTiddlers'class=tc-edit-texteditor/>\u003Cbr>//\u003C\u003Clingo DefaultTiddlers/BottomHint>>// |\\n|\u003C$link to='$:/language/DefaultNewTiddlerTitle'>\u003C\u003Clingo NewTiddler/Title/Prompt>>\u003C/$link> |\u003C$edit-text tiddler='$:/language/DefaultNewTiddlerTitle'default=''tag=input/> |\\n|\u003C$link to='$:/config/NewJournal/Title'>\u003C\u003Clingo NewJournal/Title/Prompt>>\u003C/$link> |\u003C$edit-text tiddler='$:/config/NewJournal/Title'default=''tag=input/> |\\n|\u003C$link to='$:/config/NewJournal/Text'>\u003C\u003Clingo NewJournal/Text/Prompt>>\u003C/$link> |\u003C$edit tiddler='$:/config/NewJournal/Text'default=''class=tc-edit-texteditor/> |\\n|\u003C$link to='$:/config/NewTiddler/Tags'>\u003C\u003Clingo NewTiddler/Tags/Prompt>>\u003C/$link> |\u003C$let currentTiddler='$:/config/NewTiddler/Tags'tagField=text>{{||$:/core/ui/EditTemplate/tags}}\u003C$list filter=[{!!title}tags[]nth[]] variable=ignore>\u003C$button tooltip={{$:/language/ControlPanel/Basics/RemoveTags/Hint}}>\u003C\u003Clingo RemoveTags>>\u003C$action-listops $tiddler={{!!title}}$subfilter={{{[{!!title}get[tags]]}}}$field=text/>\u003C$action-setfield $tiddler={{!!title}}tags=''/>\u003C/$button>\u003C/$list>\u003C/$let> |\\n|\u003C$link to='$:/config/NewJournal/Tags'>\u003C\u003Clingo NewJournal/Tags/Prompt>>\u003C/$link> |\u003C$let currentTiddler='$:/config/NewJournal/Tags'tagField=text>{{||$:/core/ui/EditTemplate/tags}}\u003C$list filter=[{!!title}tags[]nth[]] variable=ignore>\u003C$button tooltip={{$:/language/ControlPanel/Basics/RemoveTags/Hint}}>\u003C\u003Clingo RemoveTags>>\u003C$action-listops $tiddler={{!!title}}$subfilter={{{[{!!title}get[tags]]}}}$field=text/>\u003C$action-setfield $tiddler={{!!title}}tags=''/>\u003C/$button>\u003C/$list>\u003C/$let> |\\n|\u003C$link to='$:/config/AutoFocus'>\u003C\u003Clingo AutoFocus/Prompt>>\u003C/$link> |{{$:/snippets/minifocusswitcher}} |\\n|\u003C\u003Clingo Language/Prompt>> |{{$:/snippets/minilanguageswitcher}} |\\n|\u003C\u003Clingo Tiddlers/Prompt>> |\u003C\u003Cshow-filter-count [!is[system]sort[title]]>> |\\n|\u003C\u003Clingo Tags/Prompt>> |\u003C\u003Cshow-filter-count [tags[]sort[title]]>> |\\n|\u003C\u003Clingo SystemTiddlers/Prompt>> |\u003C\u003Cshow-filter-count [is[system]sort[title]]>> |\\n|\u003C\u003Clingo ShadowTiddlers/Prompt>> |\u003C\u003Cshow-filter-count [all[shadows]sort[title]]>> |\\n|\u003C\u003Clingo OverriddenShadowTiddlers/Prompt>> |\u003C\u003Cshow-filter-count [is[tiddler]is[shadow]sort[title]]>> |\\n|tc-max-width tc-edit-max-width|k\"},\"$:/core/ui/ControlPanel/EditTemplateBody\":{\"tags\":\"$:/tags/ControlPanel/Cascades\",\"caption\":\"{{$:/language/ControlPanel/EditTemplateBody/Caption}}\",\"text\":\"\\\\define lingo-base()$:/language/ControlPanel/EditTemplateBody/\\n\u003C\u003Clingo Hint>>\\n\\n{{$:/tags/EditTemplateBodyFilter||$:/snippets/ListTaggedCascade}}\"},\"$:/core/ui/ControlPanel/FieldEditor\":{\"tags\":\"$:/tags/ControlPanel/Cascades\",\"caption\":\"{{$:/language/ControlPanel/FieldEditor/Caption}}\",\"text\":\"\\\\define lingo-base()$:/language/ControlPanel/FieldEditor/\\n\u003C\u003Clingo Hint>>\\n\\n{{$:/tags/FieldEditorFilter||$:/snippets/ListTaggedCascade}}\"},\"$:/core/ui/ControlPanel/StoryTiddler\":{\"tags\":\"$:/tags/ControlPanel/Cascades\",\"caption\":\"{{$:/language/ControlPanel/StoryTiddler/Caption}}\",\"text\":\"\\\\define lingo-base()$:/language/ControlPanel/StoryTiddler/\\n\u003C\u003Clingo Hint>>\\n\\n{{$:/tags/StoryTiddlerTemplateFilter||$:/snippets/ListTaggedCascade}}\"},\"$:/core/ui/ControlPanel/TiddlerColour\":{\"tags\":\"$:/tags/ControlPanel/Cascades\",\"caption\":\"{{$:/language/ControlPanel/TiddlerColour/Caption}}\",\"text\":\"\\\\define lingo-base()$:/language/ControlPanel/TiddlerColour/\\n\u003C\u003Clingo Hint>>\\n\\n{{$:/tags/TiddlerColourFilter||$:/snippets/ListTaggedCascade}}\"},\"$:/core/ui/ControlPanel/TiddlerIcon\":{\"tags\":\"$:/tags/ControlPanel/Cascades\",\"caption\":\"{{$:/language/ControlPanel/TiddlerIcon/Caption}}\",\"text\":\"\\\\define lingo-base()$:/language/ControlPanel/TiddlerIcon/\\n\u003C\u003Clingo Hint>>\\n\\n{{$:/tags/TiddlerIconFilter||$:/snippets/ListTaggedCascade}}\"},\"$:/core/ui/ControlPanel/ViewTemplateBody\":{\"tags\":\"$:/tags/ControlPanel/Cascades\",\"caption\":\"{{$:/language/ControlPanel/ViewTemplateBody/Caption}}\",\"text\":\"\\\\define lingo-base()$:/language/ControlPanel/ViewTemplateBody/\\n\u003C\u003Clingo Hint>>\\n\\n{{$:/tags/ViewTemplateBodyFilter||$:/snippets/ListTaggedCascade}}\"},\"$:/core/ui/ControlPanel/ViewTemplateTitle\":{\"tags\":\"$:/tags/ControlPanel/Cascades\",\"caption\":\"{{$:/language/ControlPanel/ViewTemplateTitle/Caption}}\",\"text\":\"\\\\define lingo-base()$:/language/ControlPanel/ViewTemplateTitle/\\n\u003C\u003Clingo Hint>>\\n\\n{{$:/tags/ViewTemplateTitleFilter||$:/snippets/ListTaggedCascade}}\"},\"$:/core/ui/ControlPanel/Cascades\":{\"tags\":\"$:/tags/ControlPanel/Advanced\",\"caption\":\"{{$:/language/ControlPanel/Cascades/Caption}}\",\"text\":\"{{$:/language/ControlPanel/Cascades/Hint}}\\n\u003Cdiv class=tc-control-panel>\u003C$macrocall tabsList=\\\"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Cascades]!has[draft.of]]\\\"default=\\\"$:/core/ui/ControlPanel/StoryTiddler\\\"$name=tabs/>\"},\"$:/core/ui/ControlPanel/EditorTypes\":{\"tags\":\"$:/tags/ControlPanel/Advanced\",\"caption\":\"{{$:/language/ControlPanel/EditorTypes/Caption}}\",\"text\":\"\\\\define lingo-base()$:/language/ControlPanel/EditorTypes/\\n\u003C\u003Clingo Hint>>\\n\\n\u003Ctable>\u003Ctbody>\u003Ctr>\u003Cth>\u003C\u003Clingo Type/Caption>>\u003C/th>\u003Cth>\u003C\u003Clingo Editor/Caption>>\u003C/th>\u003C/tr>\u003C$list filter=\\\"[all[shadows+tiddlers]prefix[$:/config/EditorTypeMappings/]sort[title]]\\\">\u003Ctr>\u003Ctd>\u003C$link>\u003C$list filter=\\\"[{!!title}removeprefix[$:/config/EditorTypeMappings/]]\\\">\u003C$text text={{!!title}}/>\u003C/$list>\u003C/$link>\u003C/td>\u003Ctd>\u003C$view field=text/>\"},\"$:/core/ui/ControlPanel/Info\":{\"tags\":\"$:/tags/ControlPanel\",\"caption\":\"{{$:/language/ControlPanel/Info/Caption}}\",\"text\":\"{{$:/language/ControlPanel/Info/Hint}}\\n\u003Cdiv class=tc-control-panel>\u003C$macrocall tabsList=\\\"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Info]!has[draft.of]]\\\"default=\\\"$:/core/ui/ControlPanel/Basics\\\"explicitState=\\\"$:/state/tab--2112689675\\\"$name=tabs/>\"},\"$:/core/ui/ControlPanel/KeyboardShortcuts\":{\"tags\":\"$:/tags/ControlPanel\",\"caption\":\"{{$:/language/ControlPanel/KeyboardShortcuts/Caption}}\",\"text\":\"\\\\define lingo-base()$:/language/ControlPanel/KeyboardShortcuts/\\n\\\\define new-shortcut(title)\u003Cdiv class=tc-dropdown-item-plain>\u003C$edit-shortcut tiddler=\\\"$title$\\\"placeholder={{$:/language/ControlPanel/KeyboardShortcuts/Add/Prompt}}focus style=width:auto;/> \u003C$button>\u003C\u003Clingo Add/Caption>>\u003C$action-listops $tiddler=\\\"$(shortcutTitle)$\\\"$subfilter=\\\"[{$title$}]\\\"$field=text/>\u003C$action-deletetiddler $tiddler=\\\"$title$\\\"/>\\n\\\\define shortcut-list-item(caption)\u003Ctd>\u003C/td>\u003Ctd style=text-align:right;font-size:0.7em;>\u003C\u003Clingo Platform/$caption$>>\u003C/td>\u003Ctd>\u003Cdiv style=position:relative;>\u003C$button popup=\u003C\u003Cqualify\\\"$:/state/dropdown/$(shortcutTitle)$\\\">>class=tc-btn-invisible>{{$:/core/images/edit-button}}\u003C/$button> \u003C$macrocall $output='text/html'shortcuts={{$(shortcutTitle)$}}prefix='\u003Ckbd>'separator='\u003C/kbd> \u003Ckbd>'suffix='\u003C/kbd>'$name=displayshortcuts/>\u003C$reveal state=\u003C\u003Cqualify\\\"$:/state/dropdown/$(shortcutTitle)$\\\">>type=popup position=below animate=yes>\u003Cdiv class=tc-block-dropdown-wrapper>\u003Cdiv class='tc-block-dropdown tc-edit-type-dropdown tc-popup-keep'>\u003C$list filter=\\\"[list[$(shortcutTitle)$!!text]sort[title]]\\\"emptyMessage='\u003Cdiv class=tc-dropdown-item-plain>//\u003C\u003Clingo NoShortcuts/Caption>>'variable=shortcut>\u003Cdiv class=tc-dropdown-item-plain>\u003C$button tooltip={{$:/language/ControlPanel/KeyboardShortcuts/Remove/Hint}}class=tc-btn-invisible>\u003C$action-listops $tiddler=\\\"$(shortcutTitle)$\\\"$subfilter='+[remove\u003Cshortcut>]'$field=text/>\u003Csmall>{{$:/core/images/close-button}}\u003C/small>\u003C/$button> \u003Ckbd>\u003C$macrocall $output='text/html'shortcuts=\u003C\u003Cshortcut>>$name=displayshortcuts/>\u003C/kbd>\u003C/div>\u003C/$list>\u003Chr>\u003C$macrocall title=\u003C\u003Cqualify\\\"$:/state/new-shortcut/$(shortcutTitle)$\\\">>$name=new-shortcut/>\\n\\\\define shortcut-list(caption prefix)\u003Ctr>\u003C$list filter=\\\"$prefix$$(shortcutName)$\\\"variable=shortcutTitle>\u003C\u003Cshortcut-list-item\\\"$caption$\\\">>\\n\\\\define shortcut-editor()\u003C\u003Cshortcut-list All\\\"$:/config/shortcuts/\\\">>\u003C\u003Cshortcut-list Mac\\\"$:/config/shortcuts-mac/\\\">>\u003C\u003Cshortcut-list NonMac\\\"$:/config/shortcuts-not-mac/\\\">>\u003C\u003Cshortcut-list Linux\\\"$:/config/shortcuts-linux/\\\">>\u003C\u003Cshortcut-list NonLinux\\\"$:/config/shortcuts-not-linux/\\\">>\u003C\u003Cshortcut-list Windows\\\"$:/config/shortcuts-windows/\\\">>\u003C\u003Cshortcut-list NonWindows\\\"$:/config/shortcuts-not-windows/\\\">>\\n\\\\define shortcut-preview()\u003C$macrocall $output=\\\"text/html\\\"shortcuts={{$(shortcutPrefix)$$(shortcutName)$}}prefix=\\\"\u003Ckbd>\\\"separator=\\\"\u003C/kbd> \u003Ckbd>\\\"suffix=\\\"\u003C/kbd>\\\"$name=displayshortcuts/>\\n\\\\define shortcut-item-inner()\u003Ctr>\u003Ctd>\u003C$reveal type=nomatch state=\u003C\u003CdropdownStateTitle>>text=open>\u003C$button class=tc-btn-invisible>\u003C$action-setfield $tiddler=\u003C\u003CdropdownStateTitle>>$value=open/>{{$:/core/images/right-arrow}}\u003C/$button>\u003C/$reveal>\u003C$reveal type=match state=\u003C\u003CdropdownStateTitle>>text=open>\u003C$button class=tc-btn-invisible>\u003C$action-setfield $tiddler=\u003C\u003CdropdownStateTitle>>$value=close/>{{$:/core/images/down-arrow}}\u003C/$button>\u003C/$reveal> ''\u003C$text text=\u003C\u003CshortcutName>>/>''\u003C/td>\u003Ctd>\u003C$transclude tiddler=\\\"$:/config/ShortcutInfo/$(shortcutName)$\\\"/>\u003C/td>\u003Ctd>\u003C$list filter='$:/config/shortcuts/ $:/config/shortcuts-mac/ $:/config/shortcuts-not-mac/ $:/config/shortcuts-linux/ $:/config/shortcuts-not-linux/ $:/config/shortcuts-windows/ $:/config/shortcuts-not-windows/'variable=shortcutPrefix>\u003C\u003Cshortcut-preview>>\u003C/$list>\u003C/td>\u003C/tr>\u003C$let dropdownState={{$(dropdownStateTitle)$}}>\u003C$list filter='[\u003CdropdownState>match[open]]'variable=listItem>\u003C\u003Cshortcut-editor>>\\n\\\\define shortcut-item()\u003C$let dropdownStateTitle=\u003C\u003Cqualify\\\"$:/state/dropdown/keyboardshortcut/$(shortcutName)$\\\">>>\u003C\u003Cshortcut-item-inner>>\\n\u003Ctable>\u003Ctbody>\u003C$list filter='[all[shadows+tiddlers]removeprefix[$:/config/ShortcutInfo/]]'variable=shortcutName>\u003C\u003Cshortcut-item>>\"},\"$:/core/ui/ControlPanel/LoadedModules\":{\"tags\":\"$:/tags/ControlPanel/Advanced\",\"caption\":\"{{$:/language/ControlPanel/LoadedModules/Caption}}\",\"text\":\"\\\\define lingo-base()$:/language/ControlPanel/\\n\u003C\u003Clingo LoadedModules/Hint>>\\n\\n{{$:/snippets/modules}}\"},\"$:/core/ui/ControlPanel/Modals/AddPlugins\":{\"subtitle\":\"{{$:/core/images/download-button}} {{$:/language/ControlPanel/Plugins/Add/Caption}}\",\"text\":\"\\\\define install-plugin-actions()\u003C$action-sendmessage url={{!!url}}title={{$(assetInfo)$!!original-title}}$message=tm-load-plugin-from-library/>\u003C$let url={{!!url}}currentTiddler=\u003C\u003CassetInfo>>>\u003C$list filter=[enlist{!!dependents}][{!!parent-plugin}]+[sort[name]] variable=dependency>\u003C$action-sendmessage url=\u003C\u003Curl>>title=\u003C\u003Cdependency>>$message=tm-load-plugin-from-library/>\\n\\\\define install-plugin-button()\u003Cdiv>\u003C$let libraryVersion={{{[\u003CassetInfo>get[version]]}}}installedVersion={{{[\u003CassetInfo>get[original-title]get[version]]}}}reinstall-type={{{[\u003ClibraryVersion>compare:version:eq\u003CinstalledVersion>then[tc-reinstall]][\u003ClibraryVersion>compare:version:gt\u003CinstalledVersion>then[tc-reinstall-upgrade]][\u003ClibraryVersion>compare:version:lt\u003CinstalledVersion>then[tc-reinstall-downgrade]]}}}>\u003C$button actions=\u003C\u003Cinstall-plugin-actions>>class={{{[\u003CassetInfo>get[original-title]has[version]then\u003Creinstall-type>]tc-btn-invisible tc-install-plugin +[join[ ]]}}}>{{$:/core/images/download-button}} \u003C$list filter='[\u003CassetInfo>get[original-title]get[version]]'emptyMessage='{{$:/language/ControlPanel/Plugins/Install/Caption}}'variable=ignore>\u003C$list filter='[\u003ClibraryVersion>compare:version:gt\u003CinstalledVersion>]'emptyMessage=\\\"\u003C$list filter='[\u003ClibraryVersion>compare:version:lt\u003CinstalledVersion>]'emptyMessage='{{$:/language/ControlPanel/Plugins/Reinstall/Caption}}'variable=ignore>{{$:/language/ControlPanel/Plugins/Downgrade/Caption}}\\\"variable=ignore>{{$:/language/ControlPanel/Plugins/Update/Caption}}\u003C/$list>\u003C/$list>\u003C/$button>\u003Cdiv>\u003C/div>\u003C$reveal stateTitle=\u003C\u003CassetInfo>>stateField=requires-reload type=match text=yes>{{$:/language/ControlPanel/Plugins/PluginWillRequireReload}}\\n\\\\define popup-state-macro()$:/state/add-plugin-info/$(connectionTiddler)$/$(assetInfo)$\\n\\\\define display-plugin-info(type)\u003C$let popup-state=\u003C\u003Cpopup-state-macro>>>\u003Cdiv class=tc-plugin-info>\u003Cdiv class=\\\"tc-plugin-info-chunk tc-plugin-info-toggle\\\">\u003C$reveal type=nomatch state=\u003C\u003Cpopup-state>>text=yes>\u003C$button class=\\\"tc-btn-invisible tc-btn-dropdown\\\"set=\u003C\u003Cpopup-state>>setTo=yes>{{$:/core/images/chevron-right}}\u003C/$button>\u003C/$reveal>\u003C$reveal type=match state=\u003C\u003Cpopup-state>>text=yes>\u003C$button class=\\\"tc-btn-invisible tc-btn-dropdown\\\"set=\u003C\u003Cpopup-state>>setTo=no>{{$:/core/images/chevron-down}}\u003C/$button>\u003C/$reveal>\u003C/div>\u003Cdiv class=\\\"tc-plugin-info-chunk tc-plugin-info-icon\\\">\u003C$list filter=\\\"[\u003CassetInfo>has[icon]]\\\"emptyMessage=\\\"\\\"\\\"\u003C$transclude tiddler=\\\"$:/core/images/plugin-generic-$type$\\\"/>\\\"\\\"\\\">\u003Cimg src={{$(assetInfo)$!!icon}}>\u003C/$list>\u003C/div>\u003Cdiv class=\\\"tc-plugin-info-chunk tc-plugin-info-description\\\">\u003Ch1>\u003Cstrong>\u003C$text text={{{[\u003CassetInfo>get[name]]~[\u003CassetInfo>get[original-title]split[/]last[1]]}}}/>\u003C/strong>: \u003C$view tiddler=\u003C\u003CassetInfo>>field=description/>\u003C/h1>\u003Ch2>\u003C$view tiddler=\u003C\u003CassetInfo>>field=original-title/>\u003C/h2>\u003Cdiv>\u003Cem>\u003C$view tiddler=\u003C\u003CassetInfo>>field=version/>\u003C/em>\u003C/div>\u003C$list filter=\\\"[\u003CassetInfo>get[original-title]get[version]]\\\"variable=installedVersion>\u003Cdiv>\u003Cem>{{$:/language/ControlPanel/Plugins/AlreadyInstalled/Hint}}\u003C/em>\u003C/div>\u003C/$list>\u003C/div>\u003Cdiv class=\\\"tc-plugin-info-chunk tc-plugin-info-buttons\\\">\u003C\u003Cinstall-plugin-button>>\u003C/div>\u003C/div>\u003C$let original-title={{{[\u003CassetInfo>get[original-title]]}}}>\u003C$reveal type=match state=\u003C\u003Cpopup-state>>text=yes>\u003Cdiv class=tc-plugin-info-dropdown>\u003C$list filter=\\\"[enlist{!!dependents}][{!!title}get[parent-plugin]]+[nth[]]~[\u003CassetInfo>get[original-title]!is[tiddler]]\\\"variable=ignore>\u003Cdiv class=tc-plugin-info-dropdown-message>\u003C$list filter=\\\"[\u003CassetInfo>get[original-title]!is[tiddler]]\\\">{{$:/language/ControlPanel/Plugins/NotInstalled/Hint}}\u003C/$list>\u003C$let currentTiddler=\u003C\u003CassetInfo>>>\u003C$list filter=[enlist{!!dependents}][{!!title}get[parent-plugin]]+[nth[]] variable=ignore>\u003Cdiv>{{$:/language/ControlPanel/Plugins/AlsoRequires}} \u003C$list filter=[enlist{!!dependents}][{!!parent-plugin}]+[sort[name]] variable=dependency>\u003C$text text=\u003C\u003Cdependency>>/> \u003C/$list>\u003C/div>\u003C/$list>\u003C/$let>\u003C/div>\u003C/$list>\u003Cdiv class=tc-plugin-info-dropdown-body>\u003C$transclude tiddler=\u003C\u003CassetInfo>>field=readme mode=block/>\u003C/div>\u003C$list filter=\\\"[[$:/tags/RemoteAssetInfo]tagging[]server-url{!!url}original-plugin-type[$type$]has[parent-plugin]parent-plugin\u003Coriginal-title>nth[]]\\\"variable=ignore>\u003Cdiv class=tc-plugin-info-sub-plugins>\u003C$list filter=\\\"[[$:/tags/RemoteAssetInfo]tagging[]server-url{!!url}original-plugin-type[$type$]has[parent-plugin]parent-plugin\u003Coriginal-title>sort[name]]\\\"variable=assetInfo>\u003C\u003Cdisplay-plugin-info\\\"$type$\\\">>\u003C/$list>\u003C/div>\u003C/$list>\u003C/div>\u003C/$reveal>\u003C$list filter=\\\"[[$:/tags/RemoteAssetInfo]tagging[]server-url{!!url}original-plugin-type[$type$]has[parent-plugin]parent-plugin\u003Coriginal-title>nth[]]\\\"variable=ignore>\u003C$reveal type=nomatch text=yes state=\u003C\u003Cpopup-state>>tag=div class=tc-plugin-info-sub-plugin-indicator>\u003C$wikify text=\\\"\\\"\\\"\u003C$count filter=\\\"[[$:/tags/RemoteAssetInfo]tagging[]server-url{!!url}original-plugin-type[$type$]has[parent-plugin]parent-plugin\u003Coriginal-title>]\\\"/>\\\"\\\"\\\"name=count>\u003C$button class=tc-btn-invisible set=\u003C\u003Cpopup-state>>setTo=yes>{{$:/language/ControlPanel/Plugins/SubPluginPrompt}}\\n\\\\define load-plugin-library-button()\u003C$list filter=[{!!title}get[enabled]else[yes]match[yes]] variable=ignore>\u003C$button class=tc-btn-big-green>\u003C$action-sendmessage url={{!!url}}infoTitlePrefix=\\\"$:/temp/RemoteAssetInfo/\\\"$message=tm-load-plugin-library/>{{$:/core/images/chevron-right}} {{$:/language/ControlPanel/Plugins/OpenPluginLibrary}}\\n\\\\define display-server-assets(type){{$:/language/Search/Search}}: \u003C$edit-text tiddler=\\\"\\\"\\\"$:/temp/RemoteAssetSearch/$(currentTiddler)$\\\"\\\"\\\"default=''type=search tag=input/> \u003C$reveal state=\\\"\\\"\\\"$:/temp/RemoteAssetSearch/$(currentTiddler)$\\\"\\\"\\\"text=''type=nomatch>\u003C$button class=tc-btn-invisible>\u003C$action-setfield $tiddler=\\\"\\\"\\\"$:/temp/RemoteAssetSearch/$(currentTiddler)$\\\"\\\"\\\"$value=''$field=text/>{{$:/core/images/close-button}}\u003C/$button>\u003C/$reveal>\u003Cdiv class=tc-plugin-library-listing>\u003C$list filter=\\\"[[$:/tags/RemoteAssetInfo]tagging[]server-url{!!url}original-plugin-type[$type$]search:author,description,original-title,readme,title{$:/temp/RemoteAssetSearch/$(currentTiddler)$}sort[name]]\\\"variable=assetInfo>\u003C$list filter=\\\"[[$:/temp/RemoteAssetSearch/$(currentTiddler)$]has[text]]~[\u003CassetInfo>!has[parent-plugin]]\\\"variable=ignore>\u003C\u003Cdisplay-plugin-info\\\"$type$\\\">>\\n\\\\define display-server-connection()\\n\u003C$list filter=\\\"[[$:/tags/ServerConnection]tagging[]suffix{!!url}]\\\"emptyMessage=\u003C\u003Cload-plugin-library-button>>variable=connectionTiddler>\\n\\n\u003C$set value=\u003C\u003CconnectionTiddler>>name=transclusion>\\n\\n\u003C\u003Ctabs\\\"[[$:/core/ui/ControlPanel/Plugins/Add/Updates]] [[$:/core/ui/ControlPanel/Plugins/Add/Plugins]] [[$:/core/ui/ControlPanel/Plugins/Add/Themes]] [[$:/core/ui/ControlPanel/Plugins/Add/Languages]]\\\"[[$:/core/ui/ControlPanel/Plugins/Add/Plugins]]>>\\n\\\\end\\n\\\\define close-library-button()\u003C$reveal state='$:/temp/ServerConnection/$(PluginLibraryURL)$'text=''type=nomatch>\u003C$button class=tc-btn-big-green>\u003C$action-sendmessage url={{!!url}}$message=tm-unload-plugin-library/>{{$:/core/images/chevron-left}} {{$:/language/ControlPanel/Plugins/ClosePluginLibrary}}\u003C$action-deletetiddler $filter=\\\"[prefix[$:/temp/ServerConnection/$(PluginLibraryURL)$]][prefix[$:/temp/RemoteAssetInfo/$(PluginLibraryURL)$]]\\\"/>\\n\\\\define plugin-library-listing()\u003Cdiv class=tc-tab-set>\u003C$let defaultTab={{{[[$:/tags/PluginLibrary]tagging[]]}}}>\u003Cdiv class=tc-tab-buttons>\u003C$list filter=\\\"[[$:/tags/PluginLibrary]tagging[]]\\\">\u003C$button set=\u003C\u003Cqualify [[$:/state/addplugins/tab]]>>setTo={{!!title}}default=\u003C\u003CdefaultTab>>selectedClass=tc-tab-selected>\u003C$let tv-wikilinks=no>\u003C$transclude field=caption/>\u003C/$let>\u003C/$button>\u003C/$list>\u003C/div>\u003Cdiv class=tc-tab-divider/>\u003Cdiv class=tc-tab-content>\u003C$list filter=\\\"[[$:/tags/PluginLibrary]tagging[]]\\\">\u003C$reveal state=\u003C\u003Cqualify [[$:/state/addplugins/tab]]>>text={{!!title}}default=\u003C\u003CdefaultTab>>type=match>\u003Ch2>\u003C$link>\u003C$transclude field=caption>\u003C$view field=title/>\u003C/$transclude>\u003C/$link>\u003C/h2>//\u003C$view field=url/>//\u003C$transclude mode=block/>\u003C$let PluginLibraryURL={{!!url}}>\u003C\u003Cclose-library-button>>\u003C/$let> \u003C\u003Cdisplay-server-connection>>\\n\\\\import $:/core/ui/PageMacros[[$:/tags/Macro]tagging[]!is[draft]]\\n\u003Cdiv>\u003C\u003Cplugin-library-listing>>\"},\"$:/core/ui/ControlPanel/Palette\":{\"tags\":\"$:/tags/ControlPanel/Appearance\",\"caption\":\"{{$:/language/ControlPanel/Palette/Caption}}\",\"text\":\"\\\\define lingo-base()$:/language/ControlPanel/Palette/\\n{{$:/snippets/paletteswitcher}}\\n\u003C$reveal type=nomatch state=\\\"$:/state/ShowPaletteEditor\\\"text=yes>\\n\\n\u003C$button set=\\\"$:/state/ShowPaletteEditor\\\"setTo=yes>\u003C\u003Clingo ShowEditor/Caption>>\u003C/$button>\\n\\n\u003C/$reveal>\u003C$reveal type=match state=\\\"$:/state/ShowPaletteEditor\\\"text=yes>\\n\\n\u003C$button set=\\\"$:/state/ShowPaletteEditor\\\"setTo=no>\u003C\u003Clingo HideEditor/Caption>>\u003C/$button>\\n{{$:/PaletteManager}}\"},\"$:/core/ui/ControlPanel/Parsing\":{\"tags\":\"$:/tags/ControlPanel/Advanced\",\"caption\":\"{{$:/language/ControlPanel/Parsing/Caption}}\",\"text\":\"\\\\define lingo-base()$:/language/ControlPanel/Parsing/\\n\\\\define toggle(Type)\u003C$checkbox tiddler=\\\"\\\"\\\"$:/config/WikiParserRules/$Type$/$(rule)$\\\"\\\"\\\"field=text checked=enable unchecked=disable default=enable>\u003C\u003Crule>>\\n\\\\define rules(type Type)\u003C$list filter=\\\"[wikiparserrules[$type$]]\\\"variable=rule>\u003Cdd>\u003C\u003Ctoggle $Type$>>\\n\u003C\u003Clingo Hint>>\\n\\n\u003Cdl>\u003Cdt>\u003C\u003Clingo Pragma/Caption>>\u003C/dt>\u003C\u003Crules pragma Pragma>>\u003Cdt>\u003C\u003Clingo Inline/Caption>>\u003C/dt>\u003C\u003Crules inline Inline>>\u003Cdt>\u003C\u003Clingo Block/Caption>>\u003C/dt>\u003C\u003Crules block Block>>\"},\"$:/core/ui/ControlPanel/Plugins/Add/Languages\":{\"caption\":\"{{$:/language/ControlPanel/Plugins/Languages/Caption}} (\u003C$count filter=\\\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[language]]\\\"/>)\",\"text\":\"\u003C\u003Cdisplay-server-assets language>>\"},\"$:/core/ui/ControlPanel/Plugins/Add/Plugins\":{\"caption\":\"{{$:/language/ControlPanel/Plugins/Plugins/Caption}} (\u003C$count filter=\\\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[plugin]]\\\"/>)\",\"text\":\"\u003C\u003Cdisplay-server-assets plugin>>\"},\"$:/core/ui/ControlPanel/Plugins/Add/Themes\":{\"caption\":\"{{$:/language/ControlPanel/Plugins/Themes/Caption}} (\u003C$count filter=\\\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[theme]]\\\"/>)\",\"text\":\"\u003C\u003Cdisplay-server-assets theme>>\"},\"$:/core/ui/ControlPanel/Plugins/Add/Updates\":{\"caption\":\"\u003C$importvariables filter=\\\"$:/core/ui/ControlPanel/Plugins/Add/Updates\\\">{{$:/language/ControlPanel/Plugins/Updates/Caption}} (\u003C\u003Cupdate-count>>)\u003C/$importvariables>\",\"text\":\"\\\\define each-updateable-plugin(body)\\n\\\\whitespace trim\\n\u003C$list filter=\\\"[[$:/tags/RemoteAssetInfo]tagging[]server-url{!!url}sort[title]]\\\"variable=assetInfo>\u003C$let libraryVersion={{{[\u003CassetInfo>get[version]]}}}>\u003C$list filter=\\\"[\u003CassetInfo>get[original-title]has[version]!version\u003ClibraryVersion>]\\\"variable=ignore>\u003C$let installedVersion={{{[\u003CassetInfo>get[original-title]get[version]]}}}>\u003C$list filter=\\\"[\u003Cinstalledversion>!match\u003ClibraryVersion>]\\\"variable=ignore>\\n$body$\\n\u003C/$list>\\n\\\\end\\n\\\\define update-all-actions()\\n\u003C$macrocall body=\\\"\\n\u003C\u003Cinstall-plugin-actions>>\\n\\\"$name=each-updateable-plugin/>\\n\\\\end\\n\\\\define update-count()\u003C$wikify text=\u003C\u003Ceach-updateable-plugin\\\"&#91;&#91;\u003C$text text=\u003C\u003CassetInfo>>/>]]\\\">>name=count-filter>\u003C$count filter=\u003C\u003Ccount-filter>>/>\\n\u003C$button actions=\u003C\u003Cupdate-all-actions>>class=\\\"tc-btn-invisible tc-install-plugin tc-reinstall-upgrade\\\">{{$:/core/images/download-button}} {{||$:/language/ControlPanel/Plugins/Updates/UpdateAll/Caption}}\u003C/$button>\\n\\n\u003Cdiv class=tc-plugin-library-listing>\u003C$macrocall body=\\\"\\\"\\\"\\n\u003C$macrocall $name=\\\"display-plugin-info\\\" type={{{ [\u003CassetInfo>get[original-plugin-type]] }}}/>\\n\\\"\\\"\\\"$name=each-updateable-plugin/>\"},\"$:/core/ui/ControlPanel/Plugins/AddPlugins\":{\"text\":\"\\\\define lingo-base()$:/language/ControlPanel/Plugins/\\n\u003C$button param=\\\"$:/core/ui/ControlPanel/Modals/AddPlugins\\\"tooltip={{$:/language/ControlPanel/Plugins/Add/Hint}}class=\\\"tc-btn-big-green tc-primary-btn\\\"message=tm-modal>{{$:/core/images/download-button}} \u003C\u003Clingo Add/Caption>>\"},\"$:/core/ui/ControlPanel/Plugins/Installed/Languages\":{\"tags\":\"$:/tags/ControlPanel/Plugins\",\"caption\":\"{{$:/language/ControlPanel/Plugins/Languages/Caption}} (\u003C$count filter=\\\"[!has[draft.of]plugin-type[language]]\\\"/>)\",\"text\":\"\u003C\u003Cplugin-table language>>\"},\"$:/core/ui/ControlPanel/Plugins/Installed/Plugins\":{\"tags\":\"$:/tags/ControlPanel/Plugins\",\"caption\":\"{{$:/language/ControlPanel/Plugins/Plugins/Caption}} (\u003C$count filter=\\\"[!has[draft.of]plugin-type[plugin]]\\\"/>)\",\"text\":\"\u003C\u003Cplugin-table plugin>>\"},\"$:/core/ui/ControlPanel/Plugins/Installed/Themes\":{\"tags\":\"$:/tags/ControlPanel/Plugins\",\"caption\":\"{{$:/language/ControlPanel/Plugins/Themes/Caption}} (\u003C$count filter=\\\"[!has[draft.of]plugin-type[theme]]\\\"/>)\",\"text\":\"\u003C\u003Cplugin-table theme>>\"},\"$:/core/ui/ControlPanel/Plugins\":{\"tags\":\"$:/tags/ControlPanel\",\"caption\":\"{{$:/language/ControlPanel/Plugins/Caption}}\",\"text\":\"\\\\define lingo-base()$:/language/ControlPanel/Plugins/\\n\\\\define plugin-table(type)\u003C$let plugin-type=\\\"\\\"\\\"$type$\\\"\\\"\\\"qualified-state=\u003C\u003Cqualify [[$:/state/plugin-info]]>>>\u003C$list filter=\\\"[!is[draft]plugin-type[$type$]sort[name]]\\\"emptyMessage=\u003C\u003Clingo Empty/Hint>>template=\\\"$:/core/ui/Components/plugin-info\\\"/>\\n{{$:/core/ui/ControlPanel/Plugins/AddPlugins}}\\n\u003C\u003Clingo Installed/Hint>>\\n\\n\u003C$macrocall tabsList=\\\"[all[tiddlers+shadows]tag[$:/tags/ControlPanel/Plugins]!has[draft.of]]\\\"default=\\\"$:/core/ui/ControlPanel/Plugins/Installed/Plugins\\\"explicitState=\\\"$:/state/tab--86143343\\\"$name=tabs/>\\n\"},\"$:/core/ui/ControlPanel/Saving/DownloadSaver\":{\"tags\":\"$:/tags/ControlPanel/Saving\",\"caption\":\"{{$:/language/ControlPanel/Saving/DownloadSaver/Caption}}\",\"text\":\"\\\\define lingo-base()$:/language/ControlPanel/Saving/DownloadSaver/\\n\u003C\u003Clingo Hint>>\\n\\n!! \u003C$link to=\\\"$:/config/DownloadSaver/AutoSave\\\">\u003C\u003Clingo AutoSave/Hint>>\u003C/$link>\\n\\n\u003C$checkbox tiddler=\\\"$:/config/DownloadSaver/AutoSave\\\"field=text checked=yes unchecked=no default=no> \u003C\u003Clingo AutoSave/Description>> \u003C/$checkbox>\\n\"},\"$:/core/ui/ControlPanel/Saving/General\":{\"tags\":\"$:/tags/ControlPanel/Saving\",\"caption\":\"{{$:/language/ControlPanel/Saving/General/Caption}}\",\"list-before\":\"\",\"text\":\"\\\\define lingo-base()$:/language/ControlPanel/Settings/\\n{{$:/language/ControlPanel/Saving/General/Hint}}\\n!! \u003C$link to=\\\"$:/config/AutoSave\\\">\u003C\u003Clingo AutoSave/Caption>>\u003C/$link>\\n\\n\u003C\u003Clingo AutoSave/Hint>>\\n\\n\u003C$radio tiddler=\\\"$:/config/AutoSave\\\"value=yes> \u003C\u003Clingo AutoSave/Enabled/Description>> \u003C/$radio>\\n\\n\u003C$radio tiddler=\\\"$:/config/AutoSave\\\"value=no> \u003C\u003Clingo AutoSave/Disabled/Description>> \u003C/$radio>\\n\"},\"$:/core/ui/ControlPanel/Saving/GitHub\":{\"tags\":\"$:/tags/ControlPanel/Saving\",\"caption\":\"{{$:/language/ControlPanel/Saving/GitService/GitHub/Caption}}\",\"text\":\"\\\\define lingo-base()$:/language/ControlPanel/Saving/GitService/\\n\\\\define service-name()~GitHub\\n\u003C\u003Clingo Description>>\\n\\n|\u003C\u003Clingo UserName>> |\u003C$edit-text tiddler=\\\"$:/GitHub/Username\\\"default=\\\"\\\"tag=input/> |\\n|\u003C\u003Clingo GitHub/Password>> |\u003C$password name=github/> |\\n|\u003C\u003Clingo Repo>> |\u003C$edit-text tiddler=\\\"$:/GitHub/Repo\\\"default=\\\"\\\"tag=input/> |\\n|\u003C\u003Clingo Branch>> |\u003C$edit-text tiddler=\\\"$:/GitHub/Branch\\\"default=main tag=input/> |\\n|\u003C\u003Clingo Path>> |\u003C$edit-text tiddler=\\\"$:/GitHub/Path\\\"default=\\\"\\\"tag=input/> |\\n|\u003C\u003Clingo Filename>> |\u003C$edit-text tiddler=\\\"$:/GitHub/Filename\\\"default=\\\"\\\"tag=input/> |\\n|\u003C\u003Clingo ServerURL>> |\u003C$edit-text tiddler=\\\"$:/GitHub/ServerURL\\\"default=\\\"https://api.github.com\\\"tag=input/> |\"},\"$:/core/ui/ControlPanel/Saving/GitLab\":{\"tags\":\"$:/tags/ControlPanel/Saving\",\"caption\":\"{{$:/language/ControlPanel/Saving/GitService/GitLab/Caption}}\",\"text\":\"\\\\define lingo-base()$:/language/ControlPanel/Saving/GitService/\\n\\\\define service-name()~GitLab\\n\u003C\u003Clingo Description>>\\n\\n|\u003C\u003Clingo UserName>> |\u003C$edit-text tiddler=\\\"$:/GitLab/Username\\\"default=\\\"\\\"tag=input/> |\\n|\u003C\u003Clingo GitLab/Password>> |\u003C$password name=gitlab/> |\\n|\u003C\u003Clingo Repo>> |\u003C$edit-text tiddler=\\\"$:/GitLab/Repo\\\"default=\\\"\\\"tag=input/> |\\n|\u003C\u003Clingo Branch>> |\u003C$edit-text tiddler=\\\"$:/GitLab/Branch\\\"default=master tag=input/> |\\n|\u003C\u003Clingo Path>> |\u003C$edit-text tiddler=\\\"$:/GitLab/Path\\\"default=\\\"\\\"tag=input/> |\\n|\u003C\u003Clingo Filename>> |\u003C$edit-text tiddler=\\\"$:/GitLab/Filename\\\"default=\\\"\\\"tag=input/> |\\n|\u003C\u003Clingo ServerURL>> |\u003C$edit-text tiddler=\\\"$:/GitLab/ServerURL\\\"default=\\\"https://gitlab.com/api/v4\\\"tag=input/> |\"},\"$:/core/ui/ControlPanel/Saving/TiddlySpot\":{\"tags\":\"$:/tags/ControlPanel/Saving\",\"caption\":\"{{$:/language/ControlPanel/Saving/TiddlySpot/Caption}}\",\"text\":\"\\\\define lingo-base()$:/language/ControlPanel/Saving/TiddlySpot/\\n\\\\define siteURL(path)http://$(userName)$.tiddlyspot.com/$path$/\\n\\\\define siteLink(path)\u003C$reveal state=\\\"$:/UploadName\\\"text=\\\"\\\"type=nomatch>\u003C$let userName={{$:/UploadName}}>\u003C$reveal state=\\\"$:/UploadURL\\\"text=\\\"\\\"type=match>\u003C\u003CsiteURL $path$>>\u003C/$reveal>\u003C$reveal state=\\\"$:/UploadURL\\\"text=\\\"\\\"type=nomatch>\u003C$macrocall source={{$:/UploadBackupDir}}root={{$:/UploadURL}}$name=resolvePath/>\\n\u003Cdiv class=tc-message-box>\\n\\n\u003C\u003Clingo ReadOnly>>\\n\\n\u003C/div>\u003C\u003Clingo Description>>\\n\\n|\u003C\u003Clingo UserName>> |\u003C$edit-text tiddler='$:/UploadName'default=''tag=input/> |\\n|\u003C\u003Clingo Password>> |\u003C$password name=upload/> |\\n''\u003C\u003Clingo Advanced/Heading>>''\\n\\n|\u003C\u003Clingo ServerURL>> |\u003C$edit-text tiddler='$:/UploadURL'default=''tag=input/> |\\n|\u003C\u003Clingo Filename>> |\u003C$edit-text tiddler='$:/UploadFilename'default=index.html tag=input/> |\\n|\u003C\u003Clingo UploadDir>> |\u003C$edit-text tiddler='$:/UploadDir'default=. tag=input/> |\\n|\u003C\u003Clingo BackupDir>> |\u003C$edit-text tiddler='$:/UploadBackupDir'default=. tag=input/> |\\n\u003C\u003Clingo TiddlySpot/Hint>>\"},\"$:/core/ui/ControlPanel/Saving/Gitea\":{\"tags\":\"$:/tags/ControlPanel/Saving\",\"caption\":\"{{$:/language/ControlPanel/Saving/GitService/Gitea/Caption}}\",\"text\":\"\\\\define lingo-base()$:/language/ControlPanel/Saving/GitService/\\n\\\\define service-name()~Gitea\\n\u003C\u003Clingo Description>>\\n\\n|\u003C\u003Clingo UserName>> |\u003C$edit-text tiddler=\\\"$:/Gitea/Username\\\"default=\\\"\\\"tag=input/> |\\n|\u003C\u003Clingo Gitea/Password>> |\u003C$password name=Gitea/> |\\n|\u003C\u003Clingo Repo>> |\u003C$edit-text tiddler=\\\"$:/Gitea/Repo\\\"default=\\\"\\\"tag=input/> |\\n|\u003C\u003Clingo Branch>> |\u003C$edit-text tiddler=\\\"$:/Gitea/Branch\\\"default=master tag=input/> |\\n|\u003C\u003Clingo Path>> |\u003C$edit-text tiddler=\\\"$:/Gitea/Path\\\"default=\\\"\\\"tag=input/> |\\n|\u003C\u003Clingo Filename>> |\u003C$edit-text tiddler=\\\"$:/Gitea/Filename\\\"default=\\\"\\\"tag=input/> |\\n|\u003C\u003Clingo ServerURL>> |\u003C$edit-text tiddler=\\\"$:/Gitea/ServerURL\\\"default=\\\"https://gitea/api/v1\\\"tag=input/> |\"},\"$:/core/ui/ControlPanel/Saving\":{\"tags\":\"$:/tags/ControlPanel\",\"caption\":\"{{$:/language/ControlPanel/Saving/Caption}}\",\"text\":\"{{$:/language/ControlPanel/Saving/Hint}}\\n\u003Cdiv class=tc-control-panel>\u003C$macrocall tabsList=\\\"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Saving]!has[draft.of]]\\\"default=\\\"$:/core/ui/ControlPanel/Saving/General\\\"explicitState=\\\"$:/state/tab-2065006209\\\"$name=tabs/>\"},\"$:/core/buttonstyles/Borderless\":{\"tags\":\"$:/tags/ToolbarButtonStyle\",\"caption\":\"{{$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Borderless}}\",\"text\":\"tc-btn-invisible\"},\"$:/core/buttonstyles/Boxed\":{\"tags\":\"$:/tags/ToolbarButtonStyle\",\"caption\":\"{{$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Boxed}}\",\"text\":\"tc-btn-boxed\"},\"$:/core/buttonstyles/Rounded\":{\"tags\":\"$:/tags/ToolbarButtonStyle\",\"caption\":\"{{$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Rounded}}\",\"text\":\"tc-btn-rounded\"},\"$:/core/ui/ControlPanel/Settings/CamelCase\":{\"tags\":\"$:/tags/ControlPanel/Settings\",\"caption\":\"{{$:/language/ControlPanel/Settings/CamelCase/Caption}}\",\"text\":\"\\\\define lingo-base()$:/language/ControlPanel/Settings/CamelCase/\\n\u003C\u003Clingo Hint>>\\n\\n\u003C$checkbox tiddler=\\\"$:/config/WikiParserRules/Inline/wikilink\\\"field=text checked=enable unchecked=disable default=enable> \u003C$link to=\\\"$:/config/WikiParserRules/Inline/wikilink\\\">\u003C\u003Clingo Description>>\u003C/$link> \u003C/$checkbox>\\n\"},\"$:/core/ui/ControlPanel/Settings/DefaultMoreSidebarTab\":{\"caption\":\"{{$:/language/ControlPanel/Settings/DefaultMoreSidebarTab/Caption}}\",\"tags\":\"$:/tags/ControlPanel/Settings\",\"text\":\"\\\\define lingo-base()$:/language/ControlPanel/Settings/DefaultMoreSidebarTab/\\n\u003C$link to=\\\"$:/config/DefaultMoreSidebarTab\\\">\u003C\u003Clingo Hint>>\u003C/$link>\\n\\n\u003C$select tiddler=\\\"$:/config/DefaultMoreSidebarTab\\\">\u003C$list filter=\\\"[[$:/tags/MoreSideBar]tagging[]!is[draft]]\\\">\u003Coption value={{!!title}}>\u003C$transclude field=caption>\u003C$text text={{!!title}}/>\"},\"$:/core/ui/ControlPanel/Settings/DefaultSidebarTab\":{\"caption\":\"{{$:/language/ControlPanel/Settings/DefaultSidebarTab/Caption}}\",\"tags\":\"$:/tags/ControlPanel/Settings\",\"text\":\"\\\\define lingo-base()$:/language/ControlPanel/Settings/DefaultSidebarTab/\\n\u003C$link to=\\\"$:/config/DefaultSidebarTab\\\">\u003C\u003Clingo Hint>>\u003C/$link>\\n\\n\u003C$select tiddler=\\\"$:/config/DefaultSidebarTab\\\">\u003C$list filter=\\\"[[$:/tags/SideBar]tagging[]!is[draft]]\\\">\u003Coption value={{!!title}}>\u003C$transclude field=caption>\u003C$text text={{!!title}}/>\"},\"$:/core/ui/ControlPanel/Settings/EditorToolbar\":{\"tags\":\"$:/tags/ControlPanel/Settings\",\"caption\":\"{{$:/language/ControlPanel/Settings/EditorToolbar/Caption}}\",\"text\":\"\\\\define lingo-base()$:/language/ControlPanel/Settings/EditorToolbar/\\n\u003C\u003Clingo Hint>>\\n\\n\u003C$checkbox tiddler=\\\"$:/config/TextEditor/EnableToolbar\\\"field=text checked=yes unchecked=no default=yes> \u003C$link to=\\\"$:/config/TextEditor/EnableToolbar\\\">\u003C\u003Clingo Description>>\u003C/$link> \"},\"$:/core/ui/ControlPanel/Settings/InfoPanelMode\":{\"tags\":\"$:/tags/ControlPanel/Settings\",\"caption\":\"{{$:/language/ControlPanel/Settings/InfoPanelMode/Caption}}\",\"text\":\"\\\\define lingo-base()$:/language/ControlPanel/Settings/InfoPanelMode/\\n\u003C$link to=\\\"$:/config/TiddlerInfo/Mode\\\">\u003C\u003Clingo Hint>>\u003C/$link>\\n\\n\u003C$radio tiddler=\\\"$:/config/TiddlerInfo/Mode\\\"value=popup> \u003C\u003Clingo Popup/Description>> \u003C/$radio>\\n\\n\u003C$radio tiddler=\\\"$:/config/TiddlerInfo/Mode\\\"value=sticky> \u003C\u003Clingo Sticky/Description>> \u003C/$radio>\\n\"},\"$:/core/ui/ControlPanel/Settings/LinkToBehaviour\":{\"tags\":\"$:/tags/ControlPanel/Settings\",\"caption\":\"{{$:/language/ControlPanel/Settings/LinkToBehaviour/Caption}}\",\"text\":\"\\\\define lingo-base()$:/language/ControlPanel/Settings/LinkToBehaviour/\\n\u003C$link to=\\\"$:/config/Navigation/openLinkFromInsideRiver\\\">\u003C\u003Clingo InsideRiver/Hint>>\u003C/$link>\\n\\n\u003C$select tiddler=\\\"$:/config/Navigation/openLinkFromInsideRiver\\\">\u003Coption value=above>\u003C\u003Clingo OpenAbove>>\u003C/option>\u003Coption value=below>\u003C\u003Clingo OpenBelow>>\u003C/option>\u003Coption value=top>\u003C\u003Clingo OpenAtTop>>\u003C/option>\u003Coption value=bottom>\u003C\u003Clingo OpenAtBottom>>\u003C/option>\u003C/$select>\\n\\n\u003C$link to=\\\"$:/config/Navigation/openLinkFromOutsideRiver\\\">\u003C\u003Clingo OutsideRiver/Hint>>\u003C/$link>\\n\\n\u003C$select tiddler=\\\"$:/config/Navigation/openLinkFromOutsideRiver\\\">\u003Coption value=top>\u003C\u003Clingo OpenAtTop>>\u003C/option>\u003Coption value=bottom>\u003C\u003Clingo OpenAtBottom>>\"},\"$:/core/ui/ControlPanel/Settings/MissingLinks\":{\"tags\":\"$:/tags/ControlPanel/Settings\",\"caption\":\"{{$:/language/ControlPanel/Settings/MissingLinks/Caption}}\",\"text\":\"\\\\define lingo-base()$:/language/ControlPanel/Settings/MissingLinks/\\n\u003C\u003Clingo Hint>>\\n\\n\u003C$checkbox tiddler=\\\"$:/config/MissingLinks\\\"field=text checked=yes unchecked=no default=yes> \u003C$link to=\\\"$:/config/MissingLinks\\\">\u003C\u003Clingo Description>>\u003C/$link> \"},\"$:/core/ui/ControlPanel/Settings/NavigationAddressBar\":{\"tags\":\"$:/tags/ControlPanel/Settings\",\"caption\":\"{{$:/language/ControlPanel/Settings/NavigationAddressBar/Caption}}\",\"text\":\"\\\\define lingo-base()$:/language/ControlPanel/Settings/NavigationAddressBar/\\n\u003C$link to=\\\"$:/config/Navigation/UpdateAddressBar\\\">\u003C\u003Clingo Hint>>\u003C/$link>\\n\\n\u003C$radio tiddler=\\\"$:/config/Navigation/UpdateAddressBar\\\"value=permaview> \u003C\u003Clingo Permaview/Description>> \u003C/$radio>\\n\\n\u003C$radio tiddler=\\\"$:/config/Navigation/UpdateAddressBar\\\"value=permalink> \u003C\u003Clingo Permalink/Description>> \u003C/$radio>\\n\\n\u003C$radio tiddler=\\\"$:/config/Navigation/UpdateAddressBar\\\"value=no> \u003C\u003Clingo No/Description>> \u003C/$radio>\\n\"},\"$:/core/ui/ControlPanel/Settings/NavigationHistory\":{\"tags\":\"$:/tags/ControlPanel/Settings\",\"caption\":\"{{$:/language/ControlPanel/Settings/NavigationHistory/Caption}}\",\"text\":\"\\\\define lingo-base()$:/language/ControlPanel/Settings/NavigationHistory/\\n\u003C$link to=\\\"$:/config/Navigation/UpdateHistory\\\">\u003C\u003Clingo Hint>>\u003C/$link>\\n\\n\u003C$radio tiddler=\\\"$:/config/Navigation/UpdateHistory\\\"value=yes> \u003C\u003Clingo Yes/Description>> \u003C/$radio>\\n\\n\u003C$radio tiddler=\\\"$:/config/Navigation/UpdateHistory\\\"value=no> \u003C\u003Clingo No/Description>> \u003C/$radio>\\n\"},\"$:/core/ui/ControlPanel/Settings/NavigationPermalinkviewMode\":{\"tags\":\"$:/tags/ControlPanel/Settings\",\"caption\":\"{{$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/Caption}}\",\"text\":\"\\\\define lingo-base()$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/\\n\u003C\u003Clingo Hint>>\\n\\n\u003C$checkbox tiddler=\\\"$:/config/Navigation/Permalinkview/CopyToClipboard\\\"field=text checked=yes unchecked=no default=yes> \u003C$link to=\\\"$:/config/Navigation/Permalinkview/CopyToClipboard\\\">\u003C\u003Clingo CopyToClipboard/Description>>\u003C/$link> \u003C/$checkbox>\\n\\n\u003C$checkbox tiddler=\\\"$:/config/Navigation/Permalinkview/UpdateAddressBar\\\"field=text checked=yes unchecked=no default=yes> \u003C$link to=\\\"$:/config/Navigation/Permalinkview/UpdateAddressBar\\\">\u003C\u003Clingo UpdateAddressBar/Description>>\u003C/$link> \u003C/$checkbox>\\n\"},\"$:/core/ui/ControlPanel/Settings/PerformanceInstrumentation\":{\"tags\":\"$:/tags/ControlPanel/Settings\",\"caption\":\"{{$:/language/ControlPanel/Settings/PerformanceInstrumentation/Caption}}\",\"text\":\"\\\\define lingo-base()$:/language/ControlPanel/Settings/PerformanceInstrumentation/\\n\u003C\u003Clingo Hint>>\\n\\n\u003C$checkbox tiddler=\\\"$:/config/Performance/Instrumentation\\\"field=text checked=yes unchecked=no default=no> \u003C$link to=\\\"$:/config/Performance/Instrumentation\\\">\u003C\u003Clingo Description>>\u003C/$link> \u003C/$checkbox>\\n\"},\"$:/core/ui/ControlPanel/Settings/TitleLinks\":{\"tags\":\"$:/tags/ControlPanel/Settings\",\"caption\":\"{{$:/language/ControlPanel/Settings/TitleLinks/Caption}}\",\"text\":\"\\\\define lingo-base()$:/language/ControlPanel/Settings/TitleLinks/\\n\u003C$link to=\\\"$:/config/Tiddlers/TitleLinks\\\">\u003C\u003Clingo Hint>>\u003C/$link>\\n\\n\u003C$radio tiddler=\\\"$:/config/Tiddlers/TitleLinks\\\"value=yes> \u003C\u003Clingo Yes/Description>> \u003C/$radio>\\n\\n\u003C$radio tiddler=\\\"$:/config/Tiddlers/TitleLinks\\\"value=no> \u003C\u003Clingo No/Description>> \u003C/$radio>\\n\"},\"$:/core/ui/ControlPanel/Settings/ToolbarButtonStyle\":{\"tags\":\"$:/tags/ControlPanel/Settings\",\"caption\":\"{{$:/language/ControlPanel/Settings/ToolbarButtonStyle/Caption}}\",\"text\":\"\\\\define lingo-base()$:/language/ControlPanel/Settings/ToolbarButtonStyle/\\n\u003C$link to=\\\"$:/config/Toolbar/ButtonClass\\\">\u003C\u003Clingo Hint>>\u003C/$link>\\n\\n\u003C$select tiddler=\\\"$:/config/Toolbar/ButtonClass\\\">\u003C$list filter=\\\"[[$:/tags/ToolbarButtonStyle]tagging[]]\\\">\u003Coption value={{!!text}}>{{!!caption}}\"},\"$:/core/ui/ControlPanel/Settings/ToolbarButtons\":{\"tags\":\"$:/tags/ControlPanel/Settings\",\"caption\":\"{{$:/language/ControlPanel/Settings/ToolbarButtons/Caption}}\",\"text\":\"\\\\define lingo-base()$:/language/ControlPanel/Settings/ToolbarButtons/\\n\u003C\u003Clingo Hint>>\\n\\n\u003C$checkbox tiddler=\\\"$:/config/Toolbar/Icons\\\"field=text checked=yes unchecked=no default=yes> \u003C$link to=\\\"$:/config/Toolbar/Icons\\\">\u003C\u003Clingo Icons/Description>>\u003C/$link> \u003C/$checkbox>\\n\\n\u003C$checkbox tiddler=\\\"$:/config/Toolbar/Text\\\"field=text checked=yes unchecked=no default=no> \u003C$link to=\\\"$:/config/Toolbar/Text\\\">\u003C\u003Clingo Text/Description>>\u003C/$link> \u003C/$checkbox>\\n\"},\"$:/core/ui/ControlPanel/Settings\":{\"tags\":\"$:/tags/ControlPanel\",\"caption\":\"{{$:/language/ControlPanel/Settings/Caption}}\",\"text\":\"\\\\define lingo-base()$:/language/ControlPanel/Settings/\\n\u003C\u003Clingo Hint>>\\n\\n\u003C$list filter=\\\"[[$:/tags/ControlPanel/Settings]tagging[]]\\\">\\n\\n\u003Cdiv style=\\\"border-top:1px solid #eee;\\\">\\n\\n!! \u003C$link>\u003C$transclude field=\\\"caption\\\"/>\u003C/$link>\\n\\n{{}}\"},\"$:/core/ui/ControlPanel/StoryView\":{\"tags\":\"$:/tags/ControlPanel/Appearance\",\"caption\":\"{{$:/language/ControlPanel/StoryView/Caption}}\",\"text\":\"{{$:/snippets/viewswitcher}}\"},\"$:/core/ui/ControlPanel/Stylesheets\":{\"tags\":\"$:/tags/ControlPanel/Advanced\",\"caption\":\"{{$:/language/ControlPanel/Stylesheets/Caption}}\",\"text\":\"\\\\define lingo-base()$:/language/ControlPanel/\\n\u003C\u003Clingo Stylesheets/Hint>>\\n\\n{{$:/snippets/peek-stylesheets}}\"},\"$:/core/ui/ControlPanel/Theme\":{\"tags\":\"$:/tags/ControlPanel/Appearance\",\"caption\":\"{{$:/language/ControlPanel/Theme/Caption}}\",\"text\":\"{{$:/snippets/themeswitcher}}\"},\"$:/core/ui/ControlPanel/TiddlerFields\":{\"tags\":\"$:/tags/ControlPanel/Advanced\",\"caption\":\"{{$:/language/ControlPanel/TiddlerFields/Caption}}\",\"text\":\"\\\\define lingo-base()$:/language/ControlPanel/\\n\u003C\u003Clingo TiddlerFields/Hint>>\\n\\n{{$:/snippets/allfields}}\"},\"$:/core/ui/ControlPanel/Toolbars/EditToolbar\":{\"tags\":\"$:/tags/ControlPanel/Toolbars\",\"caption\":\"{{$:/language/ControlPanel/Toolbars/EditToolbar/Caption}}\",\"text\":\"\\\\define lingo-base()$:/language/TiddlerInfo/\\n\\\\define config-base()$:/config/EditToolbarButtons/Visibility/\\n{{$:/language/ControlPanel/Toolbars/EditToolbar/Hint}}\\n\u003C$let tv-config-toolbar-icons=yes tv-config-toolbar-text=yes>\\n\\n\u003C$macrocall tag=\\\"$:/tags/EditToolbar\\\"itemTemplate=\\\"$:/core/ui/ControlPanel/Toolbars/ItemTemplate\\\"$name=list-tagged-draggable/>\\n\"},\"$:/core/ui/ControlPanel/Toolbars/EditorItemTemplate\":{\"text\":\"\\\\define config-title()$(config-base)$$(currentTiddler)$\\n\u003C$draggable tiddler={{!!title}}>\u003C$checkbox tiddler=\u003C\u003Cconfig-title>>field=text checked=show unchecked=hide default=show/> \u003Cspan class=tc-icon-wrapper>\u003C$transclude tiddler={{!!icon}}/>\u003C/span> \u003C$transclude field=caption/> -- \u003Ci class=tc-muted>\u003C$transclude field=description/>\"},\"$:/core/ui/ControlPanel/Toolbars/EditorToolbar\":{\"tags\":\"$:/tags/ControlPanel/Toolbars\",\"caption\":\"{{$:/language/ControlPanel/Toolbars/EditorToolbar/Caption}}\",\"text\":\"\\\\define lingo-base()$:/language/TiddlerInfo/\\n\\\\define config-base()$:/config/EditorToolbarButtons/Visibility/\\n{{$:/language/ControlPanel/Toolbars/EditorToolbar/Hint}}\\n\u003C$macrocall tag=\\\"$:/tags/EditorToolbar\\\"itemTemplate=\\\"$:/core/ui/ControlPanel/Toolbars/EditorItemTemplate\\\"$name=list-tagged-draggable/>\\n\"},\"$:/core/ui/ControlPanel/Toolbars/ItemTemplate\":{\"text\":\"\\\\define config-title()$(config-base)$$(currentTiddler)$\\n\u003C$draggable tiddler={{!!title}}>\u003C$checkbox tiddler=\u003C\u003Cconfig-title>>field=text checked=show unchecked=hide default=show/> \u003Cspan class=tc-icon-wrapper> \u003C$transclude field=caption/> \u003Ci class=tc-muted>-- \u003C$transclude field=description/>\"},\"$:/core/ui/ControlPanel/Toolbars/PageControls\":{\"tags\":\"$:/tags/ControlPanel/Toolbars\",\"caption\":\"{{$:/language/ControlPanel/Toolbars/PageControls/Caption}}\",\"text\":\"\\\\define lingo-base()$:/language/TiddlerInfo/\\n\\\\define config-base()$:/config/PageControlButtons/Visibility/\\n{{$:/language/ControlPanel/Toolbars/PageControls/Hint}}\\n\u003C$let tv-config-toolbar-icons=yes tv-config-toolbar-text=yes>\\n\\n\u003C$macrocall tag=\\\"$:/tags/PageControls\\\"itemTemplate=\\\"$:/core/ui/ControlPanel/Toolbars/ItemTemplate\\\"$name=list-tagged-draggable/>\\n\"},\"$:/core/ui/ControlPanel/Toolbars/ViewToolbar\":{\"tags\":\"$:/tags/ControlPanel/Toolbars\",\"caption\":\"{{$:/language/ControlPanel/Toolbars/ViewToolbar/Caption}}\",\"text\":\"\\\\define lingo-base()$:/language/TiddlerInfo/\\n\\\\define config-base()$:/config/ViewToolbarButtons/Visibility/\\n{{$:/language/ControlPanel/Toolbars/ViewToolbar/Hint}}\\n\u003C$let tv-config-toolbar-icons=yes tv-config-toolbar-text=yes>\\n\\n\u003C$macrocall tag=\\\"$:/tags/ViewToolbar\\\"itemTemplate=\\\"$:/core/ui/ControlPanel/Toolbars/ItemTemplate\\\"$name=list-tagged-draggable/>\\n\"},\"$:/core/ui/ControlPanel/Toolbars\":{\"tags\":\"$:/tags/ControlPanel/Appearance\",\"caption\":\"{{$:/language/ControlPanel/Toolbars/Caption}}\",\"text\":\"{{$:/language/ControlPanel/Toolbars/Hint}}\\n\u003Cdiv class=tc-control-panel>\u003C$macrocall $name=tabs tabsList=\\\"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Toolbars]!has[draft.of]]\\\"default=\\\"$:/core/ui/ControlPanel/Toolbars/ViewToolbar\\\"explicitState=\\\"$:/state/tabs/controlpanel/toolbars-1345989671\\\"class=tc-vertical/>\"},\"$:/ControlPanel\":{\"icon\":\"$:/core/images/options-button\",\"color\":\"#bbb\",\"text\":\"\u003Cdiv class=tc-control-panel>\u003C$macrocall tabsList=\\\"[all[shadows+tiddlers]tag[$:/tags/ControlPanel]!has[draft.of]]\\\"default=\\\"$:/core/ui/ControlPanel/Info\\\"explicitState=\\\"$:/state/tab-1749438307\\\"$name=tabs/>\"},\"$:/core/ui/DefaultSearchResultList\":{\"tags\":\"$:/tags/SearchResults\",\"caption\":\"{{$:/language/Search/DefaultResults/Caption}}\",\"first-search-filter\":\"[!is[system]search:title\u003CuserInput>sort[title]limit[250]]\",\"second-search-filter\":\"[!is[system]search\u003CuserInput>sort[title]limit[250]]\",\"text\":\"\\\\define searchResultList()\\n//\u003Csmall>{{$:/language/Search/Matches/Title}}\u003C/small>//\\n\\n\u003C$list filter=\\\"[\u003CuserInput>minlength[1]]\\\"variable=ignore>\u003C$list filter={{{[\u003CconfigTiddler>get[first-search-filter]]}}}>\u003Cspan class={{{[{!!title}addsuffix[-primaryList]]-[\u003CsearchListState>get[text]]+[then[]else[tc-list-item-selected]]}}}>{{||$:/core/ui/ListItemTemplate}}\u003C/span>\u003C/$list>\u003C/$list>\\n\\n//\u003Csmall>{{$:/language/Search/Matches/All}}\u003C/small>//\\n\\n\u003C$list filter=\\\"[\u003CuserInput>minlength[1]]\\\"variable=ignore>\u003C$list filter={{{[\u003CconfigTiddler>get[second-search-filter]]}}}>\u003Cspan class={{{[{!!title}addsuffix[-secondaryList]]-[\u003CsearchListState>get[text]]+[then[]else[tc-list-item-selected]]}}}>{{||$:/core/ui/ListItemTemplate}}\\n\\\\end\\n\u003C\u003CsearchResultList>>\"},\"$:/core/ui/EditTemplate/body/preview/diffs-current\":{\"tags\":\"$:/tags/EditPreview\",\"caption\":\"{{$:/language/EditTemplate/Body/Preview/Type/DiffCurrent}}\",\"list-after\":\"$:/core/ui/EditTemplate/body/preview/output\",\"text\":\"\u003C$list emptyMessage={{$:/core/ui/EditTemplate/body/preview/output}}filter=[{!!title}!is[image]]>\\n\\n\u003C$macrocall sourceTiddlerTitle={{!!draft.of}}destTiddlerTitle={{!!title}}$name=compareTiddlerText/>\\n\"},\"$:/core/ui/EditTemplate/body/preview/diffs-shadow\":{\"tags\":\"$:/tags/EditPreview\",\"caption\":\"{{$:/language/EditTemplate/Body/Preview/Type/DiffShadow}}\",\"list-after\":\"$:/core/ui/EditTemplate/body/preview/output\",\"text\":\"\u003C$list emptyMessage={{$:/core/ui/EditTemplate/body/preview/output}}filter=[{!!title}!is[image]]>\\n\\n\u003C$macrocall sourceTiddlerTitle={{{[{!!draft.of}shadowsource[]]}}}sourceSubTiddlerTitle={{!!draft.of}}destTiddlerTitle={{!!title}}$name=compareTiddlerText/>\\n\"},\"$:/core/ui/EditTemplate/body/preview/output\":{\"tags\":\"$:/tags/EditPreview\",\"caption\":\"{{$:/language/EditTemplate/Body/Preview/Type/Output}}\",\"text\":\"\\\\import [[$:/tags/Macro/View]tagging[]!is[draft]][[$:/tags/Macro/View/Body]tagging[]!is[draft]]\\n\u003C$let tv-tiddler-preview=yes>\\n\\n\u003C$transclude tiddler={{{[{!!title}]:cascade[[$:/tags/ViewTemplateBodyFilter]tagging[]!is[draft]get[text]]:and[!is[blank]else[$:/core/ui/ViewTemplate/body/default]]}}}/>\\n\"},\"$:/state/showeditpreview\":{\"text\":\"no\"},\"$:/core/ui/EditTemplate/body/canonical-uri\":{\"text\":\"\\\\define lingo-base()$:/language/EditTemplate/Body/\\n\u003Cdiv class=tc-message-box>\\n\\n\u003C\u003Clingo External/Hint>>\\n\\n\u003Ca href={{!!_canonical_uri}}>\u003C$text text={{!!_canonical_uri}}/>\u003C/a>\\n\\n\u003C$edit-text field=_canonical_uri class=tc-edit-fields tabindex={{$:/config/EditTabIndex}}cancelPopups=yes>\"},\"$:/core/ui/EditTemplate/body/default\":{\"text\":\"\\\\define config-visibility-title()$:/config/EditorToolbarButtons/Visibility/$(currentTiddler)$\\n\\\\define importFileActions()\u003C$action-popup $state=\u003C\u003CimportState>>$coords=(0,0,0,0) $floating=yes/>\\n\u003C$let edit-preview-state={{{[{$:/config/ShowEditPreview/PerTiddler}!match[yes]then[$:/state/showeditpreview]]:else[\u003Cqualify [[$:/state/showeditpreview]]>]}}}importTitle=\u003C\u003Cqualify [[$:/ImportImage]]>>importState=\u003C\u003Cqualify [[$:/state/ImportImage]]>>>\u003C$dropzone importTitle=\u003C\u003CimportTitle>>autoOpenOnImport=no contentTypesFilter={{$:/config/Editor/ImportContentTypesFilter}}class=tc-dropzone-editor enable={{{[{$:/config/DragAndDrop/Enable}match[no]]:else[subfilter{$:/config/Editor/EnableImportFilter}then[yes]else[no]]}}}actions=\u003C\u003CimportFileActions>>filesOnly=yes>\u003C$reveal stateTitle=\u003C\u003Cedit-preview-state>>type=match text=yes tag=div>\u003Cdiv class=tc-tiddler-preview>\\n\\n\u003C$transclude tiddler=\\\"$:/core/ui/EditTemplate/body/editor\\\"mode=inline/>\\n\\n\u003Cdiv data-tiddler-title={{!!draft.title}}data-tags={{!!tags}}class=tc-tiddler-preview-preview>\\n\\n\u003C$transclude tiddler={{$:/state/editpreviewtype}}mode=inline>\\n\\n\u003C$transclude tiddler=\\\"$:/core/ui/EditTemplate/body/preview/output\\\"mode=inline/>\\n\\n\u003C/$transclude>\u003C/div>\u003C/div>\u003C/$reveal>\u003C$reveal stateTitle=\u003C\u003Cedit-preview-state>>type=nomatch text=yes tag=div>\\n\\n\u003C$transclude tiddler=\\\"$:/core/ui/EditTemplate/body/editor\\\"mode=inline/>\\n\"},\"$:/core/ui/EditTemplate/body/editor\":{\"text\":\"\u003C$edit field=text class=\\\"tc-edit-texteditor tc-edit-texteditor-body\\\"placeholder={{$:/language/EditTemplate/Body/Placeholder}}tabindex={{$:/config/EditTabIndex}}focus={{{[{$:/config/AutoFocus}match[text]then[true]]~false}}}fileDrop={{{[{$:/config/DragAndDrop/Enable}match[no]]:else[subfilter{$:/config/Editor/EnableImportFilter}then[yes]else[no]]}}}cancelPopups=yes>\u003C$let targetTiddler={{!!title}}>\u003C$list filter=\\\"[[$:/tags/EditorToolbar]tagging[]!is[draft]]\\\">\u003C$reveal type=nomatch state=\u003C\u003Cconfig-visibility-title>>text=hide class=tc-text-editor-toolbar-item-wrapper>\u003C$transclude tiddler=\\\"$:/core/ui/EditTemplate/body/toolbar/button\\\"mode=inline/>\u003C/$reveal>\u003C/$list>\u003C$list filter=\\\"[[$:/tags/EditorTools]tagging[]!is[draft]]\\\">\u003C$list filter={{!!condition}}variable=list-condition>{{}}\"},\"$:/core/ui/EditTemplate/body/toolbar/button\":{\"text\":\"\\\\define toolbar-button-icon()\u003C$list filter=[{!!title}!has[custom-icon]] variable=no-custom-icon>\u003C$transclude tiddler={{!!icon}}/>\\n\\\\define toolbar-button-tooltip(){{!!description}}\u003C$macrocall $name=displayshortcuts $output=\\\"text/plain\\\"shortcuts={{!!shortcuts}}prefix=\\\"` - [\\\"separator=\\\"] [\\\"suffix=]`/>\\n\\\\define toolbar-button()\u003C$list filter={{!!condition}}variable=list-condition>\u003C$wikify name=tooltip-text text=\u003C\u003Ctoolbar-button-tooltip>>mode=inline output=text>\u003C$list filter=[{!!title}!has[dropdown]] variable=no-dropdown>\u003C$set filter={{!!condition-disabled}}name=disabled>\u003C$button class=\\\"tc-btn-invisible $(buttonClasses)$\\\"tooltip=\u003C\u003Ctooltip-text>>actions={{!!actions}}disabled=\u003C\u003Cdisabled>>>\u003Cspan data-tw-keyboard-shortcut={{{[\u003Cdisabled>match[yes]then[]else{!!shortcuts}]}}}/>\u003C\u003Ctoolbar-button-icon>>\u003C$transclude tiddler={{!!title}}field=text/>\u003C/$button>\u003C/$set>\u003C/$list>\u003C$list filter=[{!!title}has[dropdown]] variable=dropdown>\u003C$let dropdown-state=\u003C\u003Cqualify [[$:/state/EditorToolbarDropdown]]>>>\u003C$set filter={{!!condition-disabled}}name=disabled>\u003C$button popup=\u003C\u003Cdropdown-state>>class=\\\"tc-popup-keep tc-btn-invisible $(buttonClasses)$\\\"tooltip=\u003C\u003Ctooltip-text>>actions={{!!actions}}disabled=\u003C\u003Cdisabled>>selectedClass=tc-selected>\u003Cspan data-tw-keyboard-shortcut={{{[\u003Cdisabled>match[yes]then[]else{!!shortcuts}]}}}/>\u003C\u003Ctoolbar-button-icon>>\u003C$transclude tiddler={{!!title}}field=text/>\u003C/$button>\u003C/$set>\u003C$reveal state=\u003C\u003Cdropdown-state>>type=popup position=below animate=yes tag=span>\u003Cdiv class=\\\"tc-drop-down tc-popup-keep\\\">\u003C$transclude tiddler={{!!dropdown}}mode=block/>\\n\\\\define toolbar-button-outer()\u003C$let buttonClasses={{!!button-classes}}>\u003C\u003Ctoolbar-button>>\\n\u003C\u003Ctoolbar-button-outer>>\"},\"$:/core/ui/EditTemplate/body\":{\"tags\":\"$:/tags/EditTemplate\",\"text\":\"\u003C$transclude tiddler={{{[{!!title}]:cascade[[$:/tags/EditTemplateBodyFilter]tagging[]!is[draft]get[text]]:and[!is[blank]else[$:/core/ui/EditTemplate/body/default]]}}}/>\\n\"},\"$:/core/ui/EditTemplate/controls\":{\"tags\":\"$:/tags/EditTemplate\",\"text\":\"\\\\define config-title()$:/config/EditToolbarButtons/Visibility/$(listItem)$\\n\u003Cdiv class=\\\"tc-tiddler-title tc-tiddler-edit-title\\\">\u003C$view field=title/>\u003Cspan class=\\\"tc-tiddler-controls tc-titlebar\\\">\u003C$list filter=\\\"[[$:/tags/EditToolbar]tagging[]!is[draft]]\\\"variable=listItem>\u003C$reveal type=nomatch state=\u003C\u003Cconfig-title>>text=hide>\u003C$transclude tiddler=\u003C\u003ClistItem>>/>\u003C/$reveal>\u003C/$list>\u003C/span>\u003Cdiv style=\\\"clear: both;\\\">\"},\"$:/core/ui/EditTemplate/fieldEditor/default\":{\"text\":\"\u003C$edit-text tiddler={{!!title}}field=\u003C\u003CcurrentField>>tag=input default=\\\"\\\"class=\\\"tc-edit-texteditor tc-edit-fieldeditor\\\"placeholder={{$:/language/EditTemplate/Fields/Add/Value/Placeholder}}tabindex={{$:/config/EditTabIndex}}cancelPopups=yes/>\"},\"$:/core/ui/EditTemplate/fields\":{\"tags\":\"$:/tags/EditTemplate\",\"text\":\"\\\\define lingo-base()$:/language/EditTemplate/\\n\\\\define config-title()$:/config/EditTemplateFields/Visibility/$(currentField)$\\n\\\\define config-filter()[[hide]] -[title{$(config-title)$}]\\n\\\\define get-field-value-tiddler-filter()[subfilter\u003Cget-field-editor-filter>sha256[16]addprefix[/]addprefix\u003CnewFieldValueTiddlerPrefix>]\\n\\\\define get-field-editor-filter()[\u003CnewFieldNameTiddler>get[text]else[]] :cascade[all[shadows+tiddlers]tag[$:/tags/FieldEditorFilter]!is[draft]get[text]] :and[!is[blank]else{$:/core/ui/EditTemplate/fieldEditor/default}]\\n\\\\define current-tiddler-new-field-selector()[data-tiddler-title=\\\"$(currentTiddlerCSSescaped)$\\\"] .tc-edit-field-add-name-wrapper input\\n\\\\define new-field-actions()\u003C$action-sendmessage $name={{{[\u003CnewFieldNameTiddler>get[text]]}}}$value={{{[\u003CnewFieldNameTiddler>get[text]]:map[subfilter\u003Cget-field-value-tiddler-filter>get[text]]}}}$message=tm-add-field/>\u003C$set value=\u003C\u003CnewFieldValueTiddlerPrefix>>emptyValue=\u003C\u003Cqualify [[$:/temp/NewFieldValue]]>>name=safeNewFieldValueTiddlerPrefix>\u003C$action-deletetiddler $filter=\\\"[\u003CnewFieldNameTiddler>] [prefix[$:/temp/NewFieldValue]prefix\u003CsafeNewFieldValueTiddlerPrefix>] [\u003CstoreTitle>] [\u003CsearchListState>]\\\"/>\u003C/$set>\u003C$action-sendmessage $param=\u003C\u003Ccurrent-tiddler-new-field-selector>>$message=tm-focus-selector/>\\n\\\\define delete-state-tiddlers()\u003C$action-deletetiddler $filter=\\\"[\u003CnewFieldNameTiddler>] [\u003CstoreTitle>] [\u003CsearchListState>]\\\"/>\\n\\\\define cancel-search-actions-inner()\u003C$list filter='[\u003CstoreTitle>has[text]][\u003CnewFieldNameTiddler>has[text]]'emptyMessage='\u003C\u003Ccancel-delete-tiddler-actions cancel>>'variable=ignore>\u003C\u003Cdelete-state-tiddlers>>\\n\\\\define cancel-search-actions()\u003C$let userInput={{{[\u003CstoreTitle>get[text]]}}}>\u003C$list filter=\\\"[\u003CnewFieldNameTiddler>get[text]!match\u003CuserInput>]\\\"emptyMessage=\\\"\u003C\u003Ccancel-search-actions-inner>>\\\">\u003C$action-setfield $tiddler=\u003C\u003CnewFieldNameTiddler>>text=\u003C\u003CuserInput>>/>\u003C$action-setfield $tiddler=\u003C\u003CrefreshTitle>>text=yes/>\\n\\\\define new-field()\u003C$let name={{{[\u003CnewFieldNameTiddler>get[text]]}}}>\u003C$reveal text=\\\"\\\"default=\u003C\u003Cname>>type=nomatch>\u003C$button tooltip=\u003C\u003Clingo Fields/Add/Button/Hint>>>\u003C$action-sendmessage $name=\u003C\u003Cname>>$value={{{[subfilter\u003Cget-field-value-tiddler-filter>get[text]]}}}$message=tm-add-field/>\u003C$set value=\u003C\u003CnewFieldValueTiddlerPrefix>>emptyValue=\u003C\u003Cqualify [[$:/temp/NewFieldValue]]>>name=safeNewFieldValueTiddlerPrefix>\u003C$action-deletetiddler $filter=\\\"[\u003CnewFieldNameTiddler>] [prefix[$:/temp/NewFieldValue]prefix\u003CsafeNewFieldValueTiddlerPrefix>] [\u003CstoreTitle>] [\u003CsearchListState>]\\\"/>\u003C/$set>\u003C\u003Clingo Fields/Add/Button>>\u003C/$button>\u003C/$reveal>\u003C$reveal text=\\\"\\\"default=\u003C\u003Cname>>type=match>\u003C$button>\u003C\u003Clingo Fields/Add/Button>>\\n\u003C$set value=\u003C\u003CnewFieldValueTiddlerPrefix>>emptyValue=\u003C\u003Cqualify'$:/temp/NewFieldValue'>>name=newFieldValueTiddlerPrefix>\u003Cdiv class=tc-edit-fields>\u003Ctable class={{{[{!!title}fields[]]:filter[lookup[$:/config/EditTemplateFields/Visibility/]!match[hide]]+[count[]!match[0]]+[then[tc-edit-fields]]~[[tc-edit-fields tc-edit-fields-small]]}}}>\u003Ctbody>\u003C$list filter=[{!!title}fields[]sort[title]] variable=currentField storyview=pop>\u003C$list filter=\u003C\u003Cconfig-filter>>variable=temp>\u003Ctr class=tc-edit-field>\u003Ctd class=tc-edit-field-name>\u003C$text text=\u003C\u003CcurrentField>>/>:\u003C/td>\u003Ctd class=tc-edit-field-value>\u003C$keyboard actions='\u003C$action-deletefield $field=\u003C\u003CcurrentField>>/>\u003C$let currentTiddlerCSSescaped={{{[{!!title}escapecss[]]}}}>\u003C$action-sendmessage $param=\u003C\u003Ccurrent-tiddler-new-field-selector>>$message=tm-focus-selector/>'key=((delete-field))>\u003C$transclude tiddler={{{[\u003CcurrentField>]:cascade[[$:/tags/FieldEditorFilter]tagging[]!is[draft]get[text]]:and[!is[blank]else{$:/core/ui/EditTemplate/fieldEditor/default}]}}}/>\u003C/$keyboard>\u003C/td>\u003Ctd class=tc-edit-field-remove>\u003C$button tooltip={{$:/language/EditTemplate/Field/Remove/Hint}}aria-label={{$:/language/EditTemplate/Field/Remove/Caption}}class=tc-btn-invisible>\u003C$action-deletefield $field=\u003C\u003CcurrentField>>/>\u003C$let currentTiddlerCSSescaped={{{[{!!title}escapecss[]]}}}>\u003C$action-sendmessage $param=\u003C\u003Ccurrent-tiddler-new-field-selector>>$message=tm-focus-selector/>\u003C/$let>{{$:/core/images/delete-button}}\u003C/$button>\u003C/td>\u003C/tr>\u003C/$list>\u003C/$list>\u003C/tbody>\u003C/table>\u003C/div>\u003C$fieldmangler>\u003Cdiv class=tc-edit-field-add>\u003Cem class='tc-edit tc-small-gap-right'>\u003C\u003Clingo Fields/Add/Prompt>>\u003C/em>\u003C$vars refreshTitle=\u003C\u003Cqualify'$:/temp/fieldname/refresh'>>storeTitle=\u003C\u003CnewFieldNameInputTiddler>>searchListState=\u003C\u003CnewFieldNameSelectionTiddler>>>\u003Cdiv class=tc-edit-field-add-name-wrapper>\u003C$macrocall $name=keyboard-driven-input tiddler=\u003C\u003CnewFieldNameTiddler>>storeTitle=\u003C\u003CstoreTitle>>refreshTitle=\u003C\u003CrefreshTitle>>selectionStateTitle=\u003C\u003CsearchListState>>tag=input default=''placeholder={{$:/language/EditTemplate/Fields/Add/Name/Placeholder}}focusPopup=\u003C\u003Cqualify'$:/state/popup/field-dropdown'>>class='tc-edit-texteditor tc-popup-handle'tabindex={{$:/config/EditTabIndex}}focus={{{[{$:/config/AutoFocus}match[fields]then[true]]~false}}}configTiddlerFilter='[[$:/config/EditMode/fieldname-filter]]'inputCancelActions=\u003C\u003Ccancel-search-actions>>cancelPopups=yes/>\u003C$button popup=\u003C\u003Cqualify'$:/state/popup/field-dropdown'>>class='tc-btn-invisible tc-btn-dropdown tc-small-gap'tooltip={{$:/language/EditTemplate/Field/Dropdown/Hint}}aria-label={{$:/language/EditTemplate/Field/Dropdown/Caption}}>{{$:/core/images/down-arrow}}\u003C/$button>\u003C$reveal state=\u003C\u003Cqualify'$:/state/popup/field-dropdown'>>text=''default=''type=nomatch>\u003Cdiv class='tc-block-dropdown tc-edit-type-dropdown'>\u003C$let tv-show-missing-links=yes>\u003C$linkcatcher to=\u003C\u003CnewFieldNameTiddler>>>\u003Cdiv class=tc-dropdown-item>\u003C\u003Clingo Fields/Add/Dropdown/User>>\u003C/div>\u003C$let newFieldName={{{[\u003CstoreTitle>get[text]]}}}>\u003C$list filter='[!is[shadow]!is[system]fields[]search:title\u003CnewFieldName>sort[]]-created -creator -draft.of -draft.title -modified -modifier -tags -text -title -type'variable=currentField>\u003C$list filter='[\u003CcurrentField>addsuffix[-primaryList]]-[\u003CsearchListState>get[text]]'emptyMessage='\u003C$link to=\u003C\u003CcurrentField>>class=tc-list-item-selected>\u003C$text text=\u003C\u003CcurrentField>>/>'>\u003C$link to=\u003C\u003CcurrentField>>>\u003C$text text=\u003C\u003CcurrentField>>/>\u003C/$link>\u003C/$list>\u003C/$list>\u003Cdiv class=tc-dropdown-item>\u003C\u003Clingo Fields/Add/Dropdown/System>>\u003C/div>\u003C$list filter='[fields[]search:title\u003CnewFieldName>sort[]]-[!is[shadow]!is[system]fields[]]'variable=currentField>\u003C$list filter='[\u003CcurrentField>addsuffix[-secondaryList]]-[\u003CsearchListState>get[text]]'emptyMessage='\u003C$link to=\u003C\u003CcurrentField>>class=tc-list-item-selected>\u003C$text text=\u003C\u003CcurrentField>>/>'>\u003C$link to=\u003C\u003CcurrentField>>>\u003C$text text=\u003C\u003CcurrentField>>/>\u003C/$link>\u003C/$list>\u003C/$list>\u003C/$let>\u003C/$linkcatcher>\u003C/$let>\u003C/div>\u003C/$reveal>\u003C/div>\u003C$let currentTiddlerCSSescaped={{{[{!!title}escapecss[]]}}}currentTiddler={{{[subfilter\u003Cget-field-value-tiddler-filter>]}}}currentField=text currentFieldName={{{[\u003CnewFieldNameTiddler>get[text]]}}}>\u003Cspan class='tc-edit-field-add-value tc-small-gap-right'>\u003C$keyboard actions=\u003C\u003Cnew-field-actions>>key=((add-field))>\u003C$transclude tiddler={{{[subfilter\u003Cget-field-editor-filter>]}}}/>\u003C/$keyboard>\u003C/span>\u003Cspan class=tc-edit-field-add-button>\u003C$macrocall $name=new-field/>\"},\"$:/core/ui/EditTemplate/shadow\":{\"tags\":\"$:/tags/EditTemplate\",\"text\":\"\\\\define lingo-base()$:/language/EditTemplate/Shadow/\\n\\\\define pluginLinkBody()\u003C$link to=\\\"\\\"\\\"$(pluginTitle)$\\\"\\\"\\\"/>\\n\u003C$list filter=[{!!title}get[draft.of]is[shadow]!is[tiddler]]>\\n\\n\u003C$list filter=[{!!title}shadowsource[]] variable=pluginTitle>\\n\\n\u003C$let pluginLink=\u003C\u003CpluginLinkBody>>>\u003Cdiv class=tc-message-box>\\n\\n\u003C\u003Clingo Warning>>\\n\\n\u003C/div>\u003C/$let>\u003C/$list>\u003C/$list>\u003C$list filter=[{!!title}get[draft.of]is[shadow]is[tiddler]]>\\n\\n\u003C$list filter=[{!!title}shadowsource[]] variable=pluginTitle>\\n\\n\u003C$let pluginLink=\u003C\u003CpluginLinkBody>>>\u003Cdiv class=tc-message-box>\\n\\n\u003C\u003Clingo OverriddenWarning>>\"},\"$:/core/ui/EditTemplate/tags\":{\"tags\":\"$:/tags/EditTemplate\",\"text\":\"\\\\define lingo-base()$:/language/EditTemplate/\\n\\\\define tag-styles()\\nbackground-color:$(backgroundColor)$;\\nfill:$(foregroundColor)$;\\ncolor:$(foregroundColor)$;\\n\\\\end\\n\\\\define tag-body-inner(colour fallbackTarget colourA colourB icon tagField:tags)\u003C$let foregroundColor=\u003C\u003Ccontrastcolour target:\\\"\\\"\\\"$colour$\\\"\\\"\\\"fallbackTarget:\\\"\\\"\\\"$fallbackTarget$\\\"\\\"\\\"colourA:\\\"\\\"\\\"$colourA$\\\"\\\"\\\"colourB:\\\"\\\"\\\"$colourB$\\\"\\\"\\\">>backgroundColor=\\\"\\\"\\\"$colour$\\\"\\\"\\\">\u003Cspan style=\u003C\u003Ctag-styles>>class=\\\"tc-tag-label tc-tag-list-item tc-small-gap-right\\\">\u003C$transclude tiddler=\\\"\\\"\\\"$icon$\\\"\\\"\\\"/>\u003C$view field=title format=text/>\u003C$button class=\\\"tc-btn-invisible tc-remove-tag-button\\\"style=\u003C\u003Ctag-styles>>>\u003C$action-listops $tiddler=\u003C\u003CsaveTiddler>>$field=\u003C\u003C__tagField__>>$subfilter=-[{!!title}]/>{{$:/core/images/close-button}}\\n\\\\define tag-body(colour palette icon tagField:tags)\u003C$macrocall colour=\\\"\\\"\\\"$colour$\\\"\\\"\\\"fallbackTarget={{$palette$##tag-background}}colourA={{$palette$##foreground}}colourB={{$palette$##background}}icon=\\\"\\\"\\\"$icon$\\\"\\\"\\\"tagField=\u003C\u003C__tagField__>>$name=tag-body-inner/>\\n\\\\define edit-tags-template(tagField:tags)\u003Cdiv class=tc-edit-tags>\u003C$list filter=\\\"[list[!!$tagField$]sort[title]]\\\"storyview=pop>\u003C$macrocall colour={{{[{!!title}]:cascade[[$:/tags/TiddlerColourFilter]tagging[]!is[draft]get[text]]}}}palette={{$:/palette}}icon={{{[{!!title}]:cascade[[$:/tags/TiddlerIconFilter]tagging[]!is[draft]get[text]]}}}tagField=\u003C\u003C__tagField__>>$name=tag-body/>\u003C/$list>\u003C$let tabIndex={{$:/config/EditTabIndex}}cancelPopups=yes>\u003C$macrocall tagField=\u003C\u003C__tagField__>>$name=tag-picker/>\\n\u003C$let saveTiddler={{!!title}}>\u003C$macrocall tagField=\u003C\u003CtagField>>$name=edit-tags-template/>\"},\"$:/core/ui/EditTemplate/title\":{\"tags\":\"$:/tags/EditTemplate\",\"text\":\"\u003C$edit-text field=draft.title class=\\\"tc-titlebar tc-edit-texteditor\\\"focus={{{[{$:/config/AutoFocus}match[title]then[true]]~false}}}tabindex={{$:/config/EditTabIndex}}cancelPopups=yes/>\\n\\n\u003C$let bad-chars=\\\"`| [ ] { }`\\\"pattern=[\\\\|\\\\[\\\\]{}]>\\n\\n\u003C$list filter=\\\"[{!!title}regexp:draft.title\u003Cpattern>]\\\"variable=listItem>\\n\\n\u003Cdiv class=tc-message-box>\\n\\n{{$:/core/images/warning}} {{$:/language/EditTemplate/Title/BadCharacterWarning}}\\n\\n\u003C/div>\u003C/$list>\u003C/$let>\u003C$reveal state=!!draft.title type=nomatch text={{!!draft.of}}tag=div>\\n\\n\u003C$list filter=[{!!draft.title}!is[missing]] variable=listItem>\\n\\n\u003Cdiv class=tc-message-box>\\n\\n{{$:/core/images/warning}} {{$:/language/EditTemplate/Title/Exists/Prompt}}: \u003C$link to={{!!draft.title}}/>\\n\\n\u003C/div>\u003C/$list>\u003C$list filter=[{!!draft.of}!is[missing]] variable=listItem>\\n\\n\u003C$let fromTitle={{!!draft.of}}toTitle={{!!draft.title}}>\\n\\n\u003C$checkbox tiddler=\\\"$:/config/RelinkOnRename\\\"field=text checked=yes unchecked=no default=no> {{$:/language/EditTemplate/Title/Relink/Prompt}}\u003C/$checkbox>\\n\\n\u003C$list filter=\\\"[\u003CfromTitle>backlinks[]nth[]]\\\"variable=listItem>\\n\\n\u003C$let stateTiddler=\u003C\u003Cqualify [[$:/state/edit/references]]>>>\\n\\n\u003C$reveal type=nomatch state=\u003C\u003CstateTiddler>>text=show>\u003C$button set=\u003C\u003CstateTiddler>>setTo=show class=tc-btn-invisible>{{$:/core/images/right-arrow}} \u003C\u003Clingo EditTemplate/Title/References/Prompt>>\u003C/$button>\u003C/$reveal>\u003C$reveal type=match state=\u003C\u003CstateTiddler>>text=show>\u003C$button set=\u003C\u003CstateTiddler>>setTo=hide class=tc-btn-invisible>{{$:/core/images/down-arrow}} \u003C\u003Clingo EditTemplate/Title/References/Prompt>>\u003C/$button>\u003C/$reveal>\\n\\n\u003C$reveal type=match state=\u003C\u003CstateTiddler>>text=show>\u003C$tiddler tiddler=\u003C\u003CfromTitle>>>{{||$:/core/ui/TiddlerInfo/References}}\"},\"$:/core/ui/EditTemplate/type\":{\"tags\":\"$:/tags/EditTemplate\",\"first-search-filter\":\"[all[shadows+tiddlers]prefix[$:/language/Docs/Types/]sort[description]sort[group-sort]removeprefix[$:/language/Docs/Types/]search\u003CuserInput>]\",\"text\":\"\\\\define lingo-base()$:/language/EditTemplate/\\n\\\\define input-cancel-actions()\u003C$list filter=\\\"[\u003CstoreTitle>get[text]][{!!title}get[type]]+[nth[]]\\\"emptyMessage=\\\"\u003C\u003Ccancel-delete-tiddler-actions cancel>>\\\">\u003C$action-sendmessage $message=tm-remove-field $param=type/>\u003C$action-deletetiddler $filter=\\\"[\u003CtypeInputTiddler>] [\u003CrefreshTitle>] [\u003CtypeSelectionTiddler>]\\\"/>\\n\u003C$let refreshTitle=\u003C\u003Cqualify'$:/temp/type-search/refresh'>>>\u003Cdiv class=tc-edit-type-selector-wrapper>\u003Cem class='tc-edit tc-small-gap-right'>\u003C\u003Clingo Type/Prompt>>\u003C/em>\u003Cdiv class=tc-type-selector-dropdown-wrapper>\u003Cdiv class=tc-type-selector>\u003C$fieldmangler>\u003C$macrocall $name=keyboard-driven-input tiddler={{!!title}}storeTitle=\u003C\u003CtypeInputTiddler>>refreshTitle=\u003C\u003CrefreshTitle>>selectionStateTitle=\u003C\u003CtypeSelectionTiddler>>field=type tag=input default=''placeholder={{$:/language/EditTemplate/Type/Placeholder}}focusPopup=\u003C\u003Cqualify'$:/state/popup/type-dropdown'>>class='tc-edit-typeeditor tc-edit-texteditor tc-popup-handle'tabindex={{$:/config/EditTabIndex}}focus={{{[{$:/config/AutoFocus}match[type]then[true]]~false}}}configTiddlerFilter='[[$:/core/ui/EditTemplate/type]]'inputCancelActions=\u003C\u003Cinput-cancel-actions>>cancelPopups=yes/>\u003C$button popup=\u003C\u003Cqualify'$:/state/popup/type-dropdown'>>class='tc-btn-invisible tc-btn-dropdown tc-small-gap'tooltip={{$:/language/EditTemplate/Type/Dropdown/Hint}}aria-label={{$:/language/EditTemplate/Type/Dropdown/Caption}}>{{$:/core/images/down-arrow}}\u003C/$button>\u003C$button message=tm-remove-field class='tc-btn-invisible tc-btn-icon'tooltip={{$:/language/EditTemplate/Type/Delete/Hint}}aria-label={{$:/language/EditTemplate/Type/Delete/Caption}}param=type>{{$:/core/images/delete-button}}\u003C$action-deletetiddler $filter='[\u003CstoreTitle>] [\u003CrefreshTitle>] [\u003CselectionStateTitle>]'/>\u003C/$button>\u003C/$fieldmangler>\u003C/div>\u003Cdiv class=tc-block-dropdown-wrapper>\u003C$let tv-show-missing-links=yes>\u003C$reveal state=\u003C\u003Cqualify'$:/state/popup/type-dropdown'>>text=''default=''type=nomatch>\u003Cdiv class='tc-block-dropdown tc-edit-type-dropdown'>\u003C$linkcatcher to=!!type>\u003C$list filter='[all[shadows+tiddlers]prefix[$:/language/Docs/Types/]each[group]sort[group-sort]]'>\u003Cdiv class=tc-dropdown-item>\u003C$text text={{!!group}}/>\u003C/div>\u003C$let userInput={{{[\u003CtypeInputTiddler>get[text]]}}}>\u003C$list filter='[all[shadows+tiddlers]prefix[$:/language/Docs/Types/]group{!!group}sort[description]removeprefix[$:/language/Docs/Types/]search\u003CuserInput>]'>\u003Cspan class={{{[{!!title}addsuffix[-primaryList]]-[\u003CtypeSelectionTiddler>get[text]]+[then[]else[tc-list-item-selected]]}}}>\u003C$link to={{{[{!!title}addprefix[$:/language/Docs/Types/]get[name]]}}}>\u003C$view tiddler={{{[{!!title}addprefix[$:/language/Docs/Types/]]}}}field=description/>\u003C$text text=' '/>(\u003C$view tiddler={{{[{!!title}addprefix[$:/language/Docs/Types/]]}}}field=name/>)\"},\"$:/core/ui/EditTemplate\":{\"text\":\"\\\\define delete-edittemplate-state-tiddlers()\\n\u003C$set value=\u003C\u003CnewFieldValueTiddlerPrefix>>emptyValue=\u003C\u003Cqualify [[$:/temp/NewFieldValue]]>>name=safeNewFieldValueTiddlerPrefix>\\n\\t\u003C$action-deletetiddler $filter=\\\"[\u003CnewFieldNameTiddler>] [prefix[$:/temp/NewFieldValue]prefix\u003CsafeNewFieldValueTiddlerPrefix>] [\u003CnewFieldNameInputTiddler>] [\u003CnewFieldNameSelectionTiddler>] [\u003CnewTagNameTiddler>] [\u003CnewTagNameInputTiddler>] [\u003CnewTagNameSelectionTiddler>] [\u003CtypeInputTiddler>] [\u003CtypeSelectionTiddler>]\\\"/>\\n\\n\\\\end\\n\\\\define get-field-value-tiddler-filter()[subfilter\u003Cget-field-editor-filter>sha256[16]addprefix[/]addprefix\u003CnewFieldValueTiddlerPrefix>]\\n\\\\define get-field-editor-filter()[\u003CnewFieldNameTiddler>get[text]else[]] :cascade[all[shadows+tiddlers]tag[$:/tags/FieldEditorFilter]!is[draft]get[text]] :and[!is[blank]else{$:/core/ui/EditTemplate/fieldEditor/default}]\\n\\\\define save-tiddler-actions()\u003C$action-sendmessage $param={{{[\u003CnewTagNameTiddler>get[text]]}}}$message=tm-add-tag/>\u003C$action-sendmessage $name={{{[\u003CnewFieldNameTiddler>get[text]]}}}$value={{{[\u003CnewFieldNameTiddler>get[text]]:map[subfilter\u003Cget-field-value-tiddler-filter>get[text]]}}}$message=tm-add-field/>\u003C\u003Cdelete-edittemplate-state-tiddlers>>\u003C$action-sendmessage $message=tm-save-tiddler/>\\n\\\\define cancel-delete-tiddler-actions(message)\\n\u003C\u003Cdelete-edittemplate-state-tiddlers>>\\n\u003C$action-sendmessage $message=\\\"tm-$message$-tiddler\\\"/>\\n\\\\end\\n\u003Cdiv data-tiddler-title={{!!title}}data-tags={{!!tags}}class={{{[[$:/tags/ClassFilters/TiddlerTemplate]tagging[]!is[draft]]:map:flat[subfilter{!!text}]tc-tiddler-frame tc-tiddler-edit-frame[{!!title}is[tiddler]then[tc-tiddler-exists]][{!!title}is[missing]!is[shadow]then[tc-tiddler-missing]][{!!title}is[shadow]then[tc-tiddler-exists tc-tiddler-shadow]][{!!title}is[system]then[tc-tiddler-system]][{!!class}][{!!title}tags[]encodeuricomponent[]addprefix[tc-tagged-]]+[join[ ]]}}}aria-label={{$:/language/EditTemplate/Caption}}role=region>\u003C$fieldmangler>\u003C$vars storyTiddler={{!!title}}newTagNameTiddler=\u003C\u003Cqualify [[$:/temp/NewTagName]]>>newFieldNameTiddler=\u003C\u003Cqualify [[$:/temp/NewFieldName]]>>newFieldValueTiddlerPrefix=\u003C\u003Cqualify [[$:/temp/NewFieldValue]]>>newFieldNameInputTiddler=\u003C\u003Cqualify [[$:/temp/NewFieldName/input]]>>newFieldNameSelectionTiddler=\u003C\u003Cqualify [[$:/temp/NewFieldName/selected-item]]>>newTagNameInputTiddler=\u003C\u003Cqualify [[$:/temp/NewTagName/input]]>>newTagNameSelectionTiddler=\u003C\u003Cqualify [[$:/temp/NewTagName/selected-item]]>>typeInputTiddler=\u003C\u003Cqualify [[$:/temp/Type/input]]>>typeSelectionTiddler=\u003C\u003Cqualify [[$:/temp/Type/selected-item]]>>>\u003C$keyboard key=((cancel-edit-tiddler)) actions=\u003C\u003Ccancel-delete-tiddler-actions cancel>>tag=div>\u003C$keyboard key=((save-tiddler)) actions=\u003C\u003Csave-tiddler-actions>>tag=div>\u003C$list filter=\\\"[[$:/tags/EditTemplate]tagging[]!is[draft]]\\\"variable=listItem>\u003C$set filter=\\\"[\u003Ctv-config-toolbar-class>][\u003ClistItem>encodeuricomponent[]addprefix[tc-btn-]]\\\"name=tv-config-toolbar-class>\u003C$transclude tiddler=\u003C\u003ClistItem>>/>\"},\"$:/core/ui/Buttons/cancel\":{\"tags\":\"$:/tags/EditToolbar\",\"caption\":\"{{$:/core/images/cancel-button}} {{$:/language/Buttons/Cancel/Caption}}\",\"description\":\"{{$:/language/Buttons/Cancel/Hint}}\",\"text\":\"\u003C$button actions=\u003C\u003Ccancel-delete-tiddler-actions cancel>>tooltip={{$:/language/Buttons/Cancel/Hint}}aria-label={{$:/language/Buttons/Cancel/Caption}}class=\u003C\u003Ctv-config-toolbar-class>>>\u003C$list filter=\\\"[\u003Ctv-config-toolbar-icons>match[yes]]\\\">{{$:/core/images/cancel-button}}\u003C/$list>\u003C$list filter=\\\"[\u003Ctv-config-toolbar-text>match[yes]]\\\">\u003Cspan class=tc-btn-text>\u003C$text text={{$:/language/Buttons/Cancel/Caption}}/>\"},\"$:/core/ui/Buttons/delete\":{\"tags\":\"$:/tags/EditToolbar $:/tags/ViewToolbar\",\"caption\":\"{{$:/core/images/delete-button}} {{$:/language/Buttons/Delete/Caption}}\",\"description\":\"{{$:/language/Buttons/Delete/Hint}}\",\"text\":\"\u003C$button actions=\u003C\u003Ccancel-delete-tiddler-actions delete>>tooltip={{$:/language/Buttons/Delete/Hint}}aria-label={{$:/language/Buttons/Delete/Caption}}class=\u003C\u003Ctv-config-toolbar-class>>>\u003C$list filter=\\\"[\u003Ctv-config-toolbar-icons>match[yes]]\\\">{{$:/core/images/delete-button}}\u003C/$list>\u003C$list filter=\\\"[\u003Ctv-config-toolbar-text>match[yes]]\\\">\u003Cspan class=tc-btn-text>\u003C$text text={{$:/language/Buttons/Delete/Caption}}/>\"},\"$:/core/ui/Buttons/save\":{\"tags\":\"$:/tags/EditToolbar\",\"caption\":\"{{$:/core/images/done-button}} {{$:/language/Buttons/Save/Caption}}\",\"description\":\"{{$:/language/Buttons/Save/Hint}}\",\"text\":\"\\\\define save-tiddler-button()\u003C$fieldmangler>\u003C$button tooltip={{$:/language/Buttons/Save/Hint}}aria-label={{$:/language/Buttons/Save/Caption}}class=\u003C\u003Ctv-config-toolbar-class>>>\u003C\u003Csave-tiddler-actions>>\u003C$list filter=\\\"[\u003Ctv-config-toolbar-icons>match[yes]]\\\">{{$:/core/images/done-button}}\u003C/$list>\u003C$list filter=\\\"[\u003Ctv-config-toolbar-text>match[yes]]\\\">\u003Cspan class=tc-btn-text>\u003C$text text={{$:/language/Buttons/Save/Caption}}/>\\n\u003C\u003Csave-tiddler-button>>\"},\"$:/core/ui/EditorToolbar/bold\":{\"tags\":\"$:/tags/EditorToolbar\",\"icon\":\"$:/core/images/bold\",\"caption\":\"{{$:/language/Buttons/Bold/Caption}}\",\"description\":\"{{$:/language/Buttons/Bold/Hint}}\",\"condition\":\"[\u003CtargetTiddler>!has[type]] [\u003CtargetTiddler>type[text/vnd.tiddlywiki]]\",\"shortcuts\":\"((bold))\",\"text\":\"\u003C$action-sendmessage $message=tm-edit-text-operation prefix=\\\"''\\\"suffix=\\\"''\\\"$param=wrap-selection/>\\n\"},\"$:/core/ui/EditorToolbar/clear-dropdown\":{\"text\":\"''{{$:/language/Buttons/Clear/Hint}}''\\n\\n\u003Cdiv class=tc-colour-chooser>\\n\\n\u003C$macrocall actions='\\n\\n\u003C$action-sendmessage\\n\\t$message=\\\"tm-edit-bitmap-operation\\\"\\n\\t$param=\\\"clear\\\"\\n\\tcolour=\u003C\u003Ccolour-picker-value>>\\n/>\\n\\n\u003C$action-deletetiddler\\n\\t$tiddler=\u003C\u003Cdropdown-state>>\\n/>\\n\\n'$name=colour-picker/>\\n\"},\"$:/core/ui/EditorToolbar/clear\":{\"tags\":\"$:/tags/EditorToolbar\",\"icon\":\"$:/core/images/erase\",\"caption\":\"{{$:/language/Buttons/Clear/Caption}}\",\"description\":\"{{$:/language/Buttons/Clear/Hint}}\",\"condition\":\"[\u003CtargetTiddler>is[image]] -[\u003CtargetTiddler>type[image/svg+xml]]\",\"dropdown\":\"$:/core/ui/EditorToolbar/clear-dropdown\",\"text\":\"\"},\"$:/core/ui/EditorToolbar/editor-height-dropdown\":{\"text\":\"\\\\define lingo-base()$:/language/Buttons/EditorHeight/\\n''\u003C\u003Clingo Hint>>''\\n\\n\u003C$radio tiddler='$:/config/TextEditor/EditorHeight/Mode'value=auto> {{$:/core/images/auto-height}} \u003C\u003Clingo Caption/Auto>>\u003C/$radio>\\n\\n\u003C$radio tiddler='$:/config/TextEditor/EditorHeight/Mode'value=fixed> {{$:/core/images/fixed-height}} \u003C\u003Clingo Caption/Fixed>> \u003C$edit-text tag=input tiddler='$:/config/TextEditor/EditorHeight/Height'default=100px/>\u003C/$radio>\\n\"},\"$:/core/ui/EditorToolbar/editor-height\":{\"tags\":\"$:/tags/EditorToolbar\",\"icon\":\"$:/core/images/fixed-height\",\"custom-icon\":\"yes\",\"caption\":\"{{$:/language/Buttons/EditorHeight/Caption}}\",\"description\":\"{{$:/language/Buttons/EditorHeight/Hint}}\",\"condition\":\"[\u003CtargetTiddler>type[]] [\u003CtargetTiddler>get[type]prefix[text/]] [\u003CtargetTiddler>get[type]match[application/javascript]] [\u003CtargetTiddler>get[type]match[application/json]] [\u003CtargetTiddler>get[type]match[application/x-tiddler-dictionary]] [\u003CtargetTiddler>get[type]match[image/svg+xml]] +[first[]]\",\"dropdown\":\"$:/core/ui/EditorToolbar/editor-height-dropdown\",\"text\":\"\u003C$reveal tag=span state=\\\"$:/config/TextEditor/EditorHeight/Mode\\\"type=match text=fixed>{{$:/core/images/fixed-height}}\u003C/$reveal>\u003C$reveal tag=span state=\\\"$:/config/TextEditor/EditorHeight/Mode\\\"type=match text=auto>{{$:/core/images/auto-height}}\"},\"$:/core/ui/EditorToolbar/excise-dropdown\":{\"text\":\"\\\\define lingo-base()$:/language/Buttons/Excise/\\n\\\\define body(config-title)\\n''\u003C\u003Clingo Hint>>''\\n\\n\u003C\u003Clingo Caption/NewTitle>> \u003C$edit-text tag=input tiddler=\\\"$config-title$/new-title\\\"default=''focus/>\\n\\n\u003C$let new-title={{$config-title$/new-title}}>\u003C$list filter='[\u003Cnew-title>is[tiddler]]'>\u003Cdiv class=tc-error>\u003C\u003Clingo Caption/TiddlerExists>>\u003C/div>\u003C/$list>\u003C/$let>\\n\\n\u003C$checkbox tiddler=\\\"\\\"\\\"$config-title$/tagnew\\\"\\\"\\\"field=text checked=yes unchecked=no default=false> \u003C\u003Clingo Caption/Tag>>\u003C/$checkbox>\\n\\n\u003C\u003Clingo Caption/Replace>> \u003C$select tiddler=\\\"\\\"\\\"$config-title$/type\\\"\\\"\\\"default=transclude>\u003Coption value=link>\u003C\u003Clingo Caption/Replace/Link>>\u003C/option>\u003Coption value=transclude>\u003C\u003Clingo Caption/Replace/Transclusion>>\u003C/option>\u003Coption value=macro>\u003C\u003Clingo Caption/Replace/Macro>>\u003C/option>\u003C/$select>\\n\\n\u003C$reveal state=\\\"\\\"\\\"$config-title$/type\\\"\\\"\\\"type=match text=macro>\u003C\u003Clingo Caption/MacroName>> \u003C$edit-text tag=input tiddler=\\\"\\\"\\\"$config-title$/macro-title\\\"\\\"\\\"default=translink/>\u003C/$reveal>\\n\\n\u003C$button>\u003C$action-sendmessage $message=tm-edit-text-operation title={{$config-title$/new-title}}type={{$config-title$/type}}macro={{$config-title$/macro-title}}tagnew={{$config-title$/tagnew}}$param=excise/>\u003C$action-deletetiddler $tiddler=\\\"$config-title$/new-title\\\"/>\u003C$action-deletetiddler $tiddler=\u003C\u003Cdropdown-state>>/>\u003C\u003Clingo Caption/Excise>>\\n\\\\end\\n\u003C$macrocall config-title=\u003C\u003Cqualify'$:/state/Excise/'>>$name=body/>\\n\"},\"$:/core/ui/EditorToolbar/excise\":{\"tags\":\"$:/tags/EditorToolbar\",\"icon\":\"$:/core/images/excise\",\"caption\":\"{{$:/language/Buttons/Excise/Caption}}\",\"description\":\"{{$:/language/Buttons/Excise/Hint}}\",\"condition\":\"[\u003CtargetTiddler>type[]] [\u003CtargetTiddler>type[text/vnd.tiddlywiki]] +[first[]]\",\"shortcuts\":\"((excise))\",\"dropdown\":\"$:/core/ui/EditorToolbar/excise-dropdown\",\"text\":\"\"},\"$:/core/ui/EditorToolbar/file-import\":{\"tags\":\"$:/tags/EditorTools\",\"condition\":\"[\u003CtargetTiddler>!has[type]] [\u003CtargetTiddler>type[text/vnd.tiddlywiki]]\",\"text\":\"\\\\define lingo-base()$:/language/Import/\\n\\\\define closePopupActions()\u003C$action-deletetiddler $filter=\\\"[title\u003CimportState>] [title\u003CimportTitle>]\\\"/>\\n\\\\define replacement-text-image()[img[$title$]]\\n\\\\define replacement-text-file()[[$title$]]\\n\\\\define postImportActions()\u003C$list filter=\\\"[\u003CimportTitle>links[]]:reduce[get[type]prefix[image]then\u003Creplacement-text-image>else\u003Creplacement-text-file>search-replace[$title$],{!!title}addprefix\u003Caccumulator>]\\\"variable=imageTitle>\u003C$action-sendmessage $message=tm-edit-text-operation text=\u003C\u003CimageTitle>>$param=insert-text/>\u003C/$list>\u003C\u003CclosePopupActions>>\\n\\\\define buttons()\u003C$button actions=\u003C\u003CclosePopupActions>>class=tc-btn-invisible>\u003C\u003Clingo Listing/Cancel/Caption>>\u003C/$button> \u003C$button class=tc-btn-invisible param=\u003C\u003CimportTitle>>actions=\u003C\u003CpostImportActions>>message=tm-perform-import>\u003C\u003Clingo Listing/Import/Caption>>\\n\u003C$reveal type=popup state=\u003C\u003CimportState>>tag=div class=tc-editor-importpopup>\u003Cdiv class=tc-editor-import>\u003C$list filter=\\\"[\u003CimportTitle>field:plugin-type[import]]\\\">\u003Ch2>\u003C\u003Clingo Editor/Import/Heading>>\u003C/h2>\u003C$tiddler tiddler=\u003C\u003CimportTitle>>>{{||$:/core/ui/ImportListing}}\u003C\u003Cbuttons>>\"},\"$:/core/ui/EditorToolbar/heading-1\":{\"tags\":\"$:/tags/EditorToolbar\",\"icon\":\"$:/core/images/heading-1\",\"caption\":\"{{$:/language/Buttons/Heading1/Caption}}\",\"description\":\"{{$:/language/Buttons/Heading1/Hint}}\",\"condition\":\"[\u003CtargetTiddler>!has[type]] [\u003CtargetTiddler>type[text/vnd.tiddlywiki]]\",\"button-classes\":\"tc-text-editor-toolbar-item-start-group\",\"shortcuts\":\"((heading-1))\",\"text\":\"\u003C$action-sendmessage $message=tm-edit-text-operation $param=prefix-lines character=! count=1/>\\n\"},\"$:/core/ui/EditorToolbar/heading-2\":{\"tags\":\"$:/tags/EditorToolbar\",\"icon\":\"$:/core/images/heading-2\",\"caption\":\"{{$:/language/Buttons/Heading2/Caption}}\",\"description\":\"{{$:/language/Buttons/Heading2/Hint}}\",\"condition\":\"[\u003CtargetTiddler>!has[type]] [\u003CtargetTiddler>type[text/vnd.tiddlywiki]]\",\"shortcuts\":\"((heading-2))\",\"text\":\"\u003C$action-sendmessage $message=tm-edit-text-operation $param=prefix-lines character=! count=2/>\\n\"},\"$:/core/ui/EditorToolbar/heading-3\":{\"tags\":\"$:/tags/EditorToolbar\",\"icon\":\"$:/core/images/heading-3\",\"caption\":\"{{$:/language/Buttons/Heading3/Caption}}\",\"description\":\"{{$:/language/Buttons/Heading3/Hint}}\",\"condition\":\"[\u003CtargetTiddler>!has[type]] [\u003CtargetTiddler>type[text/vnd.tiddlywiki]]\",\"shortcuts\":\"((heading-3))\",\"text\":\"\u003C$action-sendmessage $message=tm-edit-text-operation $param=prefix-lines character=! count=3/>\\n\"},\"$:/core/ui/EditorToolbar/heading-4\":{\"tags\":\"$:/tags/EditorToolbar\",\"icon\":\"$:/core/images/heading-4\",\"caption\":\"{{$:/language/Buttons/Heading4/Caption}}\",\"description\":\"{{$:/language/Buttons/Heading4/Hint}}\",\"condition\":\"[\u003CtargetTiddler>!has[type]] [\u003CtargetTiddler>type[text/vnd.tiddlywiki]]\",\"shortcuts\":\"((heading-4))\",\"text\":\"\u003C$action-sendmessage $message=tm-edit-text-operation $param=prefix-lines character=! count=4/>\\n\"},\"$:/core/ui/EditorToolbar/heading-5\":{\"tags\":\"$:/tags/EditorToolbar\",\"icon\":\"$:/core/images/heading-5\",\"caption\":\"{{$:/language/Buttons/Heading5/Caption}}\",\"description\":\"{{$:/language/Buttons/Heading5/Hint}}\",\"condition\":\"[\u003CtargetTiddler>!has[type]] [\u003CtargetTiddler>type[text/vnd.tiddlywiki]]\",\"shortcuts\":\"((heading-5))\",\"text\":\"\u003C$action-sendmessage $message=tm-edit-text-operation $param=prefix-lines character=! count=5/>\\n\"},\"$:/core/ui/EditorToolbar/heading-6\":{\"tags\":\"$:/tags/EditorToolbar\",\"icon\":\"$:/core/images/heading-6\",\"caption\":\"{{$:/language/Buttons/Heading6/Caption}}\",\"description\":\"{{$:/language/Buttons/Heading6/Hint}}\",\"condition\":\"[\u003CtargetTiddler>!has[type]] [\u003CtargetTiddler>type[text/vnd.tiddlywiki]]\",\"shortcuts\":\"((heading-6))\",\"text\":\"\u003C$action-sendmessage $message=tm-edit-text-operation $param=prefix-lines character=! count=6/>\\n\"},\"$:/core/ui/EditorToolbar/italic\":{\"tags\":\"$:/tags/EditorToolbar\",\"icon\":\"$:/core/images/italic\",\"caption\":\"{{$:/language/Buttons/Italic/Caption}}\",\"description\":\"{{$:/language/Buttons/Italic/Hint}}\",\"condition\":\"[\u003CtargetTiddler>!has[type]] [\u003CtargetTiddler>type[text/vnd.tiddlywiki]]\",\"shortcuts\":\"((italic))\",\"text\":\"\u003C$action-sendmessage $message=tm-edit-text-operation prefix=\\\"//\\\"suffix=\\\"//\\\"$param=wrap-selection/>\\n\"},\"$:/core/ui/EditorToolbar/line-width-dropdown\":{\"text\":\"\\\\define lingo-base()$:/language/Buttons/LineWidth/\\n\\\\define toolbar-line-width-inner()\\n\u003C$button tooltip=\\\"\\\"\\\"$(line-width)$\\\"\\\"\\\"tag=a>\\n\\n\u003C$action-setfield $tiddler=\\\"$:/config/BitmapEditor/LineWidth\\\"$value=\\\"$(line-width)$\\\"/>\\n\\n\u003C$action-deletetiddler $tiddler=\u003C\u003Cdropdown-state>>/>\\n\\n\u003Cdiv style=\\\"display: inline-block; margin: 4px calc(80px - $(line-width)$); background-color: #000; width: calc(100px + $(line-width)$ * 2); height: $(line-width)$; border-radius: 120px; vertical-align: middle;\\\"/>\\n\\n\u003Cspan style=\\\"margin-left: 8px;\\\">\\n\\n\u003C$text text=\\\"\\\"\\\"$(line-width)$\\\"\\\"\\\"/>\\n\\n\u003C$reveal state=\\\"$:/config/BitmapEditor/LineWidth\\\"type=match text=\\\"\\\"\\\"$(line-width)$\\\"\\\"\\\"tag=span>\\n\\n\u003C$entity entity=&nbsp;/>\\n\\n\u003C$entity entity=&#x2713;/>\\n\\n\\\\end\\n''\u003C\u003Clingo Hint>>''\\n\\n\u003C$list filter={{$:/config/BitmapEditor/LineWidths}}variable=line-width>\\n\\n\u003C\u003Ctoolbar-line-width-inner>>\"},\"$:/core/ui/EditorToolbar/line-width\":{\"tags\":\"$:/tags/EditorToolbar\",\"icon\":\"$:/core/images/line-width\",\"caption\":\"{{$:/language/Buttons/LineWidth/Caption}}\",\"description\":\"{{$:/language/Buttons/LineWidth/Hint}}\",\"condition\":\"[\u003CtargetTiddler>is[image]] -[\u003CtargetTiddler>type[image/svg+xml]]\",\"dropdown\":\"$:/core/ui/EditorToolbar/line-width-dropdown\",\"text\":\"\u003C$text text={{$:/config/BitmapEditor/LineWidth}}/>\\n\"},\"$:/core/ui/EditorToolbar/link-dropdown\":{\"text\":\"\\\\define lingo-base()$:/language/Buttons/Link/\\n\\\\define add-link-actions()\u003C$action-sendmessage $message=tm-edit-text-operation text={{$(linkTiddler)$}}$param=make-link/>\u003C$action-deletetiddler $filter=\\\"[\u003Cdropdown-state>] [\u003CsearchTiddler>] [\u003ClinkTiddler>] [\u003CstoreTitle>] [\u003CsearchListState>]\\\"/>\\n\\\\define get-focus-selector()[data-tiddler-title=\\\"$(cssEscapedTitle)$\\\"] .tc-create-wikitext-link input\\n\\\\define cancel-search-actions-inner()\u003C$let userInput={{{[\u003CstoreTitle>get[text]]}}}>\u003C$list filter='[\u003CsearchTiddler>get[text]!match\u003CuserInput>]'emptyMessage=\\\"\u003C$action-deletetiddler $filter='[\u003CsearchTiddler>] [\u003ClinkTiddler>] [\u003CstoreTitle>] [\u003CsearchListState>]'/>\\\">\u003C$action-setfield $tiddler=\u003C\u003CsearchTiddler>>text=\u003C\u003CuserInput>>/>\u003C$action-setfield $tiddler=\u003C\u003CrefreshTitle>>text=yes/>\\n\\\\define cancel-search-actions()\u003C$list filter=\\\"[\u003CstoreTitle>!has[text]\u003CsearchTiddler>!has[text]]\\\"emptyMessage=\\\"\u003C\u003Ccancel-search-actions-inner>>\\\">\u003C$action-sendmessage $message=tm-edit-text-operation $param=focus-editor/>\\n\\\\define external-link()\u003C$button style=\\\"width: auto; display: inline-block; background-colour: inherit;\\\"actions=\u003C\u003Cadd-link-actions>>class=tc-btn-invisible>{{$:/core/images/chevron-right}}\\n\\\\define set-next-input-tab(beforeafter:after)\u003C$macrocall stateTitle='$:/state/tab/search-results/sidebar'tag='$:/tags/SearchResults'beforeafter=\\\"$beforeafter$\\\"defaultState={{$:/config/SearchResults/Default}}actions=\\\"\u003C$action-setfield $tiddler='$:/state/search/currentTab' text=\u003C\u003CnextTab>>/>\\\"$name=change-input-tab/>\\n\\\\define body(config-title)\\n''\u003C\u003Clingo Hint>>''\\n\\n\u003C$vars searchTiddler=\\\"\\\"\\\"$config-title$/search\\\"\\\"\\\"linkTiddler=\\\"\\\"\\\"$config-title$/link\\\"\\\"\\\"linktext=''searchListState=\u003C\u003Cqualify'$:/temp/link-search/selected-item'>>refreshTitle=\u003C\u003Cqualify'$:/temp/link-search/refresh'>>storeTitle=\u003C\u003Cqualify'$:/temp/link-search/input'>>>\\n\\n\u003C$let linkTiddler=\u003C\u003CsearchTiddler>>>\u003C$keyboard actions=\u003C\u003Cset-next-input-tab>>key=((input-tab-right))>\u003C$keyboard key=((input-tab-left)) actions=\u003C\u003Cset-next-input-tab before>>class=tc-create-wikitext-link>\u003C$macrocall $name=keyboard-driven-input tiddler=\u003C\u003CsearchTiddler>>storeTitle=\u003C\u003CstoreTitle>>selectionStateTitle=\u003C\u003CsearchListState>>refreshTitle=\u003C\u003CrefreshTitle>>type=search filterMinLength=1 tag=input focus inputCancelActions=\u003C\u003Ccancel-search-actions>>inputAcceptActions=\u003C\u003Cadd-link-actions>>placeholder={{$:/language/Search/Search}}default=''configTiddlerFilter='[[$:/state/search/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}]'class=tc-popup-handle/>\u003C/$keyboard>\u003C/$keyboard> \u003C$reveal tag=span state=\u003C\u003CstoreTitle>>text=''type=nomatch>\u003C\u003Cexternal-link>> \u003C$button style='width: auto; display: inline-block; background-colour: inherit;'class=tc-btn-invisible>\u003C\u003Ccancel-search-actions>>\u003C$let cssEscapedTitle={{{[\u003CstoryTiddler>escapecss[]]}}}>\u003C$action-sendmessage $param=\u003C\u003Cget-focus-selector>>$message=tm-focus-selector/>\u003C/$let>{{$:/core/images/close-button}}\u003C/$button>\u003C/$reveal>\u003C/$let>\\n\\n\u003C$reveal tag=div state=\u003C\u003CstoreTitle>>text=''type=nomatch>\\n\\n\u003C$linkcatcher actions=\u003C\u003Cadd-link-actions>>to=\u003C\u003ClinkTiddler>>>\\n\\n\u003C$vars userInput={{{[\u003CstoreTitle>get[text]]}}}configTiddler={{{[[$:/state/search/currentTab]!is[missing]get[text]]~[{$:/config/SearchResults/Default}]}}}>\\n\\n{{$:/core/ui/SearchResults}}\\n\\\\end\\n\u003C$macrocall config-title=\u003C\u003Cqualify'$:/state/Link/'>>$name=body/>\\n\"},\"$:/core/ui/EditorToolbar/link\":{\"tags\":\"$:/tags/EditorToolbar\",\"icon\":\"$:/core/images/link\",\"caption\":\"{{$:/language/Buttons/Link/Caption}}\",\"description\":\"{{$:/language/Buttons/Link/Hint}}\",\"condition\":\"[\u003CtargetTiddler>!has[type]] [\u003CtargetTiddler>type[text/vnd.tiddlywiki]]\",\"button-classes\":\"tc-text-editor-toolbar-item-start-group\",\"shortcuts\":\"((link))\",\"dropdown\":\"$:/core/ui/EditorToolbar/link-dropdown\",\"text\":\"\"},\"$:/core/ui/EditorToolbar/linkify\":{\"caption\":\"{{$:/language/Buttons/Linkify/Caption}}\",\"condition\":\"[\u003CtargetTiddler>!has[type]] [\u003CtargetTiddler>type[text/vnd.tiddlywiki]]\",\"description\":\"{{$:/language/Buttons/Linkify/Hint}}\",\"icon\":\"$:/core/images/linkify\",\"list-before\":\"$:/core/ui/EditorToolbar/mono-block\",\"shortcuts\":\"((linkify))\",\"tags\":\"$:/tags/EditorToolbar\",\"text\":\"\u003C$action-sendmessage $message=tm-edit-text-operation $param=wrap-selection prefix=[[ suffix=]]/>\\n\"},\"$:/core/ui/EditorToolbar/list-bullet\":{\"tags\":\"$:/tags/EditorToolbar\",\"icon\":\"$:/core/images/list-bullet\",\"caption\":\"{{$:/language/Buttons/ListBullet/Caption}}\",\"description\":\"{{$:/language/Buttons/ListBullet/Hint}}\",\"condition\":\"[\u003CtargetTiddler>!has[type]] [\u003CtargetTiddler>type[text/vnd.tiddlywiki]]\",\"shortcuts\":\"((list-bullet))\",\"text\":\"\u003C$action-sendmessage $message=tm-edit-text-operation $param=prefix-lines character=* count=1/>\\n\"},\"$:/core/ui/EditorToolbar/list-number\":{\"tags\":\"$:/tags/EditorToolbar\",\"icon\":\"$:/core/images/list-number\",\"caption\":\"{{$:/language/Buttons/ListNumber/Caption}}\",\"description\":\"{{$:/language/Buttons/ListNumber/Hint}}\",\"condition\":\"[\u003CtargetTiddler>!has[type]] [\u003CtargetTiddler>type[text/vnd.tiddlywiki]]\",\"shortcuts\":\"((list-number))\",\"text\":\"\u003C$action-sendmessage $message=tm-edit-text-operation $param=prefix-lines character=# count=1/>\\n\"},\"$:/core/ui/EditorToolbar/mono-block\":{\"tags\":\"$:/tags/EditorToolbar\",\"icon\":\"$:/core/images/mono-block\",\"caption\":\"{{$:/language/Buttons/MonoBlock/Caption}}\",\"description\":\"{{$:/language/Buttons/MonoBlock/Hint}}\",\"condition\":\"[\u003CtargetTiddler>!has[type]] [\u003CtargetTiddler>type[text/vnd.tiddlywiki]]\",\"button-classes\":\"tc-text-editor-toolbar-item-start-group\",\"shortcuts\":\"((mono-block))\",\"text\":\"\u003C$action-sendmessage $message=tm-edit-text-operation $param=wrap-lines prefix=\\\"\\n```\\\"suffix=```/>\\n\"},\"$:/core/ui/EditorToolbar/mono-line\":{\"tags\":\"$:/tags/EditorToolbar\",\"icon\":\"$:/core/images/mono-line\",\"caption\":\"{{$:/language/Buttons/MonoLine/Caption}}\",\"description\":\"{{$:/language/Buttons/MonoLine/Hint}}\",\"condition\":\"[\u003CtargetTiddler>!has[type]] [\u003CtargetTiddler>type[text/vnd.tiddlywiki]]\",\"shortcuts\":\"((mono-line))\",\"text\":\"\u003C$action-sendmessage $message=tm-edit-text-operation $param=wrap-selection prefix=` suffix=`/>\\n\"},\"$:/core/ui/EditorToolbar/more-dropdown\":{\"text\":\"\\\\define config-title()$:/config/EditorToolbarButtons/Visibility/$(toolbarItem)$\\n\\\\define conditional-button()\u003C$list filter={{$(toolbarItem)$!!condition}}variable=condition>\u003C$transclude tiddler=\\\"$:/core/ui/EditTemplate/body/toolbar/button\\\"mode=inline/> \u003C$transclude tiddler=\u003C\u003CtoolbarItem>>field=description/>\\n\u003Cdiv class=tc-text-editor-toolbar-more>\u003C$list filter=\\\"[[$:/tags/EditorToolbar]tagging[]!is[draft]]-$:/core/ui/EditorToolbar/more\\\">\u003C$reveal type=match state=\u003C\u003Cconfig-visibility-title>>text=hide tag=div>\u003C\u003Cconditional-button>>\"},\"$:/core/ui/EditorToolbar/more\":{\"tags\":\"$:/tags/EditorToolbar\",\"icon\":\"$:/core/images/down-arrow\",\"caption\":\"{{$:/language/Buttons/More/Caption}}\",\"description\":\"{{$:/language/Buttons/More/Hint}}\",\"condition\":\"[\u003CtargetTiddler>]\",\"dropdown\":\"$:/core/ui/EditorToolbar/more-dropdown\",\"text\":\"\"},\"$:/core/ui/EditorToolbar/opacity-dropdown\":{\"text\":\"\\\\define lingo-base()$:/language/Buttons/Opacity/\\n\\\\define toolbar-opacity-inner()\\n\u003C$button tooltip=\\\"\\\"\\\"$(opacity)$\\\"\\\"\\\"tag=a>\\n\\n\u003C$action-setfield $tiddler=\\\"$:/config/BitmapEditor/Opacity\\\"$value=\\\"$(opacity)$\\\"/>\\n\\n\u003C$action-deletetiddler $tiddler=\u003C\u003Cdropdown-state>>/>\\n\\n\u003Cdiv style=\\\"display: inline-block; vertical-align: middle; background-color: $(current-paint-colour)$; opacity: $(opacity)$; width: 1em; height: 1em; border-radius: 50%;\\\"/>\\n\\n\u003Cspan style=\\\"margin-left: 8px;\\\">\\n\\n\u003C$text text=\\\"\\\"\\\"$(opacity)$\\\"\\\"\\\"/>\\n\\n\u003C$reveal state=\\\"$:/config/BitmapEditor/Opacity\\\"type=match text=\\\"\\\"\\\"$(opacity)$\\\"\\\"\\\"tag=span>\\n\\n\u003C$entity entity=&nbsp;/>\\n\\n\u003C$entity entity=&#x2713;/>\\n\\n\\\\end\\n\\\\define toolbar-opacity()\\n''\u003C\u003Clingo Hint>>''\\n\\n\u003C$list filter={{$:/config/BitmapEditor/Opacities}}variable=opacity>\\n\\n\u003C\u003Ctoolbar-opacity-inner>>\\n\\\\end\\n\u003C$let current-paint-colour={{$:/config/BitmapEditor/Colour}}current-opacity={{$:/config/BitmapEditor/Opacity}}>\\n\\n\u003C\u003Ctoolbar-opacity>>\"},\"$:/core/ui/EditorToolbar/opacity\":{\"tags\":\"$:/tags/EditorToolbar\",\"icon\":\"$:/core/images/opacity\",\"caption\":\"{{$:/language/Buttons/Opacity/Caption}}\",\"description\":\"{{$:/language/Buttons/Opacity/Hint}}\",\"condition\":\"[\u003CtargetTiddler>is[image]] -[\u003CtargetTiddler>type[image/svg+xml]]\",\"dropdown\":\"$:/core/ui/EditorToolbar/opacity-dropdown\",\"text\":\"\u003C$text text={{$:/config/BitmapEditor/Opacity}}/>\\n\"},\"$:/core/ui/EditorToolbar/paint-dropdown\":{\"text\":\"''{{$:/language/Buttons/Paint/Hint}}''\\n\\n\u003C$macrocall actions='\\n\\n\u003C$action-setfield\\n\\t$tiddler=\\\"$:/config/BitmapEditor/Colour\\\"\\n\\t$value=\u003C\u003Ccolour-picker-value>>\\n/>\\n\\n\u003C$action-deletetiddler\\n\\t$tiddler=\u003C\u003Cdropdown-state>>\\n/>\\n\\n'$name=colour-picker/>\\n\"},\"$:/core/ui/EditorToolbar/paint\":{\"tags\":\"$:/tags/EditorToolbar\",\"icon\":\"$:/core/images/paint\",\"caption\":\"{{$:/language/Buttons/Paint/Caption}}\",\"description\":\"{{$:/language/Buttons/Paint/Hint}}\",\"condition\":\"[\u003CtargetTiddler>is[image]] -[\u003CtargetTiddler>type[image/svg+xml]]\",\"dropdown\":\"$:/core/ui/EditorToolbar/paint-dropdown\",\"text\":\"\\\\define toolbar-paint()\u003Cdiv style=\\\"display: inline-block; vertical-align: middle; background-color: $(colour-picker-value)$; width: 1em; height: 1em; border-radius: 50%;\\\"/>\\n\u003C$let colour-picker-value={{$:/config/BitmapEditor/Colour}}>\u003C\u003Ctoolbar-paint>>\"},\"$:/core/ui/EditorToolbar/picture-dropdown\":{\"text\":\"\\\\define replacement-text()[img[$(imageTitle)$]]\\n''{{$:/language/Buttons/Picture/Hint}}''\\n\\n\u003C$macrocall actions='\\n\\n\u003C$action-sendmessage\\n\\t$message=\\\"tm-edit-text-operation\\\"\\n\\t$param=\\\"replace-selection\\\"\\n\\ttext=\u003C\u003Creplacement-text>>\\n/>\\n\\n\u003C$action-deletetiddler\\n\\t$tiddler=\u003C\u003Cdropdown-state>>\\n/>\\n\\n'$name=image-picker/>\\n\"},\"$:/core/ui/EditorToolbar/picture\":{\"tags\":\"$:/tags/EditorToolbar\",\"icon\":\"$:/core/images/picture\",\"caption\":\"{{$:/language/Buttons/Picture/Caption}}\",\"description\":\"{{$:/language/Buttons/Picture/Hint}}\",\"condition\":\"[\u003CtargetTiddler>!has[type]] [\u003CtargetTiddler>type[text/vnd.tiddlywiki]]\",\"shortcuts\":\"((picture))\",\"dropdown\":\"$:/core/ui/EditorToolbar/picture-dropdown\",\"text\":\"\"},\"$:/core/ui/EditorToolbar/preview-type-dropdown\":{\"text\":\"\\\\define preview-type-button()\\n\u003C$button tag=a>\\n\\n\u003C$action-setfield $tiddler=\\\"$:/state/editpreviewtype\\\"$value=\\\"$(previewType)$\\\"/>\\n\\n\u003C$action-deletetiddler $tiddler=\u003C\u003Cdropdown-state>>/>\\n\\n\u003C$transclude tiddler=\u003C\u003CpreviewType>>field=caption mode=inline>\\n\\n\u003C$view tiddler=\u003C\u003CpreviewType>>field=title mode=inline/>\\n\\n\u003C/$transclude>\u003C$reveal tag=span state=\\\"$:/state/editpreviewtype\\\"text=\u003C\u003CpreviewType>>default=\\\"$:/core/ui/EditTemplate/body/preview/output\\\"type=match>\\n\\n\u003C$entity entity=&nbsp;/>\\n\\n\u003C$entity entity=&#x2713;/>\\n\\n\\\\end\\n\u003C$list filter=\\\"[[$:/tags/EditPreview]tagging[]!is[draft]]\\\"variable=previewType>\\n\\n\u003C\u003Cpreview-type-button>>\"},\"$:/core/ui/EditorToolbar/preview-type\":{\"tags\":\"$:/tags/EditorToolbar\",\"icon\":\"$:/core/images/chevron-down\",\"caption\":\"{{$:/language/Buttons/PreviewType/Caption}}\",\"description\":\"{{$:/language/Buttons/PreviewType/Hint}}\",\"condition\":\"[all[shadows+tiddlers]tag[$:/tags/EditPreview]!has[draft.of]butfirst[]limit[1]]\",\"button-classes\":\"tc-text-editor-toolbar-item-adjunct\",\"dropdown\":\"$:/core/ui/EditorToolbar/preview-type-dropdown\"},\"$:/core/ui/EditorToolbar/preview\":{\"tags\":\"$:/tags/EditorToolbar\",\"icon\":\"$:/core/images/preview-open\",\"custom-icon\":\"yes\",\"caption\":\"{{$:/language/Buttons/Preview/Caption}}\",\"description\":\"{{$:/language/Buttons/Preview/Hint}}\",\"condition\":\"[\u003CtargetTiddler>]\",\"button-classes\":\"tc-text-editor-toolbar-item-start-group\",\"shortcuts\":\"((preview))\",\"text\":\"\u003C$reveal state=\u003C\u003Cedit-preview-state>>type=match text=yes tag=span>{{$:/core/images/preview-open}}\u003C$action-setfield $tiddler=\u003C\u003Cedit-preview-state>>$value=no/>\u003C/$reveal>\u003C$reveal state=\u003C\u003Cedit-preview-state>>type=nomatch text=yes tag=span>{{$:/core/images/preview-closed}}\u003C$action-setfield $tiddler=\u003C\u003Cedit-preview-state>>$value=yes/>\"},\"$:/core/ui/EditorToolbar/quote\":{\"tags\":\"$:/tags/EditorToolbar\",\"icon\":\"$:/core/images/quote\",\"caption\":\"{{$:/language/Buttons/Quote/Caption}}\",\"description\":\"{{$:/language/Buttons/Quote/Hint}}\",\"condition\":\"[\u003CtargetTiddler>!has[type]] [\u003CtargetTiddler>type[text/vnd.tiddlywiki]]\",\"shortcuts\":\"((quote))\",\"text\":\"\u003C$action-sendmessage $message=tm-edit-text-operation prefix=\\\"\\n\u003C\u003C\u003C\\\"suffix=\\\"\u003C\u003C\u003C\\\"$param=wrap-lines/>\\n\"},\"$:/core/ui/EditorToolbar/rotate-left\":{\"tags\":\"$:/tags/EditorToolbar\",\"icon\":\"$:/core/images/rotate-left\",\"caption\":\"{{$:/language/Buttons/RotateLeft/Caption}}\",\"description\":\"{{$:/language/Buttons/RotateLeft/Hint}}\",\"condition\":\"[\u003CtargetTiddler>is[image]] -[\u003CtargetTiddler>type[image/svg+xml]]\",\"text\":\"\u003C$action-sendmessage $message=tm-edit-bitmap-operation $param=rotate-left/>\\n\"},\"$:/core/ui/EditorToolbar/size-dropdown\":{\"text\":\"\\\\define lingo-base()$:/language/Buttons/Size/\\n\\\\define toolbar-button-size-preset(config-title)\\n\u003C$set filter=\\\"$(sizePair)$ +[nth[]]\\\"name=width>\\n\\n\u003C$set filter=\\\"$(sizePair)$ +[last[]]\\\"name=height>\\n\\n\u003C$button tag=a>\\n\\n\u003C$action-setfield $tiddler=\\\"\\\"\\\"$config-title$/new-width\\\"\\\"\\\"$value=\u003C\u003Cwidth>>/>\\n\\n\u003C$action-setfield $tiddler=\\\"\\\"\\\"$config-title$/new-height\\\"\\\"\\\"$value=\u003C\u003Cheight>>/>\\n\\n\u003C$action-deletetiddler $tiddler=\\\"\\\"\\\"$config-title$/presets-popup\\\"\\\"\\\"/>\\n\\n\u003C$text text=\u003C\u003Cwidth>>/> &times; \u003C$text text=\u003C\u003Cheight>>/>\\n\\\\end\\n\\\\define toolbar-button-size(config-title)\\n''{{$:/language/Buttons/Size/Hint}}''\\n\\n\u003C\u003Clingo Caption/Width>> \u003C$edit-text tag=input tiddler=\\\"\\\"\\\"$config-title$/new-width\\\"\\\"\\\"default=\u003C\u003Ctv-bitmap-editor-width>>focus size=8/> \u003C\u003Clingo Caption/Height>> \u003C$edit-text tag=input tiddler=\\\"\\\"\\\"$config-title$/new-height\\\"\\\"\\\"default=\u003C\u003Ctv-bitmap-editor-height>>size=8/> \u003C$button popup=\\\"\\\"\\\"$config-title$/presets-popup\\\"\\\"\\\"class='tc-btn-invisible tc-popup-keep'style='width: auto; display: inline-block; background-colour: inherit;'selectedClass=tc-selected>{{$:/core/images/down-arrow}}\u003C/$button>\\n\\n\u003C$reveal tag=span state=\\\"\\\"\\\"$config-title$/presets-popup\\\"\\\"\\\"type=popup position=belowleft animate=yes>\\n\\n\u003Cdiv class='tc-drop-down tc-popup-keep'>\\n\\n\u003C$list filter={{$:/config/BitmapEditor/ImageSizes}}variable=sizePair>\\n\\n\u003C$macrocall config-title=\\\"$config-title$\\\"$name=toolbar-button-size-preset/>\\n\\n\u003C/$list>\u003C/div>\u003C/$reveal>\u003C$button>\u003C$action-sendmessage $message=tm-edit-bitmap-operation width={{$config-title$/new-width}}height={{$config-title$/new-height}}$param=resize/>\u003C$action-deletetiddler $tiddler=\\\"\\\"\\\"$config-title$/new-width\\\"\\\"\\\"/>\u003C$action-deletetiddler $tiddler=\\\"\\\"\\\"$config-title$/new-height\\\"\\\"\\\"/>\u003C$action-deletetiddler $tiddler=\u003C\u003Cdropdown-state>>/>\u003C\u003Clingo Caption/Resize>>\\n\\\\end\\n\u003C$macrocall config-title=\u003C\u003Cqualify'$:/state/Size/'>>$name=toolbar-button-size/>\\n\"},\"$:/core/ui/EditorToolbar/size\":{\"tags\":\"$:/tags/EditorToolbar\",\"icon\":\"$:/core/images/size\",\"caption\":\"{{$:/language/Buttons/Size/Caption}}\",\"description\":\"{{$:/language/Buttons/Size/Hint}}\",\"condition\":\"[\u003CtargetTiddler>is[image]] -[\u003CtargetTiddler>type[image/svg+xml]]\",\"dropdown\":\"$:/core/ui/EditorToolbar/size-dropdown\",\"text\":\"\"},\"$:/core/ui/EditorToolbar/StampDropdown/ItemTemplate\":{\"text\":\"\u003C$linkcatcher actions=\\\"\\\"\\\"\\n\\n\u003C$list filter=\\\"[\u003Cmodifier>!match[ctrl]]\\\"variable=ignore>\\n\\n\u003C$list filter=\\\"[{!!title}addsuffix[/prefix]!is[tiddler]!is[shadow]removesuffix[/prefix]addsuffix[/suffix]!is[tiddler]!is[shadow]]\\\"variable=ignore>\\n\\n\u003C$action-sendmessage $message=tm-edit-text-operation text={{{[{!!title}get[text]]}}}$param=replace-selection/>\\n\\n\u003C/$list>\u003C$list filter=\\\"[{!!title}addsuffix[/prefix]][{!!title}addsuffix[/suffix]]+[is[shadow]]:else[is[tiddler]]+[nth[]]\\\"variable=ignore>\\n\\n\u003C$action-sendmessage $message=tm-edit-text-operation prefix={{{[{!!title}addsuffix[/prefix]get[text]]}}}suffix={{{[{!!title}addsuffix[/suffix]get[text]]}}}$param=wrap-selection/>\\n\\n\u003C/$list>\u003C/$list>\u003C$list filter=\\\"[\u003Cmodifier>match[ctrl]]\\\"variable=ignore>\\n\\n\u003C$action-sendmessage $message=tm-edit-tiddler/>\\n\\n\u003C/$list>\u003C$action-deletetiddler $tiddler=\u003C\u003Cdropdown-state>>/>\\n\\\"\\\"\\\">\\n\\n\u003C$link tooltip={{{[{!!title}get[description]]}}}>\\n\\n\u003C$transclude tiddler={{!!title}}field=caption mode=inline>\\n\\n\u003C$view tiddler={{!!title}}field=title/>\\n\"},\"$:/core/ui/EditorToolbar/stamp-dropdown\":{\"text\":\"\u003C$macrocall $name=list-tagged-draggable tag=\\\"$:/tags/TextEditor/Snippet\\\"itemTemplate=\\\"$:/core/ui/EditorToolbar/StampDropdown/ItemTemplate\\\"subFilter=!is[draft]/>\\n\\n----\\n\\n\u003C$button tag=a>\\n\\n\u003C$action-sendmessage tags=\\\"$:/tags/TextEditor/Snippet\\\"caption={{$:/language/Buttons/Stamp/New/Title}}text={{$:/language/Buttons/Stamp/New/Text}}$message=tm-new-tiddler/>\\n\\n\u003C$action-deletetiddler $tiddler=\u003C\u003Cdropdown-state>>/>\\n\\n\u003Cem>\\n\\n\u003C$text text={{$:/language/Buttons/Stamp/Caption/New}}/>\\n\"},\"$:/core/ui/EditorToolbar/stamp\":{\"tags\":\"$:/tags/EditorToolbar\",\"icon\":\"$:/core/images/stamp\",\"caption\":\"{{$:/language/Buttons/Stamp/Caption}}\",\"description\":\"{{$:/language/Buttons/Stamp/Hint}}\",\"condition\":\"[\u003CtargetTiddler>type[]] [\u003CtargetTiddler>get[type]prefix[text/]] [\u003CtargetTiddler>get[type]match[application/javascript]] [\u003CtargetTiddler>get[type]match[application/json]] [\u003CtargetTiddler>get[type]match[application/x-tiddler-dictionary]] [\u003CtargetTiddler>get[type]match[image/svg+xml]] +[first[]]\",\"shortcuts\":\"((stamp))\",\"dropdown\":\"$:/core/ui/EditorToolbar/stamp-dropdown\",\"button-classes\":\"tc-editortoolbar-stamp-button\",\"text\":\"\"},\"$:/core/ui/EditorToolbar/strikethrough\":{\"tags\":\"$:/tags/EditorToolbar\",\"icon\":\"$:/core/images/strikethrough\",\"caption\":\"{{$:/language/Buttons/Strikethrough/Caption}}\",\"description\":\"{{$:/language/Buttons/Strikethrough/Hint}}\",\"condition\":\"[\u003CtargetTiddler>!has[type]] [\u003CtargetTiddler>type[text/vnd.tiddlywiki]]\",\"shortcuts\":\"((strikethrough))\",\"text\":\"\u003C$action-sendmessage $message=tm-edit-text-operation $param=wrap-selection prefix=~~ suffix=~~/>\\n\"},\"$:/core/ui/EditorToolbar/subscript\":{\"tags\":\"$:/tags/EditorToolbar\",\"icon\":\"$:/core/images/subscript\",\"caption\":\"{{$:/language/Buttons/Subscript/Caption}}\",\"description\":\"{{$:/language/Buttons/Subscript/Hint}}\",\"condition\":\"[\u003CtargetTiddler>!has[type]] [\u003CtargetTiddler>type[text/vnd.tiddlywiki]]\",\"shortcuts\":\"((subscript))\",\"text\":\"\u003C$action-sendmessage $message=tm-edit-text-operation $param=wrap-selection prefix=,, suffix=,,/>\\n\"},\"$:/core/ui/EditorToolbar/superscript\":{\"tags\":\"$:/tags/EditorToolbar\",\"icon\":\"$:/core/images/superscript\",\"caption\":\"{{$:/language/Buttons/Superscript/Caption}}\",\"description\":\"{{$:/language/Buttons/Superscript/Hint}}\",\"condition\":\"[\u003CtargetTiddler>!has[type]] [\u003CtargetTiddler>type[text/vnd.tiddlywiki]]\",\"shortcuts\":\"((superscript))\",\"text\":\"\u003C$action-sendmessage $message=tm-edit-text-operation $param=wrap-selection prefix=^^ suffix=^^/>\\n\"},\"$:/core/ui/EditorToolbar/transcludify\":{\"caption\":\"{{$:/language/Buttons/Transcludify/Caption}}\",\"condition\":\"[\u003CtargetTiddler>!has[type]] [\u003CtargetTiddler>type[text/vnd.tiddlywiki]]\",\"description\":\"{{$:/language/Buttons/Transcludify/Hint}}\",\"icon\":\"$:/core/images/transcludify\",\"list-before\":\"$:/core/ui/EditorToolbar/mono-block\",\"shortcuts\":\"((transcludify))\",\"tags\":\"$:/tags/EditorToolbar\",\"text\":\"\u003C$action-sendmessage $message=tm-edit-text-operation $param=wrap-selection prefix={{ suffix=}}/>\\n\"},\"$:/core/ui/EditorToolbar/underline\":{\"tags\":\"$:/tags/EditorToolbar\",\"icon\":\"$:/core/images/underline\",\"caption\":\"{{$:/language/Buttons/Underline/Caption}}\",\"description\":\"{{$:/language/Buttons/Underline/Hint}}\",\"condition\":\"[\u003CtargetTiddler>!has[type]] [\u003CtargetTiddler>type[text/vnd.tiddlywiki]]\",\"shortcuts\":\"((underline))\",\"text\":\"\u003C$action-sendmessage $message=tm-edit-text-operation $param=wrap-selection prefix=__ suffix=__/>\\n\"},\"$:/core/ui/ExportTiddlyWikiCore\":{\"text\":\"\\\\define jsFileName()tiddlywikicore-$(version)$.js\\n\\\\define noExportMsg()\\nIt appears that you have a wiki with an external ~TiddlyWiki core. The export action cannot be performed.\\n\u003Cp>You will need to view the page source in your browser. Then go to the very bottom the the source, find the last `\u003Cscript>` \\nelement, and right-click its `src` URI. Save the link as ''$(jsFileName)$\\n\\\\end\\n''For advanced users''\\n\\nExport the ~TiddlyWiki core ~JavaScript code for running with external ~JavaScript:\\n\\n\u003C$button tooltip='Export the ~TiddlyWiki core code for running with external ~JavaScript'aria-label='export TiddlyWiki core'class=tc-btn-big-green>\\n\u003C$list filter='[[$:/boot/boot.js]is[missing]]'emptyMessage='\u003C$action-sendmessage $param=\\\"$:/core/templates/tiddlywiki5.js\\\"filename=\u003C\u003CjsFileName>>$message=tm-download-file/>'variable=ignore>\\n\u003C$action-setfield $tiddler=\u003C\u003Cqualify'$:/temp/alert'>>text=\u003C\u003CnoExportMsg>>subtitle='Export ~TiddllyWiki Core'/>\\n\u003C$action-sendmessage $param=\u003C\u003Cqualify'$:/temp/alert'>>$message=tm-modal/>\\n\u003C/$list>\\n{{$:/core/images/download-button}} Download ~TiddlyWiki core\\n\u003C/$button>\\n\\n[[Further information|https://tiddlywiki.com/#Using%20the%20external%20JavaScript%20template]]\\n\"},\"$:/core/Filters/AllTags\":{\"tags\":\"$:/tags/Filter\",\"filter\":\"[tags[]!is[system]sort[title]]\",\"description\":\"{{$:/language/Filters/AllTags}}\",\"text\":\"\"},\"$:/core/Filters/AllTiddlers\":{\"tags\":\"$:/tags/Filter\",\"filter\":\"[!is[system]sort[title]]\",\"description\":\"{{$:/language/Filters/AllTiddlers}}\",\"text\":\"\"},\"$:/core/Filters/Drafts\":{\"tags\":\"$:/tags/Filter\",\"filter\":\"[has[draft.of]sort[title]]\",\"description\":\"{{$:/language/Filters/Drafts}}\",\"text\":\"\"},\"$:/core/Filters/Missing\":{\"tags\":\"$:/tags/Filter\",\"filter\":\"[all[missing]sort[title]]\",\"description\":\"{{$:/language/Filters/Missing}}\",\"text\":\"\"},\"$:/core/Filters/Orphans\":{\"tags\":\"$:/tags/Filter\",\"filter\":\"[all[orphans]sort[title]]\",\"description\":\"{{$:/language/Filters/Orphans}}\",\"text\":\"\"},\"$:/core/Filters/OverriddenShadowTiddlers\":{\"tags\":\"$:/tags/Filter\",\"filter\":\"[is[shadow]]\",\"description\":\"{{$:/language/Filters/OverriddenShadowTiddlers}}\",\"text\":\"\"},\"$:/core/Filters/RecentSystemTiddlers\":{\"tags\":\"$:/tags/Filter\",\"filter\":\"[has[modified]!sort[modified]limit[50]]\",\"description\":\"{{$:/language/Filters/RecentSystemTiddlers}}\",\"text\":\"\"},\"$:/core/Filters/RecentTiddlers\":{\"tags\":\"$:/tags/Filter\",\"filter\":\"[!is[system]has[modified]!sort[modified]limit[50]]\",\"description\":\"{{$:/language/Filters/RecentTiddlers}}\",\"text\":\"\"},\"$:/core/Filters/SessionTiddlers\":{\"tags\":\"$:/tags/Filter\",\"filter\":\"[haschanged[]]\",\"description\":\"{{$:/language/Filters/SessionTiddlers}}\",\"text\":\"\"},\"$:/core/Filters/ShadowTiddlers\":{\"tags\":\"$:/tags/Filter\",\"filter\":\"[all[shadows]sort[title]]\",\"description\":\"{{$:/language/Filters/ShadowTiddlers}}\",\"text\":\"\"},\"$:/core/Filters/StoryList\":{\"tags\":\"$:/tags/Filter\",\"filter\":\"[list[$:/StoryList]] -$:/AdvancedSearch\",\"description\":\"{{$:/language/Filters/StoryList}}\",\"text\":\"\"},\"$:/core/Filters/SystemTags\":{\"tags\":\"$:/tags/Filter\",\"filter\":\"[all[shadows+tiddlers]tags[]is[system]sort[title]]\",\"description\":\"{{$:/language/Filters/SystemTags}}\",\"text\":\"\"},\"$:/core/Filters/SystemTiddlers\":{\"tags\":\"$:/tags/Filter\",\"filter\":\"[is[system]sort[title]]\",\"description\":\"{{$:/language/Filters/SystemTiddlers}}\",\"text\":\"\"},\"$:/core/Filters/TypedTiddlers\":{\"tags\":\"$:/tags/Filter\",\"filter\":\"[!is[system]has[type]each[type]sort[type]] -[type[text/vnd.tiddlywiki]]\",\"description\":\"{{$:/language/Filters/TypedTiddlers}}\",\"text\":\"\"},\"$:/core/ui/ImportListing\":{\"text\":\"\\\\define lingo-base()$:/language/Import/\\n\\\\define messageField()message-$(payloadTiddler)$\\n\\\\define payloadTitleFilter()[\u003CcurrentTiddler>get\u003CrenameField>minlength[1]else\u003CpayloadTiddler>]\\n\\\\define overWriteWarning()\u003C$list filter=\\\"[{!!title}!has\u003CsuppressedField>]\\\">\u003C$text text={{{[subfilter\u003CpayloadTitleFilter>!is[tiddler]then[]]~[\u003Clingo-base>addsuffix[Listing/Rename/OverwriteWarning]get[text]]}}}/>\\n\\\\define selectionInfo()\u003C$let escUnselected={{{[{$:/language/Import/Upgrader/Tiddler/Unselected}escaperegexp[]addprefix[(?g)]]}}}>\u003C$list filter=\\\"[{!!title}get\u003CmessageField>regexp\u003CescUnselected>]\\\"variable=ignore>\u003C$text text={{{[{!!title}get\u003CselectionField>match[checked]then{$:/language/Import/Upgrader/Tiddler/Selected}else[]]}}}/>\\n\\\\define libraryInfo()\u003C$let escUnselected={{{[{$:/language/Import/Upgrader/Tiddler/Unselected}escaperegexp[]addprefix[(?g)]]}}}>\u003C$list filter=\\\"[{!!title}get\u003CmessageField>!regexp\u003CescUnselected>]\\\"variable=ignore>\u003C$text text={{{[{!!title}get\u003CmessageField>]}}}/>\\n\\\\define selectionField()selection-$(payloadTiddler)$\\n\\\\define renameField()rename-$(payloadTiddler)$\\n\\\\define suppressedField()suppressed-$(payloadTiddler)$\\n\\\\define newImportTitleTiddler()$:/temp/NewImportTitle-$(payloadTiddler)$\\n\\\\define previewPopupState()$(currentTiddler)$!!popup-$(payloadTiddler)$\\n\\\\define renameFieldState()$(currentTiddler)$!!state-rename-$(payloadTiddler)$\\n\\\\define select-all-actions()\u003C$list filter=[{!!title}plugintiddlers[]sort[title]] variable=payloadTiddler>\u003C$action-setfield $field={{{[\u003CpayloadTiddler>addprefix[selection-]]}}}$value={{$:/state/import/select-all}}/>\\n\u003Ctable class=tc-import-table>\u003Ctbody>\u003Ctr>\u003Cth align=left>\u003C$checkbox tiddler=\\\"$:/state/import/select-all\\\"field=text checked=checked unchecked=unchecked actions=\u003C\u003Cselect-all-actions>>default=checked> \u003C\u003Clingo Listing/Select/Caption>>\u003C/$checkbox>\u003C/th>\u003Cth>\u003C\u003Clingo Listing/Title/Caption>>\u003C/th>\u003Cth>\u003C\u003Clingo Listing/Status/Caption>>\u003C/th>\u003C/tr>\u003C$list filter=[{!!title}plugintiddlers[]sort[title]] variable=payloadTiddler>\u003Ctr class={{{[{!!title}has\u003CsuppressedField>then[tc-row-disabled]]~[subfilter\u003CpayloadTitleFilter>is[tiddler]then[tc-row-warning]]}}}>\u003Ctd>\u003C$checkbox field=\u003C\u003CselectionField>>checked=checked unchecked=unchecked disabled={{{[{!!title}has\u003CsuppressedField>then[yes]else[no]]}}}default=checked/>\u003C/td>\u003Ctd>\u003C$reveal type=nomatch state=\u003C\u003CrenameFieldState>>text=yes tag=div>\u003C$reveal type=nomatch state=\u003C\u003CpreviewPopupState>>text=yes tag=div class=tc-flex>\u003C$button class=\\\"tc-btn-invisible tc-btn-dropdown tc-flex-grow-1 tc-word-break\\\"set=\u003C\u003CpreviewPopupState>>disabled={{{[{!!title}has\u003CsuppressedField>then[yes]else[no]]}}}setTo=yes>\u003Cspan class=tc-small-gap-right>{{$:/core/images/right-arrow}}\u003C/span>\u003C$text text={{{[subfilter\u003CpayloadTitleFilter>]}}}/>\u003C/$button>\u003C$list filter=\\\"[{!!title}!has\u003CsuppressedField>]\\\">\u003C$button class=tc-btn-invisible set=\u003C\u003CrenameFieldState>>tooltip={{{[\u003Clingo-base>addsuffix[Listing/Rename/Tooltip]get[text]]}}}setTo=yes>{{$:/core/images/edit-button}}\u003C/$button>\u003C/$list>\u003C/$reveal>\u003C$reveal type=match state=\u003C\u003CpreviewPopupState>>text=yes tag=div>\u003C$button class=\\\"tc-btn-invisible tc-btn-dropdown\\\"set=\u003C\u003CpreviewPopupState>>setTo=no>\u003Cspan class=tc-small-gap-right>{{$:/core/images/down-arrow}}\u003C/span>\u003C$text text={{{[subfilter\u003CpayloadTitleFilter>]}}}/>\u003C/$button>\u003C/$reveal>\u003C/$reveal>\u003C$reveal type=match state=\u003C\u003CrenameFieldState>>text=yes tag=div>\u003C$text text={{{[\u003Clingo-base>addsuffix[Listing/Rename/Prompt]get[text]]}}}/>\u003C/$reveal>\u003C/td>\u003Ctd>\u003C\u003CselectionInfo>> \u003C\u003ClibraryInfo>> \u003C\u003CoverWriteWarning>>\u003C/td>\u003C/tr>\u003C$reveal type=match state=\u003C\u003CrenameFieldState>>text=yes tag=tr>\u003Ctd colspan=3>\u003Cdiv class=tc-flex>\u003C$edit-text tiddler=\u003C\u003CnewImportTitleTiddler>>default={{{[subfilter\u003CpayloadTitleFilter>]}}}class=\\\"tc-import-rename tc-flex-grow-1\\\"tag=input/>\u003Cspan class=tc-small-gap-left>\u003C$button class=tc-btn-invisible set=\u003C\u003CrenameFieldState>>tooltip={{{[\u003Clingo-base>addsuffix[Listing/Rename/CancelRename]get[text]]}}}setTo=no>{{$:/core/images/close-button}}\u003C$action-deletetiddler $tiddler=\u003C\u003CnewImportTitleTiddler>>/>\u003C/$button>\u003Cspan class=tc-small-gap-right/>\u003C/span>\u003C$button class=tc-btn-invisible set=\u003C\u003CrenameFieldState>>tooltip={{{[\u003Clingo-base>addsuffix[Listing/Rename/ConfirmRename]get[text]]}}}setTo=no>{{$:/core/images/done-button}}\u003C$action-setfield $field=\u003C\u003CrenameField>>$value={{{[\u003CnewImportTitleTiddler>get[text]minlength[1]else\u003CpayloadTiddler>]}}}/>\u003C$action-deletetiddler $tiddler=\u003C\u003CnewImportTitleTiddler>>/>\u003C/$button>\u003C/div>\u003C/td>\u003C/$reveal>\u003C$reveal type=match text=yes state=\u003C\u003CpreviewPopupState>>tag=tr>\u003Ctd colspan=3>\u003C$list filter=\\\"[{$:/state/importpreviewtype}has[text]]\\\"emptyMessage={{$:/core/ui/ImportPreviews/Text}}variable=listItem>\u003Cdiv>\u003C$transclude tiddler={{$:/state/importpreviewtype}}/>\"},\"$:/core/ui/ImportPreviews/Diff\":{\"tags\":\"$:/tags/ImportPreview\",\"caption\":\"{{$:/language/Import/Listing/Preview/Diff}}\",\"text\":\"\u003C$macrocall sourceTiddlerTitle=\u003C\u003CpayloadTiddler>>destTiddlerTitle={{!!title}}destSubTiddlerTitle=\u003C\u003CpayloadTiddler>>$name=compareTiddlerText/>\\n\"},\"$:/core/ui/ImportPreviews/DiffFields\":{\"tags\":\"$:/tags/ImportPreview\",\"caption\":\"{{$:/language/Import/Listing/Preview/DiffFields}}\",\"text\":\"\u003C$macrocall $name=compareTiddlers sourceTiddlerTitle=\u003C\u003CpayloadTiddler>>destTiddlerTitle={{!!title}}destSubTiddlerTitle=\u003C\u003CpayloadTiddler>>exclude=text/>\\n\"},\"$:/core/ui/ImportPreviews/Fields\":{\"tags\":\"$:/tags/ImportPreview\",\"caption\":\"{{$:/language/Import/Listing/Preview/Fields}}\",\"text\":\"\u003Ctable class=tc-view-field-table>\u003Ctbody>\u003C$list filter=\\\"[\u003CpayloadTiddler>subtiddlerfields{!!title}sort[]]-text\\\"variable=fieldName>\u003Ctr class=tc-view-field>\u003Ctd class=tc-view-field-name>\u003C$text text=\u003C\u003CfieldName>>/>\u003C/td>\u003Ctd class=tc-view-field-value>\u003C$view field=\u003C\u003CfieldName>>tiddler={{!!title}}subtiddler=\u003C\u003CpayloadTiddler>>/>\"},\"$:/core/ui/ImportPreviews/Text\":{\"tags\":\"$:/tags/ImportPreview\",\"caption\":\"{{$:/language/Import/Listing/Preview/Text}}\",\"text\":\"\u003C$transclude tiddler={{!!title}}subtiddler=\u003C\u003CpayloadTiddler>>mode=block/>\\n\"},\"$:/core/ui/ImportPreviews/TextRaw\":{\"tags\":\"$:/tags/ImportPreview\",\"caption\":\"{{$:/language/Import/Listing/Preview/TextRaw}}\",\"text\":\"\u003Cpre>\u003Ccode>\u003C$view tiddler={{!!title}}subtiddler=\u003C\u003CpayloadTiddler>>/>\"},\"$:/core/ui/KeyboardShortcuts/advanced-search\":{\"tags\":\"$:/tags/KeyboardShortcut\",\"key\":\"((advanced-search))\",\"text\":\"\u003C$navigator story=\\\"$:/StoryList\\\"history=\\\"$:/HistoryList\\\">\u003C$action-navigate $to=\\\"$:/AdvancedSearch\\\"$scroll=yes/>\u003C$action-sendmessage $message=tm-focus-selector $param=\\\"\\\"\\\"[data-tiddler-title=\\\"$:/AdvancedSearch\\\"] .tc-search input\\\"\\\"\\\"preventScroll/>\"},\"$:/core/ui/KeyboardShortcuts/change-sidebar-layout\":{\"tags\":\"$:/tags/KeyboardShortcut\",\"key\":\"((change-sidebar-layout))\",\"text\":\"\u003C$list filter='[{$:/themes/tiddlywiki/vanilla/options/sidebarlayout}match[fixed-fluid]]'emptyMessage=\\\"\u003C$action-setfield $tiddler='$:/themes/tiddlywiki/vanilla/options/sidebarlayout'text=fixed-fluid/>\\\">\u003C$action-setfield $tiddler='$:/themes/tiddlywiki/vanilla/options/sidebarlayout'text=fluid-fixed/>\"},\"$:/core/ui/KeyboardShortcuts/new-image\":{\"tags\":\"$:/tags/KeyboardShortcut\",\"key\":\"((new-image))\",\"text\":\"\u003C$navigator story=\\\"$:/StoryList\\\"history=\\\"$:/HistoryList\\\"openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}}openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromOutsideRiver}}relinkOnRename={{$:/config/RelinkOnRename}}>{{$:/core/ui/Actions/new-image}}\"},\"$:/core/ui/KeyboardShortcuts/new-journal\":{\"tags\":\"$:/tags/KeyboardShortcut\",\"key\":\"((new-journal))\",\"text\":\"\u003C$navigator story=\\\"$:/StoryList\\\"history=\\\"$:/HistoryList\\\"openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}}openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromOutsideRiver}}relinkOnRename={{$:/config/RelinkOnRename}}>{{$:/core/ui/Actions/new-journal}}\"},\"$:/core/ui/KeyboardShortcuts/new-tiddler\":{\"tags\":\"$:/tags/KeyboardShortcut\",\"key\":\"((new-tiddler))\",\"text\":\"\u003C$navigator story=\\\"$:/StoryList\\\"history=\\\"$:/HistoryList\\\"openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}}openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromOutsideRiver}}relinkOnRename={{$:/config/RelinkOnRename}}>{{$:/core/ui/Actions/new-tiddler}}\"},\"$:/core/ui/KeyboardShortcuts/save-wiki\":{\"tags\":\"$:/tags/KeyboardShortcut\",\"key\":\"((save-wiki))\",\"text\":\"\u003C$wikify text={{$:/config/SaveWikiButton/Filename}}name=site-title>\u003C$action-sendmessage $param={{$:/config/SaveWikiButton/Template}}filename=\u003C\u003Csite-title>>$message=tm-save-wiki/>\"},\"$:/core/ui/KeyboardShortcuts/sidebar-search\":{\"tags\":\"$:/tags/KeyboardShortcut\",\"key\":\"((sidebar-search))\",\"text\":\"\u003C$action-sendmessage $param=\\\".tc-search input\\\"$message=tm-focus-selector/>\\n\"},\"$:/core/ui/KeyboardShortcuts/switcher\":{\"tags\":\"$:/tags/KeyboardShortcut\",\"key\":\"((layout-switcher))\",\"text\":\"\u003C$action-sendmessage $message=tm-show-switcher switch=layout/>\"},\"$:/core/ui/KeyboardShortcuts/toggle-sidebar\":{\"tags\":\"$:/tags/KeyboardShortcut\",\"key\":\"((toggle-sidebar))\",\"text\":\"\u003C$list filter='[[$:/state/sidebar]is[missing]][{$:/state/sidebar}removeprefix[yes]]'emptyMessage=\\\"\u003C$action-setfield $tiddler='$:/state/sidebar'text=yes/>\\\">\u003C$action-setfield $tiddler='$:/state/sidebar'text=no/>\"},\"$:/snippets/LayoutSwitcher\":{\"tags\":\"$:/tags/ControlPanel/Appearance\",\"caption\":\"{{$:/language/ControlPanel/LayoutSwitcher/Caption}}\",\"text\":\"\u003C$linkcatcher to='$:/layout'>\u003Cdiv class=tc-chooser>\u003C$list filter='[[$:/tags/Layout]tagging[]]$:/core/ui/PageTemplate +[!is[draft]sort[name]]'>\u003C$list filter='[{$:/layout}!has[text]]'emptyMessage=\\\"\u003C$let cls={{{[{!!title}field:title{$:/layout}then[tc-chooser-item tc-chosen]else[tc-chooser-item]]}}}>\u003Cdiv class=\u003C\u003Ccls>>>\u003C$link>''\u003C$transclude field=name/>'' - \u003C$transclude field=description/>\\\"variable=ignore>\u003C$let cls={{{[{!!title}field:title[$:/core/ui/PageTemplate]then[tc-chooser-item tc-chosen]else[tc-chooser-item]]}}}>\u003Cdiv class=\u003C\u003Ccls>>>\u003C$link>''\u003C$transclude field=name/>'' - \u003C$transclude field=description/>\"},\"$:/core/ui/ListItemTemplate\":{\"text\":\"\u003Cdiv class=tc-menu-list-item>\u003C$link/>\"},\"$:/snippets/ListTaggedCascade\":{\"text\":\"{{||$:/language/ControlPanel/Cascades/TagPrompt}}\\n\u003Col>\u003C$list filter=[{!!title}tagging[]]>\u003Cli>\u003Cdiv>\u003C$link/>\u003C/div>\u003C$codeblock code={{!!text}}/>\"},\"$:/Manager/ItemMain/Fields\":{\"tags\":\"$:/tags/Manager/ItemMain\",\"caption\":\"{{$:/language/Manager/Item/Fields}}\",\"text\":\"\u003Ctable>\u003Ctbody>\u003C$list filter=[{!!title}fields[]sort[title]]-text template=\\\"$:/core/ui/TiddlerFieldTemplate\\\"variable=listItem/>\"},\"$:/Manager/ItemMain/RawText\":{\"tags\":\"$:/tags/Manager/ItemMain\",\"caption\":\"{{$:/language/Manager/Item/RawText}}\",\"text\":\"\u003Cpre>\u003Ccode>\u003C$view/>\u003C/code>\u003C/pre>\\n\"},\"$:/Manager/ItemMain/WikifiedText\":{\"tags\":\"$:/tags/Manager/ItemMain\",\"caption\":\"{{$:/language/Manager/Item/WikifiedText}}\",\"text\":\"\u003C$transclude mode=block/>\\n\"},\"$:/Manager/ItemSidebar/Colour\":{\"tags\":\"$:/tags/Manager/ItemSidebar\",\"caption\":\"{{$:/language/Manager/Item/Colour}}\",\"text\":\"\\\\define swatch-styles()\\nheight: 1em;\\nbackground-color: $(colour)$\\n\\\\end\\n\u003C$let colour={{!!color}}>\u003Cp style=\u003C\u003Cswatch-styles>>/>\u003C/$let>\u003Cp>\u003C$edit-text field=color tag=input type=color/> / \u003C$edit-text field=color tag=input type=text size=9/>\"},\"$:/Manager/ItemSidebar/Icon\":{\"tags\":\"$:/tags/Manager/ItemSidebar\",\"caption\":\"{{$:/language/Manager/Item/Icon}}\",\"text\":\"\u003Cp>\u003Cdiv class=tc-manager-icon-editor>\u003C$button popup=\u003C\u003Cqualify'$:/state/popup/image-picker'>>class=tc-btn-invisible>\u003C$transclude tiddler={{!!icon}}>{{$:/language/Manager/Item/Icon/None}}\u003C/$transclude>\u003C/$button>\u003Cdiv style='position: static;'class=tc-block-dropdown-wrapper>\u003C$reveal state=\u003C\u003Cqualify'$:/state/popup/image-picker'>>type=nomatch text=''default=''tag=div class=tc-popup>\u003Cdiv class='tc-block-dropdown tc-popup-keep'style='width: 80%; left: 10%; right: 10%; padding: 0.5em;'>\u003C$macrocall actions=\\\"\u003C$action-setfield $field='icon' $value=\u003C\u003CimageTitle>>/>\u003C$action-deletetiddler $tiddler=\u003C\u003Cqualify '$:/state/popup/image-picker'>>/>\\\"$name=image-picker-include-tagged-images/>\"},\"$:/Manager/ItemSidebar/Tags\":{\"tags\":\"$:/tags/Manager/ItemSidebar\",\"caption\":\"{{$:/language/Manager/Item/Tags}}\",\"text\":\"\\\\define tag-checkbox-actions()\u003C$action-listops $tiddler=\\\"$:/config/Manager/RecentTags\\\"$subfilter=\\\"[\u003Ctag>] [list[$:/config/Manager/RecentTags]] +[limit[12]]\\\"/>\\n\\\\define tag-picker-actions()\u003C\u003Ctag-checkbox-actions>>\\n\u003Cp>\u003C$list filter=\\\"[{!!title}tags[]][list[$:/config/Manager/RecentTags]]+[sort[title]]\\\"variable=tag storyview=pop>\u003Cdiv>\u003C$checkbox tiddler={{!!title}}tag=\u003C\u003Ctag>>actions=\u003C\u003Ctag-checkbox-actions>>>\u003C$macrocall tag=\u003C\u003Ctag>>$name=tag-pill/>\u003C/$checkbox>\u003C/div>\u003C/$list>\u003C/p>\u003Cp>\u003C$fieldmangler>\u003C$macrocall actions=\u003C\u003Ctag-picker-actions>>$name=tag-picker/>\"},\"$:/Manager/ItemSidebar/Tools\":{\"tags\":\"$:/tags/Manager/ItemSidebar\",\"caption\":\"{{$:/language/Manager/Item/Tools}}\",\"text\":\"\u003Cp>\u003C$button to={{!!title}}>{{$:/core/images/link}} open\u003C/$button>\u003C/p>\u003Cp>\u003C$button param={{!!title}}message=tm-edit-tiddler>{{$:/core/images/edit-button}} edit\"},\"$:/Manager\":{\"icon\":\"$:/core/images/list\",\"color\":\"#bbb\",\"text\":\"\\\\define lingo-base()$:/language/Manager/\\n\\\\define list-item-content-item()\u003Cdiv class=tc-manager-list-item-content-item>\u003C$let state-title=\\\"\\\"\\\"$:/state/popup/manager/item/$(listItem)$\\\"\\\"\\\">\u003C$reveal state=\u003C\u003Cstate-title>>type=match text=show default=show tag=div>\u003C$button set=\u003C\u003Cstate-title>>class=\\\"tc-btn-invisible tc-manager-list-item-content-item-heading\\\"setTo=hide>{{$:/core/images/down-arrow}} \u003C$transclude tiddler=\u003C\u003ClistItem>>field=caption/>\u003C/$button>\u003C/$reveal>\u003C$reveal state=\u003C\u003Cstate-title>>type=nomatch text=show default=show tag=div>\u003C$button set=\u003C\u003Cstate-title>>class=\\\"tc-btn-invisible tc-manager-list-item-content-item-heading\\\"setTo=show>{{$:/core/images/right-arrow}} \u003C$transclude tiddler=\u003C\u003ClistItem>>field=caption/>\u003C/$button>\u003C/$reveal>\u003C$reveal state=\u003C\u003Cstate-title>>type=match text=show default=show tag=div class=tc-manager-list-item-content-item-body>\u003C$transclude tiddler=\u003C\u003ClistItem>>/>\\n\u003Cdiv class=tc-manager-wrapper>\u003Cdiv class=tc-manager-controls>\u003Cdiv class=tc-manager-control>\u003C\u003Clingo Controls/Show/Prompt>> \u003C$select tiddler=\\\"$:/config/Manager/Show\\\"default=tiddlers>\u003Coption value=tiddlers>\u003C\u003Clingo Controls/Show/Option/Tiddlers>>\u003C/option>\u003Coption value=tags>\u003C\u003Clingo Controls/Show/Option/Tags>>\u003C/option>\u003C/$select>\u003C/div>\u003Cdiv class=tc-manager-control>\u003C\u003Clingo Controls/Search/Prompt>> \u003C$edit-text tiddler=\\\"$:/config/Manager/Filter\\\"default=\\\"\\\"placeholder={{$:/language/Manager/Controls/Search/Placeholder}}tag=input/>\u003C/div>\u003Cdiv class=tc-manager-control>\u003C\u003Clingo Controls/FilterByTag/Prompt>> \u003C$select tiddler=\\\"$:/config/Manager/Tag\\\"default=\\\"\\\">\u003Coption value=\\\"\\\">\u003C\u003Clingo Controls/FilterByTag/None>>\u003C/option>\u003C$list filter=\\\"[!is{$:/config/Manager/System}tags[]!is[system]sort[title]]\\\"variable=tag>\u003Coption value=\u003C\u003Ctag>>>\u003C$text text=\u003C\u003Ctag>>/>\u003C/option>\u003C/$list>\u003C/$select>\u003C/div>\u003Cdiv class=tc-manager-control>\u003C\u003Clingo Controls/Sort/Prompt>> \u003C$select tiddler=\\\"$:/config/Manager/Sort\\\"default=title>\u003Coptgroup label=Common>\u003C$list filter=\\\"title modified modifier created creator created\\\"variable=field>\u003Coption value=\u003C\u003Cfield>>>\u003C$text text=\u003C\u003Cfield>>/>\u003C/option>\u003C/$list>\u003C/optgroup>\u003Coptgroup label=All>\u003C$list filter=\\\"[all{$:/config/Manager/Show}!is{$:/config/Manager/System}fields[]sort[title]]-title -modified -modifier -created -creator -created\\\"variable=field>\u003Coption value=\u003C\u003Cfield>>>\u003C$text text=\u003C\u003Cfield>>/>\u003C/option>\u003C/$list>\u003C/optgroup>\u003C/$select> \u003C$checkbox tiddler=\\\"$:/config/Manager/Order\\\"field=text checked=reverse unchecked=forward default=forward> \u003C\u003Clingo Controls/Order/Prompt>>\u003C/$checkbox>\u003C/div>\u003Cdiv class=tc-manager-control>\u003C$checkbox tiddler=\\\"$:/config/Manager/System\\\"field=text checked=\\\"\\\"unchecked=system default=system> {{$:/language/SystemTiddlers/Include/Prompt}}\u003C/$checkbox>\u003C/div>\u003C/div>\u003Cdiv class=tc-manager-list>\u003C$list filter=\\\"[all{$:/config/Manager/Show}!is{$:/config/Manager/System}search{$:/config/Manager/Filter}tag:strict{$:/config/Manager/Tag}sort{$:/config/Manager/Sort}order{$:/config/Manager/Order}]\\\">\u003C$vars transclusion={{!!title}}>\u003Cdiv style=tc-manager-list-item>\u003C$button popup=\u003C\u003Cqualify [[$:/state/manager/popup]]>>class=\\\"tc-btn-invisible tc-manager-list-item-heading\\\"selectedClass=tc-manager-list-item-heading-selected>\u003C$text text={{!!title}}/>\u003C/$button>\u003C$reveal state=\u003C\u003Cqualify [[$:/state/manager/popup]]>>type=nomatch text=\\\"\\\"default=\\\"\\\"class=\\\"tc-manager-list-item-content tc-popup-handle\\\"tag=div>\u003Cdiv class=tc-manager-list-item-content-tiddler>\u003C$list filter=\\\"[[$:/tags/Manager/ItemMain]tagging[]!is[draft]]\\\"variable=listItem>\u003C\u003Clist-item-content-item>>\u003C/$list>\u003C/div>\u003Cdiv class=tc-manager-list-item-content-sidebar>\u003C$list filter=\\\"[[$:/tags/Manager/ItemSidebar]tagging[]!is[draft]]\\\"variable=listItem>\u003C\u003Clist-item-content-item>>\"},\"$:/core/ui/MissingTemplate\":{\"text\":\"\u003Cdiv class=tc-tiddler-missing>\u003C$button popup=\u003C\u003Cqualify [[$:/state/popup/missing]]>>class=\\\"tc-btn-invisible tc-missing-tiddler-label\\\">\u003C$view field=title format=text/>\u003C/$button>\u003C$reveal state=\u003C\u003Cqualify [[$:/state/popup/missing]]>>type=popup position=below animate=yes>\u003Cdiv class=tc-drop-down>{{||$:/core/ui/ListItemTemplate}}\u003Chr>\u003C$list template=\\\"$:/core/ui/ListItemTemplate\\\"filter=[{!!title}backlinks[]sort[title]]/>\"},\"$:/core/ui/MoreSideBar/All\":{\"tags\":\"$:/tags/MoreSideBar\",\"caption\":\"{{$:/language/SideBar/All/Caption}}\",\"text\":\"\u003C$list filter={{$:/core/Filters/AllTiddlers!!filter}}template=\\\"$:/core/ui/ListItemTemplate\\\"/>\\n\"},\"$:/core/ui/MoreSideBar/Drafts\":{\"tags\":\"$:/tags/MoreSideBar\",\"caption\":\"{{$:/language/SideBar/Drafts/Caption}}\",\"text\":\"\u003C$list filter={{$:/core/Filters/Drafts!!filter}}template=\\\"$:/core/ui/ListItemTemplate\\\"/>\\n\"},\"$:/core/ui/MoreSideBar/Explorer\":{\"tags\":\"$:/tags/MoreSideBar\",\"caption\":\"{{$:/language/SideBar/Explorer/Caption}}\",\"text\":\"\u003C\u003Ctree\\\"$:/\\\">>\"},\"$:/core/ui/MoreSideBar/Missing\":{\"tags\":\"$:/tags/MoreSideBar\",\"caption\":\"{{$:/language/SideBar/Missing/Caption}}\",\"text\":\"\u003C$list filter={{$:/core/Filters/Missing!!filter}}template=\\\"$:/core/ui/MissingTemplate\\\"/>\\n\"},\"$:/core/ui/MoreSideBar/Orphans\":{\"tags\":\"$:/tags/MoreSideBar\",\"caption\":\"{{$:/language/SideBar/Orphans/Caption}}\",\"text\":\"\u003C$list filter={{$:/core/Filters/Orphans!!filter}}template=\\\"$:/core/ui/ListItemTemplate\\\"/>\\n\"},\"$:/core/ui/MoreSideBar/Plugins\":{\"tags\":\"$:/tags/MoreSideBar\",\"caption\":\"{{$:/language/ControlPanel/Plugins/Caption}}\",\"text\":\"\\n{{$:/language/ControlPanel/Plugins/Installed/Hint}}\\n\u003C$macrocall tabsList=\\\"[all[shadows+tiddlers]tag[$:/tags/MoreSideBar/Plugins]!has[draft.of]]\\\"default=\\\"$:/core/ui/MoreSideBar/Plugins/Plugins\\\"explicitState=\\\"$:/state/tab-1163638994\\\"$name=tabs/>\\n\"},\"$:/core/ui/MoreSideBar/Recent\":{\"tags\":\"$:/tags/MoreSideBar\",\"caption\":\"{{$:/language/SideBar/Recent/Caption}}\",\"text\":\"\u003C$macrocall format={{$:/language/RecentChanges/DateFormat}}$name=timeline/>\\n\"},\"$:/core/ui/MoreSideBar/Shadows\":{\"tags\":\"$:/tags/MoreSideBar\",\"caption\":\"{{$:/language/SideBar/Shadows/Caption}}\",\"text\":\"\u003C$list filter={{$:/core/Filters/ShadowTiddlers!!filter}}template=\\\"$:/core/ui/ListItemTemplate\\\"/>\\n\"},\"$:/core/ui/MoreSideBar/System\":{\"tags\":\"$:/tags/MoreSideBar\",\"caption\":\"{{$:/language/SideBar/System/Caption}}\",\"text\":\"\u003C$list filter={{$:/core/Filters/SystemTiddlers!!filter}}template=\\\"$:/core/ui/ListItemTemplate\\\"/>\\n\"},\"$:/core/ui/MoreSideBar/Tags\":{\"tags\":\"$:/tags/MoreSideBar\",\"caption\":\"{{$:/language/SideBar/Tags/Caption}}\",\"text\":\"\u003C$let tv-config-toolbar-icons=yes tv-config-toolbar-text=yes tv-config-toolbar-class=\\\"\\\">\\n\\n{{$:/core/ui/Buttons/tag-manager}}\\n\u003C/$let>\u003C$list filter={{$:/core/Filters/AllTags!!filter}}>\\n\\n{{||$:/core/ui/TagTemplate}}\\n\u003C/$list>\u003Chr class=tc-untagged-separator>\\n\\n{{$:/core/ui/UntaggedTemplate}}\"},\"$:/core/ui/MoreSideBar/Types\":{\"tags\":\"$:/tags/MoreSideBar\",\"caption\":\"{{$:/language/SideBar/Types/Caption}}\",\"text\":\"\u003C$list filter={{$:/core/Filters/TypedTiddlers!!filter}}>\u003Cdiv class=tc-menu-list-item>\u003C$view field=type/>\u003C$list filter=[type{!!type}!is[system]sort[title]]>\u003Cdiv class=tc-menu-list-subitem>\u003C$link/>\"},\"$:/core/ui/MoreSideBar/Plugins/Languages\":{\"tags\":\"$:/tags/MoreSideBar/Plugins\",\"caption\":\"{{$:/language/ControlPanel/Plugins/Languages/Caption}}\",\"text\":\"\u003C$list template=\\\"$:/core/ui/PluginListItemTemplate\\\"emptyMessage={{$:/language/ControlPanel/Plugins/Empty/Hint}}filter=[!is[draft]plugin-type[language]sort[name]]/>\\n\"},\"$:/core/ui/MoreSideBar/Plugins/Plugins\":{\"tags\":\"$:/tags/MoreSideBar/Plugins\",\"caption\":\"{{$:/language/ControlPanel/Plugins/Plugins/Caption}}\",\"text\":\"\u003C$list template=\\\"$:/core/ui/PluginListItemTemplate\\\"emptyMessage={{$:/language/ControlPanel/Plugins/Empty/Hint}}filter=[!is[draft]plugin-type[plugin]sort[name]]>>/>\\n\"},\"$:/core/ui/MoreSideBar/Plugins/Theme\":{\"tags\":\"$:/tags/MoreSideBar/Plugins\",\"caption\":\"{{$:/language/ControlPanel/Plugins/Themes/Caption}}\",\"text\":\"\u003C$list template=\\\"$:/core/ui/PluginListItemTemplate\\\"emptyMessage={{$:/language/ControlPanel/Plugins/Empty/Hint}}filter=[!is[draft]plugin-type[theme]sort[name]]/>\\n\"},\"$:/core/ui/Buttons/advanced-search\":{\"tags\":\"$:/tags/PageControls\",\"caption\":\"{{$:/core/images/advanced-search-button}} {{$:/language/Buttons/AdvancedSearch/Caption}}\",\"description\":\"{{$:/language/Buttons/AdvancedSearch/Hint}}\",\"text\":\"\\\\define advanced-search-button(class)\u003C$button to=\\\"$:/AdvancedSearch\\\"tooltip={{$:/language/Buttons/AdvancedSearch/Hint}}aria-label={{$:/language/Buttons/AdvancedSearch/Caption}}class=\\\"\\\"\\\"$(tv-config-toolbar-class)$ $class$\\\"\\\"\\\">\u003C$list filter=\\\"[\u003Ctv-config-toolbar-icons>match[yes]]\\\">{{$:/core/images/advanced-search-button}}\u003C/$list>\u003C$list filter=\\\"[\u003Ctv-config-toolbar-text>match[yes]]\\\">\u003Cspan class=tc-btn-text>\u003C$text text={{$:/language/Buttons/AdvancedSearch/Caption}}/>\\n\u003C$list filter=\\\"[list[$:/StoryList]field:title[$:/AdvancedSearch]]\\\"emptyMessage=\u003C\u003Cadvanced-search-button>>>\u003C\u003Cadvanced-search-button tc-selected>>\"},\"$:/core/ui/Buttons/close-all\":{\"tags\":\"$:/tags/PageControls\",\"caption\":\"{{$:/core/images/close-all-button}} {{$:/language/Buttons/CloseAll/Caption}}\",\"description\":\"{{$:/language/Buttons/CloseAll/Hint}}\",\"text\":\"\u003C$button tooltip={{$:/language/Buttons/CloseAll/Hint}}aria-label={{$:/language/Buttons/CloseAll/Caption}}class=\u003C\u003Ctv-config-toolbar-class>>message=tm-close-all-tiddlers>\u003C$list filter=\\\"[\u003Ctv-config-toolbar-icons>match[yes]]\\\">{{$:/core/images/close-all-button}}\u003C/$list>\u003C$list filter=\\\"[\u003Ctv-config-toolbar-text>match[yes]]\\\">\u003Cspan class=tc-btn-text>\u003C$text text={{$:/language/Buttons/CloseAll/Caption}}/>\"},\"$:/core/ui/Buttons/control-panel\":{\"tags\":\"$:/tags/PageControls\",\"caption\":\"{{$:/core/images/options-button}} {{$:/language/Buttons/ControlPanel/Caption}}\",\"description\":\"{{$:/language/Buttons/ControlPanel/Hint}}\",\"text\":\"\\\\define control-panel-button(class)\u003C$button to=\\\"$:/ControlPanel\\\"tooltip={{$:/language/Buttons/ControlPanel/Hint}}aria-label={{$:/language/Buttons/ControlPanel/Caption}}class=\\\"\\\"\\\"$(tv-config-toolbar-class)$ $class$\\\"\\\"\\\">\u003C$list filter=\\\"[\u003Ctv-config-toolbar-icons>match[yes]]\\\">{{$:/core/images/options-button}}\u003C/$list>\u003C$list filter=\\\"[\u003Ctv-config-toolbar-text>match[yes]]\\\">\u003Cspan class=tc-btn-text>\u003C$text text={{$:/language/Buttons/ControlPanel/Caption}}/>\\n\u003C$list filter=\\\"[list\u003Ctv-story-list>field:title[$:/ControlPanel]]\\\"emptyMessage=\u003C\u003Ccontrol-panel-button>>>\u003C\u003Ccontrol-panel-button tc-selected>>\"},\"$:/core/ui/Buttons/encryption\":{\"tags\":\"$:/tags/PageControls\",\"caption\":\"{{$:/core/images/locked-padlock}} {{$:/language/Buttons/Encryption/Caption}}\",\"description\":\"{{$:/language/Buttons/Encryption/Hint}}\",\"text\":\"\u003C$reveal type=match state=\\\"$:/isEncrypted\\\"text=yes>\u003C$button tooltip={{$:/language/Buttons/Encryption/ClearPassword/Hint}}aria-label={{$:/language/Buttons/Encryption/ClearPassword/Caption}}class=\u003C\u003Ctv-config-toolbar-class>>message=tm-clear-password>\u003C$list filter=\\\"[\u003Ctv-config-toolbar-icons>match[yes]]\\\">{{$:/core/images/locked-padlock}}\u003C/$list>\u003C$list filter=\\\"[\u003Ctv-config-toolbar-text>match[yes]]\\\">\u003Cspan class=tc-btn-text>\u003C$text text={{$:/language/Buttons/Encryption/ClearPassword/Caption}}/>\u003C/span>\u003C/$list>\u003C/$button>\u003C/$reveal>\u003C$reveal type=nomatch state=\\\"$:/isEncrypted\\\"text=yes>\u003C$button tooltip={{$:/language/Buttons/Encryption/SetPassword/Hint}}aria-label={{$:/language/Buttons/Encryption/SetPassword/Caption}}class=\u003C\u003Ctv-config-toolbar-class>>message=tm-set-password>\u003C$list filter=\\\"[\u003Ctv-config-toolbar-icons>match[yes]]\\\">{{$:/core/images/unlocked-padlock}}\u003C/$list>\u003C$list filter=\\\"[\u003Ctv-config-toolbar-text>match[yes]]\\\">\u003Cspan class=tc-btn-text>\u003C$text text={{$:/language/Buttons/Encryption/SetPassword/Caption}}/>\"},\"$:/core/ui/Buttons/export-page\":{\"tags\":\"$:/tags/PageControls\",\"caption\":\"{{$:/core/images/export-button}} {{$:/language/Buttons/ExportPage/Caption}}\",\"description\":\"{{$:/language/Buttons/ExportPage/Hint}}\",\"text\":\"\u003C$macrocall $name=exportButton lingoBase=\\\"$:/language/Buttons/ExportPage/\\\"exportFilter=[!is[system]sort[title]]/>\"},\"$:/core/ui/Buttons/fold-all\":{\"tags\":\"$:/tags/PageControls\",\"caption\":\"{{$:/core/images/fold-all-button}} {{$:/language/Buttons/FoldAll/Caption}}\",\"description\":\"{{$:/language/Buttons/FoldAll/Hint}}\",\"text\":\"\u003C$button tooltip={{$:/language/Buttons/FoldAll/Hint}}aria-label={{$:/language/Buttons/FoldAll/Caption}}class=\u003C\u003Ctv-config-toolbar-class>>>\u003C$action-sendmessage $param={{!!title}}foldedStatePrefix=\\\"$:/state/folded/\\\"$message=tm-fold-all-tiddlers/>\u003C$list filter=\\\"[\u003Ctv-config-toolbar-icons>match[yes]]\\\"variable=listItem>{{$:/core/images/fold-all-button}}\u003C/$list>\u003C$list filter=\\\"[\u003Ctv-config-toolbar-text>match[yes]]\\\">\u003Cspan class=tc-btn-text>\u003C$text text={{$:/language/Buttons/FoldAll/Caption}}/>\"},\"$:/core/ui/Buttons/full-screen\":{\"tags\":\"$:/tags/PageControls\",\"caption\":\"{{$:/core/images/full-screen-button}} {{$:/language/Buttons/FullScreen/Caption}}\",\"description\":\"{{$:/language/Buttons/FullScreen/Hint}}\",\"text\":\"\u003C$button tooltip={{$:/language/Buttons/FullScreen/Hint}}aria-label={{$:/language/Buttons/FullScreen/Caption}}class=\u003C\u003Ctv-config-toolbar-class>>message=tm-full-screen>\u003C$list filter=\\\"[\u003Ctv-config-toolbar-icons>match[yes]]\\\">{{$:/core/images/full-screen-button}}\u003C/$list>\u003C$list filter=\\\"[\u003Ctv-config-toolbar-text>match[yes]]\\\">\u003Cspan class=tc-btn-text>\u003C$text text={{$:/language/Buttons/FullScreen/Caption}}/>\"},\"$:/core/ui/Buttons/home\":{\"tags\":\"$:/tags/PageControls\",\"caption\":\"{{$:/core/images/home-button}} {{$:/language/Buttons/Home/Caption}}\",\"description\":\"{{$:/language/Buttons/Home/Hint}}\",\"text\":\"\u003C$button tooltip={{$:/language/Buttons/Home/Hint}}aria-label={{$:/language/Buttons/Home/Caption}}class=\u003C\u003Ctv-config-toolbar-class>>message=tm-home>\u003C$list filter=\\\"[\u003Ctv-config-toolbar-icons>match[yes]]\\\">{{$:/core/images/home-button}}\u003C/$list>\u003C$list filter=\\\"[\u003Ctv-config-toolbar-text>match[yes]]\\\">\u003Cspan class=tc-btn-text>\u003C$text text={{$:/language/Buttons/Home/Caption}}/>\"},\"$:/core/ui/Buttons/import\":{\"tags\":\"$:/tags/PageControls\",\"caption\":\"{{$:/core/images/import-button}} {{$:/language/Buttons/Import/Caption}}\",\"description\":\"{{$:/language/Buttons/Import/Hint}}\",\"text\":\"\u003Cdiv class=tc-file-input-wrapper>\u003C$button tooltip={{$:/language/Buttons/Import/Hint}}aria-label={{$:/language/Buttons/Import/Caption}}class=\u003C\u003Ctv-config-toolbar-class>>>\u003C$list filter=\\\"[\u003Ctv-config-toolbar-icons>match[yes]]\\\">{{$:/core/images/import-button}}\u003C/$list>\u003C$list filter=\\\"[\u003Ctv-config-toolbar-text>match[yes]]\\\">\u003Cspan class=tc-btn-text>\u003C$text text={{$:/language/Buttons/Import/Caption}}/>\u003C/span>\u003C/$list>\u003C/$button>\u003C$browse tooltip={{$:/language/Buttons/Import/Hint}}/>\"},\"$:/core/ui/Buttons/language\":{\"tags\":\"$:/tags/PageControls\",\"caption\":\"{{$:/core/images/globe}} {{$:/language/Buttons/Language/Caption}}\",\"description\":\"{{$:/language/Buttons/Language/Hint}}\",\"text\":\"\\\\define flag-title()$(languagePluginTitle)$/icon\\n\u003Cspan class=tc-popup-keep>\u003C$button popup=\u003C\u003Cqualify [[$:/state/popup/language]]>>tooltip={{$:/language/Buttons/Language/Hint}}aria-label={{$:/language/Buttons/Language/Caption}}class=\u003C\u003Ctv-config-toolbar-class>>selectedClass=tc-selected>\u003C$list filter=\\\"[\u003Ctv-config-toolbar-icons>match[yes]]\\\">\u003Cspan class=tc-image-button>\u003C$let languagePluginTitle={{$:/language}}>\u003C$image source=\u003C\u003Cflag-title>>/>\u003C/$let>\u003C/span>\u003C/$list>\u003C$list filter=\\\"[\u003Ctv-config-toolbar-text>match[yes]]\\\">\u003Cspan class=tc-btn-text>\u003C$text text={{$:/language/Buttons/Language/Caption}}/>\u003C/span>\u003C/$list>\u003C/$button>\u003C/span>\u003C$reveal state=\u003C\u003Cqualify [[$:/state/popup/language]]>>type=popup position=below animate=yes>\u003Cdiv class=tc-drop-down>{{$:/snippets/languageswitcher}}\"},\"$:/core/ui/Buttons/layout\":{\"tags\":\"$:/tags/PageControls\",\"caption\":\"{{$:/core/images/layout-button}} {{$:/language/Buttons/LayoutSwitcher/Caption}}\",\"description\":\"{{$:/language/LayoutSwitcher/Description}}\",\"text\":\"\u003C$button tooltip={{$:/language/Buttons/LayoutSwitcher/Hint}}aria-label={{$:/language/Buttons/LayoutSwitcher/Caption}}class=\u003C\u003Ctv-config-toolbar-class>>>\u003C$action-sendmessage $message=tm-show-switcher switch=layout/>\u003C$list filter=\\\"[\u003Ctv-config-toolbar-icons>match[yes]]\\\">{{$:/core/images/layout-button}}\u003C/$list>\u003C$list filter=\\\"[\u003Ctv-config-toolbar-text>match[yes]]\\\">\u003Cspan class=tc-btn-text>\u003C$text text={{$:/language/Buttons/LayoutSwitcher/Caption}}/>\"},\"$:/core/ui/Buttons/manager\":{\"tags\":\"$:/tags/PageControls\",\"caption\":\"{{$:/core/images/list}} {{$:/language/Buttons/Manager/Caption}}\",\"description\":\"{{$:/language/Buttons/Manager/Hint}}\",\"text\":\"\\\\define manager-button(class)\u003C$button to=\\\"$:/Manager\\\"tooltip={{$:/language/Buttons/Manager/Hint}}aria-label={{$:/language/Buttons/Manager/Caption}}class=\\\"\\\"\\\"$(tv-config-toolbar-class)$ $class$\\\"\\\"\\\">\u003C$list filter=\\\"[\u003Ctv-config-toolbar-icons>match[yes]]\\\">{{$:/core/images/list}}\u003C/$list>\u003C$list filter=\\\"[\u003Ctv-config-toolbar-text>match[yes]]\\\">\u003Cspan class=tc-btn-text>\u003C$text text={{$:/language/Buttons/Manager/Caption}}/>\\n\u003C$list filter=\\\"[list[$:/StoryList]field:title[$:/Manager]]\\\"emptyMessage=\u003C\u003Cmanager-button>>>\u003C\u003Cmanager-button tc-selected>>\"},\"$:/core/ui/Buttons/more-page-actions\":{\"tags\":\"$:/tags/PageControls\",\"caption\":\"{{$:/core/images/down-arrow}} {{$:/language/Buttons/More/Caption}}\",\"description\":\"{{$:/language/Buttons/More/Hint}}\",\"text\":\"\\\\define config-title()$:/config/PageControlButtons/Visibility/$(listItem)$\\n\u003C$button popup=\u003C\u003Cqualify [[$:/state/popup/more]]>>tooltip={{$:/language/Buttons/More/Hint}}aria-label={{$:/language/Buttons/More/Caption}}class=\u003C\u003Ctv-config-toolbar-class>>selectedClass=tc-selected>\u003C$list filter=\\\"[\u003Ctv-config-toolbar-icons>match[yes]]\\\">{{$:/core/images/down-arrow}}\u003C/$list>\u003C$list filter=\\\"[\u003Ctv-config-toolbar-text>match[yes]]\\\">\u003Cspan class=tc-btn-text>\u003C$text text={{$:/language/Buttons/More/Caption}}/>\u003C/span>\u003C/$list>\u003C/$button>\u003C$reveal state=\u003C\u003Cqualify [[$:/state/popup/more]]>>type=popup position=below animate=yes>\\n\\n\u003Cdiv class=tc-drop-down>\\n\\n\u003C$let tv-config-toolbar-icons=yes tv-config-toolbar-text=yes tv-config-toolbar-class=tc-btn-invisible>\\n\\n\u003C$list filter=\\\"[[$:/tags/PageControls]tagging[]!is[draft]]-$:/core/ui/Buttons/more-page-actions\\\"variable=listItem>\\n\\n\u003C$reveal type=match state=\u003C\u003Cconfig-title>>text=hide>\\n\\n\u003C$set filter=\\\"[\u003Ctv-config-toolbar-class>][\u003ClistItem>encodeuricomponent[]addprefix[tc-btn-]]\\\"name=tv-config-toolbar-class>\\n\\n\u003C$transclude tiddler=\u003C\u003ClistItem>>mode=inline/>\\n\"},\"$:/core/ui/Buttons/new-image\":{\"tags\":\"$:/tags/PageControls\",\"caption\":\"{{$:/core/images/new-image-button}} {{$:/language/Buttons/NewImage/Caption}}\",\"description\":\"{{$:/language/Buttons/NewImage/Hint}}\",\"text\":\"\u003C$button tooltip={{$:/language/Buttons/NewImage/Hint}}aria-label={{$:/language/Buttons/NewImage/Caption}}class=\u003C\u003Ctv-config-toolbar-class>>actions={{$:/core/ui/Actions/new-image}}>\u003C$list filter=\\\"[\u003Ctv-config-toolbar-icons>match[yes]]\\\">{{$:/core/images/new-image-button}}\u003C/$list>\u003C$list filter=\\\"[\u003Ctv-config-toolbar-text>match[yes]]\\\">\u003Cspan class=tc-btn-text>\u003C$text text={{$:/language/Buttons/NewImage/Caption}}/>\"},\"$:/core/ui/Buttons/new-journal\":{\"tags\":\"$:/tags/PageControls\",\"caption\":\"{{$:/core/images/new-journal-button}} {{$:/language/Buttons/NewJournal/Caption}}\",\"description\":\"{{$:/language/Buttons/NewJournal/Hint}}\",\"text\":\"\\\\define journalButton()\u003C$button tooltip={{$:/language/Buttons/NewJournal/Hint}}aria-label={{$:/language/Buttons/NewJournal/Caption}}class=\u003C\u003Ctv-config-toolbar-class>>actions={{$:/core/ui/Actions/new-journal}}>\u003C$list filter=\\\"[\u003Ctv-config-toolbar-icons>match[yes]]\\\">{{$:/core/images/new-journal-button}}\u003C/$list>\u003C$list filter=\\\"[\u003Ctv-config-toolbar-text>match[yes]]\\\">\u003Cspan class=tc-btn-text>\u003C$text text={{$:/language/Buttons/NewJournal/Caption}}/>\\n\u003C\u003CjournalButton>>\"},\"$:/core/ui/Buttons/new-tiddler\":{\"tags\":\"$:/tags/PageControls\",\"caption\":\"{{$:/core/images/new-button}} {{$:/language/Buttons/NewTiddler/Caption}}\",\"description\":\"{{$:/language/Buttons/NewTiddler/Hint}}\",\"text\":\"\u003C$button actions={{$:/core/ui/Actions/new-tiddler}}tooltip={{$:/language/Buttons/NewTiddler/Hint}}aria-label={{$:/language/Buttons/NewTiddler/Caption}}class=\u003C\u003Ctv-config-toolbar-class>>>\u003C$list filter=\\\"[\u003Ctv-config-toolbar-icons>match[yes]]\\\">{{$:/core/images/new-button}}\u003C/$list>\u003C$list filter=\\\"[\u003Ctv-config-toolbar-text>match[yes]]\\\">\u003Cspan class=tc-btn-text>\u003C$text text={{$:/language/Buttons/NewTiddler/Caption}}/>\"},\"$:/core/ui/Buttons/palette\":{\"tags\":\"$:/tags/PageControls\",\"caption\":\"{{$:/core/images/palette}} {{$:/language/Buttons/Palette/Caption}}\",\"description\":\"{{$:/language/Buttons/Palette/Hint}}\",\"text\":\"\u003Cspan class=tc-popup-keep>\u003C$button popup=\u003C\u003Cqualify [[$:/state/popup/palette]]>>tooltip={{$:/language/Buttons/Palette/Hint}}aria-label={{$:/language/Buttons/Palette/Caption}}class=\u003C\u003Ctv-config-toolbar-class>>selectedClass=tc-selected>\u003C$list filter=\\\"[\u003Ctv-config-toolbar-icons>match[yes]]\\\">{{$:/core/images/palette}}\u003C/$list>\u003C$list filter=\\\"[\u003Ctv-config-toolbar-text>match[yes]]\\\">\u003Cspan class=tc-btn-text>\u003C$text text={{$:/language/Buttons/Palette/Caption}}/>\u003C/span>\u003C/$list>\u003C/$button>\u003C/span>\u003C$reveal state=\u003C\u003Cqualify [[$:/state/popup/palette]]>>type=popup position=below animate=yes>\u003Cdiv class=tc-drop-down style=font-size:0.7em;>{{$:/snippets/paletteswitcher}}\"},\"$:/core/ui/Buttons/print\":{\"tags\":\"$:/tags/PageControls\",\"caption\":\"{{$:/core/images/print-button}} {{$:/language/Buttons/Print/Caption}}\",\"description\":\"{{$:/language/Buttons/Print/Hint}}\",\"text\":\"\u003C$button tooltip={{$:/language/Buttons/Print/Hint}}aria-label={{$:/language/Buttons/Print/Caption}}class=\u003C\u003Ctv-config-toolbar-class>>message=tm-print>\u003C$list filter=\\\"[\u003Ctv-config-toolbar-icons>match[yes]]\\\">{{$:/core/images/print-button}}\u003C/$list>\u003C$list filter=\\\"[\u003Ctv-config-toolbar-text>match[yes]]\\\">\u003Cspan class=tc-btn-text>\u003C$text text={{$:/language/Buttons/Print/Caption}}/>\"},\"$:/core/ui/Buttons/refresh\":{\"tags\":\"$:/tags/PageControls\",\"caption\":\"{{$:/core/images/refresh-button}} {{$:/language/Buttons/Refresh/Caption}}\",\"description\":\"{{$:/language/Buttons/Refresh/Hint}}\",\"text\":\"\u003C$button tooltip={{$:/language/Buttons/Refresh/Hint}}aria-label={{$:/language/Buttons/Refresh/Caption}}class=\u003C\u003Ctv-config-toolbar-class>>message=tm-browser-refresh>\u003C$list filter=\\\"[\u003Ctv-config-toolbar-icons>match[yes]]\\\">{{$:/core/images/refresh-button}}\u003C/$list>\u003C$list filter=\\\"[\u003Ctv-config-toolbar-text>match[yes]]\\\">\u003Cspan class=tc-btn-text>\u003C$text text={{$:/language/Buttons/Refresh/Caption}}/>\"},\"$:/core/ui/Buttons/save-wiki\":{\"tags\":\"$:/tags/PageControls\",\"caption\":\"{{$:/core/images/save-button}} {{$:/language/Buttons/SaveWiki/Caption}}\",\"description\":\"{{$:/language/Buttons/SaveWiki/Hint}}\",\"text\":\"\u003C$button tooltip={{$:/language/Buttons/SaveWiki/Hint}}aria-label={{$:/language/Buttons/SaveWiki/Caption}}class=\u003C\u003Ctv-config-toolbar-class>>>\u003C$wikify text={{$:/config/SaveWikiButton/Filename}}name=site-title>\u003C$action-sendmessage $param={{$:/config/SaveWikiButton/Template}}filename=\u003C\u003Csite-title>>$message=tm-save-wiki/>\u003C/$wikify>\u003Cspan class=tc-dirty-indicator>\u003C$list filter=\\\"[\u003Ctv-config-toolbar-icons>match[yes]]\\\">{{$:/core/images/save-button}}\u003C/$list>\u003C$list filter=\\\"[\u003Ctv-config-toolbar-text>match[yes]]\\\">\u003Cspan class=tc-btn-text>\u003C$text text={{$:/language/Buttons/SaveWiki/Caption}}/>\"},\"$:/core/ui/Buttons/storyview\":{\"tags\":\"$:/tags/PageControls\",\"caption\":\"{{$:/core/images/storyview-classic}} {{$:/language/Buttons/StoryView/Caption}}\",\"description\":\"{{$:/language/Buttons/StoryView/Hint}}\",\"text\":\"\\\\define icon()$:/core/images/storyview-$(storyview)$\\n\u003Cspan class=tc-popup-keep>\u003C$button popup=\u003C\u003Cqualify [[$:/state/popup/storyview]]>>tooltip={{$:/language/Buttons/StoryView/Hint}}aria-label={{$:/language/Buttons/StoryView/Caption}}class=\u003C\u003Ctv-config-toolbar-class>>selectedClass=tc-selected>\u003C$list filter=\\\"[\u003Ctv-config-toolbar-icons>match[yes]]\\\">\u003C$let storyview={{$:/view}}>\u003C$transclude tiddler=\u003C\u003Cicon>>/>\u003C/$let>\u003C/$list>\u003C$list filter=\\\"[\u003Ctv-config-toolbar-text>match[yes]]\\\">\u003Cspan class=tc-btn-text>\u003C$text text={{$:/language/Buttons/StoryView/Caption}}/>\u003C/span>\u003C/$list>\u003C/$button>\u003C/span>\u003C$reveal state=\u003C\u003Cqualify [[$:/state/popup/storyview]]>>type=popup position=below animate=yes>\u003Cdiv class=tc-drop-down>{{$:/snippets/viewswitcher}}\"},\"$:/core/ui/Buttons/tag-manager\":{\"tags\":\"$:/tags/PageControls\",\"caption\":\"{{$:/core/images/tag-button}} {{$:/language/Buttons/TagManager/Caption}}\",\"description\":\"{{$:/language/Buttons/TagManager/Hint}}\",\"text\":\"\\\\define control-panel-button(class)\u003C$button to=\\\"$:/TagManager\\\"tooltip={{$:/language/Buttons/TagManager/Hint}}aria-label={{$:/language/Buttons/TagManager/Caption}}class=\\\"\\\"\\\"$(tv-config-toolbar-class)$ $class$\\\"\\\"\\\">\u003C$list filter=\\\"[\u003Ctv-config-toolbar-icons>match[yes]]\\\">{{$:/core/images/tag-button}}\u003C/$list>\u003C$list filter=\\\"[\u003Ctv-config-toolbar-text>match[yes]]\\\">\u003Cspan class=tc-btn-text>\u003C$text text={{$:/language/Buttons/TagManager/Caption}}/>\\n\u003C$list filter=\\\"[list[$:/StoryList]field:title[$:/TagManager]]\\\"emptyMessage=\u003C\u003Ccontrol-panel-button>>>\u003C\u003Ccontrol-panel-button tc-selected>>\"},\"$:/core/ui/Buttons/theme\":{\"tags\":\"$:/tags/PageControls\",\"caption\":\"{{$:/core/images/theme-button}} {{$:/language/Buttons/Theme/Caption}}\",\"description\":\"{{$:/language/Buttons/Theme/Hint}}\",\"text\":\"\u003Cspan class=tc-popup-keep>\u003C$button popup=\u003C\u003Cqualify [[$:/state/popup/theme]]>>tooltip={{$:/language/Buttons/Theme/Hint}}aria-label={{$:/language/Buttons/Theme/Caption}}class=\u003C\u003Ctv-config-toolbar-class>>selectedClass=tc-selected>\u003C$list filter=\\\"[\u003Ctv-config-toolbar-icons>match[yes]]\\\">{{$:/core/images/theme-button}}\u003C/$list>\u003C$list filter=\\\"[\u003Ctv-config-toolbar-text>match[yes]]\\\">\u003Cspan class=tc-btn-text>\u003C$text text={{$:/language/Buttons/Theme/Caption}}/>\u003C/span>\u003C/$list>\u003C/$button>\u003C/span>\u003C$reveal state=\u003C\u003Cqualify [[$:/state/popup/theme]]>>type=popup position=below animate=yes>\u003Cdiv class=tc-drop-down>\u003C$linkcatcher to=\\\"$:/theme\\\">{{$:/snippets/themeswitcher}}\"},\"$:/core/ui/Buttons/timestamp\":{\"tags\":\"$:/tags/PageControls\",\"caption\":\"{{$:/core/images/timestamp-on}} {{$:/language/Buttons/Timestamp/Caption}}\",\"description\":\"{{$:/language/Buttons/Timestamp/Hint}}\",\"text\":\"\u003C$reveal type=nomatch state=\\\"$:/config/TimestampDisable\\\"text=yes>\u003C$button tooltip={{$:/language/Buttons/Timestamp/On/Hint}}aria-label={{$:/language/Buttons/Timestamp/On/Caption}}class=\u003C\u003Ctv-config-toolbar-class>>>\u003C$action-setfield $tiddler=\\\"$:/config/TimestampDisable\\\"$value=yes/>\u003C$list filter=\\\"[\u003Ctv-config-toolbar-icons>match[yes]]\\\">{{$:/core/images/timestamp-on}}\u003C/$list>\u003C$list filter=\\\"[\u003Ctv-config-toolbar-text>match[yes]]\\\">\u003Cspan class=tc-btn-text>\u003C$text text={{$:/language/Buttons/Timestamp/On/Caption}}/>\u003C/span>\u003C/$list>\u003C/$button>\u003C/$reveal>\u003C$reveal type=match state=\\\"$:/config/TimestampDisable\\\"text=yes>\u003C$button tooltip={{$:/language/Buttons/Timestamp/Off/Hint}}aria-label={{$:/language/Buttons/Timestamp/Off/Caption}}class=\u003C\u003Ctv-config-toolbar-class>>>\u003C$action-setfield $tiddler=\\\"$:/config/TimestampDisable\\\"$value=no/>\u003C$list filter=\\\"[\u003Ctv-config-toolbar-icons>match[yes]]\\\">{{$:/core/images/timestamp-off}}\u003C/$list>\u003C$list filter=\\\"[\u003Ctv-config-toolbar-text>match[yes]]\\\">\u003Cspan class=tc-btn-text>\u003C$text text={{$:/language/Buttons/Timestamp/Off/Caption}}/>\"},\"$:/core/ui/Buttons/unfold-all\":{\"tags\":\"$:/tags/PageControls\",\"caption\":\"{{$:/core/images/unfold-all-button}} {{$:/language/Buttons/UnfoldAll/Caption}}\",\"description\":\"{{$:/language/Buttons/UnfoldAll/Hint}}\",\"text\":\"\u003C$button tooltip={{$:/language/Buttons/UnfoldAll/Hint}}aria-label={{$:/language/Buttons/UnfoldAll/Caption}}class=\u003C\u003Ctv-config-toolbar-class>>>\u003C$action-sendmessage $param={{!!title}}foldedStatePrefix=\\\"$:/state/folded/\\\"$message=tm-unfold-all-tiddlers/>\u003C$list filter=\\\"[\u003Ctv-config-toolbar-icons>match[yes]]\\\"variable=listItem>{{$:/core/images/unfold-all-button}}\u003C/$list>\u003C$list filter=\\\"[\u003Ctv-config-toolbar-text>match[yes]]\\\">\u003Cspan class=tc-btn-text>\u003C$text text={{$:/language/Buttons/UnfoldAll/Caption}}/>\"},\"$:/core/ui/PageTemplate/pagecontrols\":{\"text\":\"\\\\define config-title()$:/config/PageControlButtons/Visibility/$(listItem)$\\n\u003Cdiv class=tc-page-controls>\u003C$list filter=\\\"[[$:/tags/PageControls]tagging[]!is[draft]]\\\"variable=listItem>\u003C$let hidden=\u003C\u003Cconfig-title>>>\u003C$list filter=\\\"[\u003Chidden>!text[hide]]\\\"storyview=pop variable=ignore>\u003C$set filter=\\\"[\u003Ctv-config-toolbar-class>][\u003ClistItem>encodeuricomponent[]addprefix[tc-btn-]]\\\"name=tv-config-toolbar-class>\u003C$transclude tiddler=\u003C\u003ClistItem>>mode=inline/>\"},\"$:/core/ui/PageStylesheet\":{\"text\":\"\\\\import $:/core/ui/PageMacros[[$:/tags/Macro]tagging[]!is[draft]]\\n\u003C$let currentTiddler={{$:/language}}languageTitle={{!!name}}>\\n\\n\u003C$list filter=\\\"[[$:/tags/Stylesheet]tagging[]!is[draft]]\\\">\u003C$transclude mode=block/>\"},\"$:/core/ui/PageTemplate/alerts\":{\"tags\":\"$:/tags/PageTemplate\",\"text\":\"\u003Cdiv class=tc-alerts>\\n\\n\u003C$list filter=\\\"[[$:/tags/Alert]tagging[]!is[draft]]\\\"template=\\\"$:/core/ui/AlertTemplate\\\"storyview=pop/>\\n\"},\"$:/core/ui/PageTemplate/drafts\":{\"tags\":\"$:/tags/PageTemplate\",\"text\":\"\u003C$reveal state=\\\"$:/status/IsReadOnly\\\"type=nomatch text=yes tag=div class=tc-drafts-list>\u003C$list filter=\\\"[is[draft]!sort[modified]]-[list[$:/StoryList]]\\\">\u003C$link>{{$:/core/images/edit-button}}\u003C$text text={{!!title}}/>\"},\"$:/core/ui/PageTemplate/pluginreloadwarning\":{\"tags\":\"$:/tags/PageTemplate\",\"text\":\"\\\\define lingo-base()$:/language/\\n\u003C$list filter=\\\"[{$:/status/RequireReloadDueToPluginChange}match[yes]]\\\">\\n\\n\u003C$reveal type=nomatch state=\\\"$:/temp/HidePluginWarning\\\"text=yes>\\n\\n\u003Cdiv class=tc-plugin-reload-warning>\\n\\n\u003C$let tv-config-toolbar-class=\\\"\\\">\\n\\n\u003C\u003Clingo PluginReloadWarning>> \u003C$button set=\\\"$:/temp/HidePluginWarning\\\"setTo=yes class=tc-btn-invisible>{{$:/core/images/close-button}}\"},\"$:/core/ui/PageTemplate/sidebar\":{\"tags\":\"$:/tags/PageTemplate\",\"text\":\"\\\\define config-title()$:/config/SideBarSegments/Visibility/$(listItem)$\\n\u003C$scrollable fallthrough=no class=tc-sidebar-scrollable>\\n\\n\u003Cdiv class=tc-sidebar-header>\\n\\n\u003C$reveal state=\\\"$:/state/sidebar\\\"type=match text=yes default=yes retain=yes animate=yes>\\n\\n\u003C$list filter=\\\"[[$:/tags/SideBarSegment]tagging[]!is[draft]]\\\"variable=listItem>\\n\\n\u003C$reveal type=nomatch state=\u003C\u003Cconfig-title>>text=hide tag=div>\\n\\n\u003C$transclude tiddler=\u003C\u003ClistItem>>mode=block/>\\n\"},\"$:/core/ui/PageTemplate/story\":{\"tags\":\"$:/tags/PageTemplate\",\"text\":\"\u003Csection class=tc-story-river role=main>\\n\\n\u003Csection class=story-backdrop>\\n\\n\u003C$list filter=\\\"[[$:/tags/AboveStory]tagging[]!is[draft]]\\\">\\n\\n{{}}\\n\u003C/$list>\u003C/section>\u003C$list filter=\\\"[list[$:/StoryList]]\\\"history=\\\"$:/HistoryList\\\"template=\\\"$:/core/ui/StoryTiddlerTemplate\\\"storyview={{$:/view}}emptyMessage={{$:/config/EmptyStoryMessage}}/>\\n\\n\u003Csection class=story-frontdrop>\\n\\n\u003C$list filter=\\\"[[$:/tags/BelowStory]tagging[]!is[draft]]\\\">\\n\\n{{}}\"},\"$:/core/ui/PageTemplate/topleftbar\":{\"tags\":\"$:/tags/PageTemplate\",\"text\":\"\u003Cspan class=\\\"tc-topbar tc-topbar-left\\\">\\n\\n\u003C$list filter=\\\"[[$:/tags/TopLeftBar]tagging[]!is[draft]]\\\"variable=listItem storyview=pop>\\n\\n\u003C$transclude tiddler=\u003C\u003ClistItem>>mode=inline/>\\n\"},\"$:/core/ui/PageTemplate/toprightbar\":{\"tags\":\"$:/tags/PageTemplate\",\"text\":\"\u003Cspan class=\\\"tc-topbar tc-topbar-right\\\">\\n\\n\u003C$list filter=\\\"[[$:/tags/TopRightBar]tagging[]!is[draft]]\\\"variable=listItem storyview=pop>\\n\\n\u003C$transclude tiddler=\u003C\u003ClistItem>>mode=inline/>\\n\"},\"$:/core/ui/PageTemplate\":{\"name\":\"{{$:/language/PageTemplate/Name}}\",\"description\":\"{{$:/language/PageTemplate/Description}}\",\"text\":\"\\\\import $:/core/ui/PageMacros[[$:/tags/Macro]tagging[]!is[draft]]\\n\u003C$let languageTitle={{{[{$:/language}get[name]]}}}tv-config-toolbar-icons={{$:/config/Toolbar/Icons}}tv-config-toolbar-text={{$:/config/Toolbar/Text}}tv-config-toolbar-class={{$:/config/Toolbar/ButtonClass}}tv-enable-drag-and-drop={{$:/config/DragAndDrop/Enable}}tv-show-missing-links={{$:/config/MissingLinks}}storyviewTitle={{$:/view}}>\\n\\n\u003Cdiv class={{{[[$:/tags/ClassFilters/PageTemplate]tagging[]!is[draft]]:map:flat[subfilter{!!text}]tc-page-container[[tc-page-view-]addsuffix\u003CstoryviewTitle>][[tc-language-]addsuffix\u003ClanguageTitle>]:and[unique[]join[ ]]}}}>\\n\\n\u003C$navigator story=\\\"$:/StoryList\\\"history=\\\"$:/HistoryList\\\"openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}}openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromOutsideRiver}}relinkOnRename={{$:/config/RelinkOnRename}}>\\n\\n\u003C$dropzone enable=\u003C\u003Ctv-enable-drag-and-drop>>>\\n\\n\u003C$list filter=\\\"[[$:/tags/PageTemplate]tagging[]!is[draft]]\\\"variable=listItem>\\n\\n\u003C$transclude tiddler=\u003C\u003ClistItem>>/>\\n\"},\"$:/PaletteManager\":{\"text\":\"\\\\define lingo-base()$:/language/ControlPanel/Palette/Editor/\\n\\\\define describePaletteColour(colour)\u003C$transclude tiddler=\\\"$:/language/Docs/PaletteColours/$colour$\\\">\u003C$text text=\\\"$colour$\\\"/>\\n\\\\define edit-colour-placeholder()\\n edit $(colourName)$\\n\\\\end\\n\\\\define colour-tooltip(showhide)$showhide$ editor for $(newColourName)$ \\n\\\\define resolve-colour(macrocall)\\n\\\\import $:/core/macros/utils\\n\u003C$wikify text=\\\"\\\"\\\"$macrocall$\\\"\\\"\\\"name=name>\u003C\u003Cname>>\\n\\\\end\\n\\\\define delete-colour-index-actions()\u003C$action-setfield $index=\u003C\u003CcolourName>>/>\\n\\\\define palette-manager-colour-row-segment()\u003C$edit-text index=\u003C\u003CcolourName>>placeholder=\u003C\u003Cedit-colour-placeholder>>default=\\\"\\\"tag=input/>\u003Cbr>\u003C$edit-text index=\u003C\u003CcolourName>>type=color tag=input class=tc-palette-manager-colour-input/>\u003C$list filter=\\\"[{!!title}getindex\u003CcolourName>removeprefix[\u003C\u003C]removesuffix[>>]][{!!title}getindex\u003CcolourName>removeprefix[\u003C$]removesuffix[/>]]\\\"variable=ignore>\u003C$let state={{{[[$:/state/palettemanager/]addsuffix{!!title}addsuffix[/]addsuffix\u003CcolourName>]}}}>\u003C$wikify text=\\\"\u003C$macrocall macrocall={{{[{!!title}getindex\u003CcolourName>]}}}$name=resolve-colour/>\\\"name=newColourName>\u003C$reveal state=\u003C\u003Cstate>>type=nomatch text=show>\u003C$button tooltip=\u003C\u003Ccolour-tooltip show>>aria-label=\u003C\u003Ccolour-tooltip show>>class=tc-btn-invisible set=\u003C\u003Cstate>>setTo=show>{{$:/core/images/down-arrow}}\u003C$text text=\u003C\u003CnewColourName>>class=tc-small-gap-left/>\u003C/$button>\u003Cbr>\u003C/$reveal>\u003C$reveal state=\u003C\u003Cstate>>type=match text=show>\u003C$button tooltip=\u003C\u003Ccolour-tooltip hide>>aria-label=\u003C\u003Ccolour-tooltip show>>actions=\\\"\u003C$action-deletetiddler $tiddler=\u003C\u003Cstate>>/>\\\"class=tc-btn-invisible>{{$:/core/images/up-arrow}}\u003C$text text=\u003C\u003CnewColourName>>class=tc-small-gap-left/>\u003C/$button>\u003Cbr>\u003C/$reveal>\u003C$reveal state=\u003C\u003Cstate>>type=match text=show>\u003C$let colourName=\u003C\u003CnewColourName>>>\u003Cbr>\u003C\u003Cpalette-manager-colour-row-segment>>\u003Cbr>\u003Cbr>\\n\\\\define palette-manager-colour-row()\u003Ctr>\u003Ctd>\u003Cspan style=float:right;>\u003C$button tooltip={{$:/language/ControlPanel/Palette/Editor/Delete/Hint}}aria-label={{$:/language/ControlPanel/Palette/Editor/Delete/Hint}}actions=\u003C\u003Cdelete-colour-index-actions>>class=tc-btn-invisible>{{$:/core/images/delete-button}}\u003C/$button>\u003C/span>''\u003C$macrocall colour=\u003C\u003CcolourName>>$name=describePaletteColour/>''\u003Cbr>\u003C$macrocall $output='text/plain'$name=colourName/>\u003C/td>\u003Ctd>\u003C\u003Cpalette-manager-colour-row-segment>>\\n\\\\define palette-manager-table()\u003Ctable>\u003Ctbody>\u003C$set filter=\\\"[{$:/state/palettemanager/showexternal}match[yes]]\\\"value=\\\"[all[shadows+tiddlers]tag[$:/tags/Palette]indexes[]]\\\"emptyValue=\\\"[\u003CcurrentTiddler>indexes[]]\\\"name=colorList>\u003C$list filter=\u003C\u003CcolorList>>variable=colourName>\u003C\u003Cpalette-manager-colour-row>>\\n\u003C$let currentTiddler={{$:/palette}}>\\n\\n\u003C\u003Clingo Prompt>> \u003C$link to={{$:/palette}}>\u003C$macrocall $output='text/plain'$name=currentTiddler/>\u003C/$link>\\n\\n\u003C$list filter=[{!!title}is[shadow]is[tiddler]] variable=listItem>\u003C\u003Clingo Prompt/Modified>> \u003C$button param={{$:/palette}}message=tm-delete-tiddler>\u003C\u003Clingo Reset/Caption>>\u003C/$button>\u003C/$list>\\n\\n\u003C$list filter=[{!!title}is[shadow]!is[tiddler]] variable=listItem>\u003C\u003Clingo Clone/Prompt>>\u003C/$list>\\n\\n\u003C$button param={{$:/palette}}message=tm-new-tiddler>\u003C\u003Clingo Clone/Caption>>\u003C/$button>\\n\\n\u003C$checkbox tiddler='$:/state/palettemanager/showexternal'field=text checked=yes unchecked=no>\u003Cspan class=tc-small-gap-left>\u003C\u003Clingo Names/External/Show>>\u003C/span>\u003C/$checkbox>\\n\\n\u003C\u003Cpalette-manager-table>>\"},\"$:/core/ui/PluginInfo\":{\"text\":\"\\\\define localised-info-tiddler-title()$(currentTiddler)$/$(languageTitle)$/$(currentTab)$\\n\\\\define info-tiddler-title()$(currentTiddler)$/$(currentTab)$\\n\\\\define default-tiddler-title()$:/core/ui/PluginInfo/Default/$(currentTab)$\\n\u003C$transclude tiddler=\u003C\u003Clocalised-info-tiddler-title>>mode=block>\u003C$transclude tiddler={{!!title}}subtiddler=\u003C\u003Clocalised-info-tiddler-title>>mode=block>\u003C$transclude tiddler={{!!title}}subtiddler=\u003C\u003Cinfo-tiddler-title>>mode=block>\u003C$transclude tiddler=\u003C\u003Cdefault-tiddler-title>>mode=block>{{$:/language/ControlPanel/Plugin/NoInfoFound/Hint}}\"},\"$:/core/ui/PluginInfo/Default/contents\":{\"text\":\"\\\\define lingo-base()$:/language/TiddlerInfo/Advanced/PluginInfo/\\n\u003C\u003Clingo Hint>>\\n\u003Cul>\u003C$list emptyMessage=\u003C\u003Clingo Empty/Hint>>filter=[{!!title}plugintiddlers[]sort[title]]>\u003Cli>\u003C$link/>\"},\"$:/core/ui/PluginListItemTemplate\":{\"text\":\"\u003C$link class=tc-plugin-info>\u003Cdiv class='tc-plugin-info-chunk tc-plugin-info-icon'>\u003C$transclude tiddler={{!!title}}subtiddler={{{[{!!title}addsuffix[/icon]]}}}>\u003C$transclude tiddler={{{[{!!title}get[plugin-type]addprefix[$:/core/images/plugin-generic-]]}}}/>\u003C/$transclude>\u003C/div>\u003Cdiv class='tc-plugin-info-chunk tc-plugin-info-description'>\u003Ch1>''\u003C$text text={{{[{!!title}get[name]]~[{!!title}split[/]last[1]]}}}/>'':&nbsp;\u003C$view field=description>\u003C$view field=title/>\"},\"$:/core/ui/RootTemplate\":{\"text\":\"\u003C$transclude tiddler={{{[{$:/layout}has[text]]~$:/core/ui/PageTemplate}}}mode=inline/>\\n\"},\"$:/core/ui/SearchResults\":{\"text\":\"\u003Cdiv class=tc-search-results>\\n\\n\u003C$list filter='[[$:/tags/SearchResults]tagging[]!is[draft]butfirst[]nth[]]'emptyMessage=\\\"\u003C$list filter='[[$:/tags/SearchResults]tagging[]!is[draft]]'>\u003C$transclude mode=block/>\\\">\\n\\n\u003C$macrocall tabsList='[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]'default={{$:/config/SearchResults/Default}}actions=\\\"\u003C$action-setfield $tiddler='$:/state/search/currentTab' text=\u003C\u003CcurrentTab>>/>\\\"explicitState='$:/state/tab/search-results/sidebar'$name=tabs/>\\n\"},\"$:/core/ui/SideBar/More\":{\"tags\":\"$:/tags/SideBar\",\"caption\":\"{{$:/language/SideBar/More/Caption}}\",\"text\":\"\u003Cdiv class={{{[{$:/config/ui/SideBar/More/horizontal}match[yes]then[tc-sidebar-tabs]else[tc-more-sidebar]]}}}>\u003C$macrocall tabsList=\\\"[all[shadows+tiddlers]tag[$:/tags/MoreSideBar]!has[draft.of]]\\\"default={{$:/config/DefaultMoreSidebarTab}}state=\\\"$:/state/tab/moresidebar\\\"class={{{[{$:/config/ui/SideBar/More/horizontal}match[yes]then[tc-sidebar-tabs-more]else[tc-vertical tc-sidebar-tabs-more]]}}}explicitState=\\\"$:/state/tab/moresidebar-1850697562\\\"$name=tabs/>\"},\"$:/core/ui/SideBar/Open\":{\"tags\":\"$:/tags/SideBar\",\"caption\":\"{{$:/language/SideBar/Open/Caption}}\",\"text\":\"\\\\define lingo-base()$:/language/CloseAll/\\n\\\\define drop-actions()\u003C$action-listops $tiddler=\u003C\u003Ctv-story-list>>$subfilter=\\\"+[insertbefore\u003CactionTiddler>,\u003CcurrentTiddler>]\\\"/>\\n\\\\define placeholder()\u003Cdiv class=tc-droppable-placeholder/>\\n\\\\define droppable-item(button)\\n\\\\whitespace trim\\n\u003C$droppable actions=\u003C\u003Cdrop-actions>>enable=\u003C\u003Ctv-allow-drag-and-drop>>tag=div>\u003C\u003Cplaceholder>>\u003Cdiv>\\n$button$\\n\u003C/div>\\n\\\\end\\n\u003Cdiv class=tc-sidebar-tab-open>\u003C$list filter='[list\u003Ctv-story-list>]'history=\u003C\u003Ctv-history-list>>storyview=pop>\u003Cdiv class=tc-sidebar-tab-open-item>\u003C$macrocall button=\\\"\u003C$button message='tm-close-tiddler' tooltip={{$:/language/Buttons/Close/Hint}} aria-label={{$:/language/Buttons/Close/Caption}} class='tc-btn-invisible tc-btn-mini tc-small-gap-right'>{{$:/core/images/close-button}}\u003C/$button>\u003C$link to={{!!title}}>\u003C$view field='title'/>\u003C/$link>\\\"$name=droppable-item/>\u003C/div>\u003C/$list>\u003C$tiddler tiddler=''>\u003Cdiv>\u003C$macrocall button=\\\"\u003C$button message='tm-close-all-tiddlers' class='tc-btn-invisible tc-btn-mini'>\u003C\u003Clingo Button>>\u003C/$button>\\\"$name=droppable-item/>\"},\"$:/core/ui/SideBar/Recent\":{\"tags\":\"$:/tags/SideBar\",\"caption\":\"{{$:/language/SideBar/Recent/Caption}}\",\"text\":\"\u003C$macrocall format={{$:/language/RecentChanges/DateFormat}}$name=timeline/>\\n\"},\"$:/core/ui/SideBar/Tools\":{\"tags\":\"$:/tags/SideBar\",\"caption\":\"{{$:/language/SideBar/Tools/Caption}}\",\"text\":\"\\\\define lingo-base()$:/language/ControlPanel/\\n\\\\define config-title()$:/config/PageControlButtons/Visibility/$(listItem)$\\n\u003C\u003Clingo Basics/Version/Prompt>> \u003C\u003Cversion>>\\n\\n\u003C$let tv-config-toolbar-icons=yes tv-config-toolbar-text=yes tv-config-toolbar-class=\\\"\\\">\\n\\n\u003C$list filter=\\\"[[$:/tags/PageControls]tagging[]!is[draft]]\\\"variable=listItem>\\n\\n\u003Cdiv class={{{[\u003ClistItem>encodeuricomponent[]addprefix[tc-btn-]]}}}style=position:relative;>\\n\\n\u003C$checkbox tiddler=\u003C\u003Cconfig-title>>field=text checked=show unchecked=hide default=show/> \u003C$transclude tiddler=\u003C\u003ClistItem>>/> \u003Ci class=tc-muted>\u003C$transclude tiddler=\u003C\u003ClistItem>>field=description/>\"},\"$:/core/ui/SideBarLists\":{\"text\":\"{{||$:/core/ui/SideBarSegments/search}}\\n{{||$:/core/ui/SideBarSegments/tabs}}\"},\"$:/core/ui/SideBarSegments/page-controls\":{\"tags\":\"$:/tags/SideBarSegment\",\"text\":\"{{||$:/core/ui/PageTemplate/pagecontrols}}\"},\"$:/core/ui/SideBarSegments/search\":{\"tags\":\"$:/tags/SideBarSegment\",\"text\":\"\\\\define count-popup-button()\u003C$button popup=\u003C\u003Cqualify [[$:/state/popup/search-dropdown]]>>class=tc-btn-invisible>{{$:/core/images/down-arrow}}\u003C$list filter=\\\"[{$(searchTiddler)$}minlength{$:/config/Search/MinLength}nth[]]\\\"variable=listItem>\u003C$vars userInput={{{[\u003CsearchTiddler>get[text]]}}}configTiddler={{{[[$:/state/search/currentTab]!is[missing]get[text]]~[{$:/config/SearchResults/Default}]}}}replaceRegexp=limit\\\\[\\\\d+\\\\]>\u003C$vars primaryListFilter={{{[\u003CconfigTiddler>get[first-search-filter]search-replace:g:regexp\u003CreplaceRegexp>,[]]}}}secondaryListFilter={{{[\u003CconfigTiddler>get[second-search-filter]search-replace:g:regexp\u003CreplaceRegexp>,[]]}}}>\u003C$let resultCount=\\\"\\\"\\\"\u003C$count filter=\\\"[subfilter\u003CprimaryListFilter>] [subfilter\u003CsecondaryListFilter>]\\\"/>\\\"\\\"\\\">{{$:/language/Search/Matches}}\\n\\\\define search-results-list()\\n\u003C$let configTiddler={{{[[$:/state/search/currentTab]!is[missing]get[text]]~[{$:/config/SearchResults/Default}]}}}userInput={{$(searchTiddler)$}}>\u003C$list filter=\\\"[\u003CuserInput>minlength{$:/config/Search/MinLength}nth[]]\\\"emptyMessage=\\\"\u003Cdiv class=tc-search-results>{{$:/language/Search/Search/TooShort}}\\\"variable=listItem>\\n\\n\u003C$tiddler tiddler=\u003C\u003CconfigTiddler>>>\\n\\n{{$:/core/ui/SearchResults}}\\n\\\\end\\n\\\\define cancel-search-actions()\u003C$list filter=\\\"[\u003CsearchTiddler>get[text]!match{$:/temp/search}]\\\"emptyMessage=\\\"\\\"\\\"\u003C$action-deletetiddler $filter=\\\"[[$:/temp/search]] [\u003CsearchTiddler>] [\u003CsearchListState>]\\\"/>\\\"\\\"\\\">\u003C$action-setfield $tiddler=\\\"$:/temp/search\\\"text={{{[\u003CsearchTiddler>get[text]]}}}/>\u003C$action-setfield $tiddler=\\\"$:/temp/search/refresh\\\"text=yes/>\\n\\\\define input-accept-actions()\u003C$list filter=\\\"[{$:/config/Search/NavigateOnEnter/enable}match[yes]]\\\"emptyMessage=\\\"\\\"\\\"\u003C$list filter=\\\"[\u003C__tiddler__>get[text]!is[missing]]~[\u003C__tiddler__>get[text]is[shadow]]\\\">\u003C$action-navigate $to={{{[\u003C__tiddler__>get[text]]}}}/>\\\"\\\"\\\">\u003C$action-navigate $to={{{[\u003C__tiddler__>get[text]]}}}/>\\n\\\\define input-accept-variant-actions()\u003C$list filter=\\\"[{$:/config/Search/NavigateOnEnter/enable}match[yes]]\\\"emptyMessage=\\\"\\\"\\\"\u003C$list filter=\\\"[\u003C__tiddler__>get[text]!is[missing]]~[\u003C__tiddler__>get[text]is[shadow]]\\\">\u003C$list filter=\\\"[\u003C__tiddler__>get[text]minlength[1]]\\\">\u003C$action-sendmessage $param={{{[\u003C__tiddler__>get[text]]}}}$message=tm-edit-tiddler/>\\\"\\\"\\\">\u003C$list filter=\\\"[\u003C__tiddler__>get[text]minlength[1]]\\\">\u003C$action-sendmessage $param={{{[\u003C__tiddler__>get[text]]}}}$message=tm-edit-tiddler/>\\n\\\\define set-next-input-tab(beforeafter:after)\u003C$macrocall stateTitle=\\\"$:/state/tab/search-results/sidebar\\\"tag=\\\"$:/tags/SearchResults\\\"beforeafter=\\\"$beforeafter$\\\"defaultState={{$:/config/SearchResults/Default}}actions=\\\"\\\"\\\"\u003C$action-setfield $tiddler=\\\"$:/state/search/currentTab\\\" text=\u003C\u003CnextTab>>/>\\\"\\\"\\\"$name=change-input-tab/>\\n\\\\define advanced-search-actions()\u003C$action-setfield $tiddler=\\\"$:/temp/advancedsearch\\\"text={{$:/temp/search/input}}/>\u003C$action-setfield $tiddler=\\\"$:/temp/advancedsearch/input\\\"text={{$:/temp/search/input}}/>\u003C\u003Cdelete-state-tiddlers>>\u003C$action-navigate $to=\\\"$:/AdvancedSearch\\\"/>\u003C$action-setfield $tiddler=\\\"$:/temp/advancedsearch/refresh\\\"text=yes/>\u003C$action-sendmessage $message=tm-focus-selector $param=\\\"\\\"\\\"[data-tiddler-title=\\\"$:/AdvancedSearch\\\"] .tc-search input\\\"\\\"\\\"preventScroll/>\u003C$action-deletetiddler $filter=\\\"$:/temp/search $:/temp/search/input $:/temp/search/refresh [\u003CsearchListState>]\\\"/>\\n\u003Cdiv class=\\\"tc-sidebar-lists tc-sidebar-search\\\">\\n\\n\u003C$let searchListState=\u003C\u003Cqualify [[$:/state/search-list/selected-item]]>>editTiddler=\\\"$:/temp/search\\\"searchTiddler=\\\"$:/temp/search/input\\\">\u003Cdiv class=tc-search>\u003C$keyboard actions=\u003C\u003Cset-next-input-tab>>key=((input-tab-right))>\u003C$keyboard actions=\u003C\u003Cset-next-input-tab before>>key=((input-tab-left))>\u003C$keyboard actions=\u003C\u003Cadvanced-search-actions>>key=((advanced-search-sidebar))>\u003Cform class=tc-form-inline>\u003C$macrocall $name=keyboard-driven-input tiddler=\u003C\u003CeditTiddler>>storeTitle=\u003C\u003CsearchTiddler>>selectionStateTitle=\u003C\u003CsearchListState>>refreshTitle=\\\"$:/temp/search/refresh\\\"type=search tag=input focus={{$:/config/Search/AutoFocus}}focusPopup=\u003C\u003Cqualify [[$:/state/popup/search-dropdown]]>>class=tc-popup-handle filterMinLength={{$:/config/Search/MinLength}}inputCancelActions=\u003C\u003Ccancel-search-actions>>inputAcceptActions=\u003C\u003Cinput-accept-actions>>inputAcceptVariantActions=\u003C\u003Cinput-accept-variant-actions>>configTiddlerFilter=\\\"[[$:/state/search/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}]\\\"cancelPopups=yes/>\u003C/form>\u003C/$keyboard>\u003C/$keyboard>\u003C/$keyboard>\u003C$reveal state=\u003C\u003CsearchTiddler>>text=\\\"\\\"type=nomatch>\u003C$button tooltip={{$:/language/Buttons/AdvancedSearch/Hint}}aria-label={{$:/language/Buttons/AdvancedSearch/Caption}}class=tc-btn-invisible>\u003C\u003Cadvanced-search-actions>>{{$:/core/images/advanced-search-button}}\u003C/$button>\u003C$button class=tc-btn-invisible>\u003C\u003Ccancel-search-actions>>\u003C$action-sendmessage $param=\\\".tc-search input\\\"$message=tm-focus-selector/>{{$:/core/images/close-button}}\u003C/$button>\u003C\u003Ccount-popup-button>>\u003C/$reveal>\u003C$reveal state=\u003C\u003CsearchTiddler>>text=\\\"\\\"type=match>\u003C$button to=\\\"$:/AdvancedSearch\\\"tooltip={{$:/language/Buttons/AdvancedSearch/Hint}}aria-label={{$:/language/Buttons/AdvancedSearch/Caption}}class=tc-btn-invisible>{{$:/core/images/advanced-search-button}}\u003C/$button>\u003C/$reveal>\u003C/div>\u003C$reveal tag=div class=tc-block-dropdown-wrapper state=\u003C\u003CsearchTiddler>>text=\\\"\\\"type=nomatch>\\n\\n\u003C$reveal tag=div class=\\\"tc-block-dropdown tc-search-drop-down tc-popup-handle\\\"state=\u003C\u003Cqualify [[$:/state/popup/search-dropdown]]>>text=\\\"\\\"default=\\\"\\\"type=nomatch>\\n\\n\u003C\u003Csearch-results-list>>\"},\"$:/core/ui/SideBarSegments/site-subtitle\":{\"tags\":\"$:/tags/SideBarSegment\",\"text\":\"\u003Cdiv class=tc-site-subtitle>\\n\\n\u003C$transclude tiddler=\\\"$:/SiteSubtitle\\\"mode=inline/>\\n\"},\"$:/core/ui/SideBarSegments/site-title\":{\"tags\":\"$:/tags/SideBarSegment\",\"text\":\"\u003Ch1 class=tc-site-title>\\n\\n\u003C$transclude tiddler=\\\"$:/SiteTitle\\\"mode=inline/>\\n\"},\"$:/core/ui/SideBarSegments/tabs\":{\"tags\":\"$:/tags/SideBarSegment\",\"text\":\"\u003Cdiv class=\\\"tc-sidebar-lists tc-sidebar-tabs\\\"aria-label={{$:/language/SideBar/Caption}}role=region>\\n\\n\u003C$macrocall $name=tabs tabsList=\\\"[all[shadows+tiddlers]tag[$:/tags/SideBar]!has[draft.of]]\\\"default={{$:/config/DefaultSidebarTab}}state=\\\"$:/state/tab/sidebar\\\"explicitState=\\\"$:/state/tab/sidebar--595412856\\\"class=tc-sidebar-tabs-main/>\\n\"},\"$:/core/ui/StoryTiddlerTemplate\":{\"text\":\"\u003C$transclude tiddler={{{[{!!title}]:cascade[[$:/tags/StoryTiddlerTemplateFilter]tagging[]!is[draft]get[text]]:and[!is[blank]else{$:/config/ui/ViewTemplate}]}}}/>\\n\"},\"$:/core/ui/SwitcherModal\":{\"subtitle\":\"\u003C$text text={{{[\u003Cswitch>lookup[$:/language/Switcher/Subtitle/]]}}}/>\",\"class\":\"tc-modal-centered\",\"mask-closable\":\"yes\",\"text\":\"\u003C$tiddler tiddler={{{[\u003Cswitch>lookup[$:/config/SwitcherTargets/]]}}}>\\n\\n{{}}\"},\"$:/TagManager\":{\"icon\":\"$:/core/images/tag-button\",\"color\":\"#bbb\",\"text\":\"\\\\define lingo-base()$:/language/TagManager/\\n\\\\define iconEditorTab(type)\u003C$link to=\\\"\\\">\u003C\u003Clingo Icons/None>>\u003C/$link>\u003C$list filter=\\\"[all[shadows+tiddlers]is[image]][[$:/tags/Image]tagging[]]-[type[application/pdf]]+[sort[title]]+[$type$is[system]]\\\">\u003C$link>{{}}\u003C$view field=title/>\\n\\\\define iconEditor(title)\u003Cdiv class=tc-drop-down-wrapper>\u003C$button popupTitle={{{[[$:/state/popup/icon/]addsuffix\u003C__title__>]}}}class=\\\"tc-btn-invisible tc-btn-dropdown\\\">{{$:/core/images/down-arrow}}\u003C/$button>\u003C$reveal stateTitle={{{[[$:/state/popup/icon/]addsuffix\u003C__title__>]}}}type=popup text=\\\"\\\"default=\\\"\\\"position=belowleft>\u003Cdiv class=tc-drop-down>\u003C$linkcatcher actions=\\\"\u003C$action-setfield $tiddler=\u003C\u003C__title__>>icon=\u003C\u003CnavigateTo>>/>\\\">\u003C\u003CiconEditorTab type:!>>\u003Chr>\u003C\u003CiconEditorTab type:[[]]>>\\n\\\\define toggleButton(state)\u003C$reveal stateTitle=\u003C\u003C__state__>>type=match text=closed default=closed>\u003C$button setTitle=\u003C\u003C__state__>>setTo=open class=\\\"tc-btn-invisible tc-btn-dropdown\\\"selectedClass=tc-selected>{{$:/core/images/info-button}}\u003C/$button>\u003C/$reveal>\u003C$reveal stateTitle=\u003C\u003C__state__>>type=match text=open default=closed>\u003C$button setTitle=\u003C\u003C__state__>>setTo=closed class=\\\"tc-btn-invisible tc-btn-dropdown\\\"selectedClass=tc-selected>{{$:/core/images/info-button}}\\n\u003Ctable class=tc-tag-manager-table>\u003Ctbody>\u003Ctr>\u003Cth>\u003C\u003Clingo Colour/Heading>>\u003C/th>\u003Cth class=tc-tag-manager-tag>\u003C\u003Clingo Tag/Heading>>\u003C/th>\u003Cth>\u003C\u003Clingo Count/Heading>>\u003C/th>\u003Cth>\u003C\u003Clingo Icon/Heading>>\u003C/th>\u003Cth>\u003C\u003Clingo Info/Heading>>\u003C/th>\u003C/tr>\u003C$list filter=[tags[]!is[system]sort[title]]>\u003Ctr>\u003Ctd>\u003C$edit-text field=color tag=input type=color/>\u003C/td>\u003Ctd>{{||$:/core/ui/TagTemplate}}\u003C/td>\u003Ctd>\u003C$count filter=[{!!title}tagging[]]/>\u003C/td>\u003Ctd>\u003C$macrocall title={{!!title}}$name=iconEditor/>\u003C/td>\u003Ctd>\u003C$macrocall state={{{[[$:/state/tag-manager/]addsuffix{!!title}]}}}$name=toggleButton/>\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003C/td>\u003Ctd colspan=4>\u003C$reveal stateTitle={{{[[$:/state/tag-manager/]addsuffix{!!title}]}}}type=match default=\\\"\\\"text=open>\u003Ctable>\u003Ctbody>\u003Ctr>\u003Ctd>\u003C\u003Clingo Colour/Heading>>\u003C/td>\u003Ctd>\u003C$edit-text field=color tag=input type=text size=9/>\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003C\u003Clingo Icon/Heading>>\u003C/td>\u003Ctd>\u003C$edit-text field=icon tag=input size=45/>\u003C/td>\u003C/tr>\u003C/tbody>\u003C/table>\u003C/$reveal>\u003C/td>\u003C/tr>\u003C/$list>\u003Ctr>\u003Ctd>\u003C/td>\u003Ctd style=position:relative;>{{$:/core/ui/UntaggedTemplate}}\u003C/td>\u003Ctd>\u003Csmall class=tc-menu-list-count>\u003C$count filter=[untagged[]!is[system]]-[tags[]]/>\u003C/small>\u003C/td>\u003Ctd>\u003C/td>\u003Ctd>\"},\"$:/core/ui/TagPickerTagTemplate\":{\"text\":\"\u003C$button class=\u003C\u003Cbutton-classes>>tooltip={{$:/language/EditTemplate/Tags/Add/Button/Hint}}tag=a>\u003C$list filter=\\\"[\u003CsaveTiddler>minlength[1]]\\\">\u003C$action-listops $tiddler=\u003C\u003CsaveTiddler>>$field=\u003C\u003CtagField>>$subfilter=\\\"[\u003Ctag>]\\\"/>\u003C/$list>\u003C$let currentTiddlerCSSEscaped={{{[\u003CsaveTiddler>escapecss[]]}}}>\u003C$action-sendmessage $message=tm-focus-selector $param=\u003C\u003Cget-tagpicker-focus-selector>>preventScroll/>\u003C/$let>\u003C\u003Cdelete-tag-state-tiddlers>>\u003C$list filter=\\\"[\u003CrefreshTitle>minlength[1]]\\\">\u003C$action-setfield $tiddler=\u003C\u003CrefreshTitle>>text=yes/>\u003C/$list>\u003C\u003Cactions>>\u003C$let backgroundColor={{{[{!!title}]:cascade[[$:/tags/TiddlerColourFilter]tagging[]!is[draft]get[text]]}}}>\u003C$wikify text=\\\"\u003C$macrocall target=\u003C\u003CbackgroundColor>>fallbackTarget=\u003C\u003CfallbackTarget>>colourA=\u003C\u003CcolourA>>colourB=\u003C\u003CcolourB>>$name=contrastcolour/>\\\"name=foregroundColor>\u003Cspan class=\\\"tc-tag-label tc-btn-invisible\\\"style=\u003C\u003Ctag-pill-styles>>>{{||$:/core/ui/TiddlerIcon}}\u003C$view field=title format=text/>\"},\"$:/core/ui/TagTemplate\":{\"text\":\"\u003Cspan data-tag-title={{!!title}}class=tc-tag-list-item>\u003C$set value={{!!title}}name=transclusion>\u003C$macrocall $name=tag-pill-body tag={{!!title}}icon={{{[{!!title}]:cascade[[$:/tags/TiddlerIconFilter]tagging[]!is[draft]get[text]]}}}colour={{{[{!!title}]:cascade[[$:/tags/TiddlerColourFilter]tagging[]!is[draft]get[text]]}}}palette={{$:/palette}}element-attributes=\\\"\\\"\\\"popup=\u003C\u003Cqualify \\\"$:/state/popup/tag\\\">> dragFilter='[all[current]tagging[]]' tag='span'\\\"\\\"\\\"element-tag=$button/>\u003C$reveal state=\u003C\u003Cqualify'$:/state/popup/tag'>>type=popup position=below animate=yes class=tc-drop-down>\u003C$let tv-show-missing-links=yes>{{||$:/core/ui/ListItemTemplate}}\u003C/$let>\u003C$list filter='[[$:/tags/TagDropdown]tagging[]!is[draft]]'variable=listItem>\u003C$transclude tiddler=\u003C\u003ClistItem>>/>\u003C/$list>\u003Chr>\u003C$macrocall tag={{!!title}}$name=list-tagged-draggable/>\"},\"$:/core/ui/TiddlerFieldTemplate\":{\"text\":\"\u003Ctr class=tc-view-field>\u003Ctd class=tc-view-field-name>\u003C$text text=\u003C\u003ClistItem>>/>\u003C/td>\u003Ctd class=tc-view-field-value>\u003C$view field=\u003C\u003ClistItem>>/>\"},\"$:/core/ui/TiddlerFields\":{\"text\":\"\u003Ctable class=tc-view-field-table>\u003Ctbody>\u003C$list filter=[{!!title}fields[]sort[title]]-text template=\\\"$:/core/ui/TiddlerFieldTemplate\\\"variable=listItem/>\"},\"$:/core/ui/TiddlerIcon\":{\"text\":\"\u003C$let tiddlerIcon={{{[{!!title}]:cascade[[$:/tags/TiddlerIconFilter]tagging[]!is[draft]get[text]]}}}>\u003C$list filter=\\\"[\u003CtiddlerIcon>!is[blank]]\\\"variable=ignore>\u003C$transclude tiddler=\u003C\u003CtiddlerIcon>>/>\"},\"$:/core/ui/TiddlerInfo/Advanced/PluginInfo\":{\"tags\":\"$:/tags/TiddlerInfo/Advanced\",\"text\":\"\\\\define lingo-base()$:/language/TiddlerInfo/Advanced/PluginInfo/\\n\u003C$list filter=[{!!title}has[plugin-type]]>\\n\\n! \u003C\u003Clingo Heading>>\\n\\n\u003C\u003Clingo Hint>>\\n\u003Cul>\u003C$list emptyMessage=\u003C\u003Clingo Empty/Hint>>filter=[{!!title}plugintiddlers[]sort[title]]>\u003Cli>\u003C$link/>\"},\"$:/core/ui/TiddlerInfo/Advanced/ShadowInfo\":{\"tags\":\"$:/tags/TiddlerInfo/Advanced\",\"text\":\"\\\\define lingo-base()$:/language/TiddlerInfo/Advanced/ShadowInfo/\\n\u003C$let infoTiddler={{!!title}}>\\n\\n''\u003C\u003Clingo Heading>>''\\n\\n\u003C$list filter=[{!!title}!is[shadow]]>\\n\\n\u003C\u003Clingo NotShadow/Hint>>\\n\\n\u003C/$list>\u003C$list filter=[{!!title}is[shadow]]>\\n\\n\u003C\u003Clingo Shadow/Hint>>\\n\\n\u003C$list filter=[{!!title}shadowsource[]]>\\n\\n\u003C$let pluginTiddler={{!!title}}>\\n\\n\u003C\u003Clingo Shadow/Source>>\\n\u003C/$let>\u003C/$list>\u003C$list filter=[{!!title}is[shadow]is[tiddler]]>\\n\\n\u003C\u003Clingo OverriddenShadow/Hint>>\"},\"$:/core/ui/TiddlerInfo/Advanced\":{\"tags\":\"$:/tags/TiddlerInfo\",\"caption\":\"{{$:/language/TiddlerInfo/Advanced/Caption}}\",\"text\":\"\u003C$list filter=\\\"[[$:/tags/TiddlerInfo/Advanced]tagging[]!is[draft]]\\\"variable=listItem>\\n\\n\u003C$transclude tiddler=\u003C\u003ClistItem>>mode=block/>\\n\"},\"$:/core/ui/TiddlerInfo/Fields\":{\"tags\":\"$:/tags/TiddlerInfo\",\"caption\":\"{{$:/language/TiddlerInfo/Fields/Caption}}\",\"text\":\"{{||$:/core/ui/TiddlerFields}}\"},\"$:/core/ui/TiddlerInfo/List\":{\"tags\":\"$:/tags/TiddlerInfo\",\"caption\":\"{{$:/language/TiddlerInfo/List/Caption}}\",\"text\":\"\\\\define lingo-base()$:/language/TiddlerInfo/\\n\u003C$list emptyMessage=\u003C\u003Clingo List/Empty>>template=\\\"$:/core/ui/ListItemTemplate\\\"filter=[list{!!title}]/>\\n\"},\"$:/core/ui/TiddlerInfo/Listed\":{\"tags\":\"$:/tags/TiddlerInfo\",\"caption\":\"{{$:/language/TiddlerInfo/Listed/Caption}}\",\"text\":\"\\\\define lingo-base()$:/language/TiddlerInfo/\\n\u003C$list emptyMessage=\u003C\u003Clingo Listed/Empty>>template=\\\"$:/core/ui/ListItemTemplate\\\"filter=[{!!title}listed[]!is[system]]/>\\n\"},\"$:/core/ui/TiddlerInfo/References\":{\"tags\":\"$:/tags/TiddlerInfo\",\"caption\":\"{{$:/language/TiddlerInfo/References/Caption}}\",\"text\":\"\\\\define lingo-base()$:/language/TiddlerInfo/\\n\u003C$list emptyMessage=\u003C\u003Clingo References/Empty>>template=\\\"$:/core/ui/ListItemTemplate\\\"filter=[{!!title}backlinks[]sort[title]]>\\n\u003C/$list>\"},\"$:/core/ui/TiddlerInfo/Tagging\":{\"tags\":\"$:/tags/TiddlerInfo\",\"caption\":\"{{$:/language/TiddlerInfo/Tagging/Caption}}\",\"text\":\"\\\\define lingo-base()$:/language/TiddlerInfo/\\n\u003C$list emptyMessage=\u003C\u003Clingo Tagging/Empty>>template=\\\"$:/core/ui/ListItemTemplate\\\"filter=[{!!title}tagging[]]/>\\n\"},\"$:/core/ui/TiddlerInfo/Tools\":{\"tags\":\"$:/tags/TiddlerInfo\",\"caption\":\"{{$:/language/TiddlerInfo/Tools/Caption}}\",\"text\":\"\\\\define lingo-base()$:/language/TiddlerInfo/\\n\\\\define config-title()$:/config/ViewToolbarButtons/Visibility/$(listItem)$\\n\u003C$let tv-config-toolbar-icons=yes tv-config-toolbar-text=yes tv-config-toolbar-class=\\\"\\\">\\n\\n\u003C$list filter=\\\"[[$:/tags/ViewToolbar]tagging[]!is[draft]]\\\"variable=listItem>\\n\\n\u003C$checkbox tiddler=\u003C\u003Cconfig-title>>field=text checked=show unchecked=hide default=show/> \u003C$transclude tiddler=\u003C\u003ClistItem>>/> \u003Ci class=tc-muted>\u003C$transclude tiddler=\u003C\u003ClistItem>>field=description/>\"},\"$:/core/ui/TiddlerInfo\":{\"text\":\"\u003Cdiv style=position:relative;>\u003Cdiv class=tc-tiddler-controls style=position:absolute;right:0;>\u003C$reveal state=\\\"$:/config/TiddlerInfo/Mode\\\"type=match text=sticky>\u003C$button set=\u003C\u003CtiddlerInfoState>>setTo=\\\"\\\"tooltip={{$:/language/Buttons/Info/Hint}}aria-label={{$:/language/Buttons/Info/Caption}}class=tc-btn-invisible>{{$:/core/images/close-button}}\u003C/$button>\u003C/$reveal>\u003C/div>\u003C/div>\\n\\n\u003C$macrocall tabsList=\\\"[all[shadows+tiddlers]tag[$:/tags/TiddlerInfo]!has[draft.of]]\\\"default={{$:/config/TiddlerInfo/Default}}$name=tabs/>\\n\"},\"$:/core/ui/TopBar/menu\":{\"tags\":\"$:/tags/TopRightBar\",\"text\":\"\u003C$list filter=\\\"[[$:/state/sidebar]get[text]else[yes]!match[no]]\\\"variable=ignore>\u003C$button set=\\\"$:/state/sidebar\\\"tooltip={{$:/language/Buttons/HideSideBar/Hint}}aria-label={{$:/language/Buttons/HideSideBar/Caption}}class=\\\"tc-btn-invisible tc-hide-sidebar-btn\\\"setTo=no>{{$:/core/images/chevron-right}}\u003C/$button>\u003C/$list>\u003C$list filter=\\\"[[$:/state/sidebar]get[text]else[yes]match[no]]\\\"variable=ignore>\u003C$button set=\\\"$:/state/sidebar\\\"tooltip={{$:/language/Buttons/ShowSideBar/Hint}}aria-label={{$:/language/Buttons/ShowSideBar/Caption}}class=\\\"tc-btn-invisible tc-show-sidebar-btn\\\"setTo=yes>{{$:/core/images/chevron-left}}\"},\"$:/core/ui/UntaggedTemplate\":{\"text\":\"\\\\define lingo-base()$:/language/SideBar/\\n\u003C$button popup=\u003C\u003Cqualify [[$:/state/popup/tag]]>>class=\\\"tc-btn-invisible tc-untagged-label tc-tag-label\\\">\u003C\u003Clingo Tags/Untagged/Caption>>\u003C/$button>\u003C$reveal state=\u003C\u003Cqualify [[$:/state/popup/tag]]>>type=popup position=below>\u003Cdiv class=tc-drop-down>\u003C$list template=\\\"$:/core/ui/ListItemTemplate\\\"filter=[untagged[]!is[system]]-[tags[]]+[sort[title]]/>\"},\"$:/core/ui/ViewTemplate/body/blank\":{\"text\":\"\"},\"$:/core/ui/ViewTemplate/body/code\":{\"text\":\"\u003C$codeblock code={{{[{!!title}get[text]]}}}language={{{[{!!title}get[type]else[text/vnd.tiddlywiki]]}}}/>\\n\"},\"$:/core/ui/ViewTemplate/body/default\":{\"text\":\"\u003C$transclude>\\n\\n{{||$:/language/MissingTiddler/Hint}}\"},\"$:/core/ui/ViewTemplate/body/import\":{\"text\":\"\\\\define lingo-base()$:/language/Import/\\n\\\\define confirmCancel()\u003C$action-confirm $message={{$:/language/Import/Listing/Cancel/Warning}}>\u003C$action-deletetiddler $tiddler={{!!title}}/>\u003C$action-sendmessage title={{!!title}}$message=tm-close-tiddler/>\\n\\\\define buttons()\u003C$button actions=\u003C\u003CconfirmCancel>>>\u003C\u003Clingo Listing/Cancel/Caption>>\u003C/$button> \u003C$button param={{!!title}}message=tm-perform-import>\u003C\u003Clingo Listing/Import/Caption>>\u003C/$button> \u003C\u003Clingo Listing/Preview>> \u003C$select tiddler=\\\"$:/state/importpreviewtype\\\"default=\\\"$:/core/ui/ImportPreviews/Text\\\">\u003C$list filter=\\\"[[$:/tags/ImportPreview]tagging[]!is[draft]]\\\">\u003Coption value={{!!title}}>{{!!caption}}\\n\u003C$list filter=[{!!title}field:plugin-type[import]]>\\n\\n\u003Cdiv class=tc-import>\\n\\n\u003C\u003Clingo Listing/Hint>>\\n\\n\u003C\u003Cbuttons>>\\n\\n{{||$:/core/ui/ImportListing}}\\n\u003C\u003Cbuttons>>\"},\"$:/core/ui/ViewTemplate/body/plugin\":{\"text\":\"\u003Cdiv class=tc-tiddler-plugin-info>\u003C$let plugin-type={{!!plugin-type}}default-popup-state=yes qualified-state=\u003C\u003Cqualify\\\"$:/state/plugin-info\\\">>>{{||$:/core/ui/Components/plugin-info}}\"},\"$:/core/ui/ViewTemplate/body/rendered-plain-text\":{\"code-body\":\"yes\",\"text\":\"\u003C$wikify text={{!!text}}type={{!!type}}name=text>\u003C$codeblock code=\u003C\u003Ctext>>language=css/>\"},\"$:/core/ui/ViewTemplate/body\":{\"tags\":\"$:/tags/ViewTemplate\",\"text\":\"\\\\import [[$:/tags/Macro/View/Body]tagging[]!is[draft]]\\n\u003C$reveal tag=div class=tc-tiddler-body type=nomatch stateTitle=\u003C\u003Cfolded-state>>text=hide retain=yes animate=yes>\\n\\n\u003C$transclude tiddler={{{[{!!title}]:cascade[[$:/tags/ViewTemplateBodyFilter]tagging[]!is[draft]get[text]]:and[!is[blank]else[$:/core/ui/ViewTemplate/body/default]]}}}/>\\n\"},\"$:/core/ui/ViewTemplate/classic\":{\"tags\":\"$:/tags/ViewTemplate $:/tags/EditTemplate\",\"text\":\"\\\\define lingo-base()$:/language/ClassicWarning/\\n\u003C$list filter=\\\"[{!!title}type[text/x-tiddlywiki]]\\\">\u003Cdiv class=tc-message-box>\\n\\n\u003C\u003Clingo Hint>>\\n\\n\u003C$button setTo=\\\"text/vnd.tiddlywiki\\\"set=!!type>\u003C\u003Clingo Upgrade/Caption>>\"},\"$:/core/ui/ViewTemplate/subtitle/modified\":{\"tags\":\"$:/tags/ViewTemplate/Subtitle\",\"text\":\"\u003C$view field=modified template={{$:/language/Tiddler/DateFormat}}format=date/>\"},\"$:/core/ui/ViewTemplate/subtitle/modifier\":{\"tags\":\"$:/tags/ViewTemplate/Subtitle\",\"text\":\"\u003C$link to={{!!modifier}}/>\"},\"$:/core/ui/ViewTemplate/subtitle\":{\"tags\":\"$:/tags/ViewTemplate\",\"text\":\"\u003C$reveal type=nomatch stateTitle=\u003C\u003Cfolded-state>>text=hide tag=div retain=yes animate=yes>\u003Cdiv class=tc-subtitle>\u003C$list filter=\\\"[[$:/tags/ViewTemplate/Subtitle]tagging[]!is[draft]]\\\"variable=subtitleTiddler counter=indexSubtitleTiddler>\u003C$list filter=\\\"[\u003CindexSubtitleTiddler-first>match[no]]\\\"variable=ignore>&nbsp;\u003C/$list>\u003C$transclude tiddler=\u003C\u003CsubtitleTiddler>>mode=inline/>\"},\"$:/core/ui/ViewTemplate/tags\":{\"tags\":\"$:/tags/ViewTemplate\",\"text\":\"\u003C$reveal type=nomatch stateTitle=\u003C\u003Cfolded-state>>text=hide tag=div retain=yes animate=yes>\u003Cdiv class=tc-tags-wrapper>\u003C$list filter=[{!!title}tags[]sort[title]] template=\\\"$:/core/ui/TagTemplate\\\"storyview=pop/>\"},\"$:/core/ui/ViewTemplate/title/default\":{\"text\":\"\u003Ch2 class=tc-title>\u003C$view field=title/>\"},\"$:/core/ui/ViewTemplate/title/system\":{\"text\":\"\u003Ch2 title={{$:/language/SystemTiddler/Tooltip}}class=tc-title>\u003Cspan class=tc-system-title-prefix>$:/\u003C/span>\u003C$text text={{{[{!!title}removeprefix[$:/]]}}}/>\"},\"$:/core/ui/ViewTemplate/title\":{\"tags\":\"$:/tags/ViewTemplate\",\"text\":\"\\\\define title-styles()fill:$(foregroundColor)$;\\n\u003Cdiv class=tc-tiddler-title>\u003Cdiv class=tc-titlebar>\u003Cspan class=tc-tiddler-controls>\u003C$list filter=\\\"[[$:/tags/ViewToolbar]tagging[]!is[draft]]:filter[lookup[$:/config/ViewToolbarButtons/Visibility/]!match[hide]]\\\"storyview=pop variable=listItem>\u003C$set filter=\\\"[\u003Ctv-config-toolbar-class>][\u003ClistItem>encodeuricomponent[]addprefix[tc-btn-]]\\\"name=tv-config-toolbar-class>\u003C$transclude tiddler=\u003C\u003ClistItem>>/>\u003C/$set>\u003C/$list>\u003C/span>\u003C$let tv-wikilinks={{$:/config/Tiddlers/TitleLinks}}>\u003C$link>\u003C$list filter=\\\"[{!!title}]:cascade[[$:/tags/TiddlerIconFilter]tagging[]!is[draft]get[text]]+[!is[blank]]\\\"variable=ignore>\u003C$let foregroundColor={{{[{!!title}]:cascade[[$:/tags/TiddlerColourFilter]tagging[]!is[draft]get[text]]}}}>\u003Cspan style=\u003C\u003Ctitle-styles>>class=tc-tiddler-title-icon>{{||$:/core/ui/TiddlerIcon}}\u003C/span>\u003C/$let>\u003C/$list>\u003C$transclude tiddler={{{[{!!title}]:cascade[[$:/tags/ViewTemplateTitleFilter]tagging[]!is[draft]get[text]]:and[!is[blank]else[$:/core/ui/ViewTemplate/title/default]]}}}/>\u003C/$link>\u003C/$let>\u003C/div>\u003C$reveal type=nomatch text=\\\"\\\"default=\\\"\\\"state=\u003C\u003CtiddlerInfoState>>class=\\\"tc-tiddler-info tc-popup-handle\\\"animate=yes retain=yes>\\n\\n\u003C$list filter=\\\"[[$:/tags/TiddlerInfoSegment]tagging[]!is[draft]]$:/core/ui/TiddlerInfo\\\"variable=listItem>\u003C$transclude tiddler=\u003C\u003ClistItem>>mode=block/>\"},\"$:/core/ui/ViewTemplate/unfold\":{\"tags\":\"$:/tags/ViewTemplate\",\"text\":\"\u003Cdiv class=tc-reveal>\u003C$list filter=\\\"[{$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-bar}match[show]]\\\"variable=ignore>\u003C$reveal tag=div type=nomatch stateTitle=\u003C\u003Cfolded-state>>text=hide default=show retain=yes animate=yes>\u003C$button tooltip={{$:/language/Buttons/Fold/Hint}}aria-label={{$:/language/Buttons/Fold/Caption}}class=tc-fold-banner>\u003C$action-sendmessage $param={{!!title}}foldedState=\u003C\u003Cfolded-state>>$message=tm-fold-tiddler/>{{$:/core/images/chevron-up}}\u003C/$button>\u003C/$reveal>\u003C/$list>\u003C$list filter=\\\"[{$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-bar}match[show]]:else[\u003Cfolded-state>get[text]match[hide]]\\\"variable=ignore>\u003C$reveal tag=div type=nomatch stateTitle=\u003C\u003Cfolded-state>>text=show default=show retain=yes animate=yes>\u003C$button tooltip={{$:/language/Buttons/Unfold/Hint}}aria-label={{$:/language/Buttons/Unfold/Caption}}class=tc-unfold-banner>\u003C$action-sendmessage $param={{!!title}}foldedState=\u003C\u003Cfolded-state>>$message=tm-fold-tiddler/>{{$:/core/images/chevron-down}}\"},\"$:/core/ui/ViewTemplate\":{\"text\":\"\\\\define folded-state()$:/state/folded/$(currentTiddler)$\\n\\\\define cancel-delete-tiddler-actions(message)\u003C$action-sendmessage $message=\\\"tm-$message$-tiddler\\\"/>\\n\\\\import [[$:/tags/Macro/View]tagging[]!is[draft]]\\n\u003C$vars storyTiddler={{!!title}}tiddlerInfoState=\u003C\u003Cqualify [[$:/state/popup/tiddler-info]]>>>\u003Cdiv data-tiddler-title={{!!title}}data-tags={{!!tags}}class={{{[[$:/tags/ClassFilters/TiddlerTemplate]tagging[]!is[draft]]:map:flat[subfilter{!!text}]tc-tiddler-frame tc-tiddler-view-frame[{!!title}is[tiddler]then[tc-tiddler-exists]][{!!title}is[missing]!is[shadow]then[tc-tiddler-missing]][{!!title}is[shadow]then[tc-tiddler-exists tc-tiddler-shadow]][{!!title}is[shadow]is[tiddler]then[tc-tiddler-overridden-shadow]][{!!title}is[system]then[tc-tiddler-system]][{!!class}][{!!title}tags[]encodeuricomponent[]addprefix[tc-tagged-]]+[join[ ]]}}}role=article>\u003C$list filter=\\\"[[$:/tags/ViewTemplate]tagging[]!is[draft]]\\\"variable=listItem>\u003C$transclude tiddler=\u003C\u003ClistItem>>/>\"},\"$:/core/ui/Buttons/clone\":{\"tags\":\"$:/tags/ViewToolbar\",\"caption\":\"{{$:/core/images/clone-button}} {{$:/language/Buttons/Clone/Caption}}\",\"description\":\"{{$:/language/Buttons/Clone/Hint}}\",\"text\":\"\u003C$button param={{!!title}}tooltip={{$:/language/Buttons/Clone/Hint}}aria-label={{$:/language/Buttons/Clone/Caption}}class=\u003C\u003Ctv-config-toolbar-class>>message=tm-new-tiddler>\u003C$list filter=\\\"[\u003Ctv-config-toolbar-icons>match[yes]]\\\">{{$:/core/images/clone-button}}\u003C/$list>\u003C$list filter=\\\"[\u003Ctv-config-toolbar-text>match[yes]]\\\">\u003Cspan class=tc-btn-text>\u003C$text text={{$:/language/Buttons/Clone/Caption}}/>\"},\"$:/core/ui/Buttons/close-others\":{\"tags\":\"$:/tags/ViewToolbar\",\"caption\":\"{{$:/core/images/close-others-button}} {{$:/language/Buttons/CloseOthers/Caption}}\",\"description\":\"{{$:/language/Buttons/CloseOthers/Hint}}\",\"text\":\"\u003C$button param={{!!title}}tooltip={{$:/language/Buttons/CloseOthers/Hint}}aria-label={{$:/language/Buttons/CloseOthers/Caption}}class=\u003C\u003Ctv-config-toolbar-class>>message=tm-close-other-tiddlers>\u003C$list filter=\\\"[\u003Ctv-config-toolbar-icons>match[yes]]\\\">{{$:/core/images/close-others-button}}\u003C/$list>\u003C$list filter=\\\"[\u003Ctv-config-toolbar-text>match[yes]]\\\">\u003Cspan class=tc-btn-text>\u003C$text text={{$:/language/Buttons/CloseOthers/Caption}}/>\"},\"$:/core/ui/Buttons/close\":{\"tags\":\"$:/tags/ViewToolbar\",\"caption\":\"{{$:/core/images/close-button}} {{$:/language/Buttons/Close/Caption}}\",\"description\":\"{{$:/language/Buttons/Close/Hint}}\",\"text\":\"\u003C$button tooltip={{$:/language/Buttons/Close/Hint}}aria-label={{$:/language/Buttons/Close/Caption}}class=\u003C\u003Ctv-config-toolbar-class>>message=tm-close-tiddler>\u003C$list filter=\\\"[\u003Ctv-config-toolbar-icons>match[yes]]\\\">{{$:/core/images/close-button}}\u003C/$list>\u003C$list filter=\\\"[\u003Ctv-config-toolbar-text>match[yes]]\\\">\u003Cspan class=tc-btn-text>\u003C$text text={{$:/language/Buttons/Close/Caption}}/>\"},\"$:/core/ui/Buttons/edit\":{\"tags\":\"$:/tags/ViewToolbar\",\"caption\":\"{{$:/core/images/edit-button}} {{$:/language/Buttons/Edit/Caption}}\",\"description\":\"{{$:/language/Buttons/Edit/Hint}}\",\"text\":\"\u003C$button tooltip={{$:/language/Buttons/Edit/Hint}}aria-label={{$:/language/Buttons/Edit/Caption}}class=\u003C\u003Ctv-config-toolbar-class>>message=tm-edit-tiddler>\u003C$list filter=\\\"[\u003Ctv-config-toolbar-icons>match[yes]]\\\">{{$:/core/images/edit-button}}\u003C/$list>\u003C$list filter=\\\"[\u003Ctv-config-toolbar-text>match[yes]]\\\">\u003Cspan class=tc-btn-text>\u003C$text text={{$:/language/Buttons/Edit/Caption}}/>\"},\"$:/core/ui/Buttons/export-tiddler\":{\"tags\":\"$:/tags/ViewToolbar\",\"caption\":\"{{$:/core/images/export-button}} {{$:/language/Buttons/ExportTiddler/Caption}}\",\"description\":\"{{$:/language/Buttons/ExportTiddler/Hint}}\",\"text\":\"\\\\define makeExportFilter()[[$(currentTiddler)$]]\\n\u003C$macrocall exportFilter=\u003C\u003CmakeExportFilter>>lingoBase=\\\"$:/language/Buttons/ExportTiddler/\\\"baseFilename={{!!title}}$name=exportButton/>\"},\"$:/core/ui/Buttons/fold-bar\":{\"tags\":\"$:/tags/ViewToolbar\",\"caption\":\"{{$:/core/images/chevron-up}} {{$:/language/Buttons/Fold/FoldBar/Caption}}\",\"description\":\"{{$:/language/Buttons/Fold/FoldBar/Hint}}\",\"text\":\"\"},\"$:/core/ui/Buttons/fold-others\":{\"tags\":\"$:/tags/ViewToolbar\",\"caption\":\"{{$:/core/images/fold-others-button}} {{$:/language/Buttons/FoldOthers/Caption}}\",\"description\":\"{{$:/language/Buttons/FoldOthers/Hint}}\",\"text\":\"\u003C$button tooltip={{$:/language/Buttons/FoldOthers/Hint}}aria-label={{$:/language/Buttons/FoldOthers/Caption}}class=\u003C\u003Ctv-config-toolbar-class>>>\u003C$action-sendmessage $param={{!!title}}foldedStatePrefix=\\\"$:/state/folded/\\\"$message=tm-fold-other-tiddlers/>\u003C$list filter=\\\"[\u003Ctv-config-toolbar-icons>match[yes]]\\\"variable=listItem>{{$:/core/images/fold-others-button}}\u003C/$list>\u003C$list filter=\\\"[\u003Ctv-config-toolbar-text>match[yes]]\\\">\u003Cspan class=tc-btn-text>\u003C$text text={{$:/language/Buttons/FoldOthers/Caption}}/>\"},\"$:/core/ui/Buttons/fold\":{\"tags\":\"$:/tags/ViewToolbar\",\"caption\":\"{{$:/core/images/fold-button}} {{$:/language/Buttons/Fold/Caption}}\",\"description\":\"{{$:/language/Buttons/Fold/Hint}}\",\"text\":\"\u003C$reveal type=nomatch stateTitle=\u003C\u003Cfolded-state>>text=hide default=show>\u003C$button tooltip={{$:/language/Buttons/Fold/Hint}}aria-label={{$:/language/Buttons/Fold/Caption}}class=\u003C\u003Ctv-config-toolbar-class>>>\u003C$action-sendmessage $param={{!!title}}foldedState=\u003C\u003Cfolded-state>>$message=tm-fold-tiddler/>\u003C$list filter=\\\"[\u003Ctv-config-toolbar-icons>match[yes]]\\\"variable=listItem>{{$:/core/images/fold-button}}\u003C/$list>\u003C$list filter=\\\"[\u003Ctv-config-toolbar-text>match[yes]]\\\">\u003Cspan class=tc-btn-text>\u003C$text text={{$:/language/Buttons/Fold/Caption}}/>\u003C/span>\u003C/$list>\u003C/$button>\u003C/$reveal>\u003C$reveal type=match stateTitle=\u003C\u003Cfolded-state>>text=hide default=show>\u003C$button tooltip={{$:/language/Buttons/Unfold/Hint}}aria-label={{$:/language/Buttons/Unfold/Caption}}class=\u003C\u003Ctv-config-toolbar-class>>>\u003C$action-sendmessage $param={{!!title}}foldedState=\u003C\u003Cfolded-state>>$message=tm-fold-tiddler/>\u003C$list filter=\\\"[\u003Ctv-config-toolbar-icons>match[yes]]\\\"variable=listItem>{{$:/core/images/unfold-button}}\u003C/$list>\u003C$list filter=\\\"[\u003Ctv-config-toolbar-text>match[yes]]\\\">\u003Cspan class=tc-btn-text>\u003C$text text={{$:/language/Buttons/Unfold/Caption}}/>\"},\"$:/core/ui/Buttons/info\":{\"tags\":\"$:/tags/ViewToolbar\",\"caption\":\"{{$:/core/images/info-button}} {{$:/language/Buttons/Info/Caption}}\",\"description\":\"{{$:/language/Buttons/Info/Hint}}\",\"text\":\"\\\\define button-content()\u003C$list filter=\\\"[\u003Ctv-config-toolbar-icons>match[yes]]\\\">{{$:/core/images/info-button}}\u003C/$list>\u003C$list filter=\\\"[\u003Ctv-config-toolbar-text>match[yes]]\\\">\u003Cspan class=tc-btn-text>\u003C$text text={{$:/language/Buttons/Info/Caption}}/>\\n\u003C$reveal state=\\\"$:/config/TiddlerInfo/Mode\\\"type=match text=popup>\u003C$button popup=\u003C\u003CtiddlerInfoState>>tooltip={{$:/language/Buttons/Info/Hint}}aria-label={{$:/language/Buttons/Info/Caption}}class=\u003C\u003Ctv-config-toolbar-class>>selectedClass=tc-selected>\u003C$macrocall $name=button-content mode=inline/>\u003C/$button>\u003C/$reveal>\u003C$reveal state=\\\"$:/config/TiddlerInfo/Mode\\\"type=match text=sticky>\u003C$reveal state=\u003C\u003CtiddlerInfoState>>text=\\\"\\\"default=\\\"\\\"type=match>\u003C$button set=\u003C\u003CtiddlerInfoState>>setTo=yes tooltip={{$:/language/Buttons/Info/Hint}}aria-label={{$:/language/Buttons/Info/Caption}}class=\u003C\u003Ctv-config-toolbar-class>>selectedClass=tc-selected>\u003C$macrocall $name=button-content mode=inline/>\u003C/$button>\u003C/$reveal>\u003C$reveal state=\u003C\u003CtiddlerInfoState>>text=\\\"\\\"default=\\\"\\\"type=nomatch>\u003C$button set=\u003C\u003CtiddlerInfoState>>setTo=\\\"\\\"tooltip={{$:/language/Buttons/Info/Hint}}aria-label={{$:/language/Buttons/Info/Caption}}class=\u003C\u003Ctv-config-toolbar-class>>selectedClass=tc-selected>\u003C$macrocall $name=button-content mode=inline/>\"},\"$:/core/ui/Buttons/more-tiddler-actions\":{\"tags\":\"$:/tags/ViewToolbar\",\"caption\":\"{{$:/core/images/down-arrow}} {{$:/language/Buttons/More/Caption}}\",\"description\":\"{{$:/language/Buttons/More/Hint}}\",\"text\":\"\\\\define config-title()$:/config/ViewToolbarButtons/Visibility/$(listItem)$\\n\u003C$button popup=\u003C\u003Cqualify [[$:/state/popup/more]]>>tooltip={{$:/language/Buttons/More/Hint}}aria-label={{$:/language/Buttons/More/Caption}}class=\u003C\u003Ctv-config-toolbar-class>>selectedClass=tc-selected>\u003C$list filter=\\\"[\u003Ctv-config-toolbar-icons>match[yes]]\\\">{{$:/core/images/down-arrow}}\u003C/$list>\u003C$list filter=\\\"[\u003Ctv-config-toolbar-text>match[yes]]\\\">\u003Cspan class=tc-btn-text>\u003C$text text={{$:/language/Buttons/More/Caption}}/>\u003C/span>\u003C/$list>\u003C/$button>\u003C$reveal state=\u003C\u003Cqualify [[$:/state/popup/more]]>>type=popup position=belowleft animate=yes>\\n\\n\u003Cdiv class=tc-drop-down>\\n\\n\u003C$let tv-config-toolbar-icons=yes tv-config-toolbar-text=yes tv-config-toolbar-class=tc-btn-invisible>\\n\\n\u003C$list filter=\\\"[[$:/tags/ViewToolbar]tagging[]!is[draft]]-$:/core/ui/Buttons/more-tiddler-actions\\\"variable=listItem>\\n\\n\u003C$reveal type=match state=\u003C\u003Cconfig-title>>text=hide>\\n\\n\u003C$set filter=\\\"[\u003Ctv-config-toolbar-class>][\u003ClistItem>encodeuricomponent[]addprefix[tc-btn-]]\\\"name=tv-config-toolbar-class>\\n\\n\u003C$transclude tiddler=\u003C\u003ClistItem>>mode=inline/>\\n\"},\"$:/core/ui/Buttons/new-here\":{\"tags\":\"$:/tags/ViewToolbar\",\"caption\":\"{{$:/core/images/new-here-button}} {{$:/language/Buttons/NewHere/Caption}}\",\"description\":\"{{$:/language/Buttons/NewHere/Hint}}\",\"text\":\"\\\\define newHereActions()\u003C$set filter=\\\"[{!!title}][{$:/config/NewTiddler/Tags}]\\\"name=tags>\u003C$action-sendmessage tags=\u003C\u003Ctags>>$message=tm-new-tiddler/>\\n\\\\define newHereButton()\u003C$button actions=\u003C\u003CnewHereActions>>tooltip={{$:/language/Buttons/NewHere/Hint}}aria-label={{$:/language/Buttons/NewHere/Caption}}class=\u003C\u003Ctv-config-toolbar-class>>>\u003C$list filter=\\\"[\u003Ctv-config-toolbar-icons>match[yes]]\\\">{{$:/core/images/new-here-button}}\u003C/$list>\u003C$list filter=\\\"[\u003Ctv-config-toolbar-text>match[yes]]\\\">\u003Cspan class=tc-btn-text>\u003C$text text={{$:/language/Buttons/NewHere/Caption}}/>\\n\u003C\u003CnewHereButton>>\"},\"$:/core/ui/Buttons/new-journal-here\":{\"tags\":\"$:/tags/ViewToolbar\",\"caption\":\"{{$:/core/images/new-journal-button}} {{$:/language/Buttons/NewJournalHere/Caption}}\",\"description\":\"{{$:/language/Buttons/NewJournalHere/Hint}}\",\"text\":\"\\\\define journalButtonTags()[[$(currentTiddlerTag)$]] $(journalTags)$\\n\\\\define journalButton()\u003C$button tooltip={{$:/language/Buttons/NewJournalHere/Hint}}aria-label={{$:/language/Buttons/NewJournalHere/Caption}}class=\u003C\u003Ctv-config-toolbar-class>>>\u003C$wikify text=\\\"\u003C$macrocall format=\u003C\u003CjournalTitleTemplate>>$name=now/>\\\"name=journalTitle>\u003C$action-sendmessage title=\u003C\u003CjournalTitle>>tags=\u003C\u003CjournalButtonTags>>$message=tm-new-tiddler/>\u003C$list filter=\\\"[\u003Ctv-config-toolbar-icons>match[yes]]\\\">{{$:/core/images/new-journal-button}}\u003C/$list>\u003C$list filter=\\\"[\u003Ctv-config-toolbar-text>match[yes]]\\\">\u003Cspan class=tc-btn-text>\u003C$text text={{$:/language/Buttons/NewJournalHere/Caption}}/>\\n\u003C$let journalTitleTemplate={{$:/config/NewJournal/Title}}journalTags={{$:/config/NewJournal/Tags}}currentTiddlerTag={{!!title}}>\u003C\u003CjournalButton>>\"},\"$:/core/ui/Buttons/open-window\":{\"tags\":\"$:/tags/ViewToolbar\",\"caption\":\"{{$:/core/images/open-window}} {{$:/language/Buttons/OpenWindow/Caption}}\",\"description\":\"{{$:/language/Buttons/OpenWindow/Hint}}\",\"text\":\"\u003C$button tooltip={{$:/language/Buttons/OpenWindow/Hint}}aria-label={{$:/language/Buttons/OpenWindow/Caption}}class=\u003C\u003Ctv-config-toolbar-class>>message=tm-open-window>\u003C$list filter=\\\"[\u003Ctv-config-toolbar-icons>match[yes]]\\\">{{$:/core/images/open-window}}\u003C/$list>\u003C$list filter=\\\"[\u003Ctv-config-toolbar-text>match[yes]]\\\">\u003Cspan class=tc-btn-text>\u003C$text text={{$:/language/Buttons/OpenWindow/Caption}}/>\"},\"$:/core/ui/Buttons/permalink\":{\"tags\":\"$:/tags/ViewToolbar\",\"caption\":\"{{$:/core/images/permalink-button}} {{$:/language/Buttons/Permalink/Caption}}\",\"description\":\"{{$:/language/Buttons/Permalink/Hint}}\",\"text\":\"\u003C$button tooltip={{$:/language/Buttons/Permalink/Hint}}aria-label={{$:/language/Buttons/Permalink/Caption}}class=\u003C\u003Ctv-config-toolbar-class>>message=tm-permalink>\u003C$list filter=\\\"[\u003Ctv-config-toolbar-icons>match[yes]]\\\">{{$:/core/images/permalink-button}}\u003C/$list>\u003C$list filter=\\\"[\u003Ctv-config-toolbar-text>match[yes]]\\\">\u003Cspan class=tc-btn-text>\u003C$text text={{$:/language/Buttons/Permalink/Caption}}/>\"},\"$:/core/ui/Buttons/permaview\":{\"tags\":\"$:/tags/ViewToolbar $:/tags/PageControls\",\"caption\":\"{{$:/core/images/permaview-button}} {{$:/language/Buttons/Permaview/Caption}}\",\"description\":\"{{$:/language/Buttons/Permaview/Hint}}\",\"text\":\"\u003C$button tooltip={{$:/language/Buttons/Permaview/Hint}}aria-label={{$:/language/Buttons/Permaview/Caption}}class=\u003C\u003Ctv-config-toolbar-class>>message=tm-permaview>\u003C$list filter=\\\"[\u003Ctv-config-toolbar-icons>match[yes]]\\\">{{$:/core/images/permaview-button}}\u003C/$list>\u003C$list filter=\\\"[\u003Ctv-config-toolbar-text>match[yes]]\\\">\u003Cspan class=tc-btn-text>\u003C$text text={{$:/language/Buttons/Permaview/Caption}}/>\"},\"$:/DefaultTiddlers\":{\"text\":\"GettingStarted\\n\"},\"$:/temp/advancedsearch\":{\"text\":\"\"},\"$:/snippets/allfields\":{\"text\":\"\\\\define renderfield(title)\u003Ctr class=tc-view-field>\u003Ctd class=tc-view-field-name>''\u003C$text text=\u003C\u003C__title__>>/>'':\u003C/td>\u003Ctd class=tc-view-field-value>//{{$:/language/Docs/Fields/$title$}}\\n\u003Ctable class=tc-view-field-table>\u003Ctbody>\u003C$list filter=[fields[]sort[title]] variable=listItem>\u003C$macrocall title=\u003C\u003ClistItem>>$name=renderfield/>\"},\"$:/config/AnimationDuration\":{\"text\":\"400\"},\"$:/config/AutoFocus\":{\"text\":\"title\"},\"$:/config/AutoSave\":{\"text\":\"yes\"},\"$:/config/BitmapEditor/Colour\":{\"text\":\"#444\"},\"$:/config/BitmapEditor/ImageSizes\":{\"text\":\"[[62px 100px]] [[100px 62px]] [[124px 200px]] [[200px 124px]] [[248px 400px]] [[371px 600px]] [[400px 248px]] [[556px 900px]] [[600px 371px]] [[742px 1200px]] [[900px 556px]] [[1200px 742px]]\"},\"$:/config/BitmapEditor/LineWidth\":{\"text\":\"3px\"},\"$:/config/BitmapEditor/LineWidths\":{\"text\":\"0.25px 0.5px 1px 2px 3px 4px 6px 8px 10px 16px 20px 28px 40px 56px 80px\"},\"$:/config/BitmapEditor/Opacities\":{\"text\":\"0.01 0.025 0.05 0.075 0.1 0.15 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0\"},\"$:/config/BitmapEditor/Opacity\":{\"text\":\"1.0\"},\"$:/config/DefaultMoreSidebarTab\":{\"text\":\"$:/core/ui/MoreSideBar/Tags\"},\"$:/config/DefaultSidebarTab\":{\"text\":\"$:/core/ui/SideBar/Open\"},\"$:/config/ControlPanel/Basics/DefaultTiddlers/RetainStory\":{\"text\":\"[list[$:/StoryList]]\"},\"$:/config/DownloadSaver/AutoSave\":{\"text\":\"no\"},\"$:/config/Drafts/TypingTimeout\":{\"text\":\"400\"},\"$:/config/EditMode/fieldname-filter\":{\"first-search-filter\":\"[!is[shadow]!is[system]fields[]search:title\u003CuserInput>sort[]] -created -creator -draft.of -draft.title -modified -modifier -tags -text -title -type\",\"second-search-filter\":\"[fields[]search:title\u003CuserInput>sort[]] -[!is[shadow]!is[system]fields[]]\"},\"$:/config/EditTabIndex\":{\"text\":\"1\"},\"$:/config/EditTemplateBodyFilters/canonical-uri\":{\"tags\":\"$:/tags/EditTemplateBodyFilter\",\"text\":\"[has[_canonical_uri]then[$:/core/ui/EditTemplate/body/canonical-uri]]\"},\"$:/config/EditTemplateBodyFilters/default\":{\"tags\":\"$:/tags/EditTemplateBodyFilter\",\"text\":\"[[$:/core/ui/EditTemplate/body/default]]\"},\"$:/config/EditTemplateFields/Visibility/title\":{\"text\":\"hide\"},\"$:/config/EditTemplateFields/Visibility/tags\":{\"text\":\"hide\"},\"$:/config/EditTemplateFields/Visibility/text\":{\"text\":\"hide\"},\"$:/config/EditTemplateFields/Visibility/creator\":{\"text\":\"hide\"},\"$:/config/EditTemplateFields/Visibility/created\":{\"text\":\"hide\"},\"$:/config/EditTemplateFields/Visibility/modified\":{\"text\":\"hide\"},\"$:/config/EditTemplateFields/Visibility/modifier\":{\"text\":\"hide\"},\"$:/config/EditTemplateFields/Visibility/type\":{\"text\":\"hide\"},\"$:/config/EditTemplateFields/Visibility/draft.title\":{\"text\":\"hide\"},\"$:/config/EditTemplateFields/Visibility/draft.of\":{\"text\":\"hide\"},\"$:/config/EditTemplateFields/Visibility/revision\":{\"text\":\"hide\"},\"$:/config/EditTemplateFields/Visibility/bag\":{\"text\":\"hide\"},\"$:/config/Editor/EnableImportFilter\":{\"type\":\"text/vnd.tiddlywiki\",\"text\":\"[all[current]type[text/vnd.tiddlywiki]] [all[current]!has[type]]\"},\"$:/config/Editor/ImportContentTypesFilter\":{\"type\":\"text/vnd.tiddlywiki\",\"text\":\"[prefix[image/]]\"},\"$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-4\":{\"text\":\"hide\"},\"$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-5\":{\"text\":\"hide\"},\"$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-6\":{\"text\":\"hide\"},\"$:/config/EditorTypeMappings/image/gif\":{\"text\":\"bitmap\"},\"$:/config/EditorTypeMappings/image/webp\":{\"text\":\"bitmap\"},\"$:/config/EditorTypeMappings/image/heic\":{\"text\":\"bitmap\"},\"$:/config/EditorTypeMappings/image/heif\":{\"text\":\"bitmap\"},\"$:/config/EditorTypeMappings/image/jpeg\":{\"text\":\"bitmap\"},\"$:/config/EditorTypeMappings/image/jpg\":{\"text\":\"bitmap\"},\"$:/config/EditorTypeMappings/image/png\":{\"text\":\"bitmap\"},\"$:/config/EditorTypeMappings/image/x-icon\":{\"text\":\"bitmap\"},\"$:/config/EditorTypeMappings/text/vnd.tiddlywiki\":{\"text\":\"text\"},\"$:/config/FieldEditorFilters/default\":{\"tags\":\"$:/tags/FieldEditorFilter\",\"text\":\"[[$:/core/ui/EditTemplate/fieldEditor/default]]\"},\"$:/config/Manager/Show\":{\"text\":\"tiddlers\"},\"$:/config/Manager/Filter\":{\"text\":\"\"},\"$:/config/Manager/Order\":{\"text\":\"forward\"},\"$:/config/Manager/Sort\":{\"text\":\"title\"},\"$:/config/Manager/System\":{\"text\":\"system\"},\"$:/config/Manager/Tag\":{\"text\":\"\"},\"$:/state/popup/manager/item/$:/Manager/ItemMain/RawText\":{\"text\":\"hide\"},\"$:/config/MissingLinks\":{\"text\":\"yes\"},\"$:/config/Navigation/UpdateAddressBar\":{\"text\":\"no\"},\"$:/config/Navigation/UpdateHistory\":{\"text\":\"no\"},\"$:/config/NewImageType\":{\"text\":\"jpeg\"},\"$:/config/OfficialPluginLibrary\":{\"tags\":\"$:/tags/PluginLibrary\",\"url\":\"https://tiddlywiki.com/library/v5.2.5/index.html\",\"caption\":\"{{$:/language/OfficialPluginLibrary}}\",\"text\":\"{{$:/language/OfficialPluginLibrary/Hint}}\"},\"$:/config/Navigation/openLinkFromInsideRiver\":{\"text\":\"below\"},\"$:/config/Navigation/openLinkFromOutsideRiver\":{\"text\":\"top\"},\"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/advanced-search\":{\"text\":\"hide\"},\"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/close-all\":{\"text\":\"hide\"},\"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/encryption\":{\"text\":\"hide\"},\"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/export-page\":{\"text\":\"hide\"},\"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/fold-all\":{\"text\":\"hide\"},\"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/full-screen\":{\"text\":\"hide\"},\"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/home\":{\"text\":\"hide\"},\"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/refresh\":{\"text\":\"hide\"},\"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/import\":{\"text\":\"hide\"},\"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/language\":{\"text\":\"hide\"},\"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/tag-manager\":{\"text\":\"hide\"},\"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/manager\":{\"text\":\"hide\"},\"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/more-page-actions\":{\"text\":\"hide\"},\"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/new-journal\":{\"text\":\"hide\"},\"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/new-image\":{\"text\":\"hide\"},\"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/palette\":{\"text\":\"hide\"},\"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/permaview\":{\"text\":\"hide\"},\"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/print\":{\"text\":\"hide\"},\"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/storyview\":{\"text\":\"hide\"},\"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/timestamp\":{\"text\":\"hide\"},\"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/theme\":{\"text\":\"hide\"},\"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/layout\":{\"text\":\"hide\"},\"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/unfold-all\":{\"text\":\"hide\"},\"$:/config/Performance/Instrumentation\":{\"text\":\"no\"},\"$:/config/RegisterPluginType/plugin\":{\"text\":\"yes\"},\"$:/config/RegisterPluginType/theme\":{\"text\":\"no\"},\"$:/config/RegisterPluginType/language\":{\"text\":\"no\"},\"$:/config/RegisterPluginType/info\":{\"text\":\"yes\"},\"$:/config/RegisterPluginType/import\":{\"text\":\"no\"},\"$:/config/SaveWikiButton/Template\":{\"text\":\"$:/core/save/all\"},\"$:/config/SaverFilter\":{\"text\":\"[all[]] -[prefix[$:/HistoryList]] -[prefix[$:/StoryList]] -[status[pending]plugin-type[import]] -[[$:/isEncrypted]] -[[$:/UploadName]] -[prefix[$:/state/]] -[prefix[$:/temp/]]\\n\"},\"$:/config/Search/AutoFocus\":{\"text\":\"true\"},\"$:/config/Search/MinLength\":{\"text\":\"3\"},\"$:/config/SearchResults/Default\":{\"text\":\"$:/core/ui/DefaultSearchResultList\"},\"$:/config/Server/ExternalFilters/[all[tiddlers]!is[system]sort[title]]\":{\"text\":\"yes\"},\"$:/config/ShortcutInfo/add-field\":{\"text\":\"{{$:/language/EditTemplate/Fields/Add/Button/Hint}}\"},\"$:/config/ShortcutInfo/advanced-search\":{\"text\":\"{{$:/language/Buttons/AdvancedSearch/Hint}}\"},\"$:/config/ShortcutInfo/advanced-search-sidebar\":{\"text\":\"{{$:/language/Shortcuts/Input/AdvancedSearch/Hint}}\"},\"$:/config/ShortcutInfo/bold\":{\"text\":\"{{$:/language/Buttons/Bold/Hint}}\"},\"$:/config/ShortcutInfo/cancel-edit-tiddler\":{\"text\":\"{{$:/language/Buttons/Cancel/Hint}}\"},\"$:/config/ShortcutInfo/change-sidebar-layout\":{\"text\":\"{{$:/language/Shortcuts/SidebarLayout/Hint}}\"},\"$:/config/ShortcutInfo/delete-field\":{\"text\":\"{{$:/language/EditTemplate/Field/Remove/Hint}}\"},\"$:/config/ShortcutInfo/excise\":{\"text\":\"{{$:/language/Buttons/Excise/Hint}}\"},\"$:/config/ShortcutInfo/heading-1\":{\"text\":\"{{$:/language/Buttons/Heading1/Hint}}\"},\"$:/config/ShortcutInfo/heading-2\":{\"text\":\"{{$:/language/Buttons/Heading2/Hint}}\"},\"$:/config/ShortcutInfo/heading-3\":{\"text\":\"{{$:/language/Buttons/Heading3/Hint}}\"},\"$:/config/ShortcutInfo/heading-4\":{\"text\":\"{{$:/language/Buttons/Heading4/Hint}}\"},\"$:/config/ShortcutInfo/heading-5\":{\"text\":\"{{$:/language/Buttons/Heading5/Hint}}\"},\"$:/config/ShortcutInfo/heading-6\":{\"text\":\"{{$:/language/Buttons/Heading6/Hint}}\"},\"$:/config/ShortcutInfo/input-accept\":{\"text\":\"{{$:/language/Shortcuts/Input/Accept/Hint}}\"},\"$:/config/ShortcutInfo/input-accept-variant\":{\"text\":\"{{$:/language/Shortcuts/Input/AcceptVariant/Hint}}\"},\"$:/config/ShortcutInfo/input-cancel\":{\"text\":\"{{$:/language/Shortcuts/Input/Cancel/Hint}}\"},\"$:/config/ShortcutInfo/input-down\":{\"text\":\"{{$:/language/Shortcuts/Input/Down/Hint}}\"},\"$:/config/ShortcutInfo/input-tab-left\":{\"text\":\"{{$:/language/Shortcuts/Input/Tab-Left/Hint}}\"},\"$:/config/ShortcutInfo/input-tab-right\":{\"text\":\"{{$:/language/Shortcuts/Input/Tab-Right/Hint}}\"},\"$:/config/ShortcutInfo/input-up\":{\"text\":\"{{$:/language/Shortcuts/Input/Up/Hint}}\"},\"$:/config/ShortcutInfo/italic\":{\"text\":\"{{$:/language/Buttons/Italic/Hint}}\"},\"$:/config/ShortcutInfo/layout-switcher\":{\"text\":\"{{$:/language/LayoutSwitcher/Description}}\"},\"$:/config/ShortcutInfo/link\":{\"text\":\"{{$:/language/Buttons/Link/Hint}}\"},\"$:/config/ShortcutInfo/linkify\":{\"text\":\"{{$:/language/Buttons/Linkify/Hint}}\"},\"$:/config/ShortcutInfo/list-bullet\":{\"text\":\"{{$:/language/Buttons/ListBullet/Hint}}\"},\"$:/config/ShortcutInfo/list-number\":{\"text\":\"{{$:/language/Buttons/ListNumber/Hint}}\"},\"$:/config/ShortcutInfo/mono-block\":{\"text\":\"{{$:/language/Buttons/MonoBlock/Hint}}\"},\"$:/config/ShortcutInfo/mono-line\":{\"text\":\"{{$:/language/Buttons/MonoLine/Hint}}\"},\"$:/config/ShortcutInfo/new-image\":{\"text\":\"{{$:/language/Buttons/NewImage/Hint}}\"},\"$:/config/ShortcutInfo/new-journal\":{\"text\":\"{{$:/language/Buttons/NewJournal/Hint}}\"},\"$:/config/ShortcutInfo/new-tiddler\":{\"text\":\"{{$:/language/Buttons/NewTiddler/Hint}}\"},\"$:/config/ShortcutInfo/picture\":{\"text\":\"{{$:/language/Buttons/Picture/Hint}}\"},\"$:/config/ShortcutInfo/preview\":{\"text\":\"{{$:/language/Buttons/Preview/Hint}}\"},\"$:/config/ShortcutInfo/quote\":{\"text\":\"{{$:/language/Buttons/Quote/Hint}}\"},\"$:/config/ShortcutInfo/save-tiddler\":{\"text\":\"{{$:/language/Buttons/Save/Hint}}\"},\"$:/config/ShortcutInfo/save-wiki\":{\"text\":\"{{$:/language/Buttons/SaveWiki/Hint}}\"},\"$:/config/ShortcutInfo/sidebar-search\":{\"text\":\"{{$:/language/Buttons/SidebarSearch/Hint}}\"},\"$:/config/ShortcutInfo/stamp\":{\"text\":\"{{$:/language/Buttons/Stamp/Hint}}\"},\"$:/config/ShortcutInfo/strikethrough\":{\"text\":\"{{$:/language/Buttons/Strikethrough/Hint}}\"},\"$:/config/ShortcutInfo/subscript\":{\"text\":\"{{$:/language/Buttons/Subscript/Hint}}\"},\"$:/config/ShortcutInfo/superscript\":{\"text\":\"{{$:/language/Buttons/Superscript/Hint}}\"},\"$:/config/ShortcutInfo/toggle-sidebar\":{\"text\":\"{{$:/language/Buttons/ToggleSidebar/Hint}}\"},\"$:/config/ShortcutInfo/transcludify\":{\"text\":\"{{$:/language/Buttons/Transcludify/Hint}}\"},\"$:/config/ShortcutInfo/underline\":{\"text\":\"{{$:/language/Buttons/Underline/Hint}}\"},\"$:/config/StoryTiddlerTemplateFilters/draft\":{\"tags\":\"$:/tags/StoryTiddlerTemplateFilter\",\"text\":\"[is[draft]then{$:/config/ui/EditTemplate}]\"},\"$:/config/StoryTiddlerTemplateFilters/default\":{\"tags\":\"$:/tags/StoryTiddlerTemplateFilter\",\"text\":\"[{$:/config/ui/ViewTemplate}]\"},\"$:/config/SwitcherTargets/layout\":{\"text\":\"$:/snippets/LayoutSwitcher\"},\"$:/config/SwitcherTargets/language\":{\"text\":\"$:/snippets/languageswitcher\"},\"$:/config/SwitcherTargets/palette\":{\"text\":\"$:/core/ui/ControlPanel/Palette\"},\"$:/config/SwitcherTargets/theme\":{\"text\":\"$:/core/ui/ControlPanel/Theme\"},\"$:/config/SyncFilter\":{\"text\":\"[is[tiddler]] -[[$:/core]] -[[$:/library/sjcl.js]] -[prefix[$:/boot/]] -[prefix[$:/HistoryList]] -[status[pending]plugin-type[import]] -[[$:/isEncrypted]] -[prefix[$:/status/]] -[prefix[$:/state/]] -[prefix[$:/temp/]]\\n\"},\"$:/config/SyncSystemTiddlersFromServer\":{\"text\":\"no\"},\"$:/config/Tags/MinLength\":{\"text\":\"0\"},\"$:/config/TextEditor/EditorHeight/Height\":{\"text\":\"400px\"},\"$:/config/TextEditor/EditorHeight/Mode\":{\"text\":\"auto\"},\"$:/config/TiddlerColourFilters/color-field\":{\"tags\":\"$:/tags/TiddlerColourFilter\",\"text\":\"[has[color]then{!!color}]\"},\"$:/config/TiddlerColourFilters/default\":{\"tags\":\"$:/tags/TiddlerColourFilter\",\"text\":\"[[$:/config/DefaultTiddlerColour]has[text]get[text]trim[]]\"},\"$:/config/TiddlerIconFilters/icon-field\":{\"tags\":\"$:/tags/TiddlerIconFilter\",\"text\":\"[has[icon]then{!!icon}]\"},\"$:/config/TiddlerIconFilters/default\":{\"tags\":\"$:/tags/TiddlerIconFilter\",\"text\":\"[{$:/config/DefaultTiddlerIcon}has[text]]\"},\"$:/config/TiddlerInfo/Default\":{\"text\":\"$:/core/ui/TiddlerInfo/Fields\"},\"$:/config/TiddlerInfo/Mode\":{\"text\":\"popup\"},\"$:/config/Tiddlers/TitleLinks\":{\"text\":\"no\"},\"$:/config/Toolbar/ButtonClass\":{\"text\":\"tc-btn-invisible\"},\"$:/config/Toolbar/Icons\":{\"text\":\"yes\"},\"$:/config/Toolbar/Text\":{\"text\":\"no\"},\"$:/config/ViewTemplateBodyFilters/stylesheet\":{\"tags\":\"$:/tags/ViewTemplateBodyFilter\",\"text\":\"[tag[$:/tags/Stylesheet]then[$:/core/ui/ViewTemplate/body/rendered-plain-text]]\"},\"$:/config/ViewTemplateBodyFilters/system\":{\"tags\":\"$:/tags/ViewTemplateBodyFilter\",\"text\":\"[prefix[$:/boot/]] [prefix[$:/config/]] [prefix[$:/core/macros]] [prefix[$:/core/save/]] [prefix[$:/core/templates/]] [prefix[$:/core/ui/]split[/]count[]compare:number:eq[4]] [prefix[$:/info/]] [prefix[$:/language/]] [prefix[$:/languages/]] [prefix[$:/snippets/]] [prefix[$:/state/]] [prefix[$:/status/]] [prefix[$:/info/]] [prefix[$:/temp/]] +[!is[image]limit[1]then[$:/core/ui/ViewTemplate/body/code]]\"},\"$:/config/ViewTemplateBodyFilters/code-body\":{\"tags\":\"$:/tags/ViewTemplateBodyFilter\",\"text\":\"[field:code-body[yes]then[$:/core/ui/ViewTemplate/body/code]]\"},\"$:/config/ViewTemplateBodyFilters/import\":{\"tags\":\"$:/tags/ViewTemplateBodyFilter\",\"text\":\"[field:plugin-type[import]then[$:/core/ui/ViewTemplate/body/import]]\"},\"$:/config/ViewTemplateBodyFilters/plugin\":{\"tags\":\"$:/tags/ViewTemplateBodyFilter\",\"text\":\"[has[plugin-type]then[$:/core/ui/ViewTemplate/body/plugin]]\"},\"$:/config/ViewTemplateBodyFilters/hide-body\":{\"tags\":\"$:/tags/ViewTemplateBodyFilter\",\"text\":\"[field:hide-body[yes]then[$:/core/ui/ViewTemplate/body/blank]]\"},\"$:/config/ViewTemplateBodyFilters/default\":{\"tags\":\"$:/tags/ViewTemplateBodyFilter\",\"text\":\"[[$:/core/ui/ViewTemplate/body/default]]\"},\"$:/config/ViewTemplateTitleFilters/system\":{\"tags\":\"$:/tags/ViewTemplateTitleFilter\",\"text\":\"[prefix[$:/]then[$:/core/ui/ViewTemplate/title/system]]\"},\"$:/config/ViewTemplateTitleFilters/default\":{\"tags\":\"$:/tags/ViewTemplateTitleFilter\",\"text\":\"[[$:/core/ui/ViewTemplate/title/default]]\"},\"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/clone\":{\"text\":\"hide\"},\"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/close-others\":{\"text\":\"hide\"},\"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/export-tiddler\":{\"text\":\"hide\"},\"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/info\":{\"text\":\"hide\"},\"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/more-tiddler-actions\":{\"text\":\"show\"},\"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/new-here\":{\"text\":\"hide\"},\"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/new-journal-here\":{\"text\":\"hide\"},\"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/open-window\":{\"text\":\"hide\"},\"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/permalink\":{\"text\":\"hide\"},\"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/permaview\":{\"text\":\"hide\"},\"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/delete\":{\"text\":\"hide\"},\"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold\":{\"text\":\"hide\"},\"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-bar\":{\"text\":\"hide\"},\"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-others\":{\"text\":\"hide\"},\"$:/config/shortcuts-mac/bold\":{\"text\":\"meta-B\"},\"$:/config/shortcuts-mac/italic\":{\"text\":\"meta-I\"},\"$:/config/shortcuts-mac/underline\":{\"text\":\"meta-U\"},\"$:/config/shortcuts-mac/new-image\":{\"text\":\"ctrl-I\"},\"$:/config/shortcuts-mac/new-journal\":{\"text\":\"ctrl-J\"},\"$:/config/shortcuts-mac/new-tiddler\":{\"text\":\"ctrl-N\"},\"$:/config/shortcuts-mac/save-wiki\":{\"text\":\"meta-S\"},\"$:/config/shortcuts-not-mac/bold\":{\"text\":\"ctrl-B\"},\"$:/config/shortcuts-not-mac/italic\":{\"text\":\"ctrl-I\"},\"$:/config/shortcuts-not-mac/underline\":{\"text\":\"ctrl-U\"},\"$:/config/shortcuts-not-mac/new-image\":{\"text\":\"alt-I\"},\"$:/config/shortcuts-not-mac/new-journal\":{\"text\":\"alt-J\"},\"$:/config/shortcuts-not-mac/new-tiddler\":{\"text\":\"alt-N\"},\"$:/config/shortcuts/add-field\":{\"text\":\"enter\"},\"$:/config/shortcuts/advanced-search\":{\"text\":\"ctrl-shift-A\"},\"$:/config/shortcuts/advanced-search-sidebar\":{\"text\":\"alt-Enter\"},\"$:/config/shortcuts/cancel-edit-tiddler\":{\"text\":\"escape\"},\"$:/config/shortcuts/change-sidebar-layout\":{\"text\":\"shift-alt-Down\"},\"$:/config/shortcuts/delete-field\":{\"text\":\"shift-alt-D\"},\"$:/config/shortcuts/excise\":{\"text\":\"ctrl-E\"},\"$:/config/shortcuts/sidebar-search\":{\"text\":\"ctrl-shift-F\"},\"$:/config/shortcuts/heading-1\":{\"text\":\"ctrl-1\"},\"$:/config/shortcuts/heading-2\":{\"text\":\"ctrl-2\"},\"$:/config/shortcuts/heading-3\":{\"text\":\"ctrl-3\"},\"$:/config/shortcuts/heading-4\":{\"text\":\"ctrl-4\"},\"$:/config/shortcuts/heading-5\":{\"text\":\"ctrl-5\"},\"$:/config/shortcuts/heading-6\":{\"text\":\"ctrl-6\"},\"$:/config/shortcuts/input-accept\":{\"text\":\"Enter\"},\"$:/config/shortcuts/input-accept-variant\":{\"text\":\"ctrl-Enter\"},\"$:/config/shortcuts/input-cancel\":{\"text\":\"Escape\"},\"$:/config/shortcuts/input-down\":{\"text\":\"Down\"},\"$:/config/shortcuts/input-tab-left\":{\"text\":\"alt-ctrl-Left\"},\"$:/config/shortcuts/input-tab-right\":{\"text\":\"alt-ctrl-Right\"},\"$:/config/shortcuts/input-up\":{\"text\":\"Up\"},\"$:/config/shortcuts/layout-switcher\":{\"text\":\"ctrl-shift-L\"},\"$:/config/shortcuts/link\":{\"text\":\"ctrl-L\"},\"$:/config/shortcuts/linkify\":{\"text\":\"alt-shift-L\"},\"$:/config/shortcuts/list-bullet\":{\"text\":\"ctrl-shift-L\"},\"$:/config/shortcuts/list-number\":{\"text\":\"ctrl-shift-N\"},\"$:/config/shortcuts/mono-block\":{\"text\":\"ctrl-shift-M\"},\"$:/config/shortcuts/mono-line\":{\"text\":\"ctrl-M\"},\"$:/config/shortcuts/picture\":{\"text\":\"ctrl-shift-I\"},\"$:/config/shortcuts/preview\":{\"text\":\"alt-P\"},\"$:/config/shortcuts/quote\":{\"text\":\"ctrl-Q\"},\"$:/config/shortcuts/save-tiddler\":{\"text\":\"ctrl+enter\"},\"$:/config/shortcuts/save-wiki\":{\"text\":\"ctrl-S\"},\"$:/config/shortcuts/stamp\":{\"text\":\"ctrl-S\"},\"$:/config/shortcuts/strikethrough\":{\"text\":\"ctrl-T\"},\"$:/config/shortcuts/subscript\":{\"text\":\"ctrl-shift-B\"},\"$:/config/shortcuts/superscript\":{\"text\":\"ctrl-shift-P\"},\"$:/config/shortcuts/toggle-sidebar\":{\"text\":\"alt-shift-S\"},\"$:/config/shortcuts/transcludify\":{\"text\":\"alt-shift-T\"},\"$:/config/ui/EditTemplate\":{\"text\":\"$:/core/ui/EditTemplate\"},\"$:/config/ui/ViewTemplate\":{\"text\":\"$:/core/ui/ViewTemplate\"},\"$:/config/WikiParserRules/Inline/wikilink\":{\"text\":\"enable\"},\"$:/snippets/currpalettepreview\":{\"text\":\"\\\\define resolve-colour(macrocall)\\n\\\\import $:/core/macros/utils\\n\u003C$wikify text=\\\"\\\"\\\"$macrocall$\\\"\\\"\\\"name=name>\u003C\u003Cname>>\\n\\\\end\\n\\\\define swatchStyle()background-color: $(swatchColour)$;\\n\\\\define swatch-inner()\u003C$let swatchColour={{##$(colourResolved)$}}>\u003C$list filter='[\u003CswatchColour>!prefix[\u003C\u003Ccolour ]!suffix[>>]]'variable=ignore>\u003Cdiv style=\u003C\u003CswatchStyle>>title=\u003C\u003CswatchTitle>>class=tc-swatch/> \u003C/$list>\u003C$list filter='[\u003CswatchColour>prefix[\u003C\u003Ccolour ]suffix[>>]]'variable=ignore>\u003C$wikify text='\u003C$macrocall macrocall=\u003C\u003CswatchColour>>$name=resolve-colour/>'name=colourResolved>\u003C\u003Cswatch-inner>>\\n\\\\define swatch()\u003C$let swatchColour={{##$(colour)$}}swatchTitle=\u003C\u003Ccolour>>>\u003C$list filter='[\u003CswatchColour>!prefix[\u003C\u003Ccolour ]!suffix[>>]]'variable=ignore>\u003Cdiv style=\u003C\u003CswatchStyle>>title=\u003C\u003CswatchTitle>>class=tc-swatch/> \u003C/$list>\u003C$list filter='[\u003CswatchColour>prefix[\u003C\u003Ccolour ]suffix[>>]]'variable=ignore>\u003C$wikify text='\u003C$macrocall macrocall=\u003C\u003CswatchColour>>$name=resolve-colour/>'name=colourResolved>\u003C\u003Cswatch-inner>>\\n\u003Cdiv class=tc-swatches-horiz>\u003C$list filter='foreground background muted-foreground primary page-background tab-background tiddler-info-background'variable=colour>\u003C\u003Cswatch>>\"},\"$:/snippets/DebugStylesheets\":{\"text\":\"\u003Cstyle>[test]{list-style:'❌'}\u003C/style>\u003Cul>\u003C$list filter='[[$:/tags/Stylesheet]tagging[]has[modified]]'counter=n>\u003Cstyle>{{!!text}}[test=\\\"\u003C\u003Cn>>\\\"]{list-style:disc;}\u003C/style>\u003Cli test=\u003C\u003Cn>>>\u003C$link/>\"},\"$:/snippets/download-wiki-button\":{\"text\":\"\\\\define lingo-base()$:/language/ControlPanel/Tools/Download/\\n\u003C$button class=tc-btn-big-green>\u003C$action-sendmessage $message=tm-download-file $param=\\\"$:/core/save/all\\\"filename=index.html/>\u003C\u003Clingo Full/Caption>> {{$:/core/images/save-button}}\"},\"$:/language\":{\"text\":\"$:/languages/en-GB\"},\"$:/snippets/languageswitcher\":{\"text\":\"\\\\define flag-title()$(languagePluginTitle)$/icon\\n\u003C$linkcatcher to=\\\"$:/language\\\">\u003Cdiv class=\\\"tc-chooser tc-language-chooser\\\">\u003C$list filter=\\\"$:/languages/en-GB[plugin-type[language]sort[description]]\\\">\u003C$let cls={{{[{!!title}field:title{$:/language}then[tc-chooser-item tc-chosen]else[tc-chooser-item]]}}}>\u003Cdiv class=\u003C\u003Ccls>>>\u003C$link>\u003Cspan class=tc-image-button>\u003C$let languagePluginTitle={{!!title}}>\u003C$transclude subtiddler=\u003C\u003Cflag-title>>>\u003C$list filter=\\\"[{!!title}field:title[$:/languages/en-GB]]\\\">{{||$:/languages/en-GB/icon}}\u003C/$list>\u003C/$transclude>\u003C/$let>\u003C/span> \u003C$view field=description>\u003C$view field=name>\u003C$view field=title/>\"},\"$:/core/macros/CSS\":{\"tags\":\"$:/tags/Macro\",\"text\":\"\\\\define colour(name)\u003C$transclude tiddler={{$:/palette}}index=\\\"$name$\\\">\u003C$transclude tiddler=\\\"$:/palettes/Vanilla\\\"index=\\\"$name$\\\">\u003C$transclude tiddler=\\\"$:/config/DefaultColourMappings/$name$\\\"/>\\n\\\\define color(name)\u003C\u003Ccolour $name$>>\\n\\\\define box-shadow(shadow)\\n`\\n -webkit-box-shadow: $shadow$;\\n -moz-box-shadow: $shadow$;\\n box-shadow: $shadow$;\\n\\n\\\\end\\n\\\\define filter(filter)\\n`\\n -webkit-filter: $filter$;\\n -moz-filter: $filter$;\\n filter: $filter$;\\n\\n\\\\end\\n\\\\define transition(transition)\\n`\\n -webkit-transition: $transition$;\\n -moz-transition: $transition$;\\n transition: $transition$;\\n\\n\\\\end\\n\\\\define transform-origin(origin)\\n`\\n -webkit-transform-origin: $origin$;\\n -moz-transform-origin: $origin$;\\n transform-origin: $origin$;\\n\\n\\\\end\\n\\\\define background-linear-gradient(gradient)\\n`\\nbackground-image: linear-gradient($gradient$);\\nbackground-image: -o-linear-gradient($gradient$);\\nbackground-image: -moz-linear-gradient($gradient$);\\nbackground-image: -webkit-linear-gradient($gradient$);\\nbackground-image: -ms-linear-gradient($gradient$);\\n\\n\\\\end\\n\\\\define column-count(columns)\\n`\\n-moz-column-count: $columns$;\\n-webkit-column-count: $columns$;\\ncolumn-count: $columns$;\\n\\n\\\\end\\n\\\\define datauri(title)\u003C$macrocall type={{$title$!!type}}text={{$title$}}_canonical_uri={{$title$!!_canonical_uri}}$name=makedatauri/>\\n\\\\define if-sidebar(text)\u003C$reveal state=\\\"$:/state/sidebar\\\"type=match text=yes default=yes>$text$\u003C/$reveal>\\n\\\\define if-no-sidebar(text)\u003C$reveal state=\\\"$:/state/sidebar\\\"type=nomatch text=yes default=yes>$text$\u003C/$reveal>\\n\\\\define if-background-attachment(text)\u003C$reveal state=\\\"$:/themes/tiddlywiki/vanilla/settings/backgroundimage\\\"text=\\\"\\\"type=nomatch>$text$\u003C/$reveal>\"},\"$:/core/macros/colour-picker\":{\"tags\":\"$:/tags/Macro\",\"text\":\"\\\\define colour-picker-update-recent()\u003C$action-listops $tiddler=\\\"$:/config/ColourPicker/Recent\\\"$subfilter=\\\"$(colour-picker-value)$ [list[$:/config/ColourPicker/Recent]remove[$(colour-picker-value)$]] +[limit[8]]\\\"/>\\n\\\\define colour-picker-inner(actions)\\n\u003C$button tooltip=\\\"\\\"\\\"$(colour-picker-value)$\\\"\\\"\\\"tag=a>\\n\\n$(colour-picker-update-recent)$\\n\\n$actions$\\n\\n\u003Cspan style=\\\"display:inline-block; background-color: $(colour-picker-value)$; width: 100%; height: 100%; border-radius: 50%;\\\"/>\\n\\n\\\\end\\n\\\\define colour-picker-recent-inner(actions)\u003C$let colour-picker-value=\\\"$(recentColour)$\\\">\u003C$macrocall actions=\\\"\\\"\\\"$actions$\\\"\\\"\\\"$name=colour-picker-inner/>\\n\\\\define colour-picker-recent(actions){{$:/language/ColourPicker/Recent}}\u003C$list filter=\\\"[list[$:/config/ColourPicker/Recent]]\\\"variable=recentColour> \u003C$macrocall actions=\\\"\\\"\\\"$actions$\\\"\\\"\\\"$name=colour-picker-recent-inner/>\\n\\\\define colour-picker(actions)\\n\u003Cdiv class=tc-colour-chooser>\\n\\n\u003C$macrocall actions=\\\"\\\"\\\"$actions$\\\"\\\"\\\"$name=colour-picker-recent/>\\n\\n---\\n\\n\u003C$list filter=\\\"LightPink Pink Crimson LavenderBlush PaleVioletRed HotPink DeepPink MediumVioletRed Orchid Thistle Plum Violet Magenta Fuchsia DarkMagenta Purple MediumOrchid DarkViolet DarkOrchid Indigo BlueViolet MediumPurple MediumSlateBlue SlateBlue DarkSlateBlue Lavender GhostWhite Blue MediumBlue MidnightBlue DarkBlue Navy RoyalBlue CornflowerBlue LightSteelBlue LightSlateGrey SlateGrey DodgerBlue AliceBlue SteelBlue LightSkyBlue SkyBlue DeepSkyBlue LightBlue PowderBlue CadetBlue Azure LightCyan PaleTurquoise Cyan Aqua DarkTurquoise DarkSlateGrey DarkCyan Teal MediumTurquoise LightSeaGreen Turquoise Aquamarine MediumAquamarine MediumSpringGreen MintCream SpringGreen MediumSeaGreen SeaGreen Honeydew LightGreen PaleGreen DarkSeaGreen LimeGreen Lime ForestGreen Green DarkGreen Chartreuse LawnGreen GreenYellow DarkOliveGreen YellowGreen OliveDrab Beige LightGoldenrodYellow Ivory LightYellow Yellow Olive DarkKhaki LemonChiffon PaleGoldenrod Khaki Gold Cornsilk Goldenrod DarkGoldenrod FloralWhite OldLace Wheat Moccasin Orange PapayaWhip BlanchedAlmond NavajoWhite AntiqueWhite Tan BurlyWood Bisque DarkOrange Linen Peru PeachPuff SandyBrown Chocolate SaddleBrown Seashell Sienna LightSalmon Coral OrangeRed DarkSalmon Tomato MistyRose Salmon Snow LightCoral RosyBrown IndianRed Red Brown FireBrick DarkRed Maroon White WhiteSmoke Gainsboro LightGrey Silver DarkGrey Grey DimGrey Black\\\"variable=colour-picker-value> \u003C$macrocall actions=\\\"\\\"\\\"$actions$\\\"\\\"\\\"$name=colour-picker-inner/>\u003C/$list>\\n\\n---\\n\\n\u003C$edit-text tiddler=\\\"$:/config/ColourPicker/New\\\"default=\\\"\\\"placeholder=\\\"\\\"tag=input/> \u003C$edit-text tiddler=\\\"$:/config/ColourPicker/New\\\"type=color tag=input/>\u003C$let colour-picker-value={{$:/config/ColourPicker/New}}>\u003C$macrocall actions=\\\"\\\"\\\"$actions$\\\"\\\"\\\"$name=colour-picker-inner/>\\n\\\\end\"},\"$:/core/macros/copy-to-clipboard\":{\"tags\":\"$:/tags/Macro\",\"text\":\"\\\\define copy-to-clipboard(src class:tc-btn-invisible style)\u003C$button class=\u003C\u003C__class__>>style=\u003C\u003C__style__>>param=\u003C\u003C__src__>>tooltip={{$:/language/Buttons/CopyToClipboard/Hint}}message=tm-copy-to-clipboard>{{$:/core/images/copy-clipboard}} \u003C$text text={{$:/language/Buttons/CopyToClipboard/Caption}}/>\\n\\\\define copy-to-clipboard-above-right(src class:tc-btn-invisible style)\u003Cdiv style=\\\"position: relative;\\\">\u003Cdiv style=\\\"position: absolute; bottom: 0; right: 0;\\\">\u003C$macrocall src=\u003C\u003C__src__>>class=\u003C\u003C__class__>>style=\u003C\u003C__style__>>$name=copy-to-clipboard/>\"},\"$:/core/macros/diff\":{\"tags\":\"$:/tags/Macro\",\"text\":\"\\\\define compareTiddlerText(sourceTiddlerTitle sourceSubTiddlerTitle destTiddlerTitle destSubTiddlerTitle)\u003C$set tiddler=\u003C\u003C__sourceTiddlerTitle__>>subtiddler=\u003C\u003C__sourceSubTiddlerTitle__>>name=source>\u003C$set tiddler=\u003C\u003C__destTiddlerTitle__>>subtiddler=\u003C\u003C__destSubTiddlerTitle__>>name=dest>\u003C$diff-text source=\u003C\u003Csource>>dest=\u003C\u003Cdest>>/>\\n\\\\define compareTiddlers(sourceTiddlerTitle sourceSubTiddlerTitle destTiddlerTitle destSubTiddlerTitle exclude)\u003Ctable class=tc-diff-tiddlers>\u003Ctbody>\u003C$set filter=\\\"[\u003C__sourceTiddlerTitle__>fields[]sort[]]\\\"name=sourceFields>\u003C$set filter=\\\"[\u003C__destSubTiddlerTitle__>subtiddlerfields\u003C__destTiddlerTitle__>sort[]]\\\"name=destFields>\u003C$list filter=\\\"[enlist\u003CsourceFields>][enlist\u003CdestFields>]-[enlist\u003C__exclude__>]+[sort[]]\\\"variable=fieldName>\u003Ctr>\u003Cth>\u003C$text text=\u003C\u003CfieldName>>/>\u003C/th>\u003Ctd>\u003C$set tiddler=\u003C\u003C__sourceTiddlerTitle__>>subtiddler=\u003C\u003C__sourceSubTiddlerTitle__>>field=\u003C\u003CfieldName>>name=source>\u003C$set tiddler=\u003C\u003C__destTiddlerTitle__>>subtiddler=\u003C\u003C__destSubTiddlerTitle__>>field=\u003C\u003CfieldName>>name=dest>\u003C$diff-text source=\u003C\u003Csource>>dest=\u003C\u003Cdest>>> \"},\"$:/core/macros/dumpvariables\":{\"tags\":\"$:/tags/Macro\",\"text\":\"\\\\define dumpvariables()\u003Cul>\u003C$list filter=[variables[]] variable=varname>\u003Cli>\u003Cstrong>\u003Ccode>\u003C$text text=\u003C\u003Cvarname>>/>\u003C/code>\u003C/strong>:\u003Cbr>\u003C$codeblock code={{{[\u003Cvarname>getvariable[]]}}}/>\"},\"$:/core/macros/export\":{\"tags\":\"$:/tags/Macro\",\"text\":\"\\\\define exportButtonFilename(baseFilename)$baseFilename$$(extension)$\\n\\\\define exportButton(exportFilter:[!is[system]sort[title]] lingoBase baseFilename:tiddlers)\u003C$vars hint={{{[\u003C__lingoBase__>addsuffix[Hint]get[text]]}}}caption={{{[\u003C__lingoBase__>addsuffix[Caption]get[text]]}}}>\u003Cspan class=tc-popup-keep>\u003C$button popup=\u003C\u003Cqualify [[$:/state/popup/export]]>>tooltip=\u003C\u003Chint>>aria-label=\u003C\u003Ccaption>>class=\u003C\u003Ctv-config-toolbar-class>>selectedClass=tc-selected>\u003C$list filter=\\\"[\u003Ctv-config-toolbar-icons>match[yes]]\\\">{{$:/core/images/export-button}}\u003C/$list>\u003C$list filter=\\\"[\u003Ctv-config-toolbar-text>match[yes]]\\\">\u003Cspan class=tc-btn-text>\u003C$text text=\u003C\u003Ccaption>>/>\u003C/span>\u003C/$list>\u003C/$button>\u003C/span>\u003C/$vars>\u003C$reveal state=\u003C\u003Cqualify [[$:/state/popup/export]]>>type=popup position=below animate=yes>\u003Cdiv class=tc-drop-down>\u003C$let count={{{[subfilter\u003C__exportFilter__>count[]]}}}>\u003C$list filter=\\\"[[$:/tags/Exporter]tagging[]]\\\">\u003C$list filter=[{!!title}has[condition]subfilter{!!condition}nth[]]~[{!!title}!has[condition]then[true]] variable=ignore>\u003C$button class=tc-btn-invisible>\u003C$action-sendmessage $param={{!!title}}exportFilter=\u003C\u003C__exportFilter__>>filename={{{[\u003C__baseFilename__>addsuffix{!!extension}]}}}$message=tm-download-file/>\u003C$action-deletetiddler $tiddler=\u003C\u003Cqualify [[$:/state/popup/export]]>>/>\u003C$transclude field=description/>\"},\"$:/core/macros/image-picker\":{\"created\":\"20170715180840889\",\"modified\":\"20170715180914005\",\"tags\":\"$:/tags/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define image-picker-thumbnail(actions)\u003C$button tooltip=\\\"\\\"\\\"$(imageTitle)$\\\"\\\"\\\"tag=a>$actions$\u003C$transclude tiddler=\u003C\u003CimageTitle>>/>\\n\\\\define image-picker-list(filter actions)\u003C$list filter=\\\"\\\"\\\"$filter$\\\"\\\"\\\"variable=imageTitle>\u003C$macrocall actions=\\\"\\\"\\\"$actions$\\\"\\\"\\\"$name=image-picker-thumbnail/> \\n\\\\define image-picker(actions filter:\\\"[all[shadows+tiddlers]is[image]] -[type[application/pdf]] +[!has[draft.of]$subfilter$sort[title]]\\\"subfilter)\u003Cdiv class=tc-image-chooser>\u003C$let state-system=\u003C\u003Cqualify [[$:/state/image-picker/system]]>>>\u003C$checkbox tiddler=\u003C\u003Cstate-system>>field=text checked=show unchecked=hide default=hide> {{$:/language/SystemTiddlers/Include/Prompt}}\u003C/$checkbox>\u003C$reveal state=\u003C\u003Cstate-system>>type=match text=hide default=hide tag=div>\u003C$macrocall filter=\\\"\\\"\\\"$filter$ +[!is[system]]\\\"\\\"\\\"actions=\\\"\\\"\\\"$actions$\\\"\\\"\\\"$name=image-picker-list/>\u003C/$reveal>\u003C$reveal state=\u003C\u003Cstate-system>>type=nomatch text=hide default=hide tag=div>\u003C$macrocall filter=\\\"\\\"\\\"$filter$\\\"\\\"\\\"actions=\\\"\\\"\\\"$actions$\\\"\\\"\\\"$name=image-picker-list/>\\n\\\\define image-picker-include-tagged-images(actions)\u003C$macrocall filter=\\\"[all[shadows+tiddlers]is[image]] [all[shadows+tiddlers]tag[$:/tags/Image]] -[type[application/pdf]] +[!has[draft.of]sort[title]]\\\"actions=\\\"\\\"\\\"$actions$\\\"\\\"\\\"$name=image-picker/>\"},\"$:/core/macros/keyboard-driven-input\":{\"tags\":\"$:/tags/Macro\",\"text\":\"\\\\define change-input-tab(stateTitle tag beforeafter defaultState actions)\\n\\\\whitespace trim\\n\u003C$set filter=\\\"[\u003C__tag__>tagging[]!is[draft]]\\\"name=tabsList>\u003C$let currentState={{{[\u003C__stateTitle__>!is[missing]get[text]]~[\u003C__defaultState__>]}}}firstTab={{{[enlist\u003CtabsList>nth[]]}}}lastTab={{{[enlist\u003CtabsList>last[]]}}}nextTab={{{[\u003C__tag__>tagging[]!is[draft]$beforeafter$\u003CcurrentState>]~[[$beforeafter$]removeprefix[after]suffix[]addprefix\u003CfirstTab>]~[[$beforeafter$]removeprefix[before]suffix[]addprefix\u003ClastTab>]}}}>\u003C$action-setfield $tiddler=\u003C\u003C__stateTitle__>>text=\u003C\u003CnextTab>>/>\\n$actions$\\n\u003C/$let>\\n\\\\end\\n\\\\define keyboard-input-actions()\u003C$list filter=\\\"[\u003C__index__>match[]]\\\">\u003C$action-setfield $tiddler=\u003C\u003C__storeTitle__>>text={{{[\u003C__tiddler__>get\u003C__field__>]}}}/>\u003C/$list>\u003C$list filter=\\\"[\u003C__index__>!match[]]\\\">\u003C$action-setfield $tiddler=\u003C\u003C__storeTitle__>>text={{{[\u003C__tiddler__>getindex\u003C__index__>]}}}/>\\n\\\\define input-next-actions-inner()\u003C$list filter=\\\"[\u003CnextItem>minlength[1]]\\\"variable=ignore>\u003C$action-setfield $tiddler=\u003C\u003C__selectionStateTitle__>>text=\u003C\u003CnextItem>>/>\u003C$list filter=\\\"[\u003C__index__>match[]]\\\">\u003C$action-setfield $tiddler=\u003C\u003C__tiddler__>>$field=\u003C\u003C__field__>>$value={{{[\u003CnextItem>splitregexp[(?:.(?!-))+$]]}}}/>\u003C/$list>\u003C$list filter=\\\"[\u003C__index__>!match[]]\\\">\u003C$action-setfield $tiddler=\u003C\u003C__tiddler__>>$index=\u003C\u003C__index__>>$value={{{[\u003CnextItem>splitregexp[(?:.(?!-))+$]]}}}/>\u003C/$list>\u003C$action-setfield $tiddler=\u003C\u003C__refreshTitle__>>text=yes/>\\n\\\\define input-next-actions(afterOrBefore:after reverse)\u003C$list filter=\\\"[\u003C__storeTitle__>get[text]minlength\u003C__filterMinLength__>][\u003C__filterMinLength__>match[0]]+[nth[]]\\\"variable=ignore>\u003C$let userInput={{{[\u003C__storeTitle__>get[text]]}}}selectedItem={{{[\u003C__selectionStateTitle__>get[text]]}}}configTiddler={{{[subfilter\u003C__configTiddlerFilter__>]}}}primaryListFilter={{{[\u003CconfigTiddler>get\u003C__firstSearchFilterField__>]}}}secondaryListFilter={{{[\u003CconfigTiddler>get\u003C__secondSearchFilterField__>]}}}>\u003C$set filter=\\\"[subfilter\u003CprimaryListFilter>addsuffix[-primaryList]]=[subfilter\u003CsecondaryListFilter>addsuffix[-secondaryList]]\\\"name=filteredList>\u003C$let nextItem={{{[enlist\u003CfilteredList>$afterOrBefore$\u003CselectedItem>]~[enlist\u003CfilteredList>$reverse$nth[1]]}}}firstItem={{{[enlist\u003CfilteredList>nth[]]}}}lastItem={{{[enlist\u003CfilteredList>last[]]}}}>\u003C$list filter=\\\"[\u003CselectedItem>match\u003CfirstItem>!match\u003ClastItem>]\\\"variable=ignore>\u003C$let nextItem={{{[[$afterOrBefore$]match[before]then\u003CuserInput>addsuffix[-userInput]]~[\u003CnextItem>]}}}>\u003C\u003Cinput-next-actions-inner>>\u003C/$let>\u003C/$list>\u003C$list filter=\\\"[\u003CselectedItem>match\u003ClastItem>!match\u003CfirstItem>]\\\"variable=ignore>\u003C$let nextItem={{{[[$afterOrBefore$]match[after]then\u003CuserInput>addsuffix[-userInput]]~[\u003CnextItem>]}}}>\u003C\u003Cinput-next-actions-inner>>\u003C/$let>\u003C/$list>\u003C$list filter=\\\"[\u003CselectedItem>match\u003CfirstItem>match\u003ClastItem>]\\\"variable=ignore>\u003C$let nextItem={{{[\u003CuserInput>addsuffix[-userInput]]}}}>\u003C\u003Cinput-next-actions-inner>>\u003C/$let>\u003C/$list>\u003C$list filter=\\\"[\u003CselectedItem>!match\u003CfirstItem>!match\u003ClastItem>]\\\"variable=ignore>\u003C\u003Cinput-next-actions-inner>>\\n\\\\define keyboard-driven-input(tiddler storeTitle field:text index tag:input type focus inputAcceptActions inputAcceptVariantActions inputCancelActions placeholder default class focusPopup rows minHeight tabindex size autoHeight filterMinLength:0 refreshTitle selectionStateTitle cancelPopups configTiddlerFilter firstSearchFilterField:first-search-filter secondSearchFilterField:second-search-filter)\u003C$keyboard actions=\u003C\u003C__inputAcceptActions__>>key=((input-accept))>\u003C$keyboard actions=\u003C\u003C__inputAcceptVariantActions__>>key=((input-accept-variant))>\u003C$keyboard actions=\u003C\u003Cinput-next-actions before reverse[]>>key=((input-up))>\u003C$keyboard actions=\u003C\u003Cinput-next-actions>>key=((input-down))>\u003C$keyboard actions=\u003C\u003C__inputCancelActions__>>key=((input-cancel))>\u003C$edit-text tiddler=\u003C\u003C__tiddler__>>field=\u003C\u003C__field__>>index=\u003C\u003C__index__>>inputActions=\u003C\u003Ckeyboard-input-actions>>tag=\u003C\u003C__tag__>>class=\u003C\u003C__class__>>placeholder=\u003C\u003C__placeholder__>>default=\u003C\u003C__default__>>focusPopup=\u003C\u003C__focusPopup__>>focus=\u003C\u003C__focus__>>type=\u003C\u003C__type__>>rows=\u003C\u003C__rows__>>minHeight=\u003C\u003C__minHeight__>>tabindex=\u003C\u003C__tabindex__>>size=\u003C\u003C__size__>>autoHeight=\u003C\u003C__autoHeight__>>refreshTitle=\u003C\u003C__refreshTitle__>>cancelPopups=\u003C\u003C__cancelPopups__>>/>\"},\"$:/core/macros/lingo\":{\"tags\":\"$:/tags/Macro\",\"text\":\"\\\\define lingo-base()$:/language/\\n\\\\define lingo(title){{$(lingo-base)$$title$}}\"},\"$:/core/macros/list\":{\"tags\":\"$:/tags/Macro\",\"text\":\"\\\\define list-links(filter type:ul subtype:li class emptyMessage field:caption)\u003C$genesis $type=\u003C\u003C__type__>>class=\u003C\u003C__class__>>>\u003C$list filter=\u003C\u003C__filter__>>emptyMessage=\u003C\u003C__emptyMessage__>>>\u003C$genesis $type=\u003C\u003C__subtype__>>>\u003C$link>\u003C$let tv-wikilinks=no>\u003C$transclude field=\u003C\u003C__field__>>>\u003C$view field=title/>\\n\\\\define list-links-draggable-drop-actions()\u003C$action-listops $tiddler=\u003C\u003CtargetTiddler>>$field=\u003C\u003CtargetField>>$subfilter=\\\"+[insertbefore\u003CactionTiddler>,\u003CcurrentTiddler>]\\\"/>\\n\\\\define list-links-draggable(tiddler field:list emptyMessage type:ul subtype:li class itemTemplate)\\n\\\\whitespace trim\\n\u003Cspan class=tc-links-draggable-list>\u003C$let targetTiddler=\\\"\\\"\\\"$tiddler$\\\"\\\"\\\"targetField=\\\"\\\"\\\"$field$\\\"\\\"\\\">\\n\u003C$type$ class=\\\"$class$\\\">\\n\u003C$list filter=\\\"[list[$tiddler$!!$field$]]\\\"emptyMessage=\u003C\u003C__emptyMessage__>>>\u003C$droppable actions=\u003C\u003Clist-links-draggable-drop-actions>>tag=\\\"\\\"\\\"$subtype$\\\"\\\"\\\"enable=\u003C\u003Ctv-enable-drag-and-drop>>>\u003Cdiv class=tc-droppable-placeholder/>\u003Cdiv>\u003C$transclude tiddler=\\\"\\\"\\\"$itemTemplate$\\\"\\\"\\\">\u003C$link>\u003C$let tv-wikilinks=no>\u003C$transclude field=caption>\u003C$view field=title/>\u003C/$transclude>\u003C/$let>\u003C/$link>\u003C/$transclude>\u003C/div>\u003C/$droppable>\u003C/$list>\u003C$tiddler tiddler=\\\"\\\">\u003C$droppable actions=\u003C\u003Clist-links-draggable-drop-actions>>enable=\u003C\u003Ctv-enable-drag-and-drop>>tag=div>\u003Cdiv class=tc-droppable-placeholder>{{$:/core/images/blank}}\u003C/div>\u003Cdiv style=height:0.5em;/>\u003C/$droppable>\u003C/$tiddler>\\n\u003C/$type$>\\n\u003C/$let>\\n\\\\end\\n\\\\define list-tagged-draggable-drop-actions(tag)\u003C$set filter=\\\"[\u003C__tag__>tagging[]]\\\"name=order>\u003C$list filter=\\\"[\u003C__tag__>tagging[]]\\\">\u003C$action-deletefield $field=list-before/>\u003C$action-deletefield $field=list-after/>\u003C/$list>\u003C$action-listops $tiddler=\u003C\u003C__tag__>>$filter=\\\"+[enlist\u003Corder>] +[insertbefore\u003CactionTiddler>,\u003CcurrentTiddler>]\\\"$field=list/>\u003C$list filter=\\\"[\u003CactionTiddler>!contains:tags\u003C__tag__>]\\\">\u003C$fieldmangler tiddler=\u003C\u003CactionTiddler>>>\u003C$action-sendmessage $param=\u003C\u003C__tag__>>$message=tm-add-tag/>\\n\\\\define list-tagged-draggable(tag subFilter emptyMessage itemTemplate elementTag:div storyview)\\n\\\\whitespace trim\\n\u003Cspan class=tc-tagged-draggable-list>\u003C$let tag=\u003C\u003C__tag__>>>\u003C$list filter=\\\"[\u003C__tag__>tagging[]$subFilter$]\\\"emptyMessage=\u003C\u003C__emptyMessage__>>storyview=\u003C\u003C__storyview__>>>\\n\u003C$elementTag$ class=\\\"tc-menu-list-item\\\">\\n\u003C$droppable actions=\\\"\u003C$macrocall tag=\u003C\u003C__tag__>>$name=list-tagged-draggable-drop-actions/>\\\"enable=\u003C\u003Ctv-enable-drag-and-drop>>>\\n\u003C$elementTag$ class=\\\"tc-droppable-placeholder\\\"/>\\n\u003C$elementTag$>\\n\u003C$transclude tiddler=\\\"\\\"\\\"$itemTemplate$\\\"\\\"\\\">\u003C$link/>\u003C/$transclude>\\n\u003C/$elementTag$>\\n\u003C/$droppable>\\n\u003C/$elementTag$>\\n\u003C/$list>\u003C$tiddler tiddler=\\\"\\\">\u003C$droppable actions=\\\"\u003C$macrocall tag=\u003C\u003C__tag__>>$name=list-tagged-draggable-drop-actions/>\\\"enable=\u003C\u003Ctv-enable-drag-and-drop>>>\\n\u003C$elementTag$ class=\\\"tc-droppable-placeholder\\\"/>\\n\u003C$elementTag$ style=\\\"height:0.5em;\\\">\\n\u003C/$elementTag$>\\n\u003C/$droppable>\\n\\\\end\"},\"$:/core/macros/tabs\":{\"tags\":\"$:/tags/Macro\",\"code-body\":\"yes\",\"text\":\"\\\\define tabs-button()\u003C$button set=\u003C\u003CtabsState>>setTo=\u003C\u003CcurrentTab>>default=\u003C\u003C__default__>>selectedClass=tc-tab-selected tooltip={{!!tooltip}}role=switch>\u003C$tiddler tiddler=\u003C\u003Csave-currentTiddler>>>\u003C$let tv-wikilinks=no>\u003C$transclude tiddler=\u003C\u003C__buttonTemplate__>>mode=inline>\u003C$transclude tiddler=\u003C\u003CcurrentTab>>field=caption>\u003C$macrocall $type=\\\"text/plain\\\"$output=\\\"text/plain\\\"$name=currentTab/>\u003C/$transclude>\u003C/$transclude>\u003C/$let>\u003C/$tiddler>\u003C\u003C__actions__>>\\n\\\\define tabs-tab()\u003C$let save-currentTiddler={{!!title}}>\u003C$tiddler tiddler=\u003C\u003CcurrentTab>>>\u003C\u003Ctabs-button>>\\n\\\\define tabs-tab-list()\u003C$list filter=\u003C\u003C__tabsList__>>variable=currentTab storyview=pop>\u003C\u003Ctabs-tab>>\\n\\\\define tabs-tab-body()\u003C$list filter=\u003C\u003C__tabsList__>>variable=currentTab>\u003C$reveal type=match state=\u003C\u003CtabsState>>text=\u003C\u003CcurrentTab>>default=\u003C\u003C__default__>>retain=\u003C\u003C__retain__>>tag=div>\u003C$transclude tiddler=\u003C\u003C__template__>>mode=block>\u003C$transclude tiddler=\u003C\u003CcurrentTab>>mode=block/>\\n\\\\define tabs(tabsList default state:[[$:/state/tab]]class template buttonTemplate retain actions explicitState)\u003C$qualify title=\u003C\u003C__state__>>name=qualifiedState>\u003C$let tabsState={{{[\u003C__explicitState__>minlength[1]]~[\u003CqualifiedState>]}}}>\u003Cdiv class={{{[[tc-tab-set]addsuffix[ ]addsuffix\u003C__class__>]}}}>\u003Cdiv class={{{[[tc-tab-buttons]addsuffix[ ]addsuffix\u003C__class__>]}}}>\u003C\u003Ctabs-tab-list>>\u003C/div>\u003Cdiv class={{{[[tc-tab-divider]addsuffix[ ]addsuffix\u003C__class__>]}}}/>\u003Cdiv class={{{[[tc-tab-content]addsuffix[ ]addsuffix\u003C__class__>]}}}>\u003C\u003Ctabs-tab-body>>\"},\"$:/core/macros/tag-picker\":{\"tags\":\"$:/tags/Macro\",\"first-search-filter\":\"[tags[]!is[system]search:title\u003CuserInput>sort[]]\",\"second-search-filter\":\"[tags[]is[system]search:title\u003CuserInput>sort[]]\",\"text\":\"\\\\define get-tagpicker-focus-selector()[data-tiddler-title=\\\"$(currentTiddlerCSSEscaped)$\\\"] .tc-add-tag-name input\\n\\\\define delete-tag-state-tiddlers()\u003C$action-deletetiddler $filter=\\\"[\u003CnewTagNameTiddler>] [\u003CstoreTitle>] [\u003CtagSelectionState>]\\\"/>\\n\\\\define add-tag-actions(actions tagField:tags)\\n\\\\whitespace trim\\n\u003C$let tag={{{[\u003C__tiddler__>get[text]]}}}>\u003C$list filter=\\\"[\u003CsaveTiddler>!contains:$tagField$\u003Ctag>!match[]]\\\"emptyMessage=\\\"\u003C$action-listops $tiddler=\u003C\u003CsaveTiddler>>$field=\u003C\u003C__tagField__>>$subfilter='-[\u003Ctag>]'/>\\\"variable=ignore>\u003C$action-listops $tiddler=\u003C\u003CsaveTiddler>>$field=\u003C\u003C__tagField__>>$subfilter='[\u003Ctag>trim[]]'/>\\n$actions$\\n\u003C/$list>\u003C/$let>\u003C\u003Cdelete-tag-state-tiddlers>>\u003C$action-setfield $tiddler=\u003C\u003CrefreshTitle>>text=yes/>\\n\\\\end\\n\\\\define clear-tags-actions-inner()\u003C$list filter='[\u003CstoreTitle>has[text]][\u003CnewTagNameTiddler>has[text]]'emptyMessage='\u003C\u003Ccancel-delete-tiddler-actions cancel>>'variable=ignore>\u003C\u003Cdelete-tag-state-tiddlers>>\\n\\\\define clear-tags-actions()\u003C$let userInput={{{[\u003CstoreTitle>get[text]]}}}>\u003C$list filter=\\\"[\u003CnewTagNameTiddler>get[text]!match\u003CuserInput>]\\\"emptyMessage=\\\"\u003C\u003Cclear-tags-actions-inner>>\\\">\u003C$action-setfield $tiddler=\u003C\u003CnewTagNameTiddler>>text=\u003C\u003CuserInput>>/>\u003C$action-setfield $tiddler=\u003C\u003CrefreshTitle>>text=yes/>\\n\\\\define tag-picker-inner(actions tagField:tags)\\n\\\\whitespace trim\\n\u003C$vars newTagNameInputTiddlerQualified=\u003C\u003Cqualify'$:/temp/NewTagName/input'>>newTagNameSelectionTiddlerQualified=\u003C\u003Cqualify'$:/temp/NewTagName/selected-item'>>fallbackTarget={{$(palette)$##tag-background}}colourA={{$(palette)$##foreground}}colourB={{$(palette)$##background}}>\u003C$vars storeTitle={{{[\u003CnewTagNameInputTiddler>!match[]]~[\u003CnewTagNameInputTiddlerQualified>]}}}tagSelectionState={{{[\u003CnewTagNameSelectionTiddler>!match[]]~[\u003CnewTagNameSelectionTiddlerQualified>]}}}>\u003C$let refreshTitle=\u003C\u003Cqualify'$:/temp/NewTagName/refresh'>>nonSystemTagsFilter='[tags[]!is[system]search:title\u003CuserInput>sort[]]'systemTagsFilter='[tags[]is[system]search:title\u003CuserInput>sort[]]'>\u003Cdiv class=tc-edit-add-tag>\u003Cdiv>\u003Cspan class='tc-add-tag-name tc-small-gap-right'>\u003C$macrocall $name=keyboard-driven-input tiddler=\u003C\u003CnewTagNameTiddler>>storeTitle=\u003C\u003CstoreTitle>>refreshTitle=\u003C\u003CrefreshTitle>>selectionStateTitle=\u003C\u003CtagSelectionState>>inputAcceptActions=\\\"\u003C$macrocall $name='add-tag-actions' actions=\u003C\u003C__actions__>> tagField=\u003C\u003C__tagField__>>/>\\\"inputCancelActions=\u003C\u003Cclear-tags-actions>>placeholder={{$:/language/EditTemplate/Tags/Add/Placeholder}}focusPopup=\u003C\u003Cqualify'$:/state/popup/tags-auto-complete'>>class='tc-edit-texteditor tc-popup-handle'tabindex=\u003C\u003CtabIndex>>focus={{{[{$:/config/AutoFocus}match[tags]then[true]]~false}}}filterMinLength={{$:/config/Tags/MinLength}}cancelPopups=\u003C\u003CcancelPopups>>configTiddlerFilter='[[$:/core/macros/tag-picker]]'tag=input/>\u003C/span>\u003C$button popup=\u003C\u003Cqualify'$:/state/popup/tags-auto-complete'>>class='tc-btn-invisible tc-btn-dropdown'tooltip={{$:/language/EditTemplate/Tags/Dropdown/Hint}}aria-label={{$:/language/EditTemplate/Tags/Dropdown/Caption}}>{{$:/core/images/down-arrow}}\u003C/$button>\u003C$reveal state=\u003C\u003CstoreTitle>>text=''type=nomatch>\u003C$button class='tc-btn-invisible tc-small-gap tc-btn-dropdown'tooltip={{$:/language/EditTemplate/Tags/ClearInput/Hint}}aria-label={{$:/language/EditTemplate/Tags/ClearInput/Caption}}>{{$:/core/images/close-button}}\u003C\u003Cdelete-tag-state-tiddlers>>\u003C/$button>\u003C/$reveal>\u003Cspan class='tc-add-tag-button tc-small-gap-left'>\u003C$let tag={{{[\u003CnewTagNameTiddler>get[text]]}}}>\u003C$button set=\u003C\u003CnewTagNameTiddler>>setTo=''class=''>\u003C$action-listops $tiddler=\u003C\u003CsaveTiddler>>$field=\u003C\u003C__tagField__>>$subfilter='[\u003Ctag>trim[]]'/>\\n$actions$\\n\u003C$let currentTiddlerCSSEscaped={{{[\u003CsaveTiddler>escapecss[]]}}}>\u003C\u003Cdelete-tag-state-tiddlers>>\u003C$action-sendmessage $param=\u003C\u003Cget-tagpicker-focus-selector>>$message=tm-focus-selector/>\u003C/$let>{{$:/language/EditTemplate/Tags/Add/Button}}\u003C/$button>\u003C/$let>\u003C/span>\u003C/div>\u003Cdiv class=tc-block-dropdown-wrapper>\u003C$reveal state=\u003C\u003Cqualify'$:/state/popup/tags-auto-complete'>>text=''default=''type=nomatch>\u003Cdiv class='tc-block-dropdown tc-block-tags-dropdown'>\u003C$let userInput={{{[\u003CstoreTitle>get[text]]}}}>\u003C$list filter='[\u003CuserInput>minlength{$:/config/Tags/MinLength}nth[]]'emptyMessage='\u003Cdiv class=tc-search-results>{{$:/language/Search/Search/TooShort}}'variable=listItem>\u003C$list filter=\u003C\u003CnonSystemTagsFilter>>variable=tag>\u003C$list filter='[\u003Ctag>addsuffix[-primaryList]]-[\u003CtagSelectionState>get[text]]'emptyMessage=\\\"\u003C$vars button-classes='tc-btn-invisible tc-tag-button-selected'actions=\u003C\u003C__actions__>>tagField=\u003C\u003C__tagField__>>currentTiddler=\u003C\u003Ctag>>>{{||$:/core/ui/TagPickerTagTemplate}}\\\">\u003C$vars actions=\u003C\u003C__actions__>>tagField=\u003C\u003C__tagField__>>currentTiddler=\u003C\u003Ctag>>button-classes=tc-btn-invisible>{{||$:/core/ui/TagPickerTagTemplate}}\u003C/$vars>\u003C/$list>\u003C/$list>\u003C/$list>\u003Chr>\u003C$list filter='[\u003CuserInput>minlength{$:/config/Tags/MinLength}nth[]]'emptyMessage='\u003Cdiv class=tc-search-results>{{$:/language/Search/Search/TooShort}}'variable=listItem>\u003C$list filter=\u003C\u003CsystemTagsFilter>>variable=tag>\u003C$list filter='[\u003Ctag>addsuffix[-secondaryList]]-[\u003CtagSelectionState>get[text]]'emptyMessage=\\\"\u003C$vars button-classes='tc-btn-invisible tc-tag-button-selected'actions=\u003C\u003C__actions__>>tagField=\u003C\u003C__tagField__>>currentTiddler=\u003C\u003Ctag>>>{{||$:/core/ui/TagPickerTagTemplate}}\\\">\u003C$vars actions=\u003C\u003C__actions__>>tagField=\u003C\u003C__tagField__>>currentTiddler=\u003C\u003Ctag>>button-classes=tc-btn-invisible>{{||$:/core/ui/TagPickerTagTemplate}}\\n\\\\end\\n\\\\define tag-picker(actions tagField:tags)\u003C$let saveTiddler={{!!title}}palette={{$:/palette}}>\u003C$list filter='[\u003CnewTagNameTiddler>match[]]'emptyMessage='\u003C$macrocall actions=\u003C\u003C__actions__>>tagField=\u003C\u003C__tagField__>>$name=tag-picker-inner/>'>\u003C$let newTagNameTiddler=\u003C\u003Cqualify'$:/temp/NewTagName'>>>\u003C$macrocall actions=\u003C\u003C__actions__>>tagField=\u003C\u003C__tagField__>>$name=tag-picker-inner/>\"},\"$:/core/macros/tag\":{\"tags\":\"$:/tags/Macro\",\"text\":\"\\\\define tag-pill-styles()\\nbackground-color:$(backgroundColor)$;\\nfill:$(foregroundColor)$;\\ncolor:$(foregroundColor)$;\\n\\\\end\\n\\\\define tag-pill-inner(tag icon colour fallbackTarget colourA colourB element-tag element-attributes actions)\\n\u003C$let foregroundColor=\u003C\u003Ccontrastcolour target:\\\"\\\"\\\"$colour$\\\"\\\"\\\"fallbackTarget:\\\"\\\"\\\"$fallbackTarget$\\\"\\\"\\\"colourA:\\\"\\\"\\\"$colourA$\\\"\\\"\\\"colourB:\\\"\\\"\\\"$colourB$\\\"\\\"\\\">>backgroundColor=\\\"\\\"\\\"$colour$\\\"\\\"\\\">\u003C$element-tag$\\n\\t$element-attributes$\\n\\tclass=\\\"tc-tag-label tc-btn-invisible\\\"\\n\\tstyle=\u003C\u003Ctag-pill-styles>>\\n>$actions$\u003C$transclude tiddler=\\\"\\\"\\\"$icon$\\\"\\\"\\\"/>\u003C$view tiddler=\u003C\u003C__tag__>>field=title format=text/>\u003C/$element-tag$>\u003C/$let>\\n\\\\end\\n\\\\define tag-pill-body(tag icon colour palette element-tag element-attributes actions)\u003C$macrocall tag=\u003C\u003C__tag__>>icon=\\\"\\\"\\\"$icon$\\\"\\\"\\\"colour=\\\"\\\"\\\"$colour$\\\"\\\"\\\"fallbackTarget={{$palette$##tag-background}}colourA={{$palette$##foreground}}colourB={{$palette$##background}}element-tag=\\\"\\\"\\\"$element-tag$\\\"\\\"\\\"element-attributes=\\\"\\\"\\\"$element-attributes$\\\"\\\"\\\"actions=\\\"\\\"\\\"$actions$\\\"\\\"\\\"$name=tag-pill-inner/>\\n\\\\define tag-pill(tag element-tag:span element-attributes actions)\u003Cspan data-tag-title=\u003C\u003C__tag__>>class=tc-tag-list-item>\u003C$let currentTiddler=\u003C\u003C__tag__>>>\u003C$macrocall tag=\u003C\u003C__tag__>>icon={{{[{!!title}]:cascade[[$:/tags/TiddlerIconFilter]tagging[]!is[draft]get[text]]}}}colour={{{[{!!title}]:cascade[[$:/tags/TiddlerColourFilter]tagging[]!is[draft]get[text]]}}}palette={{$:/palette}}element-tag=\\\"\\\"\\\"$element-tag$\\\"\\\"\\\"element-attributes=\\\"\\\"\\\"$element-attributes$\\\"\\\"\\\"actions=\\\"\\\"\\\"$actions$\\\"\\\"\\\"$name=tag-pill-body/>\\n\\\\define tag(tag){{$tag$||$:/core/ui/TagTemplate}}\"},\"$:/core/macros/thumbnails\":{\"tags\":\"$:/tags/Macro\",\"text\":\"\\\\define thumbnail(link icon color background-color image caption width:280 height:157)\u003C$link to=\\\"\\\"\\\"$link$\\\"\\\"\\\">\u003Cdiv class=tc-thumbnail-wrapper>\u003Cdiv style=\\\"width:$width$px;height:$height$px;\\\"class=tc-thumbnail-image>\u003C$reveal type=nomatch text=\\\"\\\"default=\\\"\\\"\\\"$image$\\\"\\\"\\\"style=\\\"width:$width$px;height:$height$px;\\\"tag=div>[img[$image$]]\u003C/$reveal>\u003C$reveal type=match text=\\\"\\\"default=\\\"\\\"\\\"$image$\\\"\\\"\\\"tag=div style=\\\"width:$width$px;height:$height$px;background-color:$background-color$;\\\"class=tc-thumbnail-background>\u003C/$reveal>\u003C/div>\u003Cdiv style=\\\"fill:$color$;color:$color$;\\\"class=tc-thumbnail-icon>$icon$\u003C/div>\u003Cdiv class=tc-thumbnail-caption>$caption$\u003C/div>\\n\\\\define thumbnail-right(link icon color background-color image caption width:280 height:157)\u003Cdiv class=tc-thumbnail-right-wrapper>\u003C\u003Cthumbnail\\\"\\\"\\\"$link$\\\"\\\"\\\"\\\"\\\"\\\"$icon$\\\"\\\"\\\"\\\"\\\"\\\"$color$\\\"\\\"\\\"\\\"\\\"\\\"$background-color$\\\"\\\"\\\"\\\"\\\"\\\"$image$\\\"\\\"\\\"\\\"\\\"\\\"$caption$\\\"\\\"\\\"\\\"\\\"\\\"$width$\\\"\\\"\\\"\\\"\\\"\\\"$height$\\\"\\\"\\\">>\\n\\\\define list-thumbnails(filter width:280 height:157)\u003C$list filter=\\\"\\\"\\\"$filter$\\\"\\\"\\\">\u003C$macrocall link={{!!link}}icon={{!!icon}}color={{!!color}}background-color={{!!background-color}}image={{!!image}}caption={{!!caption}}width=\\\"\\\"\\\"$width$\\\"\\\"\\\"height=\\\"\\\"\\\"$height$\\\"\\\"\\\"$name=thumbnail/>\"},\"$:/core/macros/timeline\":{\"created\":\"20141212105914482\",\"modified\":\"20141212110330815\",\"tags\":\"$:/tags/Macro\",\"text\":\"\\\\define timeline-title()\u003C$view field=title/>\\n\\\\define timeline-link()\u003C$link>\u003C\u003Ctimeline-title>>\\n\\\\define timeline(limit:100 format:[[DDth MMM YYYY]]subfilter dateField:modified)\u003Cdiv class=tc-timeline>\u003C$list filter=\\\"[!is[system]$subfilter$has[$dateField$]!sort[$dateField$]limit[$limit$]eachday[$dateField$]]\\\">\u003Cdiv class=tc-menu-list-item>\u003C$view field=\\\"$dateField$\\\"template=\\\"$format$\\\"format=date/>\u003C$list filter=\\\"[sameday:$dateField${!!$dateField$}!is[system]$subfilter$!sort[$dateField$]]\\\">\u003Cdiv class=tc-menu-list-subitem>\u003C\u003Ctimeline-link>>\"},\"$:/core/macros/toc\":{\"tags\":\"$:/tags/Macro\",\"text\":\"\\\\define toc-open-icon()$:/core/images/down-arrow\\n\\\\define toc-closed-icon()$:/core/images/right-arrow\\n\\\\define toc-caption()\u003Cspan class=\\\"tc-toc-caption tc-tiny-gap-left\\\">\u003C$let tv-wikilinks=no>\u003C$transclude field=caption>\u003C$view field=title/>\\n\\\\define toc-body(tag sort itemClassFilter exclude path)\u003Col class=tc-toc>\u003C$list filter=\\\"\\\"\\\"[all[shadows+tiddlers]tag\u003C__tag__>!has[draft.of]$sort$] -[\u003C__tag__>] -[enlist\u003C__exclude__>]\\\"\\\"\\\">\u003C$let item={{!!title}}path={{{[\u003C__path__>addsuffix[/]addsuffix\u003C__tag__>]}}}>\u003C$set filter='[enlist\u003C__exclude__>][\u003C__tag__>]'name=excluded>\u003C$let toc-item-class={{{[subfilter\u003C__itemClassFilter__>then[toc-item]else[toc-item-selected]]}}}>\u003Cli class=\u003C\u003Ctoc-item-class>>>\u003C$list emptyMessage='\u003C$link to={{{[{!!title}get[target]else{!!title}]}}}>\u003C$view field=caption>\u003C$view field=title/>'filter=[{!!title}toc-link[no]]>\u003C\u003Ctoc-caption>>\u003C/$list>\u003C$macrocall tag=\u003C\u003Citem>>sort=\u003C\u003C__sort__>>itemClassFilter=\u003C\u003C__itemClassFilter__>>exclude=\u003C\u003Cexcluded>>path=\u003C\u003Cpath>>$name=toc-body/>\\n\\\\define toc(tag sort itemClassFilter)\u003C$macrocall tag=\u003C\u003C__tag__>>sort=\u003C\u003C__sort__>>itemClassFilter=\u003C\u003C__itemClassFilter__>>$name=toc-body/>\\n\\\\define toc-linked-expandable-body(tag sort itemClassFilter exclude path)\u003C$qualify title={{{[[$:/state/toc]addsuffix\u003C__path__>addsuffix[-]addsuffix{!!title}]}}}name=toc-state>\u003C$let toc-item-class={{{[subfilter\u003C__itemClassFilter__>then[toc-item]else[toc-item-selected]]}}}>\u003Cli class=\u003C\u003Ctoc-item-class>>>\u003C$link to={{{[{!!title}get[target]else{!!title}]}}}>\u003C$reveal type=nomatch stateTitle=\u003C\u003Ctoc-state>>text=open>\u003C$button setTitle=\u003C\u003Ctoc-state>>class=\\\"tc-btn-invisible tc-popup-keep\\\"setTo=open>\u003C$transclude tiddler=\u003C\u003Ctoc-closed-icon>>/>\u003C/$button>\u003C/$reveal>\u003C$reveal type=match stateTitle=\u003C\u003Ctoc-state>>text=open>\u003C$button setTitle=\u003C\u003Ctoc-state>>class=\\\"tc-btn-invisible tc-popup-keep\\\"setTo=close>\u003C$transclude tiddler=\u003C\u003Ctoc-open-icon>>/>\u003C/$button>\u003C/$reveal>\u003C\u003Ctoc-caption>>\u003C/$link>\u003C$reveal type=match stateTitle=\u003C\u003Ctoc-state>>text=open>\u003C$macrocall tag={{!!title}}sort=\u003C\u003C__sort__>>itemClassFilter=\u003C\u003C__itemClassFilter__>>exclude=\u003C\u003C__exclude__>>path=\u003C\u003C__path__>>$name=toc-expandable/>\\n\\\\define toc-unlinked-expandable-body(tag sort itemClassFilter exclude path)\u003C$qualify title={{{[[$:/state/toc]addsuffix\u003C__path__>addsuffix[-]addsuffix{!!title}]}}}name=toc-state>\u003C$let toc-item-class={{{[subfilter\u003C__itemClassFilter__>then[toc-item]else[toc-item-selected]]}}}>\u003Cli class=\u003C\u003Ctoc-item-class>>>\u003C$reveal type=nomatch stateTitle=\u003C\u003Ctoc-state>>text=open>\u003C$button setTitle=\u003C\u003Ctoc-state>>class=\\\"tc-btn-invisible tc-popup-keep\\\"setTo=open>\u003C$transclude tiddler=\u003C\u003Ctoc-closed-icon>>/>\u003C\u003Ctoc-caption>>\u003C/$button>\u003C/$reveal>\u003C$reveal type=match stateTitle=\u003C\u003Ctoc-state>>text=open>\u003C$button setTitle=\u003C\u003Ctoc-state>>class=\\\"tc-btn-invisible tc-popup-keep\\\"setTo=close>\u003C$transclude tiddler=\u003C\u003Ctoc-open-icon>>/>\u003C\u003Ctoc-caption>>\u003C/$button>\u003C/$reveal>\u003C$reveal type=match stateTitle=\u003C\u003Ctoc-state>>text=open>\u003C$macrocall tag={{!!title}}sort=\u003C\u003C__sort__>>itemClassFilter=\u003C\u003C__itemClassFilter__>>exclude=\u003C\u003C__exclude__>>path=\u003C\u003C__path__>>$name=toc-expandable/>\\n\\\\define toc-expandable-empty-message()\u003C$macrocall tag=\u003C\u003Ctag>>sort=\u003C\u003Csort>>itemClassFilter=\u003C\u003CitemClassFilter>>exclude=\u003C\u003Cexcluded>>path=\u003C\u003Cpath>>$name=toc-linked-expandable-body/>\\n\\\\define toc-expandable(tag sort itemClassFilter exclude path)\u003C$let tag=\u003C\u003C__tag__>>sort=\u003C\u003C__sort__>>itemClassFilter=\u003C\u003C__itemClassFilter__>>path={{{[\u003C__path__>addsuffix[/]addsuffix\u003C__tag__>]}}}>\u003C$set filter=\\\"[enlist\u003C__exclude__>][\u003C__tag__>]\\\"name=excluded>\u003Col class=\\\"tc-toc toc-expandable\\\">\u003C$list filter=\\\"\\\"\\\"[all[shadows+tiddlers]tag\u003C__tag__>!has[draft.of]$sort$] -[\u003C__tag__>] -[enlist\u003C__exclude__>]\\\"\\\"\\\">\u003C$list emptyMessage=\u003C\u003Ctoc-expandable-empty-message>>filter=[{!!title}toc-link[no]]>\u003C$macrocall $name=toc-unlinked-expandable-body tag=\u003C\u003C__tag__>>sort=\u003C\u003C__sort__>>exclude=\u003C\u003Cexcluded>>path=\u003C\u003Cpath>>itemClassFilter=itemClassFilter/>\\n\\\\define toc-linked-selective-expandable-body(tag sort itemClassFilter exclude path)\u003C$qualify title={{{[[$:/state/toc]addsuffix\u003C__path__>addsuffix[-]addsuffix{!!title}]}}}name=toc-state>\u003C$let toc-item-class={{{[subfilter\u003C__itemClassFilter__>then[toc-item]else[toc-item-selected]]}}}>\u003Cli class=\u003C\u003Ctoc-item-class>>>\u003C$link to={{{[{!!title}get[target]else{!!title}]}}}>\u003C$list filter=\\\"[{!!title}tagging[]$sort$limit[1]]\\\"emptyMessage='\u003C$button class=tc-btn-invisible>{{$:/core/images/blank}}'variable=ignore>\u003C$reveal type=nomatch stateTitle=\u003C\u003Ctoc-state>>text=open>\u003C$button setTitle=\u003C\u003Ctoc-state>>class='tc-btn-invisible tc-popup-keep'setTo=open>\u003C$transclude tiddler=\u003C\u003Ctoc-closed-icon>>/>\u003C/$button>\u003C/$reveal>\u003C$reveal type=match stateTitle=\u003C\u003Ctoc-state>>text=open>\u003C$button setTitle=\u003C\u003Ctoc-state>>class='tc-btn-invisible tc-popup-keep'setTo=close>\u003C$transclude tiddler=\u003C\u003Ctoc-open-icon>>/>\u003C/$button>\u003C/$reveal>\u003C/$list>\u003C\u003Ctoc-caption>>\u003C/$link>\u003C$reveal type=match stateTitle=\u003C\u003Ctoc-state>>text=open>\u003C$macrocall tag={{!!title}}sort=\u003C\u003C__sort__>>itemClassFilter=\u003C\u003C__itemClassFilter__>>exclude=\u003C\u003C__exclude__>>path=\u003C\u003C__path__>>$name=toc-selective-expandable/>\\n\\\\define toc-unlinked-selective-expandable-body(tag sort itemClassFilter exclude path)\u003C$qualify title={{{[[$:/state/toc]addsuffix\u003C__path__>addsuffix[-]addsuffix{!!title}]}}}name=toc-state>\u003C$let toc-item-class={{{[subfilter\u003C__itemClassFilter__>then[toc-item]else[toc-item-selected]]}}}>\u003Cli class=\u003C\u003Ctoc-item-class>>>\u003C$list filter=\\\"[{!!title}tagging[]$sort$limit[1]]\\\"emptyMessage='\u003C$button class=tc-btn-invisible>{{$:/core/images/blank}}\u003C/$button> \u003C$view field=caption>\u003C$view field=title/>'variable=ignore>\u003C$reveal type=nomatch stateTitle=\u003C\u003Ctoc-state>>text=open>\u003C$button setTitle=\u003C\u003Ctoc-state>>class='tc-btn-invisible tc-popup-keep'setTo=open>\u003C$transclude tiddler=\u003C\u003Ctoc-closed-icon>>/>\u003C\u003Ctoc-caption>>\u003C/$button>\u003C/$reveal>\u003C$reveal type=match stateTitle=\u003C\u003Ctoc-state>>text=open>\u003C$button setTitle=\u003C\u003Ctoc-state>>class='tc-btn-invisible tc-popup-keep'setTo=close>\u003C$transclude tiddler=\u003C\u003Ctoc-open-icon>>/>\u003C\u003Ctoc-caption>>\u003C/$button>\u003C/$reveal>\u003C/$list>\u003C$reveal type=match stateTitle=\u003C\u003Ctoc-state>>text=open>\u003C$macrocall tag={{!!title}}sort=\u003C\u003C__sort__>>itemClassFilter=\u003C\u003C__itemClassFilter__>>exclude=\u003C\u003C__exclude__>>path=\u003C\u003C__path__>>$name=toc-selective-expandable/>\\n\\\\define toc-selective-expandable-empty-message()\u003C$macrocall tag=\u003C\u003Ctag>>sort=\u003C\u003Csort>>itemClassFilter=\u003C\u003CitemClassFilter>>exclude=\u003C\u003Cexcluded>>path=\u003C\u003Cpath>>$name=toc-linked-selective-expandable-body/>\\n\\\\define toc-selective-expandable(tag sort itemClassFilter exclude path)\u003C$let tag=\u003C\u003C__tag__>>sort=\u003C\u003C__sort__>>itemClassFilter=\u003C\u003C__itemClassFilter__>>path={{{[\u003C__path__>addsuffix[/]addsuffix\u003C__tag__>]}}}>\u003C$set filter=\\\"[enlist\u003C__exclude__>][\u003C__tag__>]\\\"name=excluded>\u003Col class=\\\"tc-toc toc-selective-expandable\\\">\u003C$list filter=\\\"\\\"\\\"[all[shadows+tiddlers]tag\u003C__tag__>!has[draft.of]$sort$] -[\u003C__tag__>] -[enlist\u003C__exclude__>]\\\"\\\"\\\">\u003C$list filter=[{!!title}toc-link[no]] emptyMessage=\u003C\u003Ctoc-selective-expandable-empty-message>>variable=ignore>\u003C$macrocall tag=\u003C\u003C__tag__>>sort=\u003C\u003C__sort__>>itemClassFilter=\u003C\u003C__itemClassFilter__>>exclude=\u003C\u003Cexcluded>>path=\u003C\u003Cpath>>$name=toc-unlinked-selective-expandable-body/>\\n\\\\define toc-tabbed-external-nav(tag sort selectedTiddler:'$:/temp/toc/selectedTiddler'unselectedText missingText template)\\n\\\\whitespace trim\\n\u003C$tiddler tiddler={{{[\u003C__selectedTiddler__>get[text]]}}}>\u003Cdiv class=tc-tabbed-table-of-contents>\u003C$linkcatcher to=\u003C\u003C__selectedTiddler__>>>\u003Cdiv class=tc-table-of-contents>\u003C$macrocall tag=\u003C\u003C__tag__>>sort=\u003C\u003C__sort__>>itemClassFilter=\\\"[all[current]] -[\u003C__selectedTiddler__>get[text]]\\\"$name=toc-selective-expandable/>\u003C/div>\u003C/$linkcatcher>\u003Cdiv class=tc-tabbed-table-of-contents-content>\u003C$reveal stateTitle=\u003C\u003C__selectedTiddler__>>text=\\\"\\\"type=nomatch>\u003C$transclude tiddler=\u003C\u003C__template__>>mode=block>\u003Ch1>\u003C\u003Ctoc-caption>>\u003C/h1>\u003C$transclude mode=block>$missingText$\u003C/$transclude>\u003C/$transclude>\u003C/$reveal>\u003C$reveal stateTitle=\u003C\u003C__selectedTiddler__>>text=\\\"\\\"type=match>\\n $unselectedText$\\n \u003C/$reveal>\\n\\\\end\\n\\\\define toc-tabbed-internal-nav(tag sort selectedTiddler:'$:/temp/toc/selectedTiddler'unselectedText missingText template)\u003C$linkcatcher to=\u003C\u003C__selectedTiddler__>>>\u003C$macrocall tag=\u003C\u003C__tag__>>sort=\u003C\u003C__sort__>>selectedTiddler=\u003C\u003C__selectedTiddler__>>unselectedText=\u003C\u003C__unselectedText__>>missingText=\u003C\u003C__missingText__>>template=\u003C\u003C__template__>>$name=toc-tabbed-external-nav/>\"},\"$:/core/macros/translink\":{\"tags\":\"$:/tags/Macro\",\"text\":\"\\\\define translink(title mode:block)\u003Cdiv style=\\\"border:1px solid #ccc; padding: 0.5em; background: black; foreground; white;\\\">\u003C$link to=\\\"\\\"\\\"$title$\\\"\\\"\\\"/>\u003Cdiv style=\\\"border:1px solid #ccc; padding: 0.5em; background: white; foreground; black;\\\">\u003C$transclude tiddler=\\\"\\\"\\\"$title$\\\"\\\"\\\"mode=\\\"$mode$\\\">\\\"\u003C$text text=\\\"\\\"\\\"$title$\\\"\\\"\\\"/>\\\" is missing\"},\"$:/core/macros/tree\":{\"tags\":\"$:/tags/Macro\",\"text\":\"\\\\define leaf-link(full-title chunk separator:/)\u003C$link to=\u003C\u003C__full-title__>>>\u003C$text text=\u003C\u003C__chunk__>>/>\\n\\\\define leaf-node(prefix chunk)\u003Cli>\u003C$list filter=\\\"[\u003C__prefix__>addsuffix\u003C__chunk__>is[shadow]][\u003C__prefix__>addsuffix\u003C__chunk__>is[tiddler]]\\\"variable=full-title>\u003C$list filter=\\\"[\u003Cfull-title>removeprefix\u003C__prefix__>]\\\"variable=chunk>\u003Cspan>{{$:/core/images/file}}\u003C/span> \u003C$macrocall full-title=\u003C\u003Cfull-title>>chunk=\u003C\u003Cchunk>>$name=leaf-link/>\\n\\\\define branch-node(prefix chunk separator:/)\u003Cli>\u003C$let reveal-state={{{[[$:/state/tree/]addsuffix\u003C__prefix__>addsuffix\u003C__chunk__>]}}}>\u003C$reveal type=nomatch stateTitle=\u003C\u003Creveal-state>>text=show>\u003C$button setTitle=\u003C\u003Creveal-state>>setTo=show class=tc-btn-invisible>{{$:/core/images/folder}} \u003C$text text=\u003C\u003C__chunk__>>/>\u003C/$button>\u003C/$reveal>\u003C$reveal type=match stateTitle=\u003C\u003Creveal-state>>text=show>\u003C$button setTitle=\u003C\u003Creveal-state>>setTo=hide class=tc-btn-invisible>{{$:/core/images/folder}} \u003C$text text=\u003C\u003C__chunk__>>/>\u003C/$button>\u003C/$reveal> \u003Cspan>(\u003C$count filter=\\\"[all[shadows+tiddlers]removeprefix\u003C__prefix__>removeprefix\u003C__chunk__>]-[\u003C__prefix__>addsuffix\u003C__chunk__>]\\\"/>)\u003C/span>\u003C$reveal type=match stateTitle=\u003C\u003Creveal-state>>text=show>\u003C$macrocall prefix={{{[\u003C__prefix__>addsuffix\u003C__chunk__>]}}}separator=\u003C\u003C__separator__>>$name=tree-node/>\\n\\\\define tree-node(prefix separator:/)\u003Col>\u003C$list filter=\\\"[all[shadows+tiddlers]removeprefix\u003C__prefix__>splitbefore\u003C__separator__>sort[]!suffix\u003C__separator__>]\\\"variable=chunk>\u003C$macrocall prefix=\u003C\u003C__prefix__>>chunk=\u003C\u003Cchunk>>separator=\u003C\u003C__separator__>>$name=leaf-node/>\u003C/$list>\u003C$list filter=\\\"[all[shadows+tiddlers]removeprefix\u003C__prefix__>splitbefore\u003C__separator__>sort[]suffix\u003C__separator__>]\\\"variable=chunk>\u003C$macrocall prefix=\u003C\u003C__prefix__>>chunk=\u003C\u003Cchunk>>separator=\u003C\u003C__separator__>>$name=branch-node/>\\n\\\\define tree(prefix:[[$:/]]separator:/)\u003Cdiv class=tc-tree>\u003Cspan>\u003C$text text=\u003C\u003C__prefix__>>/>\u003C/span>\u003Cdiv>\u003C$macrocall prefix=\u003C\u003C__prefix__>>separator=\u003C\u003C__separator__>>$name=tree-node/>\"},\"$:/core/macros/utils\":{\"text\":\"\\\\define colour(colour)$colour$\"},\"$:/snippets/minifocusswitcher\":{\"text\":\"\u003C$select tiddler=\\\"$:/config/AutoFocus\\\">\u003C$list filter=\\\"title tags text type fields\\\">\u003Coption value={{!!title}}>\u003C\u003CcurrentTiddler>>\"},\"$:/snippets/minilanguageswitcher\":{\"text\":\"\u003C$select tiddler=\\\"$:/language\\\">\u003C$list filter=\\\"$:/languages/en-GB[plugin-type[language]sort[title]]\\\">\u003Coption value={{!!title}}>\u003C$view field=description>\u003C$view field=name>\u003C$view field=title/>\"},\"$:/snippets/minithemeswitcher\":{\"text\":\"\\\\define lingo-base()$:/language/ControlPanel/Theme/\\n\u003C\u003Clingo Prompt>> \u003C$select tiddler=\\\"$:/theme\\\">\u003C$list filter=[plugin-type[theme]sort[title]]>\u003Coption value={{!!title}}>\u003C$view field=name>\u003C$view field=title/>\"},\"$:/snippets/modules\":{\"text\":\"\\\\define describeModuleType(type){{$:/language/Docs/ModuleTypes/$type$}}\\n\u003C$list filter=[moduletypes[]]>\\n\\n!! \u003C$macrocall $name=\\\"currentTiddler\\\" $type=\\\"text/plain\\\" $output=\\\"text/plain\\\"/>\\n\\n\u003C$macrocall type={{!!title}}$name=describeModuleType/>\\n\\n\u003Cul>\u003C$list filter=[{!!title}modules[]]>\u003Cli>\u003C$link>\u003C\u003CcurrentTiddler>>\"},\"$:/palette\":{\"text\":\"$:/palettes/Vanilla\"},\"$:/snippets/paletteeditor\":{\"text\":\"{{||$:/PaletteManager}}\"},\"$:/snippets/palettepreview\":{\"text\":\"\u003C$let currentTiddler={{$:/palette}}>{{||$:/snippets/currpalettepreview}}\"},\"$:/snippets/paletteswitcher\":{\"text\":\"\u003C$linkcatcher to='$:/palette'>\u003Cdiv class=tc-chooser>\u003C$list filter='[[$:/tags/Palette]tagging[]sort[name]]'>\u003C$let cls={{{[{!!title}prefix{$:/palette}then[tc-chooser-item tc-chosen]else[tc-chooser-item]]}}}>\u003Cdiv class=\u003C\u003Ccls>>>\u003C$link>''\u003C$view field=name format=text/>'' - \u003C$view field=description format=text/>{{||$:/snippets/currpalettepreview}}\"},\"$:/snippets/peek-stylesheets\":{\"text\":\"\\\\define expandable-stylesheets-list()\u003Col>\u003C$list filter=\\\"[[$:/tags/Stylesheet]tagging[]!is[draft]]\\\">\u003C$let state=\u003C\u003Cqualify [[$:/state/peek-stylesheets/open/]]>>state={{{[\u003Cstate>addsuffix{!!title}]}}}>\u003Cli>\u003C$reveal type=match state=\u003C\u003Cstate>>text=yes tag=span>\u003C$button set=\u003C\u003Cstate>>setTo=no class=tc-btn-invisible>{{$:/core/images/down-arrow}}\u003C/$button>\u003C/$reveal>\u003C$reveal type=nomatch state=\u003C\u003Cstate>>text=yes tag=span>\u003C$button set=\u003C\u003Cstate>>setTo=yes class=tc-btn-invisible>{{$:/core/images/right-arrow}}\u003C/$button>\u003C/$reveal>\u003C$link/>\u003C$reveal type=match state=\u003C\u003Cstate>>text=yes tag=div>\u003C$let source={{!!text}}>\u003C$wikify text=\u003C\u003Csource>>name=styles>\u003C$codeblock code=\u003C\u003Cstyles>>language=css/>\\n\\\\define stylesheets-list()\u003Col>\u003C$list filter=\\\"[[$:/tags/Stylesheet]tagging[]!is[draft]]\\\">\u003Cli>\u003C$link/>\u003C$let source={{!!text}}>\u003C$wikify text=\u003C\u003Csource>>name=styles>\u003Cpre>\u003Ccode>\u003C$text text=\u003C\u003Cstyles>>/>\\n\u003C$let modeState=\u003C\u003Cqualify [[$:/state/peek-stylesheets/mode/]]>>>\\n\\n\u003C$reveal type=nomatch state=\u003C\u003CmodeState>>text=expanded tag=div>\u003C$button set=\u003C\u003CmodeState>>setTo=expanded class=tc-btn-invisible>{{$:/core/images/chevron-right}}{{$:/language/ControlPanel/Stylesheets/Expand/Caption}}\u003C/$button>\u003C/$reveal>\u003C$reveal type=match state=\u003C\u003CmodeState>>text=expanded tag=div>\u003C$button set=\u003C\u003CmodeState>>setTo=restored class=tc-btn-invisible>{{$:/core/images/chevron-down}}{{$:/language/ControlPanel/Stylesheets/Restore/Caption}}\u003C/$button>\u003C/$reveal>\\n\\n\u003C$reveal type=nomatch state=\u003C\u003CmodeState>>text=expanded tag=div>\u003C\u003Cexpandable-stylesheets-list>>\u003C/$reveal>\u003C$reveal type=match state=\u003C\u003CmodeState>>text=expanded tag=div>\u003C\u003Cstylesheets-list>>\"},\"$:/temp/search\":{\"text\":\"\"},\"$:/tags/AdvancedSearch\":{\"list\":\"[[$:/core/ui/AdvancedSearch/Standard]] [[$:/core/ui/AdvancedSearch/System]] [[$:/core/ui/AdvancedSearch/Shadows]] [[$:/core/ui/AdvancedSearch/Filter]]\"},\"$:/tags/AdvancedSearch/FilterButton\":{\"list\":\"$:/core/ui/AdvancedSearch/Filter/FilterButtons/dropdown $:/core/ui/AdvancedSearch/Filter/FilterButtons/clear $:/core/ui/AdvancedSearch/Filter/FilterButtons/export $:/core/ui/AdvancedSearch/Filter/FilterButtons/delete\"},\"$:/tags/ControlPanel\":{\"list\":\"$:/core/ui/ControlPanel/Info $:/core/ui/ControlPanel/Appearance $:/core/ui/ControlPanel/Settings $:/core/ui/ControlPanel/Saving $:/core/ui/ControlPanel/Plugins $:/core/ui/ControlPanel/Tools $:/core/ui/ControlPanel/Internals\"},\"$:/tags/ControlPanel/Info\":{\"list\":\"$:/core/ui/ControlPanel/Basics $:/core/ui/ControlPanel/Advanced\"},\"$:/tags/ControlPanel/Plugins\":{\"list\":\"$:/core/ui/ControlPanel/Plugins/Installed/Plugins $:/core/ui/ControlPanel/Plugins/Installed/Themes $:/core/ui/ControlPanel/Plugins/Installed/Languages\"},\"$:/tags/EditTemplate\":{\"list\":\"[[$:/core/ui/EditTemplate/controls]] [[$:/core/ui/EditTemplate/title]] [[$:/core/ui/EditTemplate/tags]] [[$:/core/ui/EditTemplate/shadow]] [[$:/core/ui/ViewTemplate/classic]] [[$:/core/ui/EditTemplate/body]] [[$:/core/ui/EditTemplate/type]] [[$:/core/ui/EditTemplate/fields]]\"},\"$:/tags/EditTemplateBodyFilter\":{\"list\":\"$:/config/EditTemplateBodyFilters/canonical-uri $:/config/EditTemplateBodyFilters/default\"},\"$:/tags/EditToolbar\":{\"list\":\"[[$:/core/ui/Buttons/delete]] [[$:/core/ui/Buttons/cancel]] [[$:/core/ui/Buttons/save]]\"},\"$:/tags/EditorToolbar\":{\"list\":\"$:/core/ui/EditorToolbar/paint $:/core/ui/EditorToolbar/opacity $:/core/ui/EditorToolbar/line-width $:/core/ui/EditorToolbar/rotate-left $:/core/ui/EditorToolbar/clear $:/core/ui/EditorToolbar/bold $:/core/ui/EditorToolbar/italic $:/core/ui/EditorToolbar/strikethrough $:/core/ui/EditorToolbar/underline $:/core/ui/EditorToolbar/superscript $:/core/ui/EditorToolbar/subscript $:/core/ui/EditorToolbar/mono-line $:/core/ui/EditorToolbar/mono-block $:/core/ui/EditorToolbar/quote $:/core/ui/EditorToolbar/list-bullet $:/core/ui/EditorToolbar/list-number $:/core/ui/EditorToolbar/heading-1 $:/core/ui/EditorToolbar/heading-2 $:/core/ui/EditorToolbar/heading-3 $:/core/ui/EditorToolbar/heading-4 $:/core/ui/EditorToolbar/heading-5 $:/core/ui/EditorToolbar/heading-6 $:/core/ui/EditorToolbar/link $:/core/ui/EditorToolbar/excise $:/core/ui/EditorToolbar/picture $:/core/ui/EditorToolbar/stamp $:/core/ui/EditorToolbar/size $:/core/ui/EditorToolbar/editor-height $:/core/ui/EditorToolbar/more $:/core/ui/EditorToolbar/preview $:/core/ui/EditorToolbar/preview-type\"},\"$:/tags/Manager/ItemMain\":{\"list\":\"$:/Manager/ItemMain/WikifiedText $:/Manager/ItemMain/RawText $:/Manager/ItemMain/Fields\"},\"$:/tags/Manager/ItemSidebar\":{\"list\":\"$:/Manager/ItemSidebar/Tags $:/Manager/ItemSidebar/Colour $:/Manager/ItemSidebar/Icon $:/Manager/ItemSidebar/Tools\"},\"$:/tags/MoreSideBar\":{\"list\":\"[[$:/core/ui/MoreSideBar/All]] [[$:/core/ui/MoreSideBar/Recent]] [[$:/core/ui/MoreSideBar/Tags]] [[$:/core/ui/MoreSideBar/Missing]] [[$:/core/ui/MoreSideBar/Drafts]] [[$:/core/ui/MoreSideBar/Orphans]] [[$:/core/ui/MoreSideBar/Types]] [[$:/core/ui/MoreSideBar/System]] [[$:/core/ui/MoreSideBar/Shadows]] [[$:/core/ui/MoreSideBar/Explorer]] [[$:/core/ui/MoreSideBar/Plugins]]\",\"text\":\"\"},\"$:/tags/PageControls\":{\"list\":\"[[$:/core/ui/Buttons/home]] [[$:/core/ui/Buttons/close-all]] [[$:/core/ui/Buttons/fold-all]] [[$:/core/ui/Buttons/unfold-all]] [[$:/core/ui/Buttons/permaview]] [[$:/core/ui/Buttons/new-tiddler]] [[$:/core/ui/Buttons/new-journal]] [[$:/core/ui/Buttons/new-image]] [[$:/core/ui/Buttons/import]] [[$:/core/ui/Buttons/export-page]] [[$:/core/ui/Buttons/control-panel]] [[$:/core/ui/Buttons/advanced-search]] [[$:/core/ui/Buttons/manager]] [[$:/core/ui/Buttons/tag-manager]] [[$:/core/ui/Buttons/language]] [[$:/core/ui/Buttons/palette]] [[$:/core/ui/Buttons/theme]] [[$:/core/ui/Buttons/layout]] [[$:/core/ui/Buttons/storyview]] [[$:/core/ui/Buttons/encryption]] [[$:/core/ui/Buttons/timestamp]] [[$:/core/ui/Buttons/full-screen]] [[$:/core/ui/Buttons/print]] [[$:/core/ui/Buttons/save-wiki]] [[$:/core/ui/Buttons/refresh]] [[$:/core/ui/Buttons/more-page-actions]]\"},\"$:/tags/PageTemplate\":{\"list\":\"[[$:/core/ui/PageTemplate/topleftbar]] [[$:/core/ui/PageTemplate/toprightbar]] [[$:/core/ui/PageTemplate/sidebar]] [[$:/core/ui/PageTemplate/story]] [[$:/core/ui/PageTemplate/alerts]]\",\"text\":\"\"},\"$:/tags/PluginLibrary\":{\"list\":\"$:/config/OfficialPluginLibrary\"},\"$:/tags/SideBar\":{\"list\":\"[[$:/core/ui/SideBar/Open]] [[$:/core/ui/SideBar/Recent]] [[$:/core/ui/SideBar/Tools]] [[$:/core/ui/SideBar/More]]\",\"text\":\"\"},\"$:/tags/SideBarSegment\":{\"list\":\"[[$:/core/ui/SideBarSegments/site-title]] [[$:/core/ui/SideBarSegments/site-subtitle]] [[$:/core/ui/SideBarSegments/page-controls]] [[$:/core/ui/SideBarSegments/search]] [[$:/core/ui/SideBarSegments/tabs]]\"},\"$:/tags/StoryTiddlerTemplateFilter\":{\"list\":\"$:/config/StoryTiddlerTemplateFilters/draft $:/config/StoryTiddlerTemplateFilters/default\"},\"$:/tags/TiddlerColourFilter\":{\"list\":\"$:/config/TiddlerColourFilters/color-field $:/config/TiddlerColourFilters/default\",\"text\":\"\"},\"$:/tags/TiddlerIconFilter\":{\"list\":\"$:/config/TiddlerIconFilters/icon-field $:/config/TiddlerIconFilters/default\",\"text\":\"\"},\"$:/tags/TiddlerInfo\":{\"list\":\"[[$:/core/ui/TiddlerInfo/Tools]] [[$:/core/ui/TiddlerInfo/References]] [[$:/core/ui/TiddlerInfo/Tagging]] [[$:/core/ui/TiddlerInfo/List]] [[$:/core/ui/TiddlerInfo/Listed]] [[$:/core/ui/TiddlerInfo/Fields]]\",\"text\":\"\"},\"$:/tags/TiddlerInfo/Advanced\":{\"list\":\"[[$:/core/ui/TiddlerInfo/Advanced/ShadowInfo]] [[$:/core/ui/TiddlerInfo/Advanced/PluginInfo]]\"},\"$:/tags/ViewTemplate\":{\"list\":\"[[$:/core/ui/ViewTemplate/title]] [[$:/core/ui/ViewTemplate/unfold]] [[$:/core/ui/ViewTemplate/subtitle]] [[$:/core/ui/ViewTemplate/tags]] [[$:/core/ui/ViewTemplate/classic]] [[$:/core/ui/ViewTemplate/body]]\"},\"$:/tags/ViewTemplateBodyFilter\":{\"list\":\"$:/config/ViewTemplateBodyFilters/hide-body $:/config/ViewTemplateBodyFilters/code-body $:/config/ViewTemplateBodyFilters/stylesheet $:/config/ViewTemplateBodyFilters/system $:/config/ViewTemplateBodyFilters/import $:/config/ViewTemplateBodyFilters/plugin $:/config/ViewTemplateBodyFilters/default\",\"text\":\"\"},\"$:/tags/ViewTemplate/Subtitle\":{\"list\":\"$:/core/ui/ViewTemplate/subtitle/modifier $:/core/ui/ViewTemplate/subtitle/modified\"},\"$:/tags/ViewTemplateTitleFilter\":{\"list\":\"$:/config/ViewTemplateTitleFilters/system $:/config/ViewTemplateTitleFilters/default\",\"text\":\"\"},\"$:/tags/ViewToolbar\":{\"list\":\"[[$:/core/ui/Buttons/more-tiddler-actions]] [[$:/core/ui/Buttons/info]] [[$:/core/ui/Buttons/new-here]] [[$:/core/ui/Buttons/new-journal-here]] [[$:/core/ui/Buttons/clone]] [[$:/core/ui/Buttons/export-tiddler]] [[$:/core/ui/Buttons/edit]] [[$:/core/ui/Buttons/delete]] [[$:/core/ui/Buttons/permalink]] [[$:/core/ui/Buttons/permaview]] [[$:/core/ui/Buttons/open-window]] [[$:/core/ui/Buttons/close-others]] [[$:/core/ui/Buttons/close]] [[$:/core/ui/Buttons/fold-others]] [[$:/core/ui/Buttons/fold]]\"},\"$:/snippets/themeswitcher\":{\"text\":\"\u003C$linkcatcher to='$:/theme'>\u003Cdiv class=tc-chooser>\u003C$list filter=[plugin-type[theme]sort[title]]>\u003C$let cls={{{[{!!title}field:title{$:/theme}][[$:/theme]!has[text]addsuffix[s/tiddlywiki/vanilla]field:title{!!title}]+[nth[]]+[then[tc-chooser-item tc-chosen]else[tc-chooser-item]]}}}>\u003Cdiv class=\u003C\u003Ccls>>>\u003C$link>''\u003C$view field=name format=text/>'' \u003C$view field=description format=text/>\"},\"$:/core/wiki/title\":{\"text\":\"{{$:/SiteTitle}}\\n\u003C$list filter=\\\"[{$:/SiteSubtitle}trim[]minlength[1]]\\\"variable=ignore> --- {{$:/SiteSubtitle}}\"},\"$:/view\":{\"text\":\"classic\"},\"$:/snippets/viewswitcher\":{\"text\":\"\\\\define icon()$:/core/images/storyview-$(storyview)$\\n\u003C$linkcatcher to=\\\"$:/view\\\">\u003Cdiv class=\\\"tc-chooser tc-viewswitcher\\\">\u003C$list filter=[storyviews[]] variable=storyview>\u003C$let cls={{{[\u003Cstoryview>prefix{$:/view}then[tc-chooser-item tc-chosen]else[tc-chooser-item]]}}}>\u003Cdiv class=\u003C\u003Ccls>>>\u003C$button class=\\\"tc-tiddlylink tc-btn-invisible\\\"to=\u003C\u003Cstoryview>>tag=a>\u003C$transclude tiddler=\u003C\u003Cicon>>/>\u003C$text text=\u003C\u003Cstoryview>>/>\"}}}"},
{"created":"20230227044843839","title":"$:/DefaultTiddlers","text":"[[hackerspace--inventario]]","modified":"20230310020602091"},
{"title":"$:/Import","text":"The following tiddlers were imported:\n\n# [[$:/plugins/felixhayashi/topstoryview]]\n# [[$:/plugins/snowgoon88/edit-comptext]]\n# [[$:/plugins/sq/streams-as-editor]]\n# [[$:/plugins/sq/streams-search]]\n# [[$:/plugins/tgrosinger/tw5-checklist]]\n# [[$:/plugins/adithyab/cmplus]]\n# [[$:/plugins/tiddlywiki/codemirror]]\n# [[$:/plugins/tiddlywiki/codemirror-closebrackets]]\n# [[$:/plugins/tiddlywiki/codemirror-closetag]]\n# [[$:/plugins/tiddlywiki/codemirror-fullscreen]]\n# [[$:/plugins/tiddlywiki/codemirror-mode-css]]\n# [[$:/plugins/tiddlywiki/codemirror-mode-javascript]]\n# [[$:/plugins/tiddlywiki/codemirror-mode-markdown]]\n# [[$:/plugins/tiddlywiki/codemirror-mode-xml]]\n# [[$:/plugins/tiddlywiki/codemirror-search-replace]]\n# [[$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced]]\n# [[$:/plugins/kookma/trashbin]]\n# [[$:/plugins/sq/streams]]\n# [[$:/plugins/Gk0Wk/sidebar-resizer]]\n# [[$:/plugins/tiddlywiki/railroad]]\n# [[$:/plugins/wikilabs/link-to-tabs]]","status":"complete"},
{"title":"$:/isEncrypted","text":"no"},
{"created":"20230310003510786","title":"$:/keepstate/dynamictables/20200213/exmp01/style","type":"application/json","text":"{}","modified":"20230310162042854"},
{"created":"20230310003546629","title":"$:/keepstate/dynamictables/Draft of 'Inventory'/style","type":"application/json","text":"{}","modified":"20230310003550611"},
{"text":"{\n \"tiddlers\": {\n \"$:/config/codemirror/autocomplete\": {\n \"title\": \"$:/config/codemirror/autocomplete\",\n \"text\": \"{\\n\\t\\\"Ctrl-Space\\\": \\\"autocomplete\\\"\\n}\",\n \"type\": \"json\",\n \"created\": \"20210328004023360\",\n \"extend\": \"extraKeys\",\n \"modified\": \"20210328004023360\"\n },\n \"$:/plugins/tiddlywiki/codemirror/addon/hint/anyword-hint.js\": {\n \"title\": \"$:/plugins/tiddlywiki/codemirror/addon/hint/anyword-hint.js\",\n \"text\": \"// CodeMirror, copyright (c) by Marijn Haverbeke and others\\n// Distributed under an MIT license: https://codemirror.net/LICENSE\\n\\n(function (mod) {\\n\\tif (typeof exports == \\\"object\\\" && typeof module == \\\"object\\\") // CommonJS\\n\\t\\tmod(require(\\\"../../lib/codemirror\\\"));\\n\\telse if (typeof define == \\\"function\\\" && define.amd) // AMD\\n\\t\\tdefine([\\\"../../lib/codemirror\\\"], mod);\\n\\telse // Plain browser env\\n\\t\\tmod(CodeMirror);\\n})(function (CodeMirror) {\\n\\t\\\"use strict\\\";\\n\\n\\tCodeMirror.registerHelper('hint', 'anyword', function (editor) {\\n\\t\\tvar cur = editor.getCursor();\\n\\t\\tvar curLine = editor.getLine(cur.line);\\n\\t\\tvar start = cur.ch;\\n\\t\\tvar end = start;\\n\\t\\tvar max_length = 30\\n\\n\\t\\tvar escapeChars = ['.', ']', '}', '>']\\n\\t\\tvar stopChars = ['[', '{', '|', '\\\"']\\n\\n\\t\\twhile (start) {\\n\\t\\t\\tvar ch = curLine.charAt(start - 1)\\n\\t\\t\\tif (end - start > max_length || escapeChars.includes(ch)) {\\n\\t\\t\\t\\treturn null\\n\\t\\t\\t}\\n\\t\\t\\tif (!(stopChars.includes(ch))) {\\n\\t\\t\\t\\tstart--;\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tbreak;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\tvar curWord = start !== end && curLine.slice(start, end);\\n\\t\\tif (curLine.charAt(start) == '$') {\\n\\t\\t\\treturn {\\n\\t\\t\\t\\tlist: $tw.wiki.filterTiddlers(`[all[tiddlers]search:title:literal[${curWord}]!prefix[$:/state]]`),\\n\\t\\t\\t\\tfrom: CodeMirror.Pos(cur.line, start),\\n\\t\\t\\t\\tto: CodeMirror.Pos(cur.line, end)\\n\\t\\t\\t}\\n\\t\\t} else {\\n\\t\\t\\treturn {\\n\\t\\t\\t\\tlist: $tw.wiki.filterTiddlers(`[all[tiddlers]!is[system]!is[shadow]search:title:literal[${curWord}]!prefix[$:/state]]`),\\n\\t\\t\\t\\tfrom: CodeMirror.Pos(cur.line, start),\\n\\t\\t\\t\\tto: CodeMirror.Pos(cur.line, end)\\n\\t\\t\\t}\\n\\t\\t}\\n\\t})\\n});\",\n \"created\": \"20210328004232522\",\n \"modified\": \"20210328010801763\",\n \"module-type\": \"codemirror\",\n \"type\": \"application/javascript\"\n },\n \"$:/plugins/tiddlywiki/codemirror/addon/hint/show-hint.css\": {\n \"title\": \"$:/plugins/tiddlywiki/codemirror/addon/hint/show-hint.css\",\n \"text\": \".CodeMirror-hints {\\n position: absolute;\\n z-index: 10;\\n overflow: hidden;\\n list-style: none;\\n\\n margin: 0;\\n padding: 2px;\\n\\n -webkit-box-shadow: 2px 3px 5px rgba(0,0,0,.2);\\n -moz-box-shadow: 2px 3px 5px rgba(0,0,0,.2);\\n box-shadow: 2px 3px 5px rgba(0,0,0,.2);\\n border-radius: 3px;\\n border: 1px solid silver;\\n\\n background: white;\\n font-size: 90%;\\n font-family: monospace;\\n\\n max-height: 20em;\\n overflow-y: auto;\\n}\\n\\n.CodeMirror-hint {\\n margin: 0;\\n padding: 0 4px;\\n border-radius: 2px;\\n white-space: pre;\\n color: black;\\n cursor: pointer;\\n}\\n\\nli.CodeMirror-hint-active {\\n background: #08f;\\n color: white;\\n}\\n\",\n \"created\": \"20210328012141944\",\n \"modified\": \"20210328012141944\",\n \"tags\": \"$:/tags/Stylesheet\",\n \"type\": \"text/css\"\n },\n \"$:/plugins/tiddlywiki/codemirror/addon/hint/show-hint.js\": {\n \"title\": \"$:/plugins/tiddlywiki/codemirror/addon/hint/show-hint.js\",\n \"text\": \"// CodeMirror, copyright (c) by Marijn Haverbeke and others\\n// Distributed under an MIT license: https://codemirror.net/LICENSE\\n! function (t) {\\n \\\"object\\\" == typeof exports && \\\"object\\\" == typeof module ? t(require(\\\"../../lib/codemirror\\\")) : \\\"function\\\" == typeof define && define.amd ? define([\\\"../../lib/codemirror\\\"], t) : t(CodeMirror)\\n}(function (W) {\\n \\\"use strict\\\";\\n var I = \\\"CodeMirror-hint-active\\\";\\n\\n function o(t, i) {\\n this.cm = t, this.options = i, this.widget = null, this.debounce = 0, this.tick = 0, this.startPos = this.cm.getCursor(\\\"start\\\"), this.startLen = this.cm.getLine(this.startPos.line).length - this.cm.getSelection().length;\\n var e = this;\\n t.on(\\\"cursorActivity\\\", this.activityFunc = function () {\\n e.cursorActivity()\\n })\\n }\\n W.showHint = function (t, i, e) {\\n if (!i) return t.showHint(e);\\n e && e.async && (i.async = !0);\\n var n = {\\n hint: i\\n };\\n if (e)\\n for (var o in e) n[o] = e[o];\\n return t.showHint(n)\\n }, W.defineExtension(\\\"showHint\\\", function (t) {\\n t = function (t, i, e) {\\n var n = t.options.hintOptions,\\n o = {};\\n for (var s in l) o[s] = l[s];\\n if (n)\\n for (var s in n) void 0 !== n[s] && (o[s] = n[s]);\\n if (e)\\n for (var s in e) void 0 !== e[s] && (o[s] = e[s]);\\n o.hint.resolve && (o.hint = o.hint.resolve(t, i));\\n return o\\n }(this, this.getCursor(\\\"start\\\"), t);\\n var i = this.listSelections();\\n if (!(1 \u003C i.length)) {\\n if (this.somethingSelected()) {\\n if (!t.hint.supportsSelection) return;\\n for (var e = 0; e \u003C i.length; e++)\\n if (i[e].head.line != i[e].anchor.line) return\\n }\\n this.state.completionActive && this.state.completionActive.close();\\n var n = this.state.completionActive = new o(this, t);\\n n.options.hint && (W.signal(this, \\\"startCompletion\\\", this), n.update(!0))\\n }\\n }), W.defineExtension(\\\"closeHint\\\", function () {\\n this.state.completionActive && this.state.completionActive.close()\\n });\\n var s = window.requestAnimationFrame || function (t) {\\n return setTimeout(t, 1e3 / 60)\\n },\\n c = window.cancelAnimationFrame || clearTimeout;\\n\\n function B(t) {\\n return \\\"string\\\" == typeof t ? t : t.text\\n }\\n\\n function K(t, i) {\\n for (; i && i != t;) {\\n if (\\\"LI\\\" === i.nodeName.toUpperCase() && i.parentNode == t) return i;\\n i = i.parentNode\\n }\\n }\\n\\n function n(o, t) {\\n this.completion = o, this.data = t, this.picked = !1;\\n var e = this,\\n s = o.cm,\\n c = s.getInputField().ownerDocument,\\n r = c.defaultView || c.parentWindow,\\n l = this.hints = c.createElement(\\\"ul\\\"),\\n i = o.cm.options.theme;\\n l.className = \\\"CodeMirror-hints \\\" + i, this.selectedHint = t.selectedHint || 0;\\n for (var n = t.list, h = 0; h \u003C n.length; ++h) {\\n var a = l.appendChild(c.createElement(\\\"li\\\")),\\n u = n[h],\\n f = \\\"CodeMirror-hint\\\" + (h != this.selectedHint ? \\\"\\\" : \\\" \\\" + I);\\n null != u.className && (f = u.className + \\\" \\\" + f), a.className = f, u.render ? u.render(a, t, u) : a.appendChild(c.createTextNode(u.displayText || B(u))), a.hintId = h\\n }\\n var p, d, m, g = o.options.container || c.body,\\n v = s.cursorCoords(o.options.alignWithWord ? t.from : null),\\n y = v.left,\\n w = v.bottom,\\n H = !0,\\n C = 0,\\n b = 0;\\n g !== c.body && (d = (p = -1 !== [\\\"absolute\\\", \\\"relative\\\", \\\"fixed\\\"].indexOf(r.getComputedStyle(g).position) ? g : g.offsetParent).getBoundingClientRect(), m = c.body.getBoundingClientRect(), C = d.left - m.left - p.scrollLeft, b = d.top - m.top - p.scrollTop), l.style.left = y - C + \\\"px\\\", l.style.top = w - b + \\\"px\\\";\\n var k = r.innerWidth || Math.max(c.body.offsetWidth, c.documentElement.offsetWidth),\\n A = r.innerHeight || Math.max(c.body.offsetHeight, c.documentElement.offsetHeight);\\n g.appendChild(l);\\n var x, T, S = l.getBoundingClientRect(),\\n M = S.bottom - A,\\n N = l.scrollHeight > l.clientHeight + 1,\\n F = s.getScrollInfo();\\n 0 \u003C M && (x = S.bottom - S.top, 0 \u003C v.top - (v.bottom - S.top) - x ? (l.style.top = (w = v.top - x - b) + \\\"px\\\", H = !1) : A \u003C x && (l.style.height = A - 5 + \\\"px\\\", l.style.top = (w = v.bottom - S.top - b) + \\\"px\\\", T = s.getCursor(), t.from.ch != T.ch && (v = s.cursorCoords(T), l.style.left = (y = v.left - C) + \\\"px\\\", S = l.getBoundingClientRect())));\\n var E, O = S.right - k;\\n if (0 \u003C O && (S.right - S.left > k && (l.style.width = k - 5 + \\\"px\\\", O -= S.right - S.left - k), l.style.left = (y = v.left - O - C) + \\\"px\\\"), N)\\n for (var P = l.firstChild; P; P = P.nextSibling) P.style.paddingRight = s.display.nativeBarWidth + \\\"px\\\";\\n return s.addKeyMap(this.keyMap = function (t, n) {\\n var o = {\\n Up: function () {\\n n.moveFocus(-1)\\n },\\n Down: function () {\\n n.moveFocus(1)\\n },\\n PageUp: function () {\\n n.moveFocus(1 - n.menuSize(), !0)\\n },\\n PageDown: function () {\\n n.moveFocus(n.menuSize() - 1, !0)\\n },\\n Home: function () {\\n n.setFocus(0)\\n },\\n End: function () {\\n n.setFocus(n.length - 1)\\n },\\n Enter: n.pick,\\n Tab: n.pick,\\n Esc: n.close\\n };\\n /Mac/.test(navigator.platform) && (o[\\\"Ctrl-P\\\"] = function () {\\n n.moveFocus(-1)\\n }, o[\\\"Ctrl-N\\\"] = function () {\\n n.moveFocus(1)\\n });\\n var i = t.options.customKeys,\\n s = i ? {} : o;\\n\\n function e(t, i) {\\n var e = \\\"string\\\" != typeof i ? function (t) {\\n return i(t, n)\\n } : o.hasOwnProperty(i) ? o[i] : i;\\n s[t] = e\\n }\\n if (i)\\n for (var c in i) i.hasOwnProperty(c) && e(c, i[c]);\\n var r = t.options.extraKeys;\\n if (r)\\n for (var c in r) r.hasOwnProperty(c) && e(c, r[c]);\\n return s\\n }(o, {\\n moveFocus: function (t, i) {\\n e.changeActive(e.selectedHint + t, i)\\n },\\n setFocus: function (t) {\\n e.changeActive(t)\\n },\\n menuSize: function () {\\n return e.screenAmount()\\n },\\n length: n.length,\\n close: function () {\\n o.close()\\n },\\n pick: function () {\\n e.pick()\\n },\\n data: t\\n })), o.options.closeOnUnfocus && (s.on(\\\"blur\\\", this.onBlur = function () {\\n E = setTimeout(function () {\\n o.close()\\n }, 100)\\n }), s.on(\\\"focus\\\", this.onFocus = function () {\\n clearTimeout(E)\\n })), s.on(\\\"scroll\\\", this.onScroll = function () {\\n var t = s.getScrollInfo(),\\n i = s.getWrapperElement().getBoundingClientRect(),\\n e = w + F.top - t.top,\\n n = e - (r.pageYOffset || (c.documentElement || c.body).scrollTop);\\n if (H || (n += l.offsetHeight), n \u003C= i.top || n >= i.bottom) return o.close();\\n l.style.top = e + \\\"px\\\", l.style.left = y + F.left - t.left + \\\"px\\\"\\n }), W.on(l, \\\"dblclick\\\", function (t) {\\n var i = K(l, t.target || t.srcElement);\\n i && null != i.hintId && (e.changeActive(i.hintId), e.pick())\\n }), W.on(l, \\\"click\\\", function (t) {\\n var i = K(l, t.target || t.srcElement);\\n i && null != i.hintId && (e.changeActive(i.hintId), o.options.completeOnSingleClick && e.pick())\\n }), W.on(l, \\\"mousedown\\\", function () {\\n setTimeout(function () {\\n s.focus()\\n }, 20)\\n }), this.scrollToActive(), W.signal(t, \\\"select\\\", n[this.selectedHint], l.childNodes[this.selectedHint]), !0\\n }\\n\\n function r(t, i, e, n) {\\n var o;\\n t.async ? t(i, n, e) : (o = t(i, e)) && o.then ? o.then(n) : n(o)\\n }\\n o.prototype = {\\n close: function () {\\n this.active() && (this.cm.state.completionActive = null, this.tick = null, this.cm.off(\\\"cursorActivity\\\", this.activityFunc), this.widget && this.data && W.signal(this.data, \\\"close\\\"), this.widget && this.widget.close(), W.signal(this.cm, \\\"endCompletion\\\", this.cm))\\n },\\n active: function () {\\n return this.cm.state.completionActive == this\\n },\\n pick: function (t, i) {\\n var e = t.list[i],\\n n = this;\\n this.cm.operation(function () {\\n e.hint ? e.hint(n.cm, t, e) : n.cm.replaceRange(B(e), e.from || t.from, e.to || t.to, \\\"complete\\\"), W.signal(t, \\\"pick\\\", e), n.cm.scrollIntoView()\\n }), this.close()\\n },\\n cursorActivity: function () {\\n this.debounce && (c(this.debounce), this.debounce = 0);\\n var t = this.startPos;\\n this.data && (t = this.data.from);\\n var i, e = this.cm.getCursor(),\\n n = this.cm.getLine(e.line);\\n e.line != this.startPos.line || n.length - e.ch != this.startLen - this.startPos.ch || e.ch \u003C t.ch || this.cm.somethingSelected() || !e.ch || this.options.closeCharacters.test(n.charAt(e.ch - 1)) ? this.close() : ((i = this).debounce = s(function () {\\n i.update()\\n }), this.widget && this.widget.disable())\\n },\\n update: function (i) {\\n var e, n;\\n null != this.tick && (n = ++(e = this).tick, r(this.options.hint, this.cm, this.options, function (t) {\\n e.tick == n && e.finishUpdate(t, i)\\n }))\\n },\\n finishUpdate: function (t, i) {\\n this.data && W.signal(this.data, \\\"update\\\");\\n var e = this.widget && this.widget.picked || i && this.options.completeSingle;\\n this.widget && this.widget.close(), (this.data = t) && t.list.length && (e && 1 == t.list.length ? this.pick(t, 0) : (this.widget = new n(this, t), W.signal(t, \\\"shown\\\")))\\n }\\n }, n.prototype = {\\n close: function () {\\n var t;\\n this.completion.widget == this && (this.completion.widget = null, this.hints.parentNode.removeChild(this.hints), this.completion.cm.removeKeyMap(this.keyMap), t = this.completion.cm, this.completion.options.closeOnUnfocus && (t.off(\\\"blur\\\", this.onBlur), t.off(\\\"focus\\\", this.onFocus)), t.off(\\\"scroll\\\", this.onScroll))\\n },\\n disable: function () {\\n this.completion.cm.removeKeyMap(this.keyMap);\\n var t = this;\\n this.keyMap = {\\n Enter: function () {\\n t.picked = !0\\n }\\n }, this.completion.cm.addKeyMap(this.keyMap)\\n },\\n pick: function () {\\n this.completion.pick(this.data, this.selectedHint)\\n },\\n changeActive: function (t, i) {\\n var e;\\n t >= this.data.list.length ? t = i ? this.data.list.length - 1 : 0 : t \u003C 0 && (t = i ? 0 : this.data.list.length - 1), this.selectedHint != t && ((e = this.hints.childNodes[this.selectedHint]) && (e.className = e.className.replace(\\\" \\\" + I, \\\"\\\")), (e = this.hints.childNodes[this.selectedHint = t]).className += \\\" \\\" + I, this.scrollToActive(), W.signal(this.data, \\\"select\\\", this.data.list[this.selectedHint], e))\\n },\\n scrollToActive: function () {\\n var t = this.completion.options.scrollMargin || 0,\\n i = this.hints.childNodes[Math.max(0, this.selectedHint - t)],\\n e = this.hints.childNodes[Math.min(this.data.list.length - 1, this.selectedHint + t)],\\n n = this.hints.firstChild;\\n i.offsetTop \u003C this.hints.scrollTop ? this.hints.scrollTop = i.offsetTop - n.offsetTop : e.offsetTop + e.offsetHeight > this.hints.scrollTop + this.hints.clientHeight && (this.hints.scrollTop = e.offsetTop + e.offsetHeight - this.hints.clientHeight + n.offsetTop)\\n },\\n screenAmount: function () {\\n return Math.floor(this.hints.clientHeight / this.hints.firstChild.offsetHeight) || 1\\n }\\n }, W.registerHelper(\\\"hint\\\", \\\"auto\\\", {\\n resolve: function (t, i) {\\n var e, c = t.getHelpers(i, \\\"hint\\\");\\n if (c.length) {\\n var n = function (t, n, o) {\\n var s = function (t, i) {\\n if (!t.somethingSelected()) return i;\\n for (var e = [], n = 0; n \u003C i.length; n++) i[n].supportsSelection && e.push(i[n]);\\n return e\\n }(t, c);\\n ! function i(e) {\\n if (e == s.length) return n(null);\\n r(s[e], t, o, function (t) {\\n t && 0 \u003C t.list.length ? n(t) : i(e + 1)\\n })\\n }(0)\\n };\\n return n.async = !0, n.supportsSelection = !0, n\\n }\\n return (e = t.getHelper(t.getCursor(), \\\"hintWords\\\")) ? function (t) {\\n return W.hint.fromList(t, {\\n words: e\\n })\\n } : W.hint.anyword ? function (t, i) {\\n return W.hint.anyword(t, i)\\n } : function () {}\\n }\\n }), W.registerHelper(\\\"hint\\\", \\\"fromList\\\", function (t, i) {\\n var e, n = t.getCursor(),\\n o = t.getTokenAt(n),\\n s = W.Pos(n.line, o.start),\\n c = n;\\n o.start \u003C n.ch && /\\\\w/.test(o.string.charAt(n.ch - o.start - 1)) ? e = o.string.substr(0, n.ch - o.start) : (e = \\\"\\\", s = n);\\n for (var r = [], l = 0; l \u003C i.words.length; l++) {\\n var h = i.words[l];\\n h.slice(0, e.length) == e && r.push(h)\\n }\\n if (r.length) return {\\n list: r,\\n from: s,\\n to: c\\n }\\n }), W.commands.autocomplete = W.showHint;\\n var l = {\\n hint: W.hint.auto,\\n completeSingle: !0,\\n alignWithWord: !0,\\n closeCharacters: /[\\\\s()\\\\[\\\\]{};:>,]/,\\n closeOnUnfocus: !0,\\n completeOnSingleClick: !0,\\n container: null,\\n customKeys: null,\\n extraKeys: null\\n };\\n W.defineOption(\\\"hintOptions\\\", null)\\n});\",\n \"created\": \"20210328012150088\",\n \"modified\": \"20210328012150088\",\n \"module-type\": \"codemirror\",\n \"type\": \"application/javascript\"\n },\n \"$:/plugins/tiddlywiki/codemirror/mode/tw5/tw5.css\": {\n \"title\": \"$:/plugins/tiddlywiki/codemirror/mode/tw5/tw5.css\",\n \"created\": \"20200815103937889\",\n \"modified\": \"20210328054714579\",\n \"module-type\": \"codemirror-theme\",\n \"name\": \"cmplus\",\n \"tags\": \"$:/tags/Stylesheet\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"```\\n/*\\nTiddlywiki Metadata\\n----\\nName: $:/plugins/tiddlywiki/codemirror/mode/tw5/tw5.css\\n\\nAdditional Fields - \\nmodule-type: codemirror-theme\\nname: cmplus\\n*/\\n```\\n\\n.cm-s-cmplus{\\n line-height: 1.5em;\\n background: \u003C\u003Ccolour tiddler-editor-background>> !important;\\n color: \u003C\u003Ccolour foreground>> !important;\\n}\\n\\n.cm-s-cmplus .CodeMirror-lines {\\n padding: 8px 0;\\n}\\n\\n.cm-s-cmplus .CodeMirror-linenumber {\\n color: \u003C\u003Ccmcolour linenumber>>;\\n}\\n\\n.cm-s-cmplus .CodeMirror-gutters {\\n background-color: \u003C\u003Ccolour page-background>>;\\n padding-right: 10px;\\n z-index: 3;\\n border: none;\\n}\\n\\n.cm-s-cmplus div.CodeMirror-cursor {\\n border-left: 3px solid \u003C\u003Ccolour very-muted-foreground>>;\\n}\\n\\n.cm-s-cmplus .CodeMirror-activeline-background {\\n background: \u003C\u003Ccolour tiddler-editor-fields-even>>;\\n}\\n\\n.cm-s-cmplus .CodeMirror-selected {\\n background: \u003C\u003Ccmcolour selected>> !important;\\n}\\n\\n.cm-s-cmplus .cm-comment {\\n font-style: italic;\\n color: \u003C\u003Ccolour muted-foreground>>;\\n}\\n\\n.cm-s-cmplus .CodeMirror-matchingbracket {\\n text-decoration: underline;\\n color: \u003C\u003Ccmcolour matching-bracket>> !important;\\n}\\n\\n.cm-s-cmplus .cm-strikethrough {\\n text-decoration-color: \u003C\u003Ccolour very-muted-foreground>>; \\n}\\n\\n.cm-s-cmplus .cm-underlined {\\n text-decoration-line: underline;\\n text-decoration-style: solid;\\n text-decoration-color: \u003C\u003Ccolour very-muted-foreground>>;\\n}\\n\\n.cm-s-cmplus .cm-superscript {\\n vertical-align: super;\\n font-size: 0.7em;\\n line-height: 0.1em;\\n}\\n\\n.cm-s-cmplus .cm-subscript {\\n font-size: 0.7em;\\n line-height: 0.5;\\n}\\n\\n.cm-s-cmplus .cm-macro {\\n color: \u003C\u003Ccmcolour macro>>;\\n font-family: {{$:/themes/tiddlywiki/vanilla/settings/codefontfamily}};\\n}\\n\\n.cm-s-cmplus .cm-keyword {\\n color: \u003C\u003Ccmcolour keyword>>;\\n font-family: {{$:/themes/tiddlywiki/vanilla/settings/codefontfamily}};\\n font-weight: 600;\\n}\\n\\n.cm-s-cmplus .cm-quote {\\n font-style: italic;\\n padding-left: 0.6em;\\n border-left: \u003C\u003Ccmcolour quote>> solid 0.2em;\\n}\\n\\n.cm-s-cmplus .cm-hr {\\n color: \u003C\u003Ccmcolour hr>>;\\n}\\n\\n.cm-s-cmplus .cm-h1 {\\n color: \u003C\u003Ccmcolour h1>>;\\n font-weight: 700;\\n font-size: 1.383em;\\n line-height: 1.802em;\\n}\\n\\n.cm-s-cmplus .cm-h2 {\\n color: \u003C\u003Ccmcolour h2>>;\\n font-weight: 600;\\n font-size: 1.296em;\\n line-height: 1.602em;\\n}\\n\\n.cm-s-cmplus .cm-h3 {\\n color: \u003C\u003Ccmcolour h3>>;\\n font-weight: 500;\\n font-size: 1.215em;\\n line-height: 1.424em;\\n}\\n\\n.cm-s-cmplus .cm-h4 {\\n color: \u003C\u003Ccmcolour h4>>;\\n font-weight: 400;\\n font-size: 1.138em;\\n line-height: 1.266em;\\n}\\n\\n.cm-s-cmplus .cm-h5 {\\n color: \u003C\u003Ccmcolour h5>>;\\n font-weight: 400;\\n font-size: 1.067em;\\n line-height: 1.125em;\\n}\\n\\n.cm-s-cmplus .cm-h6 {\\n color: \u003C\u003Ccmcolour h6>>;\\n font-weight: 400;\\n}\\n\\n.cm-s-cmplus .cm-link {\\n color: \u003C\u003Ccmcolour link>>;\\n text-decoration: none;\\n font-weight: 600;\\n}\\n\\n.cm-s-cmplus .cm-internallink {\\n color: \u003C\u003Ccmcolour internallink>>;\\n font-weight:600;\\n}\\n\\n.cm-s-cmplus .cm-externallink {\\n color: \u003C\u003Ccmcolour externallink>>;\\n text-decoration: underline;\\n}\\n\\n.cm-s-cmplus .cm-transclude {\\n color: \u003C\u003Ccmcolour transclude>>;\\n}\\n\\n.cm-s-cmplus .cm-pre {\\n color: \u003C\u003Ccmcolour pre>>;\\t\\t\\n font-family: {{$:/plugins/adithyab/cmplus/settings##monospace-font}};\\n}\\n\\n.cm-s-cmplus .cm-monospace {\\n color: \u003C\u003Ccmcolour monospace>>;\\n font-family: {{$:/plugins/adithyab/cmplus/settings##monospace-font}};\\n}\\n\\n.cm-s-cmplus .cm-list1 {\\n color: \u003C\u003Ccmcolour list1>>;\\n padding-left: 1em;\\n padding-right: 0.5em;\\n font-family: {{$:/themes/tiddlywiki/vanilla/settings/codefontfamily}};\\n}\\n\\n.cm-s-cmplus .cm-list2 {\\n color: \u003C\u003Ccmcolour list2>>;\\n padding-left: 2em;\\n padding-right: 0.5em;\\n font-family: {{$:/themes/tiddlywiki/vanilla/settings/codefontfamily}};\\n}\\n\\n.cm-s-cmplus .cm-list3 {\\n color: \u003C\u003Ccmcolour list3>>;\\n padding-left: 3em;\\n padding-right: 0.5em;\\n font-family: {{$:/themes/tiddlywiki/vanilla/settings/codefontfamily}};\\n}\\n\\n.cm-s-cmplus .cm-list4 {\\n color: \u003C\u003Ccmcolour list4>>;\\n padding-left: 4em;\\n padding-right: 0.5em;\\n font-family: {{$:/themes/tiddlywiki/vanilla/settings/codefontfamily}};\\n}\\n\\n.cm-s-cmplus .cm-list5 {\\n color: \u003C\u003Ccmcolour list5>>;\\n padding-left: 5em;\\n padding-right: 0.5em;\\n font-family: {{$:/themes/tiddlywiki/vanilla/settings/codefontfamily}};\\n}\"\n },\n \"$:/plugins/tiddlywiki/codemirror/mode/tw5/tw5.js\": {\n \"title\": \"$:/plugins/tiddlywiki/codemirror/mode/tw5/tw5.js\",\n \"text\": \"// CodeMirror, copyright (c) by Marijn Haverbeke and others\\n// Distributed under an MIT license: https://codemirror.net/LICENSE\\n\\n/***\\n\\n|''Name''|tw5.js|\\n|''Description''|Enables TiddlyWikiy syntax highlighting using CodeMirror|\\n|''Original Contributor''|PMario|\\n|''Author''|[[adithya-badidey|https://github.com/adithya-badidey]]|\\n|''Version''|0.1.8|\\n|''Status''|''stable''|\\n|''Source''|[[GitHub|https://github.com/adithya-badidey/TW5-codemirror-plus]]|\\n|''Documentation''|https://codemirror.tiddlyspace.com/|\\n|''License''|[[MIT License|http://www.opensource.org/licenses/mit-license.php]]|\\n|''Requires''|codemirror.js|\\n|''Keywords''|syntax highlighting color code mirror codemirror|\\n\\n!! Tiddlywiki Metadata\\nName: $:/plugins/tiddlywiki/codemirror/mode/tw5/tw5.js\\nType: application/javascript\\nAdditional Field:\\nmodule-type: codemirror\\n \\nInfo: CoreVersion parameter is needed for TiddlyWiki only!\\n\\n***/\\n\\n(function (mod) {\\n if (typeof exports == \\\"object\\\" && typeof module == \\\"object\\\") // CommonJS\\n mod(require(\\\"../../lib/codemirror\\\"));\\n else if (typeof define == \\\"function\\\" && define.amd) // AMD\\n define([\\\"../../lib/codemirror\\\"], mod);\\n else // Plain browser env\\n mod(CodeMirror);\\n})(function (CodeMirror) {\\n \\\"use strict\\\";\\n\\n CodeMirror.defineMode(\\\"tiddlywiki5\\\", function () {\\n // Tokenizer\\n var textwords = {};\\n\\n var keywords = {\\n \\\"changecount\\\": true, \\\"colour\\\": true,\\n \\\"colour-picker\\\": true, \\\"contrastcolour\\\": true,\\n \\\"copy-to-clipboard\\\": true, \\\"csvtiddlers\\\": true,\\n \\\"datauri\\\": true, \\\"dumpvariables\\\": true,\\n \\\"image-picker\\\": true, \\\"jsontiddler\\\": true,\\n \\\"jsontiddlers\\\": true, \\\"lingo\\\": true,\\n \\\"list-links\\\": true, \\\"list-links-draggable\\\": true,\\n \\\"list-tagged-draggable\\\": true, \\\"list-thumbnails\\\": true,\\n \\\"makedatauri\\\": true, \\\"now\\\": true,\\n \\\"qualify\\\": true, \\\"resolvepath\\\": true,\\n \\\"box-shadow\\\": true, \\\"filter\\\": true,\\n \\\"transition\\\": true, \\\"background-linear-gradient\\\": true,\\n \\\"transform-origin\\\": true, \\\"toc\\\": true,\\n \\\"toc-expandable\\\": true, \\\"toc-selective-expandable\\\": true,\\n \\\"toc-tabbed-internal-nav\\\": true, \\\"toc-tabbed-external-nav\\\": true,\\n \\\"tabs\\\": true, \\\"tag\\\": true,\\n \\\"tag-picker\\\": true, \\\"tag-pill\\\": true,\\n \\\"thumbnail\\\": true, \\\"timeline\\\": true,\\n \\\"tree\\\": true, \\\"unusedtitle\\\": true,\\n \\\"version\\\": true\\n };\\n\\n var isSpaceName = /[\\\\w_\\\\-]/i,\\n reHR = /^\\\\-\\\\-\\\\-\\\\-+$/, // \u003Chr>\\n reBlockQuote = /^\u003C\u003C\u003C/,\\n rePreStart = /^```$/;\\n\\n function chain(stream, state, f) {\\n state.tokenize = f;\\n return f(stream, state);\\n }\\n\\n function tokenBase(stream, state) {\\n var sol = stream.sol(), // sol() -> Returns true only if the stream is at the start of the line.\\n ch = stream.peek(); // Returns the next character in the stream without advancing it. Will return a null at the end of the line.\\n\\n // check start of blocks\\n if (sol && /[\u003C\\\\/\\\\*{}\\\\-`]/.test(ch)) { //is at the start of a line and the next char is not\\n if (stream.match(reBlockQuote)) {\\n return chain(stream, state, twTokenQuote);\\n }\\n \\n if (stream.match(reHR))\\n return 'hr';\\n\\n if (stream.match(rePreStart))\\n return chain(stream, state, twTokenPre);\\n }\\n\\n stream.next();\\n if (sol && /[\\\\/\\\\*!#;:>|]/.test(ch)) {\\n if (ch == \\\"!\\\") { // tw header\\n var count = 1;\\n while (stream.eat('!'))\\n count++;\\n stream.skipToEnd();\\n return \\\"h\\\" + count;\\n }\\n\\n if (ch == \\\"*\\\" || ch == \\\"#\\\") { // tw list\\n var count = 1;\\n while (stream.eat('*') || stream.eat('#'))\\n count++;\\n return \\\"list\\\" + count;\\n }\\n if (ch == \\\";\\\") { // definition list, term\\n stream.eatWhile(';');\\n return \\\"list1\\\";\\n }\\n if (ch == \\\":\\\") { // definition list, description\\n stream.eatWhile(':');\\n return \\\"list2\\\";\\n }\\n if (ch == \\\">\\\") { // single line quote\\n stream.eatWhile(\\\">\\\");\\n return \\\"quote\\\";\\n }\\n if (ch == '|')\\n return 'header';\\n }\\n\\n // rudimentary html:// file:// link matching. TW knows much more ...\\n if (/[hf]/i.test(ch) &&\\n /[ti]/i.test(stream.peek()) &&\\n stream.match(/\\\\b(ttps?|tp|ile):\\\\/\\\\/[\\\\-A-Z0-9+&@#\\\\/%?=~_|$!:,.;]*[A-Z0-9+&@#\\\\/%=~_|$]/i, true))\\n return \\\"externallink\\\";\\n\\n if (ch == '`') { //\\n return chain(stream, state, twTokenMonospace);\\n }\\n\\n if (ch == \\\"/\\\" && stream.eat(\\\"/\\\")) { //\\n return chain(stream, state, twTokenEm);\\n }\\n\\n if (ch == \\\"{\\\" && stream.eat(\\\"{\\\")) \\n return chain(stream, state, twTranslclude);\\n\\n if (ch == \\\"[\\\" && stream.eat(\\\"[\\\")) // tw InternalLink\\n return chain(stream, state, twInternalLink);\\n\\n if (ch == \\\"_\\\" && stream.eat(\\\"_\\\")) // tw underline\\n return chain(stream, state, twTokenUnderline);\\n\\n if (ch == \\\"^\\\" && stream.eat(\\\"^\\\"))\\n return chain(stream, state, twSuperscript);\\n\\n if (ch == \\\",\\\" && stream.eat(\\\",\\\")) // tw underline\\n return chain(stream, state, twSubscript);\\n\\n // tw strikethrough\\n if (ch == \\\"~\\\" && stream.eat(\\\"~\\\")) {\\n return chain(stream, state, twTokenStrike);\\n }\\n\\n if (ch == \\\"'\\\" && stream.eat(\\\"'\\\")) // tw bold\\n return chain(stream, state, twTokenStrong);\\n\\n if (ch == \\\"\u003C\\\" && stream.eat(\\\"\u003C\\\")) // tw macro\\n return chain(stream, state, twTokenMacro);\\n\\n return null\\n }\\n\\n // // tw invisible comment\\n // function twTokenComment(stream, state) {\\n // var maybeEnd = false, ch;\\n // while (ch = stream.next()) {\\n // if (ch == \\\"/\\\" && maybeEnd) {\\n // state.tokenize = tokenBase;\\n // break;\\n // }\\n // maybeEnd = (ch == \\\"%\\\");\\n // }\\n // return \\\"comment\\\";\\n // }\\n\\n // tw strong / bold\\n function twTokenStrong(stream, state) {\\n var maybeEnd = false,\\n ch;\\n while (ch = stream.next()) {\\n if (ch == \\\"'\\\" && maybeEnd) {\\n state.tokenize = tokenBase;\\n break;\\n }\\n maybeEnd = (ch == \\\"'\\\");\\n }\\n return \\\"strong\\\";\\n }\\n\\n function twTokenMonospace(stream, state) {\\n var ch;\\n while (ch = stream.next()) {\\n if (ch == \\\"`\\\") {\\n state.tokenize = tokenBase;\\n break;\\n }\\n }\\n return \\\"monospace\\\";\\n }\\n\\n // tw em / italic\\n function twTokenEm(stream, state) {\\n var maybeEnd = false,\\n ch;\\n while (ch = stream.next()) {\\n if (ch == \\\"/\\\" && maybeEnd) {\\n state.tokenize = tokenBase;\\n break;\\n }\\n maybeEnd = (ch == \\\"/\\\");\\n }\\n return \\\"em\\\";\\n }\\n\\n // tw transclusions\\n function twTranslclude(stream, state) {\\n var maybeEnd = false,\\n ch;\\n while (ch = stream.next()) {\\n if (ch == \\\"}\\\" && maybeEnd) {\\n state.tokenize = tokenBase;\\n break;\\n }\\n maybeEnd = (ch == \\\"}\\\");\\n }\\n return \\\"transclude\\\";\\n }\\n\\n // tw internal links\\n function twInternalLink(stream, state) {\\n if (stream.current() == '[[') {\\n state.pastDivider = false;\\n // console.log(\\\"Start of link\\\");\\n return 'link';\\n }\\n if (stream.peek() == ']') {\\n stream.next()\\n if(stream.next() == ']') {\\n state.tokenize = tokenBase;\\n // console.log(\\\"End of link\\\");\\n return 'link';\\n }\\n }\\n var pastDivider = state.pastDivider,\\n ch;\\n while (ch = stream.peek()) {\\n // console.log(\\\"Peeking :\\\" + ch);\\n if (!pastDivider && ch=='|') {\\n stream.next();\\n state.pastDivider = true;\\n // console.log(\\\"Past the divider\\\");\\n return 'link';\\n }\\n if (ch == \\\"]\\\" && stream.peek() == \\\"]\\\") {\\n // console.log(\\\"Found end of link\\\");\\n return \\\"internallink\\\";\\n }\\n ch = stream.next();\\n if (/[hf]/i.test(ch) &&\\n /[ti]/i.test(stream.peek()) &&\\n stream.match(/\\\\b(ttps?|tp|ile):\\\\/\\\\/[\\\\-A-Z0-9+&@#\\\\/%?=~_|$!:,.;]*[A-Z0-9+&@#\\\\/%=~_|$]/i, true)) {\\n // console.log(\\\"Found external link\\\");\\n return \\\"externallink\\\";\\n }\\n stream.eatWhile(/[^|\\\\]]/);\\n }\\n return null;\\n }\\n\\n // tw underlined text\\n function twTokenUnderline(stream, state) {\\n var maybeEnd = false,\\n ch;\\n while (ch = stream.next()) {\\n if (ch == \\\"_\\\" && maybeEnd) {\\n state.tokenize = tokenBase;\\n break;\\n }\\n maybeEnd = (ch == \\\"_\\\");\\n }\\n return \\\"underlined\\\";\\n }\\n\\n function twSubscript(stream, state) {\\n var maybeEnd = false, ch;\\n\\n while (ch = stream.next()) {\\n if (ch == \\\",\\\" && maybeEnd) {\\n state.tokenize = tokenBase;\\n break;\\n }\\n maybeEnd = (ch == \\\",\\\");\\n }\\n return \\\"subscript\\\";\\n }\\n\\n function twSuperscript(stream, state) {\\n var maybeEnd = false, ch;\\n\\n while (ch = stream.next()) {\\n if (ch == \\\"^\\\" && maybeEnd) {\\n state.tokenize = tokenBase;\\n break;\\n }\\n maybeEnd = (ch == \\\"^\\\");\\n }\\n return \\\"superscript\\\";\\n }\\n\\n function twTokenStrike(stream, state) {\\n var maybeEnd = false, ch;\\n\\n while (ch = stream.next()) {\\n if (ch == \\\"~\\\" && maybeEnd) {\\n state.tokenize = tokenBase;\\n break;\\n }\\n maybeEnd = (ch == \\\"~\\\");\\n }\\n return \\\"strikethrough\\\";\\n }\\n\\n function twTokenPre(stream, state) {\\n var sol = stream.sol(), maybeEnd = false, surelyend = false, ch;\\n while (ch = stream.next()) {\\n if (ch == '`' && surelyend && stream.eol()) {\\n stream.next();\\n state.tokenize = tokenBase;\\n return \\\"pre\\\";\\n }\\n surelyend = (maybeEnd && (ch == '`'));\\n maybeEnd = (sol && ch == '`');\\n sol = stream.sol();\\n }\\n return \\\"pre\\\";\\n }\\n\\n function twTokenQuote(stream, state) {\\n var sol = stream.sol(), maybeEnd = false, surelyend = false, ch;\\n while (ch = stream.next()) {\\n if (ch == '\u003C' && surelyend) {\\n stream.skipToEnd();\\n state.tokenize = tokenBase;\\n return \\\"quote\\\";\\n }\\n surelyend = (maybeEnd && (ch == '\u003C'));\\n maybeEnd = (sol && ch == '\u003C');\\n sol = stream.sol();\\n }\\n return \\\"quote\\\";\\n }\\n\\n\\n function twTokenMacro(stream, state) {\\n if (stream.current() == '\u003C\u003C') {\\n return 'macro';\\n }\\n\\n var ch = stream.next();\\n if (!ch) {\\n state.tokenize = tokenBase;\\n return null;\\n }\\n if (ch == \\\">\\\") {\\n if (stream.peek() == '>') {\\n stream.next();\\n state.tokenize = tokenBase;\\n return \\\"macro\\\";\\n }\\n }\\n\\n stream.eatWhile(/[\\\\w\\\\$_]/);\\n return keywords.propertyIsEnumerable(stream.current()) ? \\\"keyword\\\" : \\\"macro\\\"\\n }\\n\\n // Interface\\n return {\\n startState: function () {\\n return { tokenize: tokenBase };\\n },\\n\\n token: function (stream, state) {\\n if (stream.eatSpace()) return null;\\n var style = state.tokenize(stream, state);\\n return style;\\n }\\n };\\n });\\n\\n CodeMirror.defineMIME(\\\"text/vnd.tiddlywiki\\\", \\\"tiddlywiki5\\\");\\n});\",\n \"created\": \"20200818164318584\",\n \"modified\": \"20210327052450347\",\n \"module-type\": \"codemirror\",\n \"revision\": \"1\",\n \"type\": \"application/javascript\"\n },\n \"$:/plugins/adithyab/cmplus/macros\": {\n \"title\": \"$:/plugins/adithyab/cmplus/macros\",\n \"created\": \"20210328020051916\",\n \"modified\": \"20210328053732117\",\n \"tags\": \"$:/tags/Macro\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\\\\define cmcolour(name)\\n{{$:/plugins/adithyab/cmplus/settings##$name$}}\\n\\\\end\"\n },\n \"$:/plugins/adithyab/cmplus/readme\": {\n \"title\": \"$:/plugins/adithyab/cmplus/readme\",\n \"created\": \"20210328060842133\",\n \"modified\": \"20210328060929665\",\n \"tags\": \"\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"!! TW5 CodeMirrorPlus\\nTowards making a better editor for TiddlyWiki5.\\n\"\n },\n \"$:/plugins/adithyab/cmplus/settings\": {\n \"title\": \"$:/plugins/adithyab/cmplus/settings\",\n \"text\": \"monospace-font:monospace,\\\"Courier New\\\"\\nselected:rgba(100,100,100,0.3)\\nlinenumber:\u003C\u003Ccolour primary>>\\nkeyword:\u003C\u003Ccolour code-foreground>>\\nmacro:\u003C\u003Ccolour code-foreground>>\\nquote:\u003C\u003Ccolour primary>>\\npre:\u003C\u003Ccolour foreground>>\\nexternallink:\u003C\u003Ccolour external-link-foreground>>\\ninternallink:\u003C\u003Ccolour tiddler-title-foreground>>\\nlink:\u003C\u003Ccolour tiddler-title-foreground>>\\ntransclude:\u003C\u003Ccolour tiddler-title-foreground>>\\nmonospace:\u003C\u003Ccolour foreground>>\\nlist1:\u003C\u003Ccolour primary>>\\nlist2:\u003C\u003Ccolour primary>>\\nlist3:\u003C\u003Ccolour primary>>\\nlist4:\u003C\u003Ccolour primary>>\\nlist5:\u003C\u003Ccolour primary>>\\nlist6:\u003C\u003Ccolour primary>>\\nh1:\u003C\u003Ccolour primary>>\\nh2:\u003C\u003Ccolour primary>>\\nh3:\u003C\u003Ccolour primary>>\\nh4:\u003C\u003Ccolour primary>>\\nh5:\u003C\u003Ccolour primary>>\\nh6:\u003C\u003Ccolour primary>>\\nhr:\u003C\u003Ccolour primary>>\",\n \"type\": \"application/x-tiddler-dictionary\",\n \"created\": \"20210328015904035\",\n \"modified\": \"20210328054754059\",\n \"tags\": \"\"\n }\n }\n}","bag":"default","revision":"0","version":"0.2.2","type":"application/json","title":"$:/plugins/adithyab/cmplus","tags":"CodeMirror","plugin-type":"plugin","name":"CMPlus","modified":"20210327052806122","description":"A better editor for TW5 - built on the Official CodeMirror Plugin","dependents":"$:/plugins/tiddlywiki/codemirror","created":"20210327052508762"},
{"text":"{\n \"tiddlers\": {\n \"$:/plugins/danielo515/2click2edit/ClickListener.js\": {\n \"text\": \"/*\\\\\\ntitle: $:/plugins/danielo515/2click2edit/ClickListener.js\\ntype: application/javascript\\nmodule-type: widget\\n\\nThis widgets adds an double click event listener to its parent\\n\\n\\\\*/\\n\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nvar Widget = require(\\\"$:/core/modules/widgets/widget.js\\\").widget;\\n\\nvar ClickListener = function(parseTreeNode,options) {\\n\\tthis.initialise(parseTreeNode,options);\\n};\\n\\n/*\\nInherit from the base widget class\\n*/\\nClickListener.prototype = new Widget();\\n\\n/*\\nRender this widget into the DOM\\n*/\\nClickListener.prototype.render = function(parent,nextSibling) {\\n\\tthis.parentDomNode = parent;\\n\\tthis.execute();\\n\\tvar self = this;\\n /*Since the event listener have been added to the parent, the \\\"this\\\" property is pointing to the\\n wrong object, we should call our edit function with our widget object set as the this property.*/\\n parent.addEventListener(\\\"dblclick\\\",function(event){self.editTiddler.call(self,event)});\\n};\\n\\nClickListener.prototype.editTiddler = function(event) {\\n this.dispatchEvent({type: \\\"tm-edit-tiddler\\\", param: this.getVariable(\\\"currentTiddler\\\")}); \\n};\\n\\n/*\\nCompute the internal state of the widget\\n*/\\nClickListener.prototype.execute = function() {\\n};\\n\\n/*\\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\\n*/\\nClickListener.prototype.refresh = function(changedTiddlers) {\\n\\treturn false;\\n};\\n\\nexports.click = ClickListener;\\n\\n})();\",\n \"title\": \"$:/plugins/danielo515/2click2edit/ClickListener.js\",\n \"type\": \"application/javascript\",\n \"module-type\": \"widget\"\n },\n \"$:/plugins/danielo515/2click2edit/readme\": {\n \"title\": \"$:/plugins/danielo515/2click2edit/readme\",\n \"text\": \"This plugin adds the ability to edit tiddlers by double clicking on its body.\\nJust try to edit any tiddler shown here by double clicking on it.\\n\\nThis can be considered a fast solution. It is only to fill the gap until TiddlyWiki adds support \\nfor it officially.\\n\"\n },\n \"$:/plugins/danielo515/2click2edit/ui/ViewTemplate\": {\n \"tags\": \"$:/tags/ViewTemplate\",\n \"title\": \"$:/plugins/danielo515/2click2edit/ui/ViewTemplate\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\u003C$click>\"\n }\n }\n}","version":"0.1","type":"application/json","title":"$:/plugins/danielo515/2click2edit","source":"https://github.com/danielo515/TW5-2click2edit","revision":"0","plugin-type":"plugin","list":"readme","description":"double click to edit tiddlers","dependents":"","core-version":">=5.1.0","bag":"default","author":"Danielo Rodriguez"},
{"text":"{\n \"tiddlers\": {\n \"$:/plugins/felixhayashi/respawn/respawn.js\": {\n \"title\": \"$:/plugins/felixhayashi/respawn/respawn.js\",\n \"text\": \"/*\\\\\\n\\ntitle: $:/plugins/felixhayashi/respawn/respawn.js\\ntype: application/javascript\\nmodule-type: startup\\n\\n@preserve\\n\\n\\\\*/\\n\\n(function(){\\n \\n /*jslint node: true, browser: true */\\n /*global $tw: false */\\n \\\"use strict\\\";\\n \\n var configTRef = \\\"$:/plugins/felixhayashi/respawn/config\\\";\\n \\n var changeListener = function(changedTiddlers) {\\n \\n if(!changedTiddlers[\\\"$:/StoryList\\\"]) return;\\n \\n var tObj = $tw.wiki.getTiddler(\\\"$:/StoryList\\\");\\n if(tObj && !tObj.fields[\\\"list\\\"].length) {\\n \\n var confTObj = $tw.wiki.getTiddler(configTRef);\\n var config = confTObj ? confTObj.fields : {};\\n \\n window.setTimeout(function() {\\n $tw.rootWidget.dispatchEvent({\\n type: \\\"tm-home\\\"\\n });\\n }, parseInt(config.delay) || 500);\\n }\\n \\n };\\n \\n exports.name = \\\"respawn\\\";\\n exports.platforms = [\\\"browser\\\"];\\n exports.after = [\\\"story\\\"];\\n exports.synchronous = true;\\n \\n exports.startup = function() {\\n \\n $tw.wiki.addEventListener(\\\"change\\\", changeListener);\\n \\n };\\n\\n})();\\n\",\n \"type\": \"application/javascript\",\n \"module-type\": \"startup\"\n },\n \"$:/plugins/felixhayashi/respawn/Configuration\": {\n \"title\": \"$:/plugins/felixhayashi/respawn/Configuration\",\n \"text\": \"\u003C!-- The config output is not written to this tiddler! -->\\n\\nPlease see the [[GitHub page|https://github.com/felixhayashi/TW5-Respawn]] for more information on the options.\\n\\nYou may have to save and reload the wiki to activate changes.\\n\\n\u003Ctable>\\n \u003Ctr>\\n \u003Cth align=\\\"left\\\">Delay (seconds):\u003C/th>\\n \u003Ctd>\\n \u003C$edit-text\\n tiddler=\\\"$:/plugins/felixhayashi/respawn/config\\\"\\n field=\\\"delay\\\"\\n tag=\\\"input\\\"\\n default=\\\"500\\\" />\\n \u003C/td>\\n \u003C/tr>\\n\u003C/table>\"\n },\n \"$:/plugins/felixhayashi/respawn/License\": {\n \"title\": \"$:/plugins/felixhayashi/respawn/License\",\n \"text\": \"This code is released under the BSD license. For the exact terms visit:\\n\\nhttps://github.com/felixhayashi/TW5-Respawn/blob/master/LICENSE\"\n },\n \"$:/plugins/felixhayashi/respawn/Readme\": {\n \"title\": \"$:/plugins/felixhayashi/respawn/Readme\",\n \"text\": \"Please visit the [[GitHub page|https://github.com/felixhayashi/TW5-Respawn]] for more information.\"\n }\n }\n}","version":"0.0.3","type":"application/json","title":"$:/plugins/felixhayashi/respawn","source":"https://github.com/felixhayashi/TW5-respawn","released":"","plugin-type":"plugin","list":"Configuration License Readme","description":"Respawn Open default tiddlers when river is empty","dependents":"","core-version":">=5.1.5","author":"Felix Küppers"},
{"text":"{\n \"tiddlers\": {\n \"$:/plugins/felixhayashi/topstoryview/config.js\": {\n \"text\": \"/*\\\\\\n\\ntitle: $:/plugins/felixhayashi/topstoryview/config.js\\ntype: application/javascript\\nmodule-type: library\\n\\n@preserve\\n\\n\\\\*/\\n(function(){\\\"use strict\\\";exports.config={classNames:{storyRiver:\\\"tc-story-river\\\",backDrop:\\\"story-backdrop\\\",tiddlerFrame:\\\"tc-tiddler-frame\\\",tiddlerTitle:\\\"tc-title\\\"},references:{userConfig:\\\"$:/config/topStoryView\\\",focussedTiddlerStore:\\\"$:/temp/focussedTiddler\\\",refreshTrigger:\\\"$:/temp/focussedTiddler/refresh\\\"},checkbackTime:$tw.utils.getAnimationDuration()}})();\",\n \"title\": \"$:/plugins/felixhayashi/topstoryview/config.js\",\n \"type\": \"application/javascript\",\n \"module-type\": \"library\"\n },\n \"$:/plugins/felixhayashi/topstoryview/layout\": {\n \"title\": \"$:/plugins/felixhayashi/topstoryview/layout\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"tags\": [\n \"$:/tags/Stylesheet\"\n ],\n \"text\": \"html .tc-story-river:after {\\n content: \\\"\\\";\\n display: block; }\\n\"\n },\n \"$:/plugins/felixhayashi/topstoryview/Configuration\": {\n \"title\": \"$:/plugins/felixhayashi/topstoryview/Configuration\",\n \"text\": \"Please see the [[GitHub page|https://github.com/felixhayashi/TW5-TopStoryView]] for more information on the options.\\n\\nSave and reload the wiki to activate changes.\\n\\n\u003Ctable>\\n \u003Ctr>\\n \u003Cth align=\\\"left\\\">Scroll offset:\u003C/th>\\n \u003Ctd>\u003C$edit-text tiddler=\\\"$:/config/topStoryView\\\" field=\\\"scroll-offset\\\" tag=\\\"input\\\" default=\\\"150px\\\" />\u003C/td>\\n \u003C/tr>\\n\u003C/table>\"\n },\n \"$:/plugins/felixhayashi/topstoryview/License\": {\n \"title\": \"$:/plugins/felixhayashi/topstoryview/License\",\n \"text\": \"This code is released under the BSD license. For the exact terms visit:\\n\\nhttps://github.com/felixhayashi/TW5-TopStoryView/blob/master/LICENSE\"\n },\n \"$:/plugins/felixhayashi/topstoryview/Readme\": {\n \"title\": \"$:/plugins/felixhayashi/topstoryview/Readme\",\n \"text\": \"Please visit the [[GitHub page|https://github.com/felixhayashi/TW5-TopStoryView]] for more information.\"\n },\n \"$:/plugins/felixhayashi/topstoryview/top.js\": {\n \"text\": \"/*\\\\\\ntitle: $:/plugins/felixhayashi/topstoryview/top.js\\ntype: application/javascript\\nmodule-type: storyview\\n\\nViews the story as a linear sequence\\n\\n@preserve\\n\\n\\\\*/\\n(function(){\\\"use strict\\\";var t=require(\\\"$:/plugins/felixhayashi/topstoryview/config.js\\\").config;var e=\\\"cubic-bezier(0.645, 0.045, 0.355, 1)\\\";var i=function(e){this.listWidget=e;this.pageScroller=new $tw.utils.PageScroller;this.pageScroller.scrollIntoView=this.scrollIntoView;this.pageScroller.storyRiverDomNode=document.getElementsByClassName(t.classNames.storyRiver)[0];var i=$tw.wiki.getTiddler(t.references.userConfig);var o=i?i.fields:{};$tw.hooks.addHook(\\\"th-opening-default-tiddlers-list\\\",this.hookOpenDefaultTiddlers);var r=parseInt(o[\\\"scroll-offset\\\"]);this.pageScroller.scrollOffset=isNaN(r)?71:r;this.recalculateBottomSpace()};i.prototype.refreshStart=function(t,e){};i.prototype.refreshEnd=function(t,e){};i.prototype.hookOpenDefaultTiddlers=function(t){return t};i.prototype.navigateTo=function(t){var e=this.listWidget.findListItem(0,t.title);if(e===undefined)return;var i=this.listWidget.children[e];var o=i.findFirstDomNode();if(!(o instanceof Element))return;this.pageScroller.scrollIntoView(o)};i.prototype.insert=function(t){if(!t)return;var e=t.findFirstDomNode();if(!(e instanceof Element))return;this.startInsertAnimation(e,function(){this.recalculateBottomSpace()}.bind(this))};i.prototype.remove=function(t){if(!t)return;var e=t.findFirstDomNode();if(!(e instanceof Element)){t.removeChildDomNodes();return}var i=this.getLastFrame()===e;this.startRemoveAnimation(t,e,function(){t.removeChildDomNodes();this.recalculateBottomSpace();if(i){this.pageScroller.scrollIntoView(this.getLastFrame())}}.bind(this))};i.prototype.getLastFrame=function(){var t=this.listWidget.children[this.listWidget.children.length-1];return t?t.findFirstDomNode():null};i.prototype.recalculateBottomSpace=function(){var t=this.pageScroller.storyRiverDomNode;if(this.getLastFrame()){var e=this.getLastFrame().getBoundingClientRect();var i=window.innerHeight;if(e.height\u003Ci){t.style[\\\"paddingBottom\\\"]=i-e.height+\\\"px\\\";return}}t.style[\\\"paddingBottom\\\"]=\\\"\\\"};i.prototype.scrollIntoView=function(t){if(this.preventNextScrollAttempt){this.preventNextScrollAttempt=false}if(!t)return;var e=$tw.utils.getAnimationDuration();this.cancelScroll();this.startTime=Date.now();var i=$tw.utils.getScrollPosition();var o=t.getBoundingClientRect(),r={left:o.left+i.x,top:o.top+i.y,width:o.width,height:o.height};var n=function(t,e,i,o){if(t\u003C=i){return t}else if(e\u003Co&&i\u003Ct+e-o){return t+e-o}else if(i\u003Ct){return t}else{return i}},s=n(r.left,r.width,i.x,window.innerWidth),a=r.top-this.scrollOffset;if(s!==i.x||a!==i.y){var l=this,c;c=function(){var t;if(e\u003C=0){t=1}else{t=(Date.now()-l.startTime)/e}if(t>=1){l.cancelScroll();t=1}t=$tw.utils.slowInSlowOut(t);window.scrollTo(i.x+(s-i.x)*t,i.y+(a-i.y)*t);if(t\u003C1){l.idRequestFrame=l.requestAnimationFrame.call(window,c)}};c()}};i.prototype.startInsertAnimation=function(t,i){var o=$tw.utils.getAnimationDuration();var r=window.getComputedStyle(t),n=parseInt(r.marginBottom,10),s=parseInt(r.marginTop,10),a=t.offsetHeight+s;setTimeout(function(){$tw.utils.setStyle(t,[{transition:\\\"none\\\"},{marginBottom:\\\"\\\"}]);i()},o);$tw.utils.setStyle(t,[{transition:\\\"none\\\"},{marginBottom:-a+\\\"px\\\"},{opacity:\\\"0.0\\\"}]);$tw.utils.forceLayout(t);$tw.utils.setStyle(t,[{transition:\\\"opacity \\\"+o+\\\"ms \\\"+e+\\\", \\\"+\\\"margin-bottom \\\"+o+\\\"ms \\\"+e},{marginBottom:n+\\\"px\\\"},{opacity:\\\"1.0\\\"}])};i.prototype.startRemoveAnimation=function(t,i,o){var r=$tw.utils.getAnimationDuration();var n=i.offsetWidth,s=window.getComputedStyle(i),a=parseInt(s.marginBottom,10),l=parseInt(s.marginTop,10),c=i.offsetHeight+l;setTimeout(o,r);$tw.utils.setStyle(i,[{transition:\\\"none\\\"},{transform:\\\"translateX(0px)\\\"},{marginBottom:a+\\\"px\\\"},{opacity:\\\"1.0\\\"}]);$tw.utils.forceLayout(i);$tw.utils.setStyle(i,[{transition:$tw.utils.roundTripPropertyName(\\\"transform\\\")+\\\" \\\"+r+\\\"ms \\\"+e+\\\", \\\"+\\\"opacity \\\"+r+\\\"ms \\\"+e+\\\", \\\"+\\\"margin-bottom \\\"+r+\\\"ms \\\"+e},{transform:\\\"translateX(-\\\"+n+\\\"px)\\\"},{marginBottom:-c+\\\"px\\\"},{opacity:\\\"0.0\\\"}])};exports.top=i})();\",\n \"title\": \"$:/plugins/felixhayashi/topstoryview/top.js\",\n \"type\": \"application/javascript\",\n \"module-type\": \"storyview\"\n }\n }\n}","version":"0.2.0","type":"application/json","title":"$:/plugins/felixhayashi/topstoryview","source":"https://github.com/felixhayashi/TW5-TopStoryView","released":"","plugin-type":"plugin","list":"Configuration License Readme","description":"TopStoryView Always scroll navigated tiddlers to the top","dependents":"","core-version":">=5.1.5","author":"Felix Küppers"},
{"title":"$:/plugins/flibbles/3rd-party","description":"Example plugin which integrates with Relink.","list":"readme","name":"Relink Example","plugin-type":"plugin","type":"application/json","text":"{\n\t\"tiddlers\": {\n\t\t\"$:/config/flibbles/relink/attributes/$3rd/editTemplate\": {\n\t\t\t\"text\": \"title\"\n\t\t},\n\t\t\"$:/config/flibbles/relink/attributes/$3rd/filter\": {\n\t\t\t\"text\": \"filter\"\n\t\t},\n\t\t\"$:/config/flibbles/relink/attributes/$3rd/history\": {\n\t\t\t\"text\": \"title\"\n\t\t},\n\t\t\"$:/config/flibbles/relink/attributes/$3rd/template\": {\n\t\t\t\"text\": \"title\"\n\t\t},\n\t\t\"$:/config/flibbles/relink/fields/3rd\": {\n\t\t\t\"text\": \"list\"\n\t\t},\n\t\t\"$:/config/flibbles/relink/macros/3rd/tiddler\": {\n\t\t\t\"text\": \"title\"\n\t\t},\n\t\t\"$:/config/flibbles/relink/operators/3rd\": {\n\t\t\t\"text\": \"title\"\n\t\t},\n\t\t\"$:/plugins/flibbles/3rd-party/readme\": {\n\t\t\t\"text\": \"This plugin doesn't do anything. It only shows how other plugins can integrate with //Relink//. Thereby allowing any macros, widgets, fields, or filter operators they introduce to automatically be configured for //Relink// to handle.\\n\\nLook at the \u003C\u003Clink-to-config-tab caption:'//Relink// configuration page'>> to see how this plugin's configurations are grouped.\"\n\t\t},\n\t\t\"$:/plugins/flibbles/3rd-party/macro\": {\n\t\t\t\"module-type\": \"macro\",\n\t\t\t\"text\": \"/*\\\\\\n\\nExample macro which this plugin has automatically integrated with Relink\\n\\n\\\\*/\\n\\nexports.name = \\\"3rd\\\";\\n\\nexports.params = [\\n\\t{name: \\\"tiddler\\\"}\\n];\\n\\nexports.run = function(tiddler) {\\n\\treturn \\\"3rd macro called with: \\\" + tiddler;\\n};\",\n\t\t\t\"type\": \"application/javascript\"\n\t\t},\n\t\t\"$:/plugins/flibbles/3rd-party/operator\": {\n\t\t\t\"module-type\": \"filteroperator\",\n\t\t\t\"text\": \"/*\\\\\\n\\nExample filter operator which this plugin has automatically integrated with Relink.\\nThis is just a generator that return the third word in the operand tiddler's text.\\n\\n\\\\*/\\n\\nexports[\\\"3rd\\\"] = function(source,operator,options) {\\n\\tvar tiddler = options.wiki.getTiddler(operator.operand);\\n\\tif (tiddler) {\\n\\t\\tvar match = /\\\\S+\\\\s+\\\\S+\\\\s+(\\\\S+)/.exec(tiddler.fields.text);\\n\\t\\tif (match) {\\n\\t\\t\\treturn [match[1]];\\n\\t\\t}\\n\\t}\\n\\treturn [];\\n};\",\n\t\t\t\"type\": \"application/javascript\"\n\t\t},\n\t\t\"$:/plugins/flibbles/3rd-party/widget\": {\n\t\t\t\"module-type\": \"widget\",\n\t\t\t\"text\": \"/*\\\\\\n\\nExample widget. It's just an alternate name for the core $list widget.\\n\\n\\\\*/\\n\\nvar List = require(\\\"$:/core/modules/widgets/list.js\\\").list;\\n\\nexports[\\\"3rd\\\"] = List;\",\n\t\t\t\"type\": \"application/javascript\"\n\t\t}\n\t}\n}\n"},
{"name":"Relink","title":"$:/plugins/flibbles/relink","description":"Flexibility when relinking renamed tiddlers","author":"Flibbles","version":"2.3.1","core-version":">=5.1.22","source":"https://github.com/flibbles/tw5-relink","demo":"http://flibbles.github.io/tw5-relink/","list":"readme configuration license","dependents":"","plugin-type":"plugin","type":"application/json","text":"{\"tiddlers\":{\"$:/plugins/flibbles/relink/js/bulkops.js\":{\"text\":\"/*\\\\\\nmodule-type: startup\\n\\nReplaces the relinkTiddler defined in $:/core/modules/wiki-bulkops.js\\n\\nThis is a startup instead of a wikimethods module-type because it's the only\\nway to ensure this runs after the old relinkTiddler method is applied.\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: false, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nvar language = require('$:/plugins/flibbles/relink/js/language.js');\\nvar utils = require(\\\"$:/plugins/flibbles/relink/js/utils.js\\\");\\n\\nexports.name = \\\"redefine-relinkTiddler\\\";\\nexports.synchronous = true;\\n// load-modules is when wikimethods are applied in\\n// ``$:/core/modules/startup/load-modules.js``\\nexports.after = ['load-modules'];\\n// We come before commands because they may do renaming, or jasmine testing\\nexports.before = ['commands'];\\n\\nexports.startup = function() {\\n\\t$tw.Wiki.prototype.relinkTiddler = relinkTiddler;\\n};\\n\\n/** Walks through all relinkable tiddlers and relinks them.\\n * This replaces the existing function in core Tiddlywiki.\\n */\\nfunction relinkTiddler(fromTitle, toTitle, options) {\\n\\toptions = options || {};\\n\\tvar failures = [];\\n\\tvar indexer = utils.getIndexer(this);\\n\\tvar records = indexer.relinkLookup(fromTitle, toTitle, options);\\n\\tfor (var title in records) {\\n\\t\\tvar entries = records[title],\\n\\t\\t\\tchanges = Object.create(null),\\n\\t\\t\\tupdate = false,\\n\\t\\t\\tfails = false;\\n\\t\\tfor (var field in entries) {\\n\\t\\t\\tvar entry = entries[field];\\n\\t\\t\\tfails = fails || entry.impossible;\\n\\t\\t\\tif (entry.output !== undefined) {\\n\\t\\t\\t\\tchanges[field] = entry.output;\\n\\t\\t\\t\\tupdate = true;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\tif (fails) {\\n\\t\\t\\tfailures.push(title);\\n\\t\\t}\\n\\t\\t// If any fields changed, update tiddler\\n\\t\\tif (update) {\\n\\t\\t\\tconsole.log(\\\"Renaming '\\\"+fromTitle+\\\"' to '\\\"+toTitle+\\\"' in '\\\" + title + \\\"'\\\");\\n\\n\\t\\t\\tvar tiddler = this.getTiddler(title);\\n\\t\\t\\tvar modifyField = utils.touchModifyField(this) ? this.getModificationFields() : undefined;\\n\\t\\t\\tvar newTiddler = new $tw.Tiddler(tiddler,changes,modifyField)\\n\\t\\t\\tnewTiddler = $tw.hooks.invokeHook(\\\"th-relinking-tiddler\\\",newTiddler,tiddler);\\n\\t\\t\\tthis.addTiddler(newTiddler);\\n\\t\\t\\t// If the title changed, we need to perform a nested rename\\n\\t\\t\\tif (newTiddler.fields.title !== title) {\\n\\t\\t\\t\\tthis.deleteTiddler(title);\\n\\t\\t\\t\\tthis.relinkTiddler(title, newTiddler.fields.title,options);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t};\\n\\tif (failures.length > 0) {\\n\\t\\tvar options = $tw.utils.extend(\\n\\t\\t\\t{ variables: {to: toTitle, from: fromTitle},\\n\\t\\t\\t wiki: this},\\n\\t\\t\\toptions );\\n\\t\\tlanguage.reportFailures(failures, options);\\n\\t}\\n};\\n\\n})();\\n\",\"module-type\":\"startup\",\"title\":\"$:/plugins/flibbles/relink/js/bulkops.js\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/indexer.js\":{\"text\":\"/*\\\\\\nmodule-type: indexer\\n\\nIndexes results from tiddler reference reports so we don't have to call them\\nso much.\\n\\n\\\\*/\\n\\n\\\"use strict\\\";\\n\\nvar utils = require(\\\"./utils.js\\\");\\nvar TiddlerContext = utils.getContext('tiddler');\\n\\nfunction Indexer(wiki) {\\n\\tthis.wiki = wiki;\\n};\\n\\nIndexer.prototype.init = function() {\\n\\tthis.rebuild();\\n};\\n\\nIndexer.prototype.rebuild = function() {\\n\\tthis.index = null;\\n\\tthis.backIndex = null;\\n\\tthis.contexts = Object.create(null);\\n\\tthis.changedTiddlers = undefined;\\n\\tthis.lastRelinks = Object.create(null);\\n};\\n\\nIndexer.prototype.update = function(updateDescriptor) {\\n\\tif (!this.index) {\\n\\t\\treturn;\\n\\t}\\n\\tvar title;\\n\\tif (!this.changedTiddlers) {\\n\\t\\tthis.changedTiddlers = Object.create(null);\\n\\t}\\n\\tif (updateDescriptor.old.exists) {\\n\\t\\ttitle = updateDescriptor.old.tiddler.fields.title;\\n\\t\\tthis.changedTiddlers[title] = {deleted: true};\\n\\t\\tthis._purge(title);\\n\\t}\\n\\tif (updateDescriptor['new'].exists) {\\n\\t\\t// If its the same tiddler as old, this overrides the 'deleted' entry\\n\\t\\ttitle = updateDescriptor['new'].tiddler.fields.title;\\n\\t\\tthis.changedTiddlers[title] = {modified: true};\\n\\t}\\n};\\n\\nIndexer.prototype.lookup = function(title) {\\n\\tthis._upkeep();\\n\\treturn this.index[title];\\n};\\n\\nIndexer.prototype.reverseLookup = function(title) {\\n\\tthis._upkeep();\\n\\treturn this.backIndex[title] || Object.create(null);\\n};\\n\\nIndexer.prototype.relinkLookup = function(fromTitle, toTitle, options) {\\n\\tthis._upkeep();\\n\\tvar shortlist = undefined;\\n\\tvar lastRelink = this.lastRelinks[fromTitle];\\n\\tif (lastRelink) {\\n\\t\\tif (lastRelink.to === toTitle) {\\n\\t\\t\\t// We need to reintroduce the relink cache, where temporary info\\n\\t\\t\\t// was stored.\\n\\t\\t\\toptions.cache = lastRelink.cache;\\n\\t\\t\\treturn lastRelink.results;\\n\\t\\t}\\n\\t\\tshortlist = buildShortlist(lastRelink);\\n\\t}\\n\\tvar results = utils.getRelinkResults(this.wiki, fromTitle, toTitle, this.context, shortlist, options);\\n\\tif (Object.keys(this.lastRelinks).length > 3) {\\n\\t\\t// The cache got a little large. wipe it clean.\\n\\t\\tthis.lastRelinks = Object.create(null);\\n\\t}\\n\\tthis.lastRelinks[fromTitle] = {\\n\\t\\tfrom: fromTitle,\\n\\t\\tresults: results,\\n\\t\\tto: toTitle,\\n\\t\\tcache: options.cache,\\n\\t\\tmaybeRelevant: Object.create(null)};\\n\\treturn results;\\n};\\n\\n// Returns all tiddlers that don't have anything referencing it.\\nIndexer.prototype.orphans = function() {\\n\\tthis._upkeep();\\n\\tvar results = [];\\n\\tfor (var title in this.index) {\\n\\t\\tif (!this.backIndex[title]\\n\\t\\t|| Object.keys(this.backIndex[title]).length === 0) {\\n\\t\\t\\tresults.push(title);\\n\\t\\t}\\n\\t}\\n\\treturn results;\\n};\\n\\nIndexer.prototype._upkeep = function() {\\n\\tvar title;\\n\\tif (this.changedTiddlers && (this.context.changed(this.changedTiddlers) || this.context.parent.changed(this.changedTiddlers))) {\\n\\t\\t// If global macro context or whitelist context changed, wipe all\\n\\t\\tthis.rebuild();\\n\\t}\\n\\tif (!this.index) {\\n\\t\\tthis.index = Object.create(null);\\n\\t\\tthis.backIndex = Object.create(null);\\n\\t\\tthis.context = utils.getWikiContext(this.wiki);\\n\\t\\tvar titles = this.wiki.getRelinkableTitles();\\n\\t\\tfor (var i = 0; i \u003C titles.length; i++) {\\n\\t\\t\\tthis._populate(titles[i]);\\n\\t\\t};\\n\\t} else if (this.changedTiddlers) {\\n\\t\\t// If there are cached changes, we apply them now.\\n\\t\\tfor (title in this.contexts) {\\n\\t\\t\\tvar tiddlerContext = this.contexts[title];\\n\\t\\t\\tif (tiddlerContext.changed(this.changedTiddlers)) {\\n\\t\\t\\t\\tthis._purge(title);\\n\\t\\t\\t\\tthis._populate(title);\\n\\t\\t\\t\\tthis._decacheRelink(title);\\n\\t\\t\\t\\t// Wipe this change, so we don't risk updating it twice.\\n\\t\\t\\t\\tthis.changedTiddlers[title] = undefined;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\tfor (title in this.changedTiddlers) {\\n\\t\\t\\tvar change = this.changedTiddlers[title];\\n\\t\\t\\tif (change && change.modified) {\\n\\t\\t\\t\\tthis._purge(title);\\n\\t\\t\\t\\tthis._populate(title);\\n\\t\\t\\t\\tthis._decacheRelink(title);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\tthis.changedTiddlers = undefined;\\n\\t}\\n};\\n\\nIndexer.prototype._purge = function(title) {\\n\\tfor (var entry in this.index[title]) {\\n\\t\\tdelete this.backIndex[entry][title];\\n\\t}\\n\\tdelete this.contexts[title];\\n\\tdelete this.index[title];\\n};\\n\\n// This drops the cached relink results if unsanctioned tiddlers were changed\\nIndexer.prototype._decacheRelink = function(title) {\\n\\tvar tiddler = this.wiki.getTiddler(title);\\n\\tfor (var from in this.lastRelinks) {\\n\\t\\tvar lastRelink = this.lastRelinks[from];\\n\\t\\tif (title !== from\\n\\t\\t&& title !== lastRelink.to\\n\\t\\t&& (!tiddler\\n\\t\\t|| !$tw.utils.hop(tiddler.fields, 'draft.of') // is a draft\\n\\t\\t|| tiddler.fields['draft.of'] !== from// draft of target\\n\\t\\t|| references(this.index[title], from))) { // draft references target\\n\\t\\t\\t// This is not the draft of the last relinked title,\\n\\t\\t\\t// so our cached results should be wiped.\\n\\t\\t\\tlastRelink.maybeRelevant[title] = true;\\n\\t\\t\\t// Force this cached relink to partially refresh when it comes time\\n\\t\\t\\tlastRelink.to = undefined;\\n\\t\\t}\\n\\t}\\n};\\n\\nfunction references(list, item) {\\n\\treturn list !== undefined && list[item];\\n};\\n\\n// Compiles a short list of tiddlers we need to check for a rename.\\n// This list will be much faster to relink again.\\nfunction buildShortlist(lastRelink) {\\n\\tvar shortlist = Object.keys(lastRelink.results);\\n\\tfor (var title in lastRelink.maybeRelevant) {\\n\\t\\tif (lastRelink.results[title] === undefined) {\\n\\t\\t\\tshortlist.push(title);\\n\\t\\t}\\n\\t}\\n\\treturn shortlist;\\n};\\n\\nIndexer.prototype._populate = function(title) {\\n\\t// Fetch the report for a title, and populate the indexes with result\\n\\tvar tiddlerContext = new TiddlerContext(this.wiki, this.context, title);\\n\\tvar references = utils.getTiddlerRelinkReferences(this.wiki, title, tiddlerContext);\\n\\tthis.index[title] = references;\\n\\tif (tiddlerContext.hasImports()) {\\n\\t\\tthis.contexts[title] = tiddlerContext;\\n\\t}\\n\\tfor (var ref in references) {\\n\\t\\tthis.backIndex[ref] = this.backIndex[ref] || Object.create(null);\\n\\t\\tthis.backIndex[ref][title] = references[ref];\\n\\t}\\n};\\n\\nexports.RelinkIndexer = Indexer;\\n\",\"module-type\":\"indexer\",\"title\":\"$:/plugins/flibbles/relink/js/indexer.js\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/language.js\":{\"text\":\"/*\\\\\\nmodule-type: library\\n\\nThis handles all logging and alerts Relink emits.\\n\\n\\\\*/\\n\\nexports.getString = function(outputType, title, options) {\\n\\ttitle = \\\"$:/plugins/flibbles/relink/language/\\\" + title;\\n\\treturn options.wiki.renderTiddler(outputType, title, options);\\n};\\n\\nvar logger;\\n\\nexports.warn = function(string, options) {\\n\\tif (!logger) {\\n\\t\\tlogger = new $tw.utils.Logger(\\\"Relinker\\\");\\n\\t}\\n\\tlogger.alert(string);\\n};\\n\\nexports.reportFailures = function(failureList, options) {\\n\\tvar alertString = this.getString(\\\"text/html\\\", \\\"Error/ReportFailedRelinks\\\", options)\\n\\tvar alreadyReported = Object.create(null);\\n\\tvar reportList = [];\\n\\t$tw.utils.each(failureList, function(f) {\\n\\t\\tif (!alreadyReported[f]) {\\n\\t\\t\\tif ($tw.browser) {\\n\\t\\t\\t\\t// This might not make the link if the title is complicated.\\n\\t\\t\\t\\t// Whatever.\\n\\t\\t\\t\\treportList.push(\\\"\\\\n* [[\\\" + f + \\\"]]\\\");\\n\\t\\t\\t} else {\\n\\t\\t\\t\\treportList.push(\\\"\\\\n* \\\" + f);\\n\\t\\t\\t}\\n\\t\\t\\talreadyReported[f] = true;\\n\\t\\t}\\n\\t});\\n\\tthis.warn(alertString + \\\"\\\\n\\\" + reportList.join(\\\"\\\"));\\n};\\n\",\"module-type\":\"library\",\"title\":\"$:/plugins/flibbles/relink/js/language.js\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/mangler.js\":{\"text\":\"/*\\\\\\nmodule-type: widget\\n\\nCreates a mangler widget for field validation. This isn't meant to be used\\nby the user. It's only used in Relink configuration.\\n\\n\\\\*/\\n\\nvar Widget = require(\\\"$:/core/modules/widgets/widget.js\\\").widget;\\nvar language = require('$:/plugins/flibbles/relink/js/language.js');\\nvar utils = require('$:/plugins/flibbles/relink/js/utils.js');\\n\\nvar RelinkManglerWidget = function(parseTreeNode,options) {\\n\\tthis.initialise(parseTreeNode,options);\\n\\tthis.addEventListeners([\\n\\t\\t{type: \\\"relink-add-field\\\", handler: \\\"handleAddFieldEvent\\\"},\\n\\t\\t{type: \\\"relink-add-operator\\\", handler: \\\"handleAddOperatorEvent\\\"},\\n\\t\\t{type: \\\"relink-add-parameter\\\", handler: \\\"handleAddParameterEvent\\\"},\\n\\t\\t{type: \\\"relink-add-attribute\\\", handler: \\\"handleAddAttributeEvent\\\"}\\n\\t]);\\n};\\n\\nexports.relinkmangler = RelinkManglerWidget;\\n\\nRelinkManglerWidget.prototype = new Widget();\\n\\n// This wraps alert so it can be monkeypatched during testing.\\nRelinkManglerWidget.prototype.alert = function(message) {\\n\\talert(message);\\n};\\n\\nRelinkManglerWidget.prototype.handleAddFieldEvent = function(event) {\\n\\tvar param = event.paramObject;\\n\\tif (typeof param !== \\\"object\\\" || !param.field) {\\n\\t\\t// Can't handle it.\\n\\t\\treturn true;\\n\\t}\\n\\tvar trimmedName = param.field.trim();\\n\\tif (!trimmedName) {\\n\\t\\t// Still can't handle it, but don't warn.\\n\\t\\treturn true;\\n\\t}\\n\\tif(!$tw.utils.isValidFieldName(trimmedName)) {\\n\\t\\tthis.alert($tw.language.getString(\\n\\t\\t\\t\\\"InvalidFieldName\\\",\\n\\t\\t\\t{variables:\\n\\t\\t\\t\\t{fieldName: trimmedName}\\n\\t\\t\\t}\\n\\t\\t));\\n\\t} else {\\n\\t\\tadd(this.wiki, \\\"fields\\\", trimmedName);\\n\\t}\\n\\treturn true;\\n};\\n\\n/**Not much validation, even though there are definitely illegal\\n * operator names. If you input on, Relink won't relink it, but it\\n * won't choke on it either. Tiddlywiki will...\\n */\\nRelinkManglerWidget.prototype.handleAddOperatorEvent = function(event) {\\n\\tvar param = event.paramObject;\\n\\tif (param) {\\n\\t\\tadd(this.wiki, \\\"operators\\\", param.operator);\\n\\t}\\n\\treturn true;\\n};\\n\\nRelinkManglerWidget.prototype.handleAddParameterEvent = function(event) {\\n\\tvar param = event.paramObject;\\n\\tif (param && param.macro && param.parameter) {\\n\\t\\tif (/\\\\s/.test(param.macro.trim())) {\\n\\t\\t\\tthis.alert(language.getString(\\n\\t\\t\\t\\t\\\"text/plain\\\",\\n\\t\\t\\t\\t\\\"Error/InvalidMacroName\\\",\\n\\t\\t\\t\\t{ variables: {macroName: param.macro},\\n\\t\\t\\t\\t wiki: this.wiki\\n\\t\\t\\t\\t}\\n\\t\\t\\t));\\n\\t\\t} else if (/[ \\\\/]/.test(param.parameter.trim())) {\\n\\t\\t\\tthis.alert(language.getString(\\n\\t\\t\\t\\t\\\"text/plain\\\",\\n\\t\\t\\t\\t\\\"Error/InvalidParameterName\\\",\\n\\t\\t\\t\\t{ variables: {parameterName: param.parameter},\\n\\t\\t\\t\\t wiki: this.wiki\\n\\t\\t\\t\\t}\\n\\t\\t\\t));\\n\\t\\t} else {\\n\\t\\t\\tadd(this.wiki, \\\"macros\\\", param.macro, param.parameter);\\n\\t\\t}\\n\\t}\\n\\treturn true;\\n};\\n\\nRelinkManglerWidget.prototype.handleAddAttributeEvent = function(event) {\\n\\tvar param = event.paramObject;\\n\\tif (param && param.element && param.attribute) {\\n\\t\\tif (/[ \\\\/]/.test(param.element.trim())) {\\n\\t\\t\\tthis.alert(language.getString(\\n\\t\\t\\t\\t\\\"text/plain\\\",\\n\\t\\t\\t\\t\\\"Error/InvalidElementName\\\",\\n\\t\\t\\t\\t{ variables: {elementName: param.element},\\n\\t\\t\\t\\t wiki: this.wiki\\n\\t\\t\\t\\t}\\n\\t\\t\\t));\\n\\t\\t} else if (/[ \\\\/]/.test(param.attribute.trim())) {\\n\\t\\t\\tthis.alert(language.getString(\\n\\t\\t\\t\\t\\\"text/plain\\\",\\n\\t\\t\\t\\t\\\"Error/InvalidAttributeName\\\",\\n\\t\\t\\t\\t{ variables: {attributeName: param.attribute},\\n\\t\\t\\t\\t wiki: this.wiki\\n\\t\\t\\t\\t}\\n\\t\\t\\t));\\n\\t\\t} else {\\n\\t\\t\\tadd(this.wiki, \\\"attributes\\\", param.element, param.attribute);\\n\\t\\t}\\n\\t}\\n\\treturn true;\\n};\\n\\nfunction add(wiki, category/*, path parts*/) {\\n\\tvar path = \\\"$:/config/flibbles/relink/\\\" + category;\\n\\tfor (var x = 2; x \u003C arguments.length; x++) {\\n\\t\\tvar part = arguments[x];\\n\\t\\t// Abort if it's falsy, or only whitespace. Also, trim spaces\\n\\t\\tif (!part || !(part = part.trim())) {\\n\\t\\t\\treturn;\\n\\t\\t}\\n\\t\\tpath = path + \\\"/\\\" + part;\\n\\t}\\n\\tvar def = utils.getDefaultType(wiki);\\n\\twiki.addTiddler({title: path, text: def});\\n};\\n\",\"module-type\":\"widget\",\"title\":\"$:/plugins/flibbles/relink/js/mangler.js\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/settings.js\":{\"text\":\"/*\\\\\\nmodule-type: library\\n\\nThis handles the fetching and distribution of relink settings.\\n\\n\\\\*/\\n\\nvar utils = require('./utils');\\n\\n///// Legacy. You used to be able to access the type from utils.\\nexports.getType = utils.getType;\\n/////\\n\",\"module-type\":\"library\",\"title\":\"$:/plugins/flibbles/relink/js/settings.js\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/utils.js\":{\"text\":\"/*\\\\\\nmodule-type: library\\n\\nUtility methods for relink.\\n\\n\\\\*/\\n\\nvar macroFilter = \\\"[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\\\";\\n\\n/**This works nearly identically to $tw.modules.getModulesByTypeAsHashmap\\n * except that this also takes care of migrating V1 relink modules.\\n */\\nexports.getModulesByTypeAsHashmap = function(moduleType, nameField) {\\n\\tvar results = Object.create(null);\\n\\t$tw.modules.forEachModuleOfType(moduleType, function(title, module) {\\n\\t\\tvar key = module[nameField];\\n\\t\\tif (key !== undefined) {\\n\\t\\t\\tresults[key] = module;\\n\\t\\t} else {\\n\\t\\t\\tfor (var entry in module) {\\n\\t\\t\\t\\tresults[entry] = {\\n\\t\\t\\t\\t\\trelink: module[entry],\\n\\t\\t\\t\\t\\treport: function() {}};\\n\\t\\t\\t\\tresults[entry][nameField] = entry;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t});\\n\\treturn results;\\n};\\n\\nexports.getTiddlerRelinkReferences = function(wiki, title, context) {\\n\\tvar tiddler = wiki.getTiddler(title),\\n\\t\\treferences = Object.create(null),\\n\\t\\toptions = {settings: context, wiki: wiki};\\n\\tif (tiddler) {\\n\\t\\ttry {\\n\\t\\t\\tfor (var relinker in getRelinkOperators()) {\\n\\t\\t\\t\\tgetRelinkOperators()[relinker].report(tiddler, function(title, blurb) {\\n\\t\\t\\t\\t\\treferences[title] = references[title] || [];\\n\\t\\t\\t\\t\\treferences[title].push(blurb || '');\\n\\t\\t\\t\\t}, options);\\n\\t\\t\\t}\\n\\t\\t} catch (e) {\\n\\t\\t\\tif (e.message) {\\n\\t\\t\\t\\te.message = e.message + \\\"\\\\nWhen reporting '\\\" + title + \\\"' Relink references\\\";\\n\\t\\t\\t}\\n\\t\\t\\tthrow e;\\n\\t\\t}\\n\\t}\\n\\treturn references;\\n};\\n\\n/** Returns a pair like this,\\n * { title: {field: entry, ... }, ... }\\n */\\nexports.getRelinkResults = function(wiki, fromTitle, toTitle, context, tiddlerList, options) {\\n\\toptions = options || {};\\n\\toptions.wiki = options.wiki || wiki;\\n\\tfromTitle = (fromTitle || \\\"\\\").trim();\\n\\ttoTitle = (toTitle || \\\"\\\").trim();\\n\\tvar changeList = Object.create(null);\\n\\tif(fromTitle && toTitle !== undefined) {\\n\\t\\tif (tiddlerList === undefined) {\\n\\t\\t\\ttiddlerList = wiki.getRelinkableTitles();\\n\\t\\t}\\n\\t\\tfor (var i = 0; i \u003C tiddlerList.length; i++) {\\n\\t\\t\\tvar title = tiddlerList[i];\\n\\t\\t\\tvar tiddler = wiki.getTiddler(title);\\n\\t\\t\\tif(tiddler) {\\n\\t\\t\\t\\ttry {\\n\\t\\t\\t\\t\\tvar entries = Object.create(null),\\n\\t\\t\\t\\t\\t\\toperators = getRelinkOperators();\\n\\t\\t\\t\\t\\toptions.settings = new Contexts.tiddler(wiki, context, title);\\n\\t\\t\\t\\t\\tfor (var operation in operators) {\\n\\t\\t\\t\\t\\t\\toperators[operation].relink(tiddler, fromTitle, toTitle, entries, options);\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\tfor (var field in entries) {\\n\\t\\t\\t\\t\\t\\t// So long as there is one key,\\n\\t\\t\\t\\t\\t\\t// add it to the change list.\\n\\t\\t\\t\\t\\t\\tif (tiddler.fields[\\\"plugin-type\\\"]) {\\n\\t\\t\\t\\t\\t\\t\\t// We never change plugins, even if they have links\\n\\t\\t\\t\\t\\t\\t\\tchangeList[title] = {};\\n\\t\\t\\t\\t\\t\\t\\tchangeList[title][field] = {impossible: true};\\n\\t\\t\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\t\\t\\tchangeList[title] = entries;\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t} catch (e) {\\n\\t\\t\\t\\t\\t// Should we test for instanceof Error instead?: yes\\n\\t\\t\\t\\t\\t// Does that work in the testing environment?: no\\n\\t\\t\\t\\t\\tif (e.message) {\\n\\t\\t\\t\\t\\t\\te.message = e.message + \\\"\\\\nWhen relinking '\\\" + title + \\\"'\\\";\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\tthrow e;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\treturn changeList;\\n};\\n\\nvar Contexts = $tw.modules.applyMethods('relinkcontext');\\n\\nexports.getContext = function(name) {\\n\\treturn Contexts[name];\\n};\\n\\nexports.getWikiContext = function(wiki) {\\n\\t// This gives a fresh context every time. It is up to the indexer or\\n\\t// the cache to preserve those contexts for as long as needed.\\n\\tvar whitelist = new Contexts.whitelist(wiki);\\n\\treturn new Contexts.import(wiki, whitelist, macroFilter);\\n};\\n\\n/** Returns the Relink indexer, or a dummy object which pretends to be one.\\n */\\nexports.getIndexer = function(wiki) {\\n\\tif (!wiki._relink_indexer) {\\n\\t\\twiki._relink_indexer = (wiki.getIndexer && wiki.getIndexer(\\\"RelinkIndexer\\\")) || new (require('$:/plugins/flibbles/relink/js/utils/backupIndexer.js'))(wiki);\\n\\t}\\n\\treturn wiki._relink_indexer;\\n};\\n\\n/**Relinking supports a cache that persists throughout a whole relink op.\\n * This is because the Tiddlywiki caches may get wiped multiple times\\n * throughout the course of a relink.\\n */\\nexports.getCacheForRun = function(options, cacheName, initializer) {\\n\\toptions.cache = options.cache || Object.create(null);\\n\\tif (!$tw.utils.hop(options.cache, cacheName)) {\\n\\t\\toptions.cache[cacheName] = initializer();\\n\\t}\\n\\treturn options.cache[cacheName];\\n};\\n\\n/**Returns a specific relinker.\\n * This is useful for wikitext rules which need to parse a filter or a list\\n */\\nexports.getType = function(name) {\\n\\tvar Handler = getFieldTypes()[name];\\n\\treturn Handler ? new Handler() : undefined;\\n};\\n\\nexports.getTypes = function() {\\n\\t// We don't return fieldTypes, because we don't want it modified,\\n\\t// and we need to filter out legacy names.\\n\\tvar rtn = Object.create(null);\\n\\tfor (var type in getFieldTypes()) {\\n\\t\\tvar typeObject = getFieldTypes()[type];\\n\\t\\trtn[typeObject.typeName] = typeObject;\\n\\t}\\n\\treturn rtn;\\n};\\n\\nexports.getDefaultType = function(wiki) {\\n\\tvar tiddler = wiki.getTiddler(\\\"$:/config/flibbles/relink/settings/default-type\\\");\\n\\tvar defaultType = tiddler && tiddler.fields.text;\\n\\t// make sure the default actually exists, otherwise default\\n\\treturn fieldTypes[defaultType] ? defaultType : \\\"title\\\";\\n};\\n\\nexports.touchModifyField = function(wiki) {\\n\\tvar tiddler = wiki.getTiddler(\\\"$:/config/flibbles/relink/touch-modify\\\");\\n\\treturn tiddler && tiddler.fields.text.trim() === \\\"yes\\\";\\n};\\n\\n/**Given some text, and a param or attribute within that text, this returns\\n * what type of quotation that attribute is using.\\n *\\n * param: An object in the form {end:, ...}\\n */\\nexports.determineQuote = function(text, param) {\\n\\tvar pos = param.end-1;\\n\\tif (text[pos] === \\\"'\\\") {\\n\\t\\treturn \\\"'\\\";\\n\\t}\\n\\tif (text[pos] === '\\\"') {\\n\\t\\tif (text.substr(pos-2, 3) === '\\\"\\\"\\\"') {\\n\\t\\t\\treturn '\\\"\\\"\\\"';\\n\\t\\t} else {\\n\\t\\t\\treturn '\\\"';\\n\\t\\t}\\n\\t}\\n\\tif (text.substr(pos-1,2) === ']]' && text.substr((pos-param.value.length)-3, 2) === '[[') {\\n\\t\\treturn \\\"[[\\\";\\n\\t}\\n\\treturn '';\\n};\\n\\nvar fieldTypes;\\n\\nfunction getFieldTypes() {\\n\\tif (!fieldTypes) {\\n\\t\\tfieldTypes = Object.create(null);\\n\\t\\t$tw.modules.forEachModuleOfType(\\\"relinkfieldtype\\\", function(title, exports) {\\n\\t\\t\\tfunction NewType() {};\\n\\t\\t\\tNewType.prototype = exports;\\n\\t\\t\\tNewType.typeName = exports.name;\\n\\t\\t\\tfieldTypes[exports.name] = NewType;\\n\\t\\t\\t// For legacy, if the NewType doesn't have a report method, we add one\\n\\t\\t\\tif (!exports.report) {\\n\\t\\t\\t\\texports.report = function() {};\\n\\t\\t\\t}\\n\\t\\t\\t// Also for legacy, some of the field types can go by other names\\n\\t\\t\\tif (exports.aliases) {\\n\\t\\t\\t\\t$tw.utils.each(exports.aliases, function(alias) {\\n\\t\\t\\t\\t\\tfieldTypes[alias] = NewType;\\n\\t\\t\\t\\t});\\n\\t\\t\\t}\\n\\t\\t});\\n\\t}\\n\\treturn fieldTypes;\\n}\\n\\nvar relinkOperators;\\n\\nfunction getRelinkOperators() {\\n\\tif (!relinkOperators) {\\n\\t\\trelinkOperators = exports.getModulesByTypeAsHashmap('relinkoperator', 'name');\\n\\t}\\n\\treturn relinkOperators;\\n};\\n\",\"module-type\":\"library\",\"title\":\"$:/plugins/flibbles/relink/js/utils.js\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/wikimethods.js\":{\"text\":\"/*\\\\\\nmodule-type: wikimethod\\n\\nIntroduces some utility methods used by Relink.\\n\\n\\\\*/\\n\\nvar utils = require(\\\"./utils.js\\\");\\n\\nexports.getTiddlerRelinkReferences = function(title) {\\n\\treturn utils.getIndexer(this).lookup(title);\\n};\\n\\nexports.getTiddlerRelinkBackreferences = function(title) {\\n\\treturn utils.getIndexer(this).reverseLookup(title);\\n};\\n\\nexports.getRelinkableTitles = function() {\\n\\tvar toUpdate = \\\"$:/config/flibbles/relink/to-update\\\";\\n\\tvar wiki = this;\\n\\treturn this.getCacheForTiddler(toUpdate, \\\"relink-toUpdate\\\", function() {\\n\\t\\tvar tiddler = wiki.getTiddler(toUpdate);\\n\\t\\tif (tiddler) {\\n\\t\\t\\treturn wiki.compileFilter(tiddler.fields.text);\\n\\t\\t} else {\\n\\t\\t\\treturn wiki.allTitles;\\n\\t\\t}\\n\\t})();\\n};\\n\\nexports.getRelinkOrphans = function() {\\n\\treturn utils.getIndexer(this).orphans();\\n};\\n\",\"module-type\":\"wikimethod\",\"title\":\"$:/plugins/flibbles/relink/js/wikimethods.js\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/filteroperators/all_relinkable.js\":{\"text\":\"/*\\\\\\nmodule-type: allfilteroperator\\n\\nFilter function for [all[relinkable]].\\nReturns all tiddlers subject to relinking.\\n\\n\\\\*/\\n\\n(function() {\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nexports.relinkable = function(source,prefix,options) {\\n\\treturn options.wiki.getRelinkableTitles();\\n};\\n\\n})();\\n\",\"module-type\":\"allfilteroperator\",\"title\":\"$:/plugins/flibbles/relink/js/filteroperators/all_relinkable.js\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/filteroperators/orphans.js\":{\"text\":\"/*\\\\\\nmodule-type: relinkfilteroperator\\n\\nFilter function for [relink:orphans[]].\\nReturns all tiddlers which are not referenced in any way\\n\\n\\\\*/\\n\\n(function() {\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nexports.orphans = function(source,prefix,options) {\\n\\treturn options.wiki.getRelinkOrphans();\\n};\\n\\n})();\\n\",\"module-type\":\"relinkfilteroperator\",\"title\":\"$:/plugins/flibbles/relink/js/filteroperators/orphans.js\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/filteroperators/references.js\":{\"text\":\"/*\\\\\\nmodule-type: relinkfilteroperator\\n\\nGiven a title as an operand, returns all non-shadow tiddlers that have any\\nsort of updatable reference to it.\\n\\n`relink:backreferences[]]`\\n`relink:references[]]`\\n\\nReturns all tiddlers that reference `fromTiddler` somewhere inside them.\\n\\nInput is ignored. Maybe it shouldn't do this.\\n\\\\*/\\n\\nvar LinkedList = $tw.utils.LinkedList;\\n\\nif (!LinkedList) {\\n\\t/* If the linked list isn't available, make a quick crappy version. */\\n\\tLinkedList = function() {this.array=[];};\\n\\n\\tLinkedList.prototype.pushTop = function(array) {\\n\\t\\t$tw.utils.pushTop(this.array, array);\\n\\t};\\n\\n\\tLinkedList.prototype.toArray = function() {\\n\\t\\treturn this.array;\\n\\t};\\n};\\n\\nexports.backreferences = function(source,operator,options) {\\n\\tvar results = new LinkedList();\\n\\tsource(function(tiddler,title) {\\n\\t\\tresults.pushTop(Object.keys(options.wiki.getTiddlerRelinkBackreferences(title,options)));\\n\\t});\\n\\treturn results.toArray();\\n};\\n\\nexports.references = function(source,operator,options) {\\n\\tvar results = new LinkedList();\\n\\tsource(function(tiddler,title) {\\n\\t\\tvar refs = options.wiki.getTiddlerRelinkReferences(title,options);\\n\\t\\tif (refs) {\\n\\t\\t\\tresults.pushTop(Object.keys(refs));\\n\\t\\t}\\n\\t});\\n\\treturn results.toArray();\\n};\\n\",\"module-type\":\"relinkfilteroperator\",\"title\":\"$:/plugins/flibbles/relink/js/filteroperators/references.js\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/filteroperators/relink.js\":{\"text\":\"/*\\\\\\nmodule-type: filteroperator\\n\\nThis filter acts as a namespace for several small, simple filters, such as\\n\\n`[relink:impossible[]]`\\n\\n\\\\*/\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nvar language = require('$:/plugins/flibbles/relink/js/language.js');\\n\\nvar relinkFilterOperators;\\n\\nfunction getRelinkFilterOperators() {\\n\\tif(!relinkFilterOperators) {\\n\\t\\trelinkFilterOperators = {};\\n\\t\\t$tw.modules.applyMethods(\\\"relinkfilteroperator\\\",\\n\\t\\t relinkFilterOperators);\\n\\t}\\n\\treturn relinkFilterOperators;\\n}\\n\\nexports.relink = function(source,operator,options) {\\n\\tvar suffixPair = parseSuffix(operator.suffix);\\n\\tvar relinkFilterOperator = getRelinkFilterOperators()[suffixPair[0]];\\n\\tif (relinkFilterOperator) {\\n\\t\\tvar newOperator = $tw.utils.extend({}, operator);\\n\\t\\tnewOperator.suffix = suffixPair[1];\\n\\t\\treturn relinkFilterOperator(source, newOperator, options);\\n\\t} else {\\n\\t\\treturn [language.getString(\\\"text/plain\\\", \\\"Error/RelinkFilterOperator\\\", options)];\\n\\t}\\n};\\n\\nfunction parseSuffix(suffix) {\\n\\tvar index = suffix? suffix.indexOf(\\\":\\\"): -1;\\n\\tif (index >= 0) {\\n\\t\\treturn [suffix.substr(0, index), suffix.substr(index+1)];\\n\\t} else {\\n\\t\\treturn [suffix];\\n\\t}\\n}\\n\",\"module-type\":\"filteroperator\",\"title\":\"$:/plugins/flibbles/relink/js/filteroperators/relink.js\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/filteroperators/report.js\":{\"text\":\"/*\\\\\\nmodule-type: relinkfilteroperator\\n\\nGiven a title as an operand, returns a string for each occurrence of that title\\nwithin each input title.\\n\\n[[title]] +[relink:report[fromTiddler]]`\\n\\nReturns string representation of fromTiddler occurrences in title.\\n\\\\*/\\n\\nexports.report = function(source,operator,options) {\\n\\tvar fromTitle = operator.operand,\\n\\t\\tresults = [];\\n\\tif (fromTitle) {\\n\\t\\tvar blurbs = options.wiki.getTiddlerRelinkBackreferences(fromTitle);\\n\\t\\tsource(function(tiddler, title) {\\n\\t\\t\\tif (blurbs[title]) {\\n\\t\\t\\t\\tresults = results.concat(blurbs[title]);\\n\\t\\t\\t}\\n\\t\\t});\\n\\t}\\n\\treturn results;\\n};\\n\",\"module-type\":\"relinkfilteroperator\",\"title\":\"$:/plugins/flibbles/relink/js/filteroperators/report.js\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/filteroperators/signatures.js\":{\"text\":\"/*\\\\\\nmodule-type: relinkfilteroperator\\n\\nThis filter returns all input tiddlers which are a source of\\nrelink configuration.\\n\\n`[all[tiddlers+system]relink:source[macros]]`\\n\\n\\\\*/\\n\\nvar utils = require('$:/plugins/flibbles/relink/js/utils.js');\\n\\nexports.signatures = function(source,operator,options) {\\n\\tvar plugin = operator.operand || null;\\n\\tvar set = getSet(options);\\n\\tif (plugin === \\\"$:/core\\\") {\\n\\t\\t// Core doesn't actually have any settings. We mean Relink\\n\\t\\tplugin = \\\"$:/plugins/flibbles/relink\\\";\\n\\t}\\n\\tvar signatures = [];\\n\\tfor (var signature in set) {\\n\\t\\tvar source = set[signature].source;\\n\\t\\tif (options.wiki.getShadowSource(source) === plugin) {\\n\\t\\t\\tsignatures.push(signature);\\n\\t\\t}\\n\\t}\\n\\treturn signatures;\\n};\\n\\nexports.type = function(source,operator,options) {\\n\\tvar results = [];\\n\\tvar set = getSet(options);\\n\\tsource(function(tiddler, signature) {\\n\\t\\tif (set[signature]) {\\n\\t\\t\\tresults.push(set[signature].name);\\n\\t\\t}\\n\\t});\\n\\treturn results;\\n};\\n\\nexports.types = function(source,operator,options) {\\n\\tvar def = utils.getDefaultType(options.wiki);\\n\\tvar types = Object.keys(utils.getTypes());\\n\\ttypes.sort();\\n\\t// move default to front\\n\\ttypes.sort(function(x,y) { return x === def ? -1 : y === def ? 1 : 0; });\\n\\treturn types;\\n};\\n\\nexports.source = function(source,operator,options) {\\n\\tvar results = [];\\n\\tvar category = operator.suffix;\\n\\tvar set = getSet(options);\\n\\tsource(function(tiddler, signature) {\\n\\t\\tif (set[signature]) {\\n\\t\\t\\tresults.push(set[signature].source);\\n\\t\\t}\\n\\t});\\n\\treturn results;\\n};\\n\\nfunction getSet(options) {\\n\\treturn options.wiki.getGlobalCache(\\\"relink-signatures\\\", function() {\\n\\t\\tvar config = utils.getWikiContext(options.wiki);\\n\\t\\tvar set = Object.create(null);\\n\\t\\tvar categories = {\\n\\t\\t\\tattributes: config.getAttributes(),\\n\\t\\t\\tfields: config.getFields(),\\n\\t\\t\\tmacros: config.getMacros(),\\n\\t\\t\\toperators: config.getOperators()};\\n\\t\\t$tw.utils.each(categories, function(list, category) {\\n\\t\\t\\t$tw.utils.each(list, function(item, key) {\\n\\t\\t\\t\\tset[category + \\\"/\\\" + key] = item;\\n\\t\\t\\t});\\n\\t\\t});\\n\\t\\treturn set;\\n\\t});\\n};\\n\",\"module-type\":\"relinkfilteroperator\",\"title\":\"$:/plugins/flibbles/relink/js/filteroperators/signatures.js\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/filteroperators/splitafter.js\":{\"text\":\"/*\\\\\\ntitle: $:/core/modules/filters/splitbefore.js\\ntype: application/javascript\\nmodule-type: relinkfilteroperator\\n\\nFilter operator that splits each result on the last occurance of the specified separator and returns the last bit.\\n\\nWhat does this have to do with relink? Nothing. I need this so I can render\\nthe configuration menu. I //could// use [splitregexp[]], but then I'd be\\nlimited to Tiddlywiki v5.1.20 or later.\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\n/*\\nExport our filter function\\n*/\\nexports.splitafter = function(source,operator,options) {\\n\\tvar results = [];\\n\\tsource(function(tiddler,title) {\\n\\t\\tvar index = title.lastIndexOf(operator.operand);\\n\\t\\tif(index \u003C 0) {\\n\\t\\t\\t$tw.utils.pushTop(results,title);\\n\\t\\t} else {\\n\\t\\t\\t$tw.utils.pushTop(results,title.substr(index+1));\\n\\t\\t}\\n\\t});\\n\\treturn results;\\n};\\n\\n})();\\n\\n\",\"title\":\"$:/plugins/flibbles/relink/js/filteroperators/splitafter.js\",\"type\":\"application/javascript\",\"module-type\":\"relinkfilteroperator\"},\"$:/plugins/flibbles/relink/js/filteroperators/wouldchange.js\":{\"text\":\"/*\\\\\\nmodule-type: relinkfilteroperator\\n\\nwouldchange: Generator.\\n\\nGiven each input title, it returns all the tiddlers that would be changed if the currentTiddler were to be renamed to the operand.\\n\\nimpossible: filters all source titles for ones that encounter errors on failure.\\n\\nTHESE ARE INTERNAL FILTER OPERATOR AND ARE NOT INTENDED TO BE USED BY USERS.\\n\\n\\\\*/\\n\\nvar language = require(\\\"$:/plugins/flibbles/relink/js/language.js\\\");\\nvar utils = require(\\\"$:/plugins/flibbles/relink/js/utils.js\\\");\\n\\nexports.wouldchange = function(source,operator,options) {\\n\\tvar from = options.widget && options.widget.getVariable(\\\"currentTiddler\\\"),\\n\\t\\tto = operator.operand,\\n\\t\\tindexer = utils.getIndexer(options.wiki),\\n\\t\\trecords = indexer.relinkLookup(from, to, options);\\n\\treturn Object.keys(records);\\n};\\n\\nexports.impossible = function(source,operator,options) {\\n\\tvar from = options.widget && options.widget.getVariable(\\\"currentTiddler\\\"),\\n\\t\\tto = operator.operand,\\n\\t\\tresults = [],\\n\\t\\tindexer = utils.getIndexer(options.wiki),\\n\\t\\trecords = indexer.relinkLookup(from, to, options);\\n\\tsource(function(tiddler, title) {\\n\\t\\tvar fields = records[title];\\n\\t\\tif (fields) {\\n\\t\\t\\tfor (var field in fields) {\\n\\t\\t\\t\\tif (fields[field].impossible) {\\n\\t\\t\\t\\t\\tresults.push(title);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t});\\n\\treturn results;\\n};\\n\",\"module-type\":\"relinkfilteroperator\",\"title\":\"$:/plugins/flibbles/relink/js/filteroperators/wouldchange.js\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/settings/attributes.js\":{\"text\":\"/*\\\\\\n\\nFactory method for creating the attributes whitelist cache.\\n\\n\\\\*/\\n\\nvar utils = require('../utils');\\n\\nexports.name = \\\"attributes\\\";\\n\\nexports.generate = function(attributes, tiddler, key) {\\n\\tvar data = utils.getType(tiddler.fields.text.trim());\\n\\tif (data) {\\n\\t\\tdata.source = tiddler.fields.title;\\n\\t\\t// Secret feature. You can access a config tiddler's\\n\\t\\t// fields from inside the fieldtype handler. Cool\\n\\t\\t// tricks can be done with this.\\n\\t\\tdata.fields = tiddler.fields;\\n\\t\\tvar elem = root(key);\\n\\t\\tvar attr = key.substr(elem.length+1);\\n\\t\\tattributes[elem] = attributes[elem] || Object.create(null);\\n\\t\\tattributes[elem][attr] = data;\\n\\t}\\n};\\n\\n/* Returns first bit of a path. path/to/tiddler -> path\\n */\\nfunction root(string) {\\n\\tvar index = string.indexOf('/');\\n\\tif (index >= 0) {\\n\\t\\treturn string.substr(0, index);\\n\\t}\\n};\\n\\n\",\"module-type\":\"relinksetting\",\"title\":\"$:/plugins/flibbles/relink/js/settings/attributes.js\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/settings/fields.js\":{\"text\":\"/*\\\\\\n\\nFactory method for creating the fields whitelist cache.\\n\\n\\\\*/\\n\\nvar utils = require('../utils');\\n\\nexports.name = \\\"fields\\\";\\n\\nexports.generate = function(fields, tiddler, name) {\\n\\tvar data = utils.getType(tiddler.fields.text.trim());\\n\\tif (data) {\\n\\t\\tdata.source = tiddler.fields.title;\\n\\t\\t// Secret feature. You can access a config tiddler's\\n\\t\\t// fields from inside the fieldtype handler. Cool\\n\\t\\t// tricks can be done with this.\\n\\t\\tdata.fields = tiddler.fields;\\n\\t\\tfields[name] = data;\\n\\t}\\n};\\n\",\"module-type\":\"relinksetting\",\"title\":\"$:/plugins/flibbles/relink/js/settings/fields.js\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/settings/fieldwidgets.js\":{\"text\":\"/*\\\\\\n\\nFactory method for creating the fieldattributes regexp cache.\\n\\n\\\\*/\\n\\nexports.name = \\\"fieldattributes\\\";\\n\\nexports.generate = function(fieldattributes, tiddler, key) {\\n\\tfieldattributes[key] = new RegExp(tiddler.fields.text.trim());\\n};\\n\",\"module-type\":\"relinksetting\",\"title\":\"$:/plugins/flibbles/relink/js/settings/fieldwidgets.js\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/settings/macros.js\":{\"text\":\"/*\\\\\\n\\nFactory method for creating the macros whitelist cache.\\n\\n\\\\*/\\n\\nvar utils = require('../utils');\\n\\nexports.name = \\\"macros\\\";\\n\\nexports.generate = function(macros, tiddler, key) {\\n\\tvar data = utils.getType(tiddler.fields.text.trim());\\n\\tif (data) {\\n\\t\\tdata.source = tiddler.fields.title;\\n\\t\\t// Secret feature. You can access a config tiddler's\\n\\t\\t// fields from inside the fieldtype handler. Cool\\n\\t\\t// tricks can be done with this.\\n\\t\\tdata.fields = tiddler.fields;\\n\\t\\t// We take the last index, not the first, because macro\\n\\t\\t// parameters can't have slashes, but macroNames can.\\n\\t\\tvar name = dir(key);\\n\\t\\tvar arg = key.substr(name.length+1);\\n\\t\\tmacros[name] = macros[name] || Object.create(null);\\n\\t\\tmacros[name][arg] = data;\\n\\t}\\n};\\n\\n/* Returns all but the last bit of a path. path/to/tiddler -> path/to\\n */\\nfunction dir(string) {\\n\\tvar index = string.lastIndexOf('/');\\n\\tif (index >= 0) {\\n\\t\\treturn string.substr(0, index);\\n\\t}\\n}\\n\\n\",\"module-type\":\"relinksetting\",\"title\":\"$:/plugins/flibbles/relink/js/settings/macros.js\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/settings/operators.js\":{\"text\":\"/*\\\\\\n\\nFactory method for creating the operators whitelist cache.\\n\\n\\\\*/\\n\\nvar utils = require('../utils');\\n\\nexports.name = \\\"operators\\\";\\n\\nexports.generate = function(operators, tiddler, key) {\\n\\tvar data = utils.getType(tiddler.fields.text.trim());\\n\\tif (data) {\\n\\t\\tdata.source = tiddler.fields.title;\\n\\t\\t// Secret feature. You can access a config tiddler's\\n\\t\\t// fields from inside the fieldtype handler. Cool\\n\\t\\t// tricks can be done with this.\\n\\t\\tdata.fields = tiddler.fields;\\n\\t\\tvar pair = key.split('/');\\n\\t\\tvar name = pair[0];\\n\\t\\tdata.key = key;\\n\\t\\toperators[name] = operators[name] || Object.create(null);\\n\\t\\toperators[name][pair[1] || 1] = data;\\n\\t}\\n};\\n\",\"module-type\":\"relinksetting\",\"title\":\"$:/plugins/flibbles/relink/js/settings/operators.js\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/fieldtypes/filter.js\":{\"text\":\"/*\\\\\\n\\nThis specifies logic for updating filters to reflect title changes.\\n\\n\\\\*/\\n\\nvar refHandler = require(\\\"$:/plugins/flibbles/relink/js/fieldtypes/reference\\\");\\nvar Rebuilder = require(\\\"$:/plugins/flibbles/relink/js/utils/rebuilder\\\");\\nvar utils = require('$:/plugins/flibbles/relink/js/utils.js');\\nvar filterRelinkers = utils.getModulesByTypeAsHashmap('relinkfilter', 'name');\\n\\nexports.name = \\\"filter\\\";\\n\\nexports.report = function(filter, callback, options) {\\n\\tif (filter) {\\n\\t\\ttry {\\n\\t\\t\\tvar parseTree = options.wiki.parseFilter(filter);\\n\\t\\t} catch (e) {\\n\\t\\t\\t// It must have been malformed. Return without doing anything.\\n\\t\\t\\treturn;\\n\\t\\t}\\n\\t\\tfor (var module in filterRelinkers) {\\n\\t\\t\\tfilterRelinkers[module].report(parseTree, callback, options);\\n\\t\\t}\\n\\t}\\n};\\n\\n/**Returns undefined if no change was made.\\n */\\nexports.relink = function(filter, fromTitle, toTitle, options) {\\n\\tvar changed = false;\\n\\tvar results = {};\\n\\tvar parseTree;\\n\\tif (filter) {\\n\\t\\ttry {\\n\\t\\t\\tparseTree = options.wiki.parseFilter(filter);\\n\\t\\t} catch (e) {\\n\\t\\t\\t// It must have been malformed. Return without doing anything.\\n\\t\\t\\treturn;\\n\\t\\t}\\n\\t\\tfor (var module in filterRelinkers) {\\n\\t\\t\\tvar entry = filterRelinkers[module].relink(parseTree, fromTitle, toTitle, options);\\n\\t\\t\\tif (entry) {\\n\\t\\t\\t\\tif (entry.changed) {\\n\\t\\t\\t\\t\\tchanged = true;\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tif (entry.impossible) {\\n\\t\\t\\t\\t\\tresults.impossible = true;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\tif (changed) {\\n\\t\\tbuilder = assembleFilterString(parseTree, filter, options);\\n\\t\\tresults.output = builder.results();\\n\\t\\tresults.impossible = results.impossible || builder.impossible;\\n\\t\\treturn results;\\n\\t}\\n\\tif (results.impossible) {\\n\\t\\treturn results;\\n\\t}\\n\\treturn undefined\\n};\\n\\nfunction assembleFilterString(parseTree, oldFilter, options) {\\n\\tvar relinker = new Rebuilder(oldFilter),\\n\\t\\twordBarrierRequired = false,\\n\\t\\tp = 0;\\n\\tfor (var i = 0; i \u003C parseTree.length; i++) {\\n\\t\\tvar start = $tw.utils.skipWhiteSpace(oldFilter, p);\\n\\t\\tif (start !== p) {\\n\\t\\t\\t// There's some breathing room between this run and the last.\\n\\t\\t\\t// We'll never need to insert space.\\n\\t\\t\\twordBarrierRequired = false;\\n\\t\\t\\tp = start;\\n\\t\\t}\\n\\t\\tvar run = parseTree[i];\\n\\t\\tif (run.prefix) {\\n\\t\\t\\tif (wordBarrierRequired) {\\n\\t\\t\\t\\trelinker.add(' ', p, p);\\n\\t\\t\\t\\twordBarrierRequired = false;\\n\\t\\t\\t}\\n\\t\\t\\tp += run.prefix.length;\\n\\t\\t}\\n\\t\\tif (oldFilter[p] !== '['\\n\\t\\t|| (oldFilter[p+1] === '[' && run.operators.length === 1)) {\\n\\t\\t\\t// It's a string title\\n\\t\\t\\tvar text = run.operators[0].operands[0].text,\\n\\t\\t\\t\\tend,\\n\\t\\t\\t\\told;\\n\\t\\t\\tswitch (oldFilter[p]) {\\n\\t\\t\\tcase \\\"'\\\":\\n\\t\\t\\tcase '\\\"':\\n\\t\\t\\t\\t// p + 1 to skip the first quote\\n\\t\\t\\t\\t// indexOf() + 1 to skip the last\\n\\t\\t\\t\\tend = oldFilter.indexOf(oldFilter[p], p+1) + 1;\\n\\t\\t\\t\\told = oldFilter.substring(p+1, end-1);\\n\\t\\t\\t\\tbreak;\\n\\t\\t\\tcase '[':\\n\\t\\t\\t\\tend = oldFilter.indexOf(']', p);\\n\\t\\t\\t\\told = oldFilter.substring(p+2, end);\\n\\t\\t\\t\\t// +2 to get past the ']]'\\n\\t\\t\\t\\tend += 2;\\n\\t\\t\\t\\tbreak;\\n\\t\\t\\tdefault:\\n\\t\\t\\t\\tend = skipWord(oldFilter, p);\\n\\t\\t\\t\\told = oldFilter.substring(p, end);\\n\\t\\t\\t}\\n\\t\\t\\tif (old !== text) {\\n\\t\\t\\t\\tvar wrapped = wrapTitle(text, oldFilter[p] !== \\\"[\\\" ? oldFilter[p] : '', options);\\n\\t\\t\\t\\tif (wrapped !== undefined) {\\n\\t\\t\\t\\t\\t// This is a no-quote title. If breathing room is required,\\n\\t\\t\\t\\t\\t// add it. Also, we may need breathing room after it.\\n\\t\\t\\t\\t\\tif (wordBarrierRequired && wrapped[0] !== \\\"[\\\") {\\n\\t\\t\\t\\t\\t\\trelinker.add(' ', p, p);\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\trelinker.add(wrapped, p, end);\\n\\t\\t\\t\\t\\twordBarrierRequired = wrapped === text;\\n\\t\\t\\t\\t} else if (options.placeholder) {\\n\\t\\t\\t\\t\\tvar ph = options.placeholder.getPlaceholderFor(text);\\n\\t\\t\\t\\t\\trelinker.add('[\u003C' + ph + '>]', p, end);\\n\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\trelinker.impossible = true;\\n\\t\\t\\t\\t}\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tif (wordBarrierRequired && oldFilter[p] !== \\\"[\\\") {\\n\\t\\t\\t\\t\\trelinker.add(' ', p, p);\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\twordBarrierRequired = oldFilter.indexOf(text) === p;\\n\\t\\t\\t}\\n\\t\\t\\tp = end;\\n\\t\\t} else {\\n\\t\\t\\twordBarrierRequired = false;\\n\\t\\t\\tp++;\\n\\t\\t\\tfor (var j = 0; j \u003C run.operators.length; j++) {\\n\\t\\t\\t\\tvar operator = run.operators[j];\\n\\t\\t\\t\\tvar start = p;\\n\\t\\t\\t\\tfor (var index = 0; index \u003C operator.operands.length; index++) {\\n\\t\\t\\t\\t\\tvar operand = operator.operands[index],\\n\\t\\t\\t\\t\\t\\tskip = false;\\n\\t\\t\\t\\t\\t\\tend,\\n\\t\\t\\t\\t\\t\\twrapped;\\n\\t\\t\\t\\t\\tif (operand.indirect) {\\n\\t\\t\\t\\t\\t\\tp = oldFilter.indexOf('{', p);\\n\\t\\t\\t\\t\\t\\tend = oldFilter.indexOf('}', p+1);\\n\\t\\t\\t\\t\\t\\twrapped = '{' + operand.text + '}';\\n\\t\\t\\t\\t\\t} else if (operand.variable) {\\n\\t\\t\\t\\t\\t\\tp = oldFilter.indexOf('\u003C', p);\\n\\t\\t\\t\\t\\t\\tend = oldFilter.indexOf('>', p+1);\\n\\t\\t\\t\\t\\t\\twrapped = '\u003C' + operand.text + '>';\\n\\t\\t\\t\\t\\t} else if (operator.regexp) {\\n\\t\\t\\t\\t\\t\\tp = oldFilter.indexOf('/', p);\\n\\t\\t\\t\\t\\t\\tend = oldFilter.indexOf('/', p+1);\\n\\t\\t\\t\\t\\t\\tskip = true;\\n\\t\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\t\\tp = oldFilter.indexOf('[', p);\\n\\t\\t\\t\\t\\t\\tend = oldFilter.indexOf(']', p+1);\\n\\t\\t\\t\\t\\t\\tif (!canBePrettyOperand(operand.text) || (options.inBraces && operand.text.indexOf('}}}') >= 0)) {\\n\\t\\t\\t\\t\\t\\t\\tif (options.placeholder) {\\n\\t\\t\\t\\t\\t\\t\\t\\tvar ph = options.placeholder.getPlaceholderFor(operand.text, operand.handler);\\n\\t\\t\\t\\t\\t\\t\\t\\twrapped = '\u003C' + ph + '>';\\n\\t\\t\\t\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\t\\t\\t\\tskip = true;\\n\\t\\t\\t\\t\\t\\t\\t\\trelinker.impossible = true;\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\t\\t\\twrapped = '[' + operand.text + ']';\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\tend++; // skip the closing brace\\n\\t\\t\\t\\t\\tif (index === 0) {\\n\\t\\t\\t\\t\\t\\t// If this is the first operand, let's first recreate the operator signature in case it was changed at all.\\n\\t\\t\\t\\t\\t\\trelinker.add(operatorSignature(operator, oldFilter, start), start, p);\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\tif (!skip) {\\n\\t\\t\\t\\t\\t\\trelinker.add(wrapped, p, end);\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\tp = end;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t\\tp++; // Skip the closing brace;\\n\\t\\t}\\n\\t}\\n\\treturn relinker;\\n};\\n\\nfunction operatorSignature(operator, oldText, start) {\\n\\t// If it's a title operand, try to determine if it was a shorthand.\\n\\tvar prefix = operator.prefix || '';\\n\\tvar signature = prefix + ((operator.operator === 'title' && oldText[start + prefix.length] !== 't')? '': operator.operator);\\n\\tif (operator.suffix) {\\n\\t\\tsignature += ':' + operator.suffix;\\n\\t}\\n\\treturn signature;\\n}\\n\\nfunction skipWord(source,pos) {\\n\\tvar c;\\n\\twhile(true) {\\n\\t\\tc = source.charAt(pos);\\n\\t\\tif((c !== \\\"\\\") && (c !== \\\" \\\") && (c !== \\\"\\\\f\\\") && (c !== \\\"\\\\n\\\")\\n\\t\\t&& (c !== \\\"\\\\r\\\") && (c !== \\\"\\\\t\\\")\\n\\t\\t&& (c !== \\\"\\\\v\\\")&& (c !== \\\"\\\\u00a0\\\") // Ignores obscure unicode spaces\\n\\t\\t&& (c !== \\\"[\\\") && (c !== \\\"]\\\")) { // Ignore brackets\\n\\t\\t\\tpos++;\\n\\t\\t} else {\\n\\t\\t\\treturn pos;\\n\\t\\t}\\n\\t}\\n};\\n\\n/* Same as this.relink, except this has the added constraint that the return\\n * value must be able to be wrapped in curly braces. (i.e. '{{{...}}}')\\n */\\nexports.relinkInBraces = function(filter, fromTitle, toTitle, options) {\\n\\tvar braceOptions = $tw.utils.extend({inBraces: true}, options);\\n\\tvar entry = this.relink(filter, fromTitle, toTitle, braceOptions);\\n\\tif (entry && entry.output && !canBeInBraces(entry.output)) {\\n\\t\\t// It was possible, but it won't fit in braces, so we must give up\\n\\t\\tdelete entry.output;\\n\\t\\tentry.impossible = true;\\n\\t}\\n\\treturn entry;\\n};\\n\\nfunction wrapTitle(value, preference, options) {\\n\\tvar choices = {\\n\\t\\t\\\"\\\": function(v) {return /^[^\\\\s\\\\[\\\\]\\\\}\\\\+\\\\-\\\\~\\\\=\\\\:][^\\\\s\\\\[\\\\]]*[^\\\\s\\\\[\\\\]\\\\}]$/.test(v); },\\n\\t\\t\\\"[\\\": canBePrettyOperand,\\n\\t\\t\\\"'\\\": function(v) {return v.indexOf(\\\"'\\\") \u003C 0; },\\n\\t\\t'\\\"': function(v) {return v.indexOf('\\\"') \u003C 0; }\\n\\t};\\n\\tvar wrappers = {\\n\\t\\t\\\"\\\": function(v) {return v; },\\n\\t\\t\\\"[\\\": function(v) {return \\\"[[\\\"+v+\\\"]]\\\"; },\\n\\t\\t\\\"'\\\": function(v) {return \\\"'\\\"+v+\\\"'\\\"; },\\n\\t\\t'\\\"': function(v) {return '\\\"'+v+'\\\"'; }\\n\\t};\\n\\tif (options.inBraces && value.indexOf('}}}') >= 0) {\\n\\t\\t// In this particular case, it can't be wrapped in this filter,\\n\\t\\t// even if it would have worked within the context of the filter itself\\n\\t\\treturn undefined;\\n\\t}\\n\\tif (!choices[preference]) {\\n\\t\\tpreference = '';\\n\\t}\\n\\tif (choices[preference](value)) {\\n\\t\\treturn wrappers[preference](value);\\n\\t}\\n\\tfor (var quote in choices) {\\n\\t\\tif (choices[quote](value)) {\\n\\t\\t\\treturn wrappers[quote](value);\\n\\t\\t}\\n\\t}\\n\\t// No quotes will work on this\\n\\treturn undefined;\\n}\\n\\nfunction canBePrettyOperand(value) {\\n\\treturn value.indexOf(']') \u003C 0;\\n};\\n\\nfunction canBeInBraces(value) {\\n\\treturn value.indexOf(\\\"}}}\\\") \u003C 0 && value.substr(value.length-2) !== '}}';\\n};\\n\",\"module-type\":\"relinkfieldtype\",\"title\":\"$:/plugins/flibbles/relink/js/fieldtypes/filter.js\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/fieldtypes/list.js\":{\"text\":\"/*\\\\\\nThis manages replacing titles that occur within stringLists, like,\\n\\nTiddlerA [[Tiddler with spaces]] [[Another Title]]\\n\\\\*/\\n\\nexports.name = \\\"list\\\";\\n\\nexports.report = function(value, callback, options) {\\n\\tvar list = $tw.utils.parseStringArray(value);\\n\\tfor (var i = 0; i \u003C list.length; i++) {\\n\\t\\tcallback(list[i]);\\n\\t}\\n};\\n\\n/**Returns undefined if no change was made.\\n * Parameter: value can literally be a list. This can happen for builtin\\n * types 'list' and 'tag'. In those cases, we also return list.\\n */\\nexports.relink = function(value, fromTitle, toTitle, options) {\\n\\tvar isModified = false,\\n\\t\\tactualList = false,\\n\\t\\tlist;\\n\\tif (typeof value !== \\\"string\\\") {\\n\\t\\t// Not a string. Must be a list.\\n\\t\\t// clone it, since we may make changes to this possibly\\n\\t\\t// frozen list.\\n\\t\\tlist = (value || []).slice(0);\\n\\t\\tactualList = true;\\n\\t} else {\\n\\t\\tlist = $tw.utils.parseStringArray(value || \\\"\\\");\\n\\t}\\n\\t$tw.utils.each(list,function (title,index) {\\n\\t\\tif(title === fromTitle) {\\n\\t\\t\\tlist[index] = toTitle;\\n\\t\\t\\tisModified = true;\\n\\t\\t}\\n\\t});\\n\\tif (isModified) {\\n\\t\\tvar entry = {name: \\\"list\\\"};\\n\\t\\t// It doesn't parse correctly alone, it won't\\n\\t\\t// parse correctly in any list.\\n\\t\\tif (!canBeListItem(toTitle)) {\\n\\t\\t\\tentry.impossible = true;\\n\\t\\t} else if (actualList) {\\n\\t\\t\\tentry.output = list;\\n\\t\\t} else {\\n\\t\\t\\tentry.output = $tw.utils.stringifyList(list);\\n\\t\\t}\\n\\t\\treturn entry;\\n\\t}\\n\\treturn undefined;\\n};\\n\\nfunction canBeListItem(value) {\\n\\tvar regexp = /\\\\]\\\\][^\\\\S\\\\xA0]/m;\\n\\treturn !regexp.test(value);\\n};\\n\",\"module-type\":\"relinkfieldtype\",\"title\":\"$:/plugins/flibbles/relink/js/fieldtypes/list.js\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/fieldtypes/reference.js\":{\"text\":\"/*\\\\\\nThis manages replacing titles that occur inside text references,\\n\\ntiddlerTitle\\ntiddlerTitle!!field\\n!!field\\ntiddlerTitle##propertyIndex\\n\\\\*/\\n\\nvar utils = require('$:/plugins/flibbles/relink/js/utils.js');\\nvar referenceOperators = utils.getModulesByTypeAsHashmap('relinkreference', 'name');\\n\\nexports.name = \\\"reference\\\";\\n\\nexports.report = function(value, callback, options) {\\n\\tif (value) {\\n\\t\\tvar reference = $tw.utils.parseTextReference(value);\\n\\t\\tfor (var operator in referenceOperators) {\\n\\t\\t\\treferenceOperators[operator].report(reference, callback, options);\\n\\t\\t}\\n\\t}\\n};\\n\\nexports.relink = function(value, fromTitle, toTitle, options) {\\n\\tvar entry;\\n\\tif (value) {\\n\\t\\tvar impossible = false;\\n\\t\\tvar modified = false;\\n\\t\\tvar reference = $tw.utils.parseTextReference(value);\\n\\t\\tfor (var operator in referenceOperators) {\\n\\t\\t\\tvar result = referenceOperators[operator].relink(reference, fromTitle, toTitle, options);\\n\\t\\t\\tif (result) {\\n\\t\\t\\t\\tif (result.impossible) {\\n\\t\\t\\t\\t\\timpossible = true;\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tif (result.output) {\\n\\t\\t\\t\\t\\tmodified = true;\\n\\t\\t\\t\\t\\treference = result.output;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\tif (modified) {\\n\\t\\t\\tif (exports.canBePretty(reference.title)) {\\n\\t\\t\\t\\tentry = {output: exports.toString(reference)};\\n\\t\\t\\t} else {\\n\\t\\t\\t\\timpossible = true;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\tif (impossible) {\\n\\t\\t\\tentry = entry || {};\\n\\t\\t\\tentry.impossible = true;\\n\\t\\t}\\n\\t}\\n\\treturn entry;\\n};\\n\\n/* Same as this.relink, except this has the added constraint that the return\\n * value must be able to be wrapped in curly braces.\\n */\\nexports.relinkInBraces = function(value, fromTitle, toTitle, options) {\\n\\tvar log = this.relink(value, fromTitle, toTitle, options);\\n\\tif (log && log.output && log.output.indexOf(\\\"}\\\") >= 0) {\\n\\t\\tdelete log.output;\\n\\t\\tlog.impossible = true;\\n\\t}\\n\\treturn log;\\n};\\n\\nexports.toString = function(textReference) {\\n\\tvar title = textReference.title || '';\\n\\tif (textReference.field) {\\n\\t\\treturn title + \\\"!!\\\" + textReference.field;\\n\\t} else if (textReference.index) {\\n\\t\\treturn title + \\\"##\\\" + textReference.index;\\n\\t}\\n\\treturn title;\\n};\\n\\nexports.canBePretty = function(title) {\\n\\treturn !title || (title.indexOf(\\\"!!\\\") \u003C 0 && title.indexOf(\\\"##\\\") \u003C 0);\\n};\\n\",\"module-type\":\"relinkfieldtype\",\"title\":\"$:/plugins/flibbles/relink/js/fieldtypes/reference.js\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/fieldtypes/title.js\":{\"text\":\"/*\\\\\\nThis specifies logic for replacing a single-tiddler field. This is the\\nsimplest kind of field type. One title swaps out for the other.\\n\\\\*/\\n\\n// NOTE TO MODDERS: If you're making your own field types, the name must be\\n// alpha characters only.\\nexports.name = 'title';\\n\\nexports.report = function(value, callback, options) {\\n\\tcallback(value);\\n};\\n\\n/**Returns undefined if no change was made.\\n */\\nexports.relink = function(value, fromTitle, toTitle, options) {\\n\\tif (value === fromTitle) {\\n\\t\\treturn {output: toTitle};\\n\\t}\\n\\treturn undefined;\\n};\\n\\n// This is legacy support for when 'title' was known as 'field'\\nexports.aliases = ['field', 'yes'];\\n\",\"module-type\":\"relinkfieldtype\",\"title\":\"$:/plugins/flibbles/relink/js/fieldtypes/title.js\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/fieldtypes/wikitext.js\":{\"text\":\"/*\\\\\\nThis specifies logic for updating filters to reflect title changes.\\n\\\\*/\\n\\nexports.name = \\\"wikitext\\\";\\n\\nvar type = 'text/vnd.tiddlywiki';\\n\\nvar WikiParser = require(\\\"$:/core/modules/parsers/wikiparser/wikiparser.js\\\")[type];\\nvar Rebuilder = require(\\\"$:/plugins/flibbles/relink/js/utils/rebuilder.js\\\");\\nvar utils = require('$:/plugins/flibbles/relink/js/utils');\\nvar WikitextContext = utils.getContext('wikitext');\\n\\nfunction collectRules() {\\n\\tvar rules = Object.create(null);\\n\\t$tw.modules.forEachModuleOfType(\\\"relinkwikitextrule\\\", function(title, exports) {\\n\\t\\tvar names = exports.name;\\n\\t\\tif (typeof names === \\\"string\\\") {\\n\\t\\t\\tnames = [names];\\n\\t\\t}\\n\\t\\tif (names !== undefined) {\\n\\t\\t\\tfor (var i = 0; i \u003C names.length; i++) {\\n\\t\\t\\t\\trules[names[i]] = exports;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t});\\n\\treturn rules;\\n}\\n\\nfunction WikiWalker(type, text, options) {\\n\\tthis.options = options;\\n\\tif (!this.relinkMethodsInjected) {\\n\\t\\tvar rules = collectRules();\\n\\t\\t$tw.utils.each([this.pragmaRuleClasses, this.blockRuleClasses, this.inlineRuleClasses], function(classList) {\\n\\t\\t\\tfor (var name in classList) {\\n\\t\\t\\t\\tif (rules[name]) {\\n\\t\\t\\t\\t\\tdelete rules[name].name;\\n\\t\\t\\t\\t\\t$tw.utils.extend(classList[name].prototype, rules[name]);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t});\\n\\t\\tWikiWalker.prototype.relinkMethodsInjected = true;\\n\\t}\\n\\tthis.context = new WikitextContext(options.settings);\\n\\tWikiParser.call(this, type, text, options);\\n};\\n\\nWikiWalker.prototype = Object.create(WikiParser.prototype);\\n\\nWikiWalker.prototype.parsePragmas = function() {\\n\\tvar entries = this.tree;\\n\\twhile (true) {\\n\\t\\tthis.skipWhitespace();\\n\\t\\tif (this.pos >= this.sourceLength) {\\n\\t\\t\\tbreak;\\n\\t\\t}\\n\\t\\tvar nextMatch = this.findNextMatch(this.pragmaRules, this.pos);\\n\\t\\tif (!nextMatch || nextMatch.matchIndex !== this.pos) {\\n\\t\\t\\tbreak;\\n\\t\\t}\\n\\t\\tentries.push.apply(entries, this.handleRule(nextMatch));\\n\\t}\\n\\treturn entries;\\n};\\n\\nWikiWalker.prototype.parseInlineRunUnterminated = function(options) {\\n\\tvar entries = [];\\n\\tvar nextMatch = this.findNextMatch(this.inlineRules, this.pos);\\n\\twhile (this.pos \u003C this.sourceLength && nextMatch) {\\n\\t\\tif (nextMatch.matchIndex > this.pos) {\\n\\t\\t\\tthis.pos = nextMatch.matchIndex;\\n\\t\\t}\\n\\t\\tentries.push.apply(entries, this.handleRule(nextMatch));\\n\\t\\tnextMatch = this.findNextMatch(this.inlineRules, this.pos);\\n\\t}\\n\\tthis.pos = this.sourceLength;\\n\\treturn entries;\\n};\\n\\nWikiWalker.prototype.parseInlineRunTerminated = function(terminatorRegExp,options) {\\n\\tvar entries = [];\\n\\toptions = options || {};\\n\\tterminatorRegExp.lastIndex = this.pos;\\n\\tvar terminatorMatch = terminatorRegExp.exec(this.source);\\n\\tvar inlineRuleMatch = this.findNextMatch(this.inlineRules,this.pos);\\n\\twhile(this.pos \u003C this.sourceLength && (terminatorMatch || inlineRuleMatch)) {\\n\\t\\tif (terminatorMatch) {\\n\\t\\t\\tif (!inlineRuleMatch || inlineRuleMatch.matchIndex >= terminatorMatch.index) {\\n\\t\\t\\t\\tthis.pos = terminatorMatch.index;\\n\\t\\t\\t\\tif (options.eatTerminator) {\\n\\t\\t\\t\\t\\tthis.pos += terminatorMatch[0].length;\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\treturn entries;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\tif (inlineRuleMatch) {\\n\\t\\t\\tif (inlineRuleMatch.matchIndex > this.pos) {\\n\\t\\t\\t\\tthis.pos = inlineRuleMatch.matchIndex;\\n\\t\\t\\t}\\n\\t\\t\\tentries.push.apply(entries, this.handleRule(inlineRuleMatch));\\n\\t\\t\\tinlineRuleMatch = this.findNextMatch(this.inlineRules, this.pos);\\n\\t\\t\\tterminatorRegExp.lastIndex = this.pos;\\n\\t\\t\\tterminatorMatch = terminatorRegExp.exec(this.source);\\n\\t\\t}\\n\\t}\\n\\tthis.pos = this.sourceLength;\\n\\treturn entries;\\n\\n};\\n\\nWikiWalker.prototype.parseBlock = function(terminatorRegExpString) {\\n\\tvar terminatorRegExp = terminatorRegExpString ? new RegExp(\\\"(\\\" + terminatorRegExpString + \\\"|\\\\\\\\r?\\\\\\\\n\\\\\\\\r?\\\\\\\\n)\\\",\\\"mg\\\") : /(\\\\r?\\\\n\\\\r?\\\\n)/mg;\\n\\tthis.skipWhitespace();\\n\\tif (this.pos >= this.sourceLength) {\\n\\t\\treturn [];\\n\\t}\\n\\tvar nextMatch = this.findNextMatch(this.blockRules, this.pos);\\n\\tif(nextMatch && nextMatch.matchIndex === this.pos) {\\n\\t\\treturn this.handleRule(nextMatch);\\n\\t}\\n\\treturn this.parseInlineRun(terminatorRegExp);\\n};\\n\\nWikiWalker.prototype.amendRules = function(type, names) {\\n\\tvar only;\\n\\tWikiParser.prototype.amendRules.call(this, type, names);\\n\\tif (type === \\\"only\\\") {\\n\\t\\tonly = true;\\n\\t} else if (type === \\\"except\\\") {\\n\\t\\tonly = false;\\n\\t} else {\\n\\t\\treturn;\\n\\t}\\n\\tif (only !== (names.indexOf(\\\"macrodef\\\") >= 0) && this.options.macrodefCanBeDisabled) {\\n\\t\\tthis.options.placeholder = undefined\\n\\t}\\n\\tif (only !== (names.indexOf(\\\"html\\\") >= 0)) {\\n\\t\\tthis.context.allowWidgets = disabled;\\n\\t}\\n\\tif (only !== (names.indexOf(\\\"prettylink\\\") >= 0)) {\\n\\t\\tthis.context.allowPrettylinks = disabled;\\n\\t}\\n};\\n\\nfunction disabled() { return false; };\\n\\n/// Reporter\\n\\nfunction WikiReporter(type, text, callback, options) {\\n\\tthis.callback = callback;\\n\\tWikiWalker.call(this, type, text, options);\\n};\\n\\nWikiReporter.prototype = Object.create(WikiWalker.prototype);\\n\\nWikiReporter.prototype.handleRule = function(ruleInfo) {\\n\\tif (ruleInfo.rule.report) {\\n\\t\\truleInfo.rule.report(this.source, this.callback, this.options);\\n\\t} else {\\n\\t\\tif (ruleInfo.rule.matchRegExp !== undefined) {\\n\\t\\t\\tthis.pos = ruleInfo.rule.matchRegExp.lastIndex;\\n\\t\\t} else {\\n\\t\\t\\t// We can't easily determine the end of this\\n\\t\\t\\t// rule match. We'll \\\"parse\\\" it so that\\n\\t\\t\\t// parser.pos gets updated, but we throw away\\n\\t\\t\\t// the results.\\n\\t\\t\\truleInfo.rule.parse();\\n\\t\\t}\\n\\t}\\n};\\n\\nexports.report = function(wikitext, callback, options) {\\n\\t// Unfortunately it's the side-effect of creating this that reports.\\n\\tnew WikiReporter(options.type, wikitext, callback, options);\\n};\\n\\n/// Relinker\\n\\nfunction WikiRelinker(type, text, fromTitle, toTitle, options) {\\n\\tthis.fromTitle = fromTitle;\\n\\tthis.toTitle = toTitle;\\n\\tthis.placeholder = options.placeholder;\\n\\tif (this.placeholder) {\\n\\t\\tthis.placeholder.parser = this;\\n\\t}\\n\\tWikiWalker.call(this, type, text, options);\\n};\\n\\nWikiRelinker.prototype = Object.create(WikiWalker.prototype);\\n\\nWikiRelinker.prototype.handleRule = function(ruleInfo) {\\n\\tif (ruleInfo.rule.relink) {\\n\\t\\tvar start = ruleInfo.matchIndex;\\n\\t\\tvar newEntry = ruleInfo.rule.relink(this.source, this.fromTitle, this.toTitle, this.options);\\n\\t\\tif (newEntry !== undefined) {\\n\\t\\t\\tif (newEntry.output) {\\n\\t\\t\\t\\tnewEntry.start = start;\\n\\t\\t\\t\\tnewEntry.end = this.pos;\\n\\t\\t\\t}\\n\\t\\t\\treturn [newEntry];\\n\\t\\t}\\n\\t} else {\\n\\t\\tif (ruleInfo.rule.matchRegExp !== undefined) {\\n\\t\\t\\tthis.pos = ruleInfo.rule.matchRegExp.lastIndex;\\n\\t\\t} else {\\n\\t\\t\\t// We can't easily determine the end of this\\n\\t\\t\\t// rule match. We'll \\\"parse\\\" it so that\\n\\t\\t\\t// parser.pos gets updated, but we throw away\\n\\t\\t\\t// the results.\\n\\t\\t\\truleInfo.rule.parse();\\n\\t\\t}\\n\\t}\\n\\treturn [];\\n};\\n\\nexports.relink = function(wikitext, fromTitle, toTitle, options) {\\n\\tvar parser = new WikiRelinker(options.type, wikitext, fromTitle, toTitle, options),\\n\\t\\twikiEntry = undefined;\\n\\t// Now that we have an array of entries, let's produce the wikiText entry\\n\\t// containing them all.\\n\\tif (parser.tree.length > 0) {\\n\\t\\tvar builder = new Rebuilder(wikitext);\\n\\t\\twikiEntry = {};\\n\\t\\tfor (var i = 0; i \u003C parser.tree.length; i++) {\\n\\t\\t\\tvar entry = parser.tree[i];\\n\\t\\t\\tif (entry.impossible) {\\n\\t\\t\\t\\twikiEntry.impossible = true;\\n\\t\\t\\t}\\n\\t\\t\\tif (entry.output) {\\n\\t\\t\\t\\tbuilder.add(entry.output, entry.start, entry.end);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\twikiEntry.output = builder.results();\\n\\t}\\n\\treturn wikiEntry;\\n};\\n\",\"module-type\":\"relinkfieldtype\",\"title\":\"$:/plugins/flibbles/relink/js/fieldtypes/wikitext.js\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/fieldtypes/filter/operators.js\":{\"text\":\"/*\\\\\\n\\nHandles reporting of filter operators.\\n\\n\\\\*/\\n\\nvar refHandler = require(\\\"$:/plugins/flibbles/relink/js/fieldtypes/reference\\\");\\nvar titleHandler = require(\\\"$:/plugins/flibbles/relink/js/fieldtypes/title\\\");\\nvar macrocall = require(\\\"$:/plugins/flibbles/relink/js/utils/macrocall.js\\\");\\n\\nexports.name = \\\"operators\\\";\\n\\nexports.report = function(filterParseTree, callback, options) {\\n\\tfor (var i = 0; i \u003C filterParseTree.length; i++) {\\n\\t\\tvar run = filterParseTree[i];\\n\\t\\tfor (var j = 0; j \u003C run.operators.length; j++) {\\n\\t\\t\\tvar operator = run.operators[j];\\n\\t\\t\\tfor (var index = 1; index \u003C= operator.operands.length; index++) {\\n\\t\\t\\t\\tvar operand = operator.operands[index-1];\\n\\t\\t\\t\\tvar display = operator.operator === 'title'? '': operator.operator;\\n\\t\\t\\t\\tif (operator.suffix) {\\n\\t\\t\\t\\t\\tdisplay += ':' + operator.suffix;\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\t// Now add any commas if this is a later operand\\n\\t\\t\\t\\tfor (var x = 1; x \u003C index; x++) {\\n\\t\\t\\t\\t\\tdisplay += ',';\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tif (operand.indirect) {\\n\\t\\t\\t\\t\\trefHandler.report(operand.text, function(title, blurb) {\\n\\t\\t\\t\\t\\t\\tcallback(title, (run.prefix || '') + '[' + (operator.prefix || '') + display + '{' + (blurb || '') + '}]');\\n\\t\\t\\t\\t\\t}, options);\\n\\t\\t\\t\\t} else if (operand.variable) {\\n\\t\\t\\t\\t\\tvar macro = $tw.utils.parseMacroInvocation(\\\"\u003C\u003C\\\"+operand.text+\\\">>\\\", 0);\\n\\t\\t\\t\\t\\tmacrocall.report(options.settings, macro, function(title, blurb) {\\n\\t\\t\\t\\t\\t\\tcallback(title, (run.prefix || '') + '[' + (operator.prefix || '') + display + '\u003C' + blurb + '>]');\\n\\t\\t\\t\\t\\t}, options);\\n\\t\\t\\t\\t\\tcontinue;\\n\\t\\t\\t\\t} else if (operand.text) {\\n\\t\\t\\t\\t\\tvar handler = fieldType(options.settings, operator, index, options)\\n\\t\\t\\t\\t\\tif (handler) {\\n\\t\\t\\t\\t\\t\\thandler.report(operand.text, function(title, blurb) {\\n\\t\\t\\t\\t\\t\\t\\tif (blurb || !standaloneTitleRun(run)) {\\n\\t\\t\\t\\t\\t\\t\\t\\tcallback(title, (run.prefix || '') + '[' + (operator.prefix || '') + display + '[' + (blurb || '') + ']]');\\n\\t\\t\\t\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\t\\t\\t\\tcallback(title, run.prefix);\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t}, options);\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n};\\n\\nexports.relink = function(filterParseTree, fromTitle, toTitle, options) {\\n\\tvar output = {};\\n\\tfor (var i = 0; i \u003C filterParseTree.length; i++) {\\n\\t\\tvar run = filterParseTree[i];\\n\\t\\tfor (var j = 0; j \u003C run.operators.length; j++) {\\n\\t\\t\\tvar operator = run.operators[j];\\n\\t\\t\\tfor (var index = 1; index \u003C= operator.operands.length; index++) {\\n\\t\\t\\t\\tvar operand = operator.operands[index-1],\\n\\t\\t\\t\\t\\tentry = undefined;\\n\\t\\t\\t\\tif (operand.indirect) {\\n\\t\\t\\t\\t\\tentry = refHandler.relinkInBraces(operand.text, fromTitle, toTitle, options);\\n\\t\\t\\t\\t} else if (operand.variable) {\\n\\t\\t\\t\\t\\tentry = relinkMacro(options.settings, operand.text, fromTitle, toTitle, options);\\n\\t\\t\\t\\t} else if (operand.text) {\\n\\t\\t\\t\\t\\tvar handler = fieldType(options.settings, operator, index, options)\\n\\t\\t\\t\\t\\tif (handler) {\\n\\t\\t\\t\\t\\t\\tentry = handler.relink(operand.text, fromTitle, toTitle, options);\\n\\t\\t\\t\\t\\t\\tif (entry && entry.output) {\\n\\t\\t\\t\\t\\t\\t\\toperand.handler = handler.name;\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tif (entry) {\\n\\t\\t\\t\\t\\tif (entry.output) {\\n\\t\\t\\t\\t\\t\\toutput.changed = true;\\n\\t\\t\\t\\t\\t\\toperand.text = entry.output;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\tif (entry.impossible) {\\n\\t\\t\\t\\t\\t\\toutput.impossible = true;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\treturn output;\\n};\\n\\n// Returns the relinker needed for a given operator, or returns undefined.\\n// This method should really be broken into three modules called relinkfilteroperator\\nfunction fieldType(context, operator, index, options) {\\n\\tvar op = operator.operator,\\n\\t\\tsuffix = operator.suffix,\\n\\t\\trtn = (suffix && context.getOperator(op + ':' + suffix, index))\\n\\t\\t || context.getOperator(op, index);\\n\\tif (!rtn && op === 'contains' && index == 1) {\\n\\t\\t// The 'contains' operator gets special handling\\n\\t\\tsuffix = suffix || 'list';\\n\\t\\tvar handler = context.getFields()[suffix];\\n\\t\\tif (handler && (handler.name === 'list' || handler.name === 'filter')) {\\n\\t\\t\\t// Contains uses the title handler, but only if it's\\n\\t\\t\\t// searching a 'list' or 'filter' field.\\n\\t\\t\\treturn titleHandler;\\n\\t\\t}\\n\\n\\t}\\n\\tif (!rtn && index == 1) {\\n\\t\\t// maybe it's a field operator?\\n\\t\\trtn = (op === 'field' && context.getFields()[suffix])\\n\\t\\t || (!suffix && !options.wiki.getFilterOperators()[op] && context.getFields()[op]);\\n\\t}\\n\\treturn rtn;\\n};\\n\\nfunction standaloneTitleRun(run) {\\n\\tif (run.operators.length == 1) {\\n\\t\\tvar op = run.operators[0];\\n\\t\\treturn op.operator === 'title'\\n\\t\\t\\t&& !op.prefix\\n\\t\\t\\t&& !op.suffix;\\n\\t}\\n\\treturn false;\\n};\\n\\n// Takes care of relinking a macro, as well as putting it back together.\\nfunction relinkMacro(context, text, fromTitle, toTitle, options) {\\n\\ttext = \\\"\u003C\u003C\\\" + text + \\\">>\\\";\\n\\tvar macro = $tw.utils.parseMacroInvocation(text, 0);\\n\\tvar entry = macrocall.relink(context, macro, text, fromTitle, toTitle, false, options);\\n\\tif (entry && entry.output) {\\n\\t\\tvar string = macrocall.reassemble(entry.output, text, options);\\n\\t\\t// We remove the surrounding brackets.\\n\\t\\tstring = string.substring(2, string.length-2);\\n\\t\\t// And we make sure that no brackets remain\\n\\t\\tif (string.indexOf(\\\">\\\") >= 0) {\\n\\t\\t\\tdelete entry.output;\\n\\t\\t\\tentry.impossible = true;\\n\\t\\t} else {\\n\\t\\t\\tentry.output = string;\\n\\t\\t}\\n\\t}\\n\\treturn entry;\\n};\\n\",\"module-type\":\"relinkfilter\",\"title\":\"$:/plugins/flibbles/relink/js/fieldtypes/filter/operators.js\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/fieldtypes/reference/title.js\":{\"text\":\"/*\\\\\\n\\nThis handles the title inside of references.\\n\\n\\\\*/\\n\\nexports.name = 'title';\\n\\nexports.report = function(reference, callback, options) {\\n\\tvar title = reference.title;\\n\\tif (title) {\\n\\t\\tif (reference.field) {\\n\\t\\t\\tcallback(title, '!!' + reference.field);\\n\\t\\t} else if (reference.index) {\\n\\t\\t\\tcallback(title, '##' + reference.index);\\n\\t\\t} else {\\n\\t\\t\\tcallback(title);\\n\\t\\t}\\n\\t}\\n};\\n\\nexports.relink = function(reference, fromTitle, toTitle, options) {\\n\\tif ($tw.utils.trim(reference.title) === fromTitle) {\\n\\t\\t// preserve user's whitespace\\n\\t\\treference.title = reference.title.replace(fromTitle, toTitle);\\n\\t\\treturn {output: reference};\\n\\t}\\n};\\n\",\"module-type\":\"relinkreference\",\"title\":\"$:/plugins/flibbles/relink/js/fieldtypes/reference/title.js\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/relinkoperations/fields.js\":{\"text\":\"/*\\\\\\n\\nHandles all fields specified in the plugin configuration. Currently, this\\nonly supports single-value fields.\\n\\n\\\\*/\\n\\n/*jslint node: false, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nexports.name = 'fields';\\n\\nexports.report = function(tiddler, callback, options) {\\n\\tvar fields = options.settings.getFields();\\n\\t$tw.utils.each(fields, function(handler, field) {\\n\\t\\tvar input = tiddler.fields[field];\\n\\t\\tif (input) {\\n\\t\\t\\tif (field === 'list' && tiddler.fields['plugin-type']) {\\n\\t\\t\\t\\t// We have a built-in exception here. plugins use their list\\n\\t\\t\\t\\t// field differently. There's a whole mechanism for what\\n\\t\\t\\t\\t// they actually point to, but let's not bother with that now\\n\\t\\t\\t\\treturn;\\n\\t\\t\\t}\\n\\t\\t\\thandler.report(input, function(title, blurb) {\\n\\t\\t\\t\\tif (blurb) {\\n\\t\\t\\t\\t\\tcallback(title, field + ': ' + blurb);\\n\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\tcallback(title, field);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}, options);\\n\\t\\t}\\n\\t});\\n};\\n\\nexports.relink = function(tiddler, fromTitle, toTitle, changes, options) {\\n\\tvar fields = options.settings.getFields();\\n\\t$tw.utils.each(fields, function(handler, field) {\\n\\t\\tvar input = tiddler.fields[field];\\n\\t\\tif (input) {\\n\\t\\t\\tif (field === 'list' && tiddler.fields['plugin-type']) {\\n\\t\\t\\t\\t// Same deal as above. Skip.\\n\\t\\t\\t\\treturn;\\n\\t\\t\\t}\\n\\t\\t\\tvar entry = handler.relink(input, fromTitle, toTitle, options);\\n\\t\\t\\tif (entry !== undefined) {\\n\\t\\t\\t\\tchanges[field] = entry;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t});\\n};\\n\",\"module-type\":\"relinkoperator\",\"title\":\"$:/plugins/flibbles/relink/js/relinkoperations/fields.js\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/relinkoperations/text.js\":{\"text\":\"/*\\\\\\n\\nDepending on the tiddler type, this will apply textOperators which may\\nrelink titles within the body.\\n\\n\\\\*/\\n\\n/*jslint node: false, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nvar defaultOperator = \\\"text/vnd.tiddlywiki\\\";\\nvar utils = require('$:/plugins/flibbles/relink/js/utils.js');\\n\\nexports.name = 'text';\\n\\nvar textOperators = utils.getModulesByTypeAsHashmap('relinktext', 'type');\\n\\n// These are deprecated. Don't use them.\\nvar oldTextOperators = utils.getModulesByTypeAsHashmap('relinktextoperator', 'type');\\n\\n// $:/DefaultTiddlers is a tiddler which has type \\\"text/vnd.tiddlywiki\\\",\\n// but it lies. It doesn't contain wikitext. It contains a filter, so\\n// we pretend it has a filter type.\\n// If you want to be able to add more exceptions for your plugin, let me know.\\nvar exceptions = {\\n\\t\\\"$:/DefaultTiddlers\\\": \\\"text/x-tiddler-filter\\\"\\n};\\n\\nexports.report = function(tiddler, callback, options) {\\n\\tvar fields = tiddler.fields;\\n\\tif (fields.text) {\\n\\t\\tvar type = exceptions[fields.title] || fields.type || defaultOperator;\\n\\t\\tif (textOperators[type]) {\\n\\t\\t\\ttextOperators[type].report(tiddler.fields.text, callback, options);\\n\\t\\t} else if (oldTextOperators[type]) {\\n\\t\\t\\t// For the deprecated text operators\\n\\t\\t\\toldTextOperators[type].report(tiddler, callback, options);\\n\\t\\t}\\n\\t}\\n};\\n\\nexports.relink = function(tiddler, fromTitle, toTitle, changes, options) {\\n\\tvar fields = tiddler.fields;\\n\\tif (fields.text) {\\n\\t\\tvar type = exceptions[fields.title] || fields.type || defaultOperator,\\n\\t\\t\\tentry;\\n\\t\\tif (textOperators[type]) {\\n\\t\\t\\tentry = textOperators[type].relink(tiddler.fields.text, fromTitle, toTitle, options);\\n\\t\\t} else if (oldTextOperators[type]) {\\n\\t\\t\\t// For the deprecated text operators\\n\\t\\t\\tentry = oldTextOperators[type].relink(tiddler, fromTitle, toTitle, options);\\n\\t\\t}\\n\\t\\tif (entry) {\\n\\t\\t\\tchanges.text = entry;\\n\\t\\t}\\n\\t}\\n};\\n\",\"module-type\":\"relinkoperator\",\"title\":\"$:/plugins/flibbles/relink/js/relinkoperations/text.js\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/relinkoperations/text/filtertext.js\":{\"text\":\"/*\\\\\\n\\nThis relinks tiddlers which contain filters in their body, as oppose to\\nwikitext.\\n\\n\\\\*/\\n\\n/*jslint node: false, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nvar filterHandler = require(\\\"$:/plugins/flibbles/relink/js/utils\\\").getType('filter');\\n\\nexports.type = 'text/x-tiddler-filter';\\n\\nexports.report = filterHandler.report;\\nexports.relink = filterHandler.relink;\\n\",\"module-type\":\"relinktext\",\"title\":\"$:/plugins/flibbles/relink/js/relinkoperations/text/filtertext.js\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/relinkoperations/text/listtext.js\":{\"text\":\"/*\\\\\\n\\nThis relinks tiddlers which contain a tiddler list as their body.\\n\\n\\\\*/\\n\\n/*jslint node: false, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nvar listHandler = require(\\\"$:/plugins/flibbles/relink/js/utils\\\").getType('list');\\n\\nexports.type = 'text/x-tiddler-list';\\n\\nexports.report = listHandler.report;\\nexports.relink = listHandler.relink;\\n\",\"module-type\":\"relinktext\",\"title\":\"$:/plugins/flibbles/relink/js/relinkoperations/text/listtext.js\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/relinkoperations/text/referencetext.js\":{\"text\":\"/*\\\\\\n\\nThis relinks tiddlers which contain a tiddler reference as their body.\\n\\n\\\\*/\\n\\n/*jslint node: false, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nvar refHandler = require(\\\"$:/plugins/flibbles/relink/js/utils\\\").getType('reference');\\n\\nexports.type = 'text/x-tiddler-reference';\\n\\nexports.report = refHandler.report;\\nexports.relink = refHandler.relink;\\n\",\"module-type\":\"relinktext\",\"title\":\"$:/plugins/flibbles/relink/js/relinkoperations/text/referencetext.js\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/relinkoperations/text/titletext.js\":{\"text\":\"/*\\\\\\n\\nThis relinks tiddlers which contain a single title as their body.\\n\\n\\\\*/\\n\\n/*jslint node: false, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nvar titleHandler = require(\\\"$:/plugins/flibbles/relink/js/utils\\\").getType('title');\\n\\nexports.type = 'text/x-tiddler-title';\\n\\nexports.report = titleHandler.report;\\nexports.relink = titleHandler.relink;\\n\",\"module-type\":\"relinktext\",\"title\":\"$:/plugins/flibbles/relink/js/relinkoperations/text/titletext.js\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext.js\":{\"text\":\"/*\\\\\\n\\nChecks for fromTitle in text. If found, sees if it's relevant,\\nand tries to swap it out if it is.\\n\\n\\\\*/\\n\\n/*jslint node: false, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nvar Placeholder = require(\\\"$:/plugins/flibbles/relink/js/utils/placeholder.js\\\");\\nvar wikitextHandler = require('$:/plugins/flibbles/relink/js/utils.js').getType('wikitext');\\n\\nexports.type = 'text/vnd.tiddlywiki';\\n\\nexports.report = wikitextHandler.report;\\n\\nexports.relink = function(text, fromTitle, toTitle, options) {\\n\\tvar placeholder = new Placeholder();\\n\\tvar currentOptions = Object.create(options);\\n\\tcurrentOptions.placeholder = placeholder;\\n\\tvar entry = wikitextHandler.relink(text, fromTitle, toTitle, currentOptions);\\n\\tif (entry && entry.output) {\\n\\t\\t// If there's output, we've also got to prepend any macros\\n\\t\\t// that the placeholder defined.\\n\\t\\tvar preamble = placeholder.getPreamble();\\n\\t\\tentry.output = preamble + entry.output;\\n\\t}\\n\\treturn entry;\\n};\\n\",\"module-type\":\"relinktext\",\"title\":\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext.js\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/code.js\":{\"text\":\"/*\\\\\\nmodule-type: relinkwikitextrule\\n\\nHandles code blocks. Or rather //doesn't// handle them, since we should\\nignore their contents.\\n\\n\\\"`` [[Renamed Title]] ``\\\" will remain unchanged.\\n\\n\\\\*/\\n\\nexports.name = [\\\"codeinline\\\", \\\"codeblock\\\"];\\n\\nexports.relink = function(text) {\\n\\tvar reEnd;\\n\\tthis.parser.pos = this.matchRegExp.lastIndex;\\n\\t// I'm lazy. This relink method works for both codeblock and codeinline\\n\\tif (this.match[0].length > 2) {\\n\\t\\t// Must be a codeblock\\n\\t\\treEnd = /\\\\r?\\\\n```$/mg;\\n\\t} else {\\n\\t\\t// Must be a codeinline\\n\\t\\treEnd = new RegExp(this.match[1], \\\"mg\\\");\\n\\t}\\n\\treEnd.lastIndex = this.parser.pos;\\n\\tvar match = reEnd.exec(text);\\n\\tif (match) {\\n\\t\\tthis.parser.pos = match.index + match[0].length;\\n\\t} else {\\n\\t\\tthis.parser.pos = this.parser.sourceLength;\\n\\t}\\n\\treturn undefined;\\n};\\n\\n// Same thing. Just skip the pos ahead.\\nexports.report = exports.relink;\\n\",\"module-type\":\"relinkwikitextrule\",\"title\":\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/code.js\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/comment.js\":{\"text\":\"/*\\\\\\nmodule-type: relinkwikitextrule\\n\\nHandles comment blocks. Or rather //doesn't// handle them, since we should\\nignore their contents.\\n\\n\\\"\u003C!-- [[Renamed Title]] -->\\\" will remain unchanged.\\n\\n\\\\*/\\n\\nexports.name = [\\\"commentinline\\\", \\\"commentblock\\\"];\\n\\nexports.relink = function(text) {\\n\\tthis.parser.pos = this.endMatchRegExp.lastIndex;\\n\\treturn undefined;\\n};\\n\\nexports.report = exports.relink;\\n\",\"module-type\":\"relinkwikitextrule\",\"title\":\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/comment.js\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/filteredtransclude.js\":{\"text\":\"/*\\\\\\nmodule-type: relinkwikitextrule\\n\\nHandles replacement of filtered transclusions in wiki text like,\\n\\n{{{ [tag[docs]] }}}\\n{{{ [tag[docs]] |tooltip}}}\\n{{{ [tag[docs]] ||TemplateTitle}}}\\n{{{ [tag[docs]] |tooltip||TemplateTitle}}}\\n{{{ [tag[docs]] }}width:40;height:50;}.class.class\\n\\nThis renames both the list and the template field.\\n\\n\\\\*/\\n\\nexports.name = ['filteredtranscludeinline', 'filteredtranscludeblock'];\\n\\nvar filterHandler = require(\\\"$:/plugins/flibbles/relink/js/utils\\\").getType('filter');\\nvar utils = require(\\\"./utils.js\\\");\\n\\nexports.report = function(text, callback, options) {\\n\\tvar m = this.match,\\n\\t\\tfilter = m[1],\\n\\t\\ttemplate = $tw.utils.trim(m[3]),\\n\\t\\tappend = template ? '||' + template + '}}}' : '}}}';\\n\\tfilterHandler.report(filter, function(title, blurb) {\\n\\t\\tcallback(title, '{{{' + blurb + append);\\n\\t}, options);\\n\\tif (template) {\\n\\t\\tcallback(template, '{{{' + $tw.utils.trim(filter).replace(/\\\\r?\\\\n/mg, ' ') + '||}}}');\\n\\t}\\n\\tthis.parser.pos = this.matchRegExp.lastIndex;\\n};\\n\\nexports.relink = function(text, fromTitle, toTitle, options) {\\n\\tvar m = this.match,\\n\\t\\tfilter = m[1],\\n\\t\\ttooltip = m[2],\\n\\t\\ttemplate = m[3],\\n\\t\\tstyle = m[4],\\n\\t\\tclasses = m[5],\\n\\t\\tparser = this.parser,\\n\\t\\tentry = {};\\n\\tparser.pos = this.matchRegExp.lastIndex;\\n\\tvar modified = false;\\n\\n\\tvar filterEntry = filterHandler.relink(filter, fromTitle, toTitle, options);\\n\\tif (filterEntry !== undefined) {\\n\\t\\tif (filterEntry.output) {\\n\\t\\t\\tfilter = filterEntry.output;\\n\\t\\t\\tmodified = true;\\n\\t\\t}\\n\\t\\tif (filterEntry.impossible) {\\n\\t\\t\\tentry.impossible = true;\\n\\t\\t}\\n\\t}\\n\\n\\tif ($tw.utils.trim(template) === fromTitle) {\\n\\t\\t// preserves user-inputted whitespace\\n\\t\\ttemplate = template.replace(fromTitle, toTitle);\\n\\t\\tmodified = true;\\n\\t}\\n\\tif (!modified) {\\n\\t\\tif (!entry.impossible) {\\n\\t\\t\\treturn undefined;\\n\\t\\t}\\n\\t} else {\\n\\t\\tvar output = this.makeFilteredtransclude(this.parser, filter, tooltip, template, style, classes);\\n\\t\\tif (output === undefined) {\\n\\t\\t\\tentry.impossible = true;\\n\\t\\t} else {\\n\\t\\t\\t// By copying over the ending newline of the original\\n\\t\\t\\t// text if present, thisrelink method thus works for\\n\\t\\t\\t// both the inline and block rule\\n\\t\\t\\tentry.output = output + utils.getEndingNewline(m[0]);\\n\\t\\t}\\n\\t}\\n\\treturn entry;\\n};\\n\\nexports.makeFilteredtransclude = function(parser, filter, tooltip, template, style, classes) {\\n\\tif (canBePretty(filter) && canBePrettyTemplate(template)) {\\n\\t\\treturn prettyList(filter, tooltip, template, style, classes);\\n\\t}\\n\\tif (classes !== undefined) {\\n\\t\\tclasses = classes.split('.').join(' ');\\n\\t}\\n\\treturn utils.makeWidget(parser, '$list', {\\n\\t\\tfilter: filter,\\n\\t\\ttooltip: tooltip,\\n\\t\\ttemplate: template,\\n\\t\\tstyle: style || undefined,\\n\\t\\titemClass: classes});\\n};\\n\\nfunction prettyList(filter, tooltip, template, style, classes) {\\n\\tif (tooltip === undefined) {\\n\\t\\ttooltip = '';\\n\\t} else {\\n\\t\\ttooltip = \\\"|\\\" + tooltip;\\n\\t}\\n\\tif (template === undefined) {\\n\\t\\ttemplate = '';\\n\\t} else {\\n\\t\\ttemplate = \\\"||\\\" + template;\\n\\t}\\n\\tif (classes === undefined) {\\n\\t\\tclasses = '';\\n\\t} else {\\n\\t\\tclasses = \\\".\\\" + classes;\\n\\t}\\n\\tstyle = style || '';\\n\\treturn \\\"{{{\\\"+filter+tooltip+template+\\\"}}\\\"+style+\\\"}\\\"+classes;\\n};\\n\\nfunction canBePretty(filter) {\\n\\treturn filter.indexOf('|') \u003C 0 && filter.indexOf('}}') \u003C 0;\\n};\\n\\nfunction canBePrettyTemplate(template) {\\n\\treturn !template || (\\n\\t\\ttemplate.indexOf('|') \u003C 0\\n\\t\\t&& template.indexOf('{') \u003C 0\\n\\t\\t&& template.indexOf('}') \u003C 0);\\n};\\n\",\"module-type\":\"relinkwikitextrule\",\"title\":\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/filteredtransclude.js\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/html.js\":{\"text\":\"/*\\\\\\nmodule-type: relinkwikitextrule\\n\\nHandles replacement in attributes of widgets and html elements\\nThis is configurable to select exactly which attributes of which elements\\nshould be changed.\\n\\n\u003C$link to=\\\"TiddlerTitle\\\" />\\n\\n\\\\*/\\n\\nvar utils = require(\\\"./utils.js\\\");\\nvar Rebuilder = require(\\\"$:/plugins/flibbles/relink/js/utils/rebuilder\\\");\\nvar relinkUtils = require('$:/plugins/flibbles/relink/js/utils.js');\\nvar htmlOperators = relinkUtils.getModulesByTypeAsHashmap('relinkhtml', 'name');\\n\\nexports.name = \\\"html\\\";\\n\\nexports.report = function(text, callback, options) {\\n\\tvar element = this.nextTag.tag;\\n\\tvar nestedOptions = Object.create(options);\\n\\tnestedOptions.settings = this.parser.context;\\n\\tfor (var operator in htmlOperators) {\\n\\t\\thtmlOperators[operator].report(this.nextTag, this.parser, function(title, blurb) {\\n\\t\\t\\tcallback(title, '\u003C' + blurb + ' />');\\n\\t\\t}, nestedOptions);\\n\\t}\\n\\tthis.parse();\\n};\\n\\nexports.relink = function(text, fromTitle, toTitle, options) {\\n\\tvar widgetEntry = {};\\n\\twidgetEntry.attributes = Object.create(null);\\n\\twidgetEntry.element = this.nextTag.tag;\\n\\tvar elem = this.nextTag;\\n\\tvar changed = false;\\n\\tvar nestedOptions = Object.create(options);\\n\\tnestedOptions.settings = this.parser.context;\\n\\tfor (var operator in htmlOperators) {\\n\\t\\tvar entry = htmlOperators[operator].relink(this.nextTag, this.parser, fromTitle, toTitle, nestedOptions);\\n\\t\\tif (entry) {\\n\\t\\t\\tif (entry.output) {\\n\\t\\t\\t\\tchanged = true;\\n\\t\\t\\t}\\n\\t\\t\\tif (entry.impossible) {\\n\\t\\t\\t\\twidgetEntry.impossible = true;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\tvar tag = this.parse()[0];\\n\\tif (tag.children) {\\n\\t\\tfor (var i = 0; i \u003C tag.children.length; i++) {\\n\\t\\t\\tvar child = tag.children[i];\\n\\t\\t\\tif (child.output) {\\n\\t\\t\\t\\tchanged = true;\\n\\t\\t\\t}\\n\\t\\t\\tif (child.impossible) {\\n\\t\\t\\t\\twidgetEntry.impossible = true;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\tif (changed) {\\n\\t\\tvar builder = new Rebuilder(text, elem.start);\\n\\t\\tfor (var attributeName in elem.attributes) {\\n\\t\\t\\tvar attr = elem.attributes[attributeName];\\n\\t\\t\\tvar quotedValue;\\n\\t\\t\\tswitch (attr.type) {\\n\\t\\t\\tcase 'string':\\n\\t\\t\\t\\tif (attr.valueless) {\\n\\t\\t\\t\\t\\tcontinue;\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tvar quote = relinkUtils.determineQuote(text, attr);\\n\\t\\t\\t\\tquotedValue = utils.wrapAttributeValue(attr.value, quote)\\n\\t\\t\\t\\tif (quotedValue === undefined) {\\n\\t\\t\\t\\t\\t// The value was unquotable. We need to make\\n\\t\\t\\t\\t\\t// a macro in order to replace it.\\n\\t\\t\\t\\t\\tif (!options.placeholder) {\\n\\t\\t\\t\\t\\t\\t// but we can't...\\n\\t\\t\\t\\t\\t\\twidgetEntry.impossible = true;\\n\\t\\t\\t\\t\\t\\tcontinue;\\n\\t\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\t\\tvar value = options.placeholder.getPlaceholderFor(attr.value,attr.handler)\\n\\t\\t\\t\\t\\t\\tquotedValue = \\\"\u003C\u003C\\\"+value+\\\">>\\\";\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tbreak;\\n\\t\\t\\tcase 'indirect':\\n\\t\\t\\t\\tquotedValue = \\\"{{\\\" + attr.textReference + \\\"}}\\\";\\n\\t\\t\\t\\tbreak;\\n\\t\\t\\tcase 'filtered':\\n\\t\\t\\t\\tquotedValue = \\\"{{{\\\" + attr.filter + \\\"}}}\\\";\\n\\t\\t\\t\\tbreak;\\n\\t\\t\\tcase 'macro':\\n\\t\\t\\t\\tif (attr.output) {\\n\\t\\t\\t\\t\\tquotedValue = attr.output;\\n\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\tquotedValue = undefined;\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\t// Else If output isn't set, this wasn't ever changed\\n\\t\\t\\t\\tbreak;\\n\\t\\t\\t}\\n\\t\\t\\tvar ptr = attr.start;\\n\\t\\t\\tptr = $tw.utils.skipWhiteSpace(text, ptr);\\n\\t\\t\\tif (attributeName !== attr.name) {\\n\\t\\t\\t\\t// Ooh, the attribute name changed\\n\\t\\t\\t\\tbuilder.add(attr.name, ptr, ptr + attributeName.length);\\n\\t\\t\\t}\\n\\t\\t\\tif (quotedValue) {\\n\\t\\t\\t\\t// We have a new attribute value\\n\\t\\t\\t\\tptr += attributeName.length;\\n\\t\\t\\t\\tptr = $tw.utils.skipWhiteSpace(text, ptr);\\n\\t\\t\\t\\tptr++; // For the equals\\n\\t\\t\\t\\tptr = $tw.utils.skipWhiteSpace(text, ptr);\\n\\t\\t\\t\\tbuilder.add(quotedValue, ptr, attr.end);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\tif (tag.children) {\\n\\t\\t\\tfor (var i = 0; i \u003C tag.children.length; i++) {\\n\\t\\t\\t\\tvar child = tag.children[i];\\n\\t\\t\\t\\tif (child.output) {\\n\\t\\t\\t\\t\\tbuilder.add(child.output, child.start, child.end);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\twidgetEntry.output = builder.results(this.parser.pos);\\n\\t}\\n\\tif (widgetEntry.output || widgetEntry.impossible) {\\n\\t\\treturn widgetEntry;\\n\\t}\\n\\treturn undefined;\\n};\\n\",\"module-type\":\"relinkwikitextrule\",\"title\":\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/html.js\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/image.js\":{\"text\":\"/*\\\\\\nmodule-type: relinkwikitextrule\\n\\nHandles replacement in wiki text inline rules, like,\\n\\n[img[tiddler.jpg]]\\n\\n[img width=23 height=24 [Description|tiddler.jpg]]\\n\\n\\\\*/\\n\\nvar Rebuilder = require(\\\"$:/plugins/flibbles/relink/js/utils/rebuilder\\\");\\nvar refHandler = require(\\\"$:/plugins/flibbles/relink/js/fieldtypes/reference\\\");\\nvar filterHandler = require(\\\"$:/plugins/flibbles/relink/js/utils\\\").getType('filter');\\nvar macrocall = require(\\\"./macrocall.js\\\");\\nvar utils = require(\\\"./utils.js\\\");\\nvar relinkUtils = require('$:/plugins/flibbles/relink/js/utils.js');\\n\\nexports.name = \\\"image\\\";\\n\\nexports.report = function(text, callback, options) {\\n\\tvar ptr = this.nextImage.start + 4; //[img\\n\\tvar inSource = false;\\n\\tfor (var attributeName in this.nextImage.attributes) {\\n\\t\\tvar attr = this.nextImage.attributes[attributeName];\\n\\t\\tif (attributeName === \\\"source\\\" || attributeName === \\\"tooltip\\\") {\\n\\t\\t\\tif (inSource) {\\n\\t\\t\\t\\tptr = text.indexOf('|', ptr);\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tptr = text.indexOf('[', ptr);\\n\\t\\t\\t\\tinSource = true;\\n\\t\\t\\t}\\n\\t\\t\\tptr += 1;\\n\\t\\t}\\n\\t\\tif (attributeName === \\\"source\\\") {\\n\\t\\t\\tvar tooltip = this.nextImage.attributes.tooltip;\\n\\t\\t\\tvar blurb = '[img[' + (tooltip ? tooltip.value : '') + ']]';\\n\\t\\t\\tcallback(attr.value, blurb);\\n\\t\\t\\tptr = text.indexOf(attr.value, ptr);\\n\\t\\t\\tptr = text.indexOf(']]', ptr) + 2;\\n\\t\\t} else if (attributeName !== \\\"tooltip\\\") {\\n\\t\\t\\tptr = reportAttribute(this.parser, attr, callback, options);\\n\\t\\t}\\n\\t}\\n\\tthis.parser.pos = ptr;\\n};\\n\\nexports.relink = function(text, fromTitle, toTitle, options) {\\n\\tvar ptr = this.nextImage.start,\\n\\t\\tbuilder = new Rebuilder(text, ptr),\\n\\t\\tmakeWidget = false,\\n\\t\\tskipSource = false,\\n\\t\\timageEntry;\\n\\tif (this.nextImage.attributes.source.value === fromTitle && !canBePretty(toTitle, this.nextImage.attributes.tooltip)) {\\n\\t\\tif (this.parser.context.allowWidgets() && (utils.wrapAttributeValue(toTitle) || options.placeholder)) {\\n\\t\\t\\tmakeWidget = true;\\n\\t\\t\\tbuilder.add(\\\"\u003C$image\\\", ptr, ptr+4);\\n\\t\\t} else {\\n\\t\\t\\t// We won't be able to make a placeholder to replace\\n\\t\\t\\t// the source attribute. We check now so we don't\\n\\t\\t\\t// prematurely convert into a widget.\\n\\t\\t\\t// Keep going in case other attributes need replacing.\\n\\t\\t\\tskipSource = true;\\n\\t\\t}\\n\\t}\\n\\tptr += 4; //[img\\n\\tvar inSource = false;\\n\\tfor (var attributeName in this.nextImage.attributes) {\\n\\t\\tvar attr = this.nextImage.attributes[attributeName];\\n\\t\\tif (attributeName === \\\"source\\\" || attributeName === \\\"tooltip\\\") {\\n\\t\\t\\tif (inSource) {\\n\\t\\t\\t\\tptr = text.indexOf('|', ptr);\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tptr = text.indexOf('[', ptr);\\n\\t\\t\\t\\tinSource = true;\\n\\t\\t\\t}\\n\\t\\t\\tif (makeWidget) {\\n\\t\\t\\t\\tif (\\\" \\\\t\\\\n\\\".indexOf(text[ptr-1]) >= 0) {\\n\\t\\t\\t\\t\\tbuilder.add('', ptr, ptr+1);\\n\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\tbuilder.add(' ', ptr, ptr+1);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t\\tptr += 1;\\n\\t\\t}\\n\\t\\tif (attributeName === \\\"source\\\") {\\n\\t\\t\\tptr = text.indexOf(attr.value, ptr);\\n\\t\\t\\tif (attr.value === fromTitle) {\\n\\t\\t\\t\\tif (makeWidget) {\\n\\t\\t\\t\\t\\tvar quotedValue = utils.wrapAttributeValue(toTitle);\\n\\t\\t\\t\\t\\tif (quotedValue === undefined) {\\n\\t\\t\\t\\t\\t\\tvar key = options.placeholder.getPlaceholderFor(toTitle);\\n\\t\\t\\t\\t\\t\\tbuilder.add(\\\"source=\u003C\u003C\\\"+key+\\\">>\\\", ptr, ptr+fromTitle.length);\\n\\t\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\t\\tbuilder.add(\\\"source=\\\"+quotedValue, ptr, ptr+fromTitle.length);\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t} else if (!skipSource) {\\n\\t\\t\\t\\t\\tbuilder.add(toTitle, ptr, ptr+fromTitle.length);\\n\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\tbuilder.impossible = true;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t\\tptr = text.indexOf(']]', ptr);\\n\\t\\t\\tif (makeWidget) {\\n\\t\\t\\t\\tbuilder.add(\\\"/>\\\", ptr, ptr+2);\\n\\t\\t\\t}\\n\\t\\t\\tptr += 2;\\n\\t\\t} else if (attributeName === \\\"tooltip\\\") {\\n\\t\\t\\tif (makeWidget) {\\n\\t\\t\\t\\tptr = text.indexOf(attr.value, ptr);\\n\\t\\t\\t\\tvar quotedValue = utils.wrapAttributeValue(attr.value);\\n\\t\\t\\t\\tbuilder.add(\\\"tooltip=\\\"+quotedValue, ptr, ptr+attr.value.length);\\n\\t\\t\\t}\\n\\t\\t} else {\\n\\t\\t\\tptr = relinkAttribute(this.parser, attr, builder, fromTitle, toTitle, options);\\n\\t\\t}\\n\\t}\\n\\tthis.parser.pos = ptr;\\n\\tif (builder.changed() || builder.impossible) {\\n\\t\\timageEntry = {\\n\\t\\t\\toutput: builder.results(ptr),\\n\\t\\t\\timpossible: builder.impossible };\\n\\t}\\n\\treturn imageEntry;\\n};\\n\\nfunction reportAttribute(parser, attribute, callback, options) {\\n\\tvar text = parser.source;\\n\\tvar ptr = text.indexOf(attribute.name, attribute.start);\\n\\tvar end;\\n\\tptr += attribute.name.length;\\n\\tptr = text.indexOf('=', ptr);\\n\\tif (attribute.type === \\\"string\\\") {\\n\\t\\tptr = text.indexOf(attribute.value, ptr)\\n\\t\\tvar quote = relinkUtils.determineQuote(text, attribute);\\n\\t\\t// ignore first quote. We already passed it\\n\\t\\tend = ptr + quote.length + attribute.value.length;\\n\\t} else if (attribute.type === \\\"indirect\\\") {\\n\\t\\tptr = text.indexOf('{{', ptr);\\n\\t\\tvar end = ptr + attribute.textReference.length + 4;\\n\\t\\trefHandler.report(attribute.textReference, function(title, blurb) {\\n\\t\\t\\tcallback(title, '[img ' + attribute.name + '={{' + (blurb || '') + '}}]');\\n\\t\\t}, options);\\n\\t} else if (attribute.type === \\\"filtered\\\") {\\n\\t\\tptr = text.indexOf('{{{', ptr);\\n\\t\\tvar end = ptr + attribute.filter.length + 6;\\n\\t\\tfilterHandler.report(attribute.filter, function(title, blurb) {\\n\\t\\t\\tcallback(title, '[img ' + attribute.name + '={{{' + blurb + '}}}]');\\n\\t\\t}, options);\\n\\t} else if (attribute.type === \\\"macro\\\") {\\n\\t\\tptr = text.indexOf(\\\"\u003C\u003C\\\", ptr);\\n\\t\\tvar end = attribute.value.end;\\n\\t\\tvar macro = attribute.value;\\n\\t\\toldValue = attribute.value;\\n\\t\\tmacrocall.reportAttribute(parser, macro, function(title, blurb) {\\n\\t\\t\\tcallback(title, '[img ' + attribute.name + '=' + blurb + ']');\\n\\t\\t}, options);\\n\\t}\\n\\treturn end;\\n};\\n\\nfunction relinkAttribute(parser, attribute, builder, fromTitle, toTitle, options) {\\n\\tvar text = builder.text;\\n\\tvar ptr = text.indexOf(attribute.name, attribute.start);\\n\\tvar end;\\n\\tptr += attribute.name.length;\\n\\tptr = text.indexOf('=', ptr);\\n\\tif (attribute.type === \\\"string\\\") {\\n\\t\\tptr = text.indexOf(attribute.value, ptr)\\n\\t\\tvar quote = relinkUtils.determineQuote(text, attribute);\\n\\t\\t// ignore first quote. We already passed it\\n\\t\\tend = ptr + quote.length + attribute.value.length;\\n\\t} else if (attribute.type === \\\"indirect\\\") {\\n\\t\\tptr = text.indexOf('{{', ptr);\\n\\t\\tvar end = ptr + attribute.textReference.length + 4;\\n\\t\\tvar ref = refHandler.relinkInBraces(attribute.textReference, fromTitle, toTitle, options);\\n\\t\\tif (ref) {\\n\\t\\t\\tif (ref.impossible) {\\n\\t\\t\\t\\tbuilder.impossible = true;\\n\\t\\t\\t}\\n\\t\\t\\tif (ref.output) {\\n\\t\\t\\t\\tbuilder.add(\\\"{{\\\"+ref.output+\\\"}}\\\", ptr, end);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t} else if (attribute.type === \\\"filtered\\\") {\\n\\t\\tptr = text.indexOf('{{{', ptr);\\n\\t\\tvar end = ptr + attribute.filter.length + 6;\\n\\t\\tvar filter = filterHandler.relinkInBraces(attribute.filter, fromTitle, toTitle, options);\\n\\t\\tif (filter !== undefined) {\\n\\t\\t\\tif (filter.impossible) {\\n\\t\\t\\t\\tbuilder.impossible = true;\\n\\t\\t\\t}\\n\\t\\t\\tif (filter.output) {\\n\\t\\t\\t\\tvar quoted = \\\"{{{\\\"+filter.output+\\\"}}}\\\";\\n\\t\\t\\t\\tbuilder.add(quoted, ptr, end);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t} else if (attribute.type === \\\"macro\\\") {\\n\\t\\tptr = text.indexOf(\\\"\u003C\u003C\\\", ptr);\\n\\t\\tvar end = attribute.value.end;\\n\\t\\tvar macro = attribute.value;\\n\\t\\toldValue = attribute.value;\\n\\t\\tvar macroEntry = macrocall.relinkAttribute(parser, macro, text, fromTitle, toTitle, options);\\n\\t\\tif (macroEntry !== undefined) {\\n\\t\\t\\tif (macroEntry.impossible) {\\n\\t\\t\\t\\tbuilder.impossible = true;\\n\\t\\t\\t}\\n\\t\\t\\tif (macroEntry.output) {\\n\\t\\t\\t\\tbuilder.add(macroEntry.output, ptr, end);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\treturn end;\\n};\\n\\nfunction canBePretty(title, tooltip) {\\n\\treturn title.indexOf(']') \u003C 0 && (tooltip || title.indexOf('|') \u003C 0);\\n};\\n\",\"module-type\":\"relinkwikitextrule\",\"title\":\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/image.js\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/import.js\":{\"text\":\"/*\\\\\\nmodule-type: relinkwikitextrule\\n\\nHandles import pragmas\\n\\n\\\\import [tag[MyTiddler]]\\n\\\\*/\\n\\nvar utils = require(\\\"$:/plugins/flibbles/relink/js/utils.js\\\");\\nvar filterRelinker = utils.getType('filter');\\nvar ImportContext = utils.getContext('import');\\n\\nexports.name = \\\"import\\\";\\n\\nexports.report = function(text, callback, options) {\\n\\t// This moves the pos for us\\n\\tvar parseTree = this.parse();\\n\\tvar filter = parseTree[0].attributes.filter.value || '';\\n\\tfilterRelinker.report(filter, function(title, blurb) {\\n\\t\\tif (blurb) {\\n\\t\\t\\tblurb = '\\\\\\\\import ' + blurb;\\n\\t\\t} else {\\n\\t\\t\\tblurb = '\\\\\\\\import';\\n\\t\\t}\\n\\t\\tcallback(title, blurb);\\n\\t}, options);\\n\\t// Before we go, we need to actually import the variables\\n\\t// it's calling for, and any /relink pragma\\n\\tthis.parser.context = new ImportContext(options.wiki, this.parser.context, filter);\\n};\\n\\nexports.relink = function(text, fromTitle, toTitle, options) {\\n\\t// In this one case, I'll let the parser parse out the filter and move\\n\\t// the ptr.\\n\\tvar start = this.matchRegExp.lastIndex,\\n\\t\\tparseTree = this.parse(),\\n\\t\\tfilter = parseTree[0].attributes.filter.value || '',\\n\\t\\tentry = filterRelinker.relink(filter, fromTitle, toTitle, options);\\n\\tif (entry !== undefined && entry.output) {\\n\\t\\tvar newline = text.substring(start+filter.length, this.parser.pos);\\n\\t\\tfilter = entry.output;\\n\\t\\tentry.output = \\\"\\\\\\\\import \\\" + filter + newline;\\n\\t}\\n\\n\\t// Before we go, we need to actually import the variables\\n\\t// it's calling for, and any /relink pragma\\n\\tthis.parser.context = new ImportContext(options.wiki, this.parser.context, filter);\\n\\n\\treturn entry;\\n};\\n\",\"module-type\":\"relinkwikitextrule\",\"title\":\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/import.js\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/macrocall.js\":{\"text\":\"/*\\\\\\nmodule-type: relinkwikitextrule\\n\\nHandles macro calls.\\n\\n\u003C\u003CmyMacro '[[MyFilter]]' 'myTitle'>>\\n\\n\\\\*/\\n\\nvar utils = require(\\\"./utils.js\\\");\\nvar relinkUtils = require('$:/plugins/flibbles/relink/js/utils.js');\\nvar macrocall = require('$:/plugins/flibbles/relink/js/utils/macrocall.js');\\nvar Rebuilder = require(\\\"$:/plugins/flibbles/relink/js/utils/rebuilder\\\");\\nvar EntryNode = require('$:/plugins/flibbles/relink/js/utils/entry');\\n\\nexports.name = [\\\"macrocallinline\\\", \\\"macrocallblock\\\"];\\n\\nexports.report = function(text, callback, options) {\\n\\tvar macroInfo = getInfoFromRule(this);\\n\\tthis.parser.pos = macroInfo.end;\\n\\tthis.reportAttribute(this.parser, macroInfo, callback, options);\\n};\\n\\nexports.relink = function(text, fromTitle, toTitle, options) {\\n\\tvar macroInfo = getInfoFromRule(this);\\n\\tvar managedMacro = this.parser.context.getMacro(macroInfo.name);\\n\\tthis.parser.pos = macroInfo.end;\\n\\tif (!managedMacro) {\\n\\t\\t// We don't manage this macro. Bye.\\n\\t\\treturn undefined;\\n\\t}\\n\\tvar mayBeWidget = this.parser.context.allowWidgets();\\n\\tvar names = getParamNames(this.parser, macroInfo.name, macroInfo.params, options);\\n\\tif (names === undefined) {\\n\\t\\t// Needed the definition, and couldn't find it. So if a single\\n\\t\\t// parameter needs to placeholder, just fail.\\n\\t\\tmayBeWidget = false;\\n\\t}\\n\\tvar entry = macrocall.relink(this.parser.context, macroInfo, text, fromTitle, toTitle, mayBeWidget, options);\\n\\tif (entry && entry.output) {\\n\\t\\tentry.output = macroToString(entry.output, text, names, options);\\n\\t}\\n\\treturn entry;\\n};\\n\\n/** Relinks macros that occur as attributes, like \u003C$element attr=\u003C\u003C...>> />\\n * Processes the same, except it can't downgrade into a widget if the title\\n * is complicated.\\n * Kept for backward compatibility reasons\\n */\\nexports.relinkAttribute = function(parser, macro, text, fromTitle, toTitle, options) {\\n\\tvar entry = macrocall.relink(parser.context, macro, text, fromTitle, toTitle, false, options);\\n\\tif (entry && entry.output) {\\n\\t\\tentry.output = macrocall.reassemble(entry.output, text, options);\\n\\t}\\n\\treturn entry;\\n};\\n\\n/** As in, report a macrocall invocation that is an html attribute.\\n * Kept for backward compatibility reasons\\n */\\nexports.reportAttribute = function(parser, macro, callback, options) {\\n\\tmacrocall.report(parser.context, macro, function(title, blurb) {\\n\\t\\tcallback(title, \\\"\u003C\u003C\\\" + blurb + \\\">>\\\");\\n\\t}, options);\\n};\\n\\nfunction getInfoFromRule(rule) {\\n\\t// Get all the details of the match\\n\\tvar macroInfo = rule.nextCall;\\n\\tif (!macroInfo) {\\n\\t\\t// rule.match is used \u003Cv5.1.24\\n\\t\\tvar match = rule.match,\\n\\t\\t\\toffset = $tw.utils.skipWhiteSpace(match[0], match[1].length+2);\\n\\t\\tmacroInfo = {\\n\\t\\t\\tname: match[1],\\n\\t\\t\\tstart: rule.matchRegExp.lastIndex - match[0].length,\\n\\t\\t\\tend: rule.matchRegExp.lastIndex,\\n\\t\\t};\\n\\t\\tmacroInfo.params = parseParams(match[2], offset+macroInfo.start);\\n\\t}\\n\\treturn macroInfo;\\n};\\n\\nfunction mustBeAWidget(macro) {\\n\\tfor (var i = 0; i \u003C macro.params.length; i++) {\\n\\t\\tif (macro.params[i].type === \\\"macro\\\") {\\n\\t\\t\\treturn true;\\n\\t\\t}\\n\\t}\\n\\treturn false\\n};\\n\\n/**Given a macro object ({name:, params:, start: end:}), and the text where\\n * it was parsed from, returns a new macro that maintains any syntactic\\n * structuring.\\n */\\nfunction macroToString(macro, text, names, options) {\\n\\tif (mustBeAWidget(macro)) {\\n\\t\\tvar attrs = [];\\n\\t\\tfor (var i = 0; i \u003C macro.params.length; i++) {\\n\\t\\t\\tvar p = macro.params[i];\\n\\t\\t\\tvar val;\\n\\t\\t\\tif (p.newValue) {\\n\\t\\t\\t\\tval = p.newValue;\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tval = utils.wrapAttributeValue(p.value);\\n\\t\\t\\t}\\n\\t\\t\\tattrs.push(\\\" \\\"+names[i]+\\\"=\\\"+val);\\n\\t\\t}\\n\\t\\treturn \\\"\u003C$macrocall $name=\\\"+utils.wrapAttributeValue(macro.name)+attrs.join('')+\\\"/>\\\";\\n\\t} else {\\n\\t\\treturn macrocall.reassemble(macro, text, options);\\n\\t}\\n};\\n\\nfunction getParamNames(parser, macroName, params, options) {\\n\\tvar used = Object.create(null);\\n\\tvar rtn = new Array(params.length);\\n\\tvar anonsExist = false;\\n\\tvar i;\\n\\tfor (i = 0; i \u003C params.length; i++) {\\n\\t\\tvar name = params[i].name;\\n\\t\\tif (name) {\\n\\t\\t\\trtn[i] = name;\\n\\t\\t\\tused[name] = true;\\n\\t\\t} else {\\n\\t\\t\\tanonsExist = true;\\n\\t\\t}\\n\\t}\\n\\tif (anonsExist) {\\n\\t\\tvar def = parser.context.getMacroDefinition(macroName);\\n\\t\\tif (def === undefined) {\\n\\t\\t\\t// If there are anonymous parameters, and we can't\\n\\t\\t\\t// find the definition, then we can't hope to create\\n\\t\\t\\t// a widget.\\n\\t\\t\\treturn undefined;\\n\\t\\t}\\n\\t\\tvar defParams = def.params || [];\\n\\t\\tvar defPtr = 0;\\n\\t\\tfor (i = 0; i \u003C params.length; i++) {\\n\\t\\t\\tif (rtn[i] === undefined) {\\n\\t\\t\\t\\twhile(defPtr \u003C defParams.length && used[defParams[defPtr].name]) {\\n\\t\\t\\t\\t\\tdefPtr++;\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tif (defPtr >= defParams.length) {\\n\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\trtn[i] = defParams[defPtr].name;\\n\\t\\t\\t\\tused[defParams[defPtr].name] = true;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\treturn rtn;\\n};\\n\\nfunction parseParams(paramString, pos) {\\n\\tvar params = [],\\n\\t\\treParam = /\\\\s*(?:([A-Za-z0-9\\\\-_]+)\\\\s*:)?(?:\\\\s*(?:\\\"\\\"\\\"([\\\\s\\\\S]*?)\\\"\\\"\\\"|\\\"([^\\\"]*)\\\"|'([^']*)'|\\\\[\\\\[([^\\\\]]*)\\\\]\\\\]|([^\\\"'\\\\s]+)))/mg,\\n\\t\\tparamMatch = reParam.exec(paramString);\\n\\twhile(paramMatch) {\\n\\t\\t// Process this parameter\\n\\t\\tvar paramInfo = { };\\n\\t\\t// We need to find the group match that isn't undefined.\\n\\t\\tfor (var i = 2; i \u003C= 6; i++) {\\n\\t\\t\\tif (paramMatch[i] !== undefined) {\\n\\t\\t\\t\\tparamInfo.value = paramMatch[i];\\n\\t\\t\\t\\tbreak;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\tif(paramMatch[1]) {\\n\\t\\t\\tparamInfo.name = paramMatch[1];\\n\\t\\t}\\n\\t\\t//paramInfo.start = pos;\\n\\t\\tparamInfo.end = reParam.lastIndex + pos;\\n\\t\\tparams.push(paramInfo);\\n\\t\\t// Find the next match\\n\\t\\tparamMatch = reParam.exec(paramString);\\n\\t}\\n\\treturn params;\\n};\\n\",\"module-type\":\"relinkwikitextrule\",\"title\":\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/macrocall.js\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/macrodef.js\":{\"text\":\"/*\\\\\\nmodule-type: relinkwikitextrule\\n\\nHandles pragma macro definitions. Except we only update placeholder macros\\nthat we may have previously install.\\n\\n\\\\define relink-?() Tough title\\n\\n\\\\*/\\n\\nvar utils = require(\\\"$:/plugins/flibbles/relink/js/utils\\\");\\nvar VariableContext = utils.getContext('variable');\\n\\nexports.name = \\\"macrodef\\\";\\n\\nexports.report = function(text, callback, options) {\\n\\tvar setParseTreeNode = this.parse(),\\n\\t\\tm = this.match,\\n\\t\\tname = m[1];\\n\\tthis.parser.context = new VariableContext(this.parser.context, setParseTreeNode[0]);\\n\\t// Parse set the pos pointer, but we don't want to skip the macro body.\\n\\tthis.parser.pos = this.matchRegExp.lastIndex;\\n\\tvar endMatch = getBodyMatch(text, this.parser.pos, m[3]);\\n\\tif (endMatch) {\\n\\t\\tvar value = endMatch[2],\\n\\t\\t\\thandler = utils.getType(getActiveType(name, m[2]) || 'wikitext');\\n\\t\\tif (handler) {\\n\\t\\t\\tvar entry = handler.report(value, function(title, blurb) {\\n\\t\\t\\t\\tvar macroStr = '\\\\\\\\define ' + name + '()';\\n\\t\\t\\t\\tif (blurb) {\\n\\t\\t\\t\\t\\tmacroStr += ' ' + blurb;\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tcallback(title, macroStr);\\n\\t\\t\\t}, options);\\n\\t\\t}\\n\\t\\tthis.parser.pos = endMatch.index + endMatch[0].length;\\n\\t}\\n};\\n\\nexports.relink = function(text, fromTitle, toTitle, options) {\\n\\tvar setParseTreeNode = this.parse(),\\n\\t\\tentry,\\n\\t\\tm = this.match,\\n\\t\\tname = m[1],\\n\\t\\tparams = m[2],\\n\\t\\tmultiline = m[3];\\n\\tthis.parser.context = new VariableContext(this.parser.context, setParseTreeNode[0]);\\n\\t// Parse set the pos pointer, but we don't want to skip the macro body.\\n\\tthis.parser.pos = this.matchRegExp.lastIndex;\\n\\tvar endMatch = getBodyMatch(text, this.parser.pos, multiline);\\n\\tif (endMatch) {\\n\\t\\tvar value = endMatch[2],\\n\\t\\t\\ttype = getActiveType(name, params),\\n\\t\\t\\thandler = utils.getType(type || 'wikitext');\\n\\t\\tif (handler) {\\n\\t\\t\\t// If this is an active relink placeholder, then let's remember it\\n\\t\\t\\tif (type && options.placeholder) {\\n\\t\\t\\t\\toptions.placeholder.registerExisting(name, value);\\n\\t\\t\\t}\\n\\t\\t\\t// Relink the contents\\n\\t\\t\\tentry = handler.relink(value, fromTitle, toTitle, options);\\n\\t\\t\\tif (entry && entry.output) {\\n\\t\\t\\t\\tentry.output = m[0] + endMatch[1] + entry.output + endMatch[0];\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\tthis.parser.pos = endMatch.index + endMatch[0].length;\\n\\t}\\n\\treturn entry;\\n};\\n\\n// Return another match for the body, but tooled uniquely\\n// m[1] = whitespace before body\\n// m[2] = body\\n// m.index + m[0].length -> end of match\\nfunction getBodyMatch(text, pos, isMultiline) {\\n\\tvar whitespace,\\n\\t\\tvalueRegExp;\\n\\tif (isMultiline) {\\n\\t\\tvalueRegExp = /\\\\r?\\\\n\\\\\\\\end[^\\\\S\\\\n\\\\r]*(?:\\\\r?\\\\n|$)/mg;\\n\\t\\twhitespace = '';\\n\\t} else {\\n\\t\\tvalueRegExp = /(?:\\\\r?\\\\n|$)/mg;\\n\\t\\tvar newPos = $tw.utils.skipWhiteSpace(text, pos);\\n\\t\\twhitespace = text.substring(pos, newPos);\\n\\t\\tpos = newPos;\\n\\t}\\n\\tvalueRegExp.lastIndex = pos;\\n\\tvar match = valueRegExp.exec(text);\\n\\tif (match) {\\n\\t\\tmatch[1] = whitespace;\\n\\t\\tmatch[2] = text.substring(pos, match.index);\\n\\t}\\n\\treturn match;\\n};\\n\\nfunction getActiveType(macroName, parameters) {\\n\\tvar placeholder = /^relink-(?:(\\\\w+)-)?\\\\d+$/.exec(macroName);\\n\\t// normal macro or special placeholder?\\n\\tif (placeholder && parameters === '') {\\n\\t\\treturn placeholder[1] || 'title';\\n\\t}\\n\\treturn undefined;\\n};\\n\",\"module-type\":\"relinkwikitextrule\",\"title\":\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/macrodef.js\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/prettylink.js\":{\"text\":\"/*\\\\\\nmodule-type: relinkwikitextrule\\n\\nHandles replacement in wiki text inline rules, like,\\n\\n[[Introduction]]\\n\\n[[link description|TiddlerTitle]]\\n\\n\\\\*/\\n\\nvar utils = require(\\\"./utils.js\\\");\\n\\nexports.name = \\\"prettylink\\\";\\n\\nexports.report = function(text, callback, options) {\\n\\tvar text = this.match[1],\\n\\t\\tlink = this.match[2] || text;\\n\\tif (!$tw.utils.isLinkExternal(link)) {\\n\\t\\tcallback(link, '[[' + text + ']]');\\n\\t}\\n\\tthis.parser.pos = this.matchRegExp.lastIndex;\\n};\\n\\nexports.relink = function(text, fromTitle, toTitle, options) {\\n\\tthis.parser.pos = this.matchRegExp.lastIndex;\\n\\tvar caption, m = this.match;\\n\\tif (m[2] === fromTitle) {\\n\\t\\t// format is [[caption|MyTiddler]]\\n\\t\\tcaption = m[1];\\n\\t} else if (m[2] !== undefined || m[1] !== fromTitle) {\\n\\t\\t// format is [[MyTiddler]], and it doesn't match\\n\\t\\treturn undefined;\\n\\t}\\n\\tvar entry = { output: utils.makePrettylink(this.parser, toTitle, caption) };\\n\\tif (entry.output === undefined) {\\n\\t\\tentry.impossible = true;\\n\\t}\\n\\treturn entry;\\n};\\n\",\"module-type\":\"relinkwikitextrule\",\"title\":\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/prettylink.js\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/quoteblock.js\":{\"text\":\"/*\\\\\\nmodule-type: relinkwikitextrule\\n\\nHandles the quote blocks, as in:\\n\\n\u003C\u003C\u003C\\n...\\n\u003C\u003C\u003C\\n\\n\\\\*/\\n\\nvar Rebuilder = require(\\\"$:/plugins/flibbles/relink/js/utils/rebuilder\\\");\\n\\nexports.name = \\\"quoteblock\\\";\\n\\nexports.type = {block: true};\\n\\nexports.report = function(text, callback, options) {\\n\\tvar reEndString = \\\"^\\\" + this.match[1] + \\\"(?!\u003C)\\\";\\n\\tthis.parser.pos = this.matchRegExp.lastIndex;\\n\\n\\tthis.parser.parseClasses();\\n\\tthis.parser.skipWhitespace({treatNewlinesAsNonWhitespace: true});\\n\\n\\t// Parse the optional cite\\n\\treportCite(this.parser, this.match[1]);\\n\\t// Now parse the body of the quote\\n\\tthis.parser.parseBlocks(reEndString);\\n\\tif (this.match) {\\n\\t\\t// Now parse the closing cite\\n\\t\\treportCite(this.parser, this.match[1]);\\n\\t}\\n};\\n\\nexports.relink = function(text, fromTitle, toTitle, options) {\\n\\tvar reEndString = \\\"^\\\" + this.match[1] + \\\"(?!\u003C)\\\";\\n\\tvar builder = new Rebuilder(text, this.parser.pos);\\n\\tvar entry;\\n\\tthis.parser.pos = this.matchRegExp.lastIndex;\\n\\n\\tthis.parser.parseClasses();\\n\\tthis.parser.skipWhitespace({treatNewlinesAsNonWhitespace: true});\\n\\n\\t// Parse the optional cite\\n\\tmergeRelinks(builder, this.parser.parseInlineRun(/(\\\\r?\\\\n)/mg));\\n\\t// Now parse the body of the quote\\n\\tmergeRelinks(builder, this.parser.parseBlocks(reEndString));\\n\\t// Now parse the closing cite\\n\\tmergeRelinks(builder, this.parser.parseInlineRun(/(\\\\r?\\\\n)/mg));\\n\\n\\tif (builder.changed() || builder.impossible) {\\n\\t\\tentry = {};\\n\\t\\tentry.output = builder.results(this.parser.pos);\\n\\t\\tif (builder.impossible) {\\n\\t\\t\\tentry.impossible = true;\\n\\t\\t}\\n\\t}\\n\\treturn entry;\\n};\\n\\nfunction reportCite(parser, delimeter) {\\n\\tvar callback = parser.callback;\\n\\ttry {\\n\\t\\tparser.callback = function(title, blurb) {\\n\\t\\t\\treturn callback(title, delimeter + \\\" \\\" + blurb);\\n\\t\\t};\\n\\t\\tparser.parseInlineRun(/(\\\\r?\\\\n)/mg);\\n\\t} finally {\\n\\t\\tparser.callback = callback;\\n\\t}\\n};\\n\\nfunction mergeRelinks(builder, output) {\\n\\tif (output.length > 0) {\\n\\t\\tfor (var i = 0; i \u003C output.length; i++) {\\n\\t\\t\\tvar o = output[i];\\n\\t\\t\\tif (o.output) {\\n\\t\\t\\t\\tbuilder.add(o.output, o.start, o.end);\\n\\t\\t\\t}\\n\\t\\t\\tif (o.impossible) {\\n\\t\\t\\t\\tbuilder.impossible = true;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n};\\n\",\"module-type\":\"relinkwikitextrule\",\"title\":\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/quoteblock.js\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/relink.js\":{\"text\":\"/*\\\\\\nmodule-type: wikirule\\n\\nThis defines the \\\\relink inline pragma used to locally declare\\nrelink rules for macros.\\n\\nIt takes care of providing its own relink and report rules.\\n\\n\\\\*/\\n\\nvar utils = require('$:/plugins/flibbles/relink/js/utils.js');\\nvar language = require('$:/plugins/flibbles/relink/js/language.js');\\n\\nexports.name = \\\"relink\\\";\\nexports.types = {pragma: true};\\n\\nexports.init = function(parser) {\\n\\tthis.parser = parser;\\n\\tthis.matchRegExp = /^\\\\\\\\relink[^\\\\S\\\\n]+([^(\\\\s]+)([^\\\\r\\\\n]*)(\\\\r?\\\\n)?/mg;\\n};\\n\\n/**This makes the widget that the macro library will later parse to determine\\n * new macro relink state.\\n *\\n * It's a \u003C$set> widget so it can appear BEFORE \\\\define pragma and not\\n * prevent that pragma from being scooped up by importvariables.\\n * (importvariables stops scooping as soon as it sees something besides $set) */\\nexports.parse = function() {\\n\\tthis.parser.pos = this.matchRegExp.lastIndex;\\n\\tvar macroName;\\n\\tvar macroParams = Object.create(null);\\n\\tvar error = undefined;\\n\\tvar rtn = [];\\n\\tvar self = this;\\n\\tthis.interpretSettings(function(macro, parameter, type) {\\n\\t\\tmacroName = macro;\\n\\t\\tif (type && !utils.getType(type)) {\\n\\t\\t\\terror = language.getString(\\\"text/plain\\\", \\\"Error/UnrecognizedType\\\",\\n\\t\\t\\t\\t{variables: {type: type}, wiki: self.parser.wiki});\\n\\t\\t}\\n\\t\\tmacroParams[parameter] = type;\\n\\t});\\n\\t// If no macroname. Return nothing, this rule will be ignored by parsers\\n\\tif (macroName) {\\n\\t\\tvar relink = Object.create(null);\\n\\t\\trelink[macroName] = macroParams;\\n\\t\\trtn.push({\\n\\t\\t\\ttype: \\\"set\\\",\\n\\t\\t\\tattributes: {\\n\\t\\t\\t\\tname: {type: \\\"string\\\", value: \\\"\\\"}\\n\\t\\t\\t},\\n\\t\\t\\tchildren: [],\\n\\t\\t\\tisMacroDefinition: true,\\n\\t\\t\\trelink: relink});\\n\\t}\\n\\tif (error) {\\n\\t\\trtn.push({\\n\\t\\t\\ttype: \\\"element\\\", tag: \\\"span\\\", attributes: {\\n\\t\\t\\t\\t\\\"class\\\": {\\n\\t\\t\\t\\t\\ttype: \\\"string\\\",\\n\\t\\t\\t\\t\\tvalue: \\\"tc-error tc-relink-error\\\"\\n\\t\\t\\t\\t}\\n\\t\\t\\t}, children: [\\n\\t\\t\\t\\t{type: \\\"text\\\", text: error}\\n\\t\\t\\t]});\\n\\t}\\n\\treturn rtn;\\n};\\n\\nexports.relink = function(text, fromTitle, toTitle, options) {\\n\\tvar parser = this.parser;\\n\\tvar currentTiddler = parser.context.widget.variables.currentTiddler.value;\\n\\tparser.pos = this.matchRegExp.lastIndex;\\n\\tthis.interpretSettings(function(macro, parameter, type) {\\n\\t\\toptions.settings.addSetting(parser.wiki, macro, parameter, type, currentTiddler);\\n\\t});\\n\\t// Return nothing, because this rule is ignored by the parser\\n\\treturn undefined;\\n};\\n\\nexports.interpretSettings = function(block) {\\n\\tvar paramString = this.match[2];\\n\\tif (paramString !== \\\"\\\") {\\n\\t\\tvar macro = this.match[1];\\n\\t\\tvar reParam = /\\\\s*([A-Za-z0-9\\\\-_]+)(?:\\\\s*:\\\\s*([^\\\\s]+))?/mg;\\n\\t\\tvar paramMatch = reParam.exec(paramString);\\n\\t\\twhile (paramMatch) {\\n\\t\\t\\tvar parameter = paramMatch[1];\\n\\t\\t\\tvar type = paramMatch[2];\\n\\t\\t\\tblock(macro, parameter, type);\\n\\t\\t\\tparamMatch = reParam.exec(paramString);\\n\\t\\t}\\n\\t}\\n};\\n\",\"module-type\":\"wikirule\",\"title\":\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/relink.js\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/rules.js\":{\"text\":\"/*\\\\\\nmodule-type: relinkwikitextrule\\n\\nParses and acknowledges any pragma rules a tiddler has.\\n\\n\\\\rules except html wikilink\\n\\n\\\\*/\\n\\nexports.name = \\\"rules\\\";\\n\\n/**This is all we have to do. The rules rule doesn't parse. It just amends\\n * the rules, which is exactly what I want it to do too.\\n * It also takes care of moving the pos pointer forward.\\n */\\nexports.relink = function() {\\n\\tthis.parse();\\n\\treturn undefined;\\n};\\n\\n// Same deal\\nexports.report = exports.relink;\\n\",\"module-type\":\"relinkwikitextrule\",\"title\":\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/rules.js\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/syslink.js\":{\"text\":\"/*\\\\\\nmodule-type: relinkwikitextrule\\n\\nHandles sys links\\n\\n$:/sys/link\\n\\nbut not:\\n\\n~$:/sys/link\\n\\n\\\\*/\\n\\nvar utils = require(\\\"./utils.js\\\");\\n\\nexports.name = \\\"syslink\\\";\\n\\nexports.report = function(text, callback, options) {\\n\\tvar title = this.match[0];\\n\\tthis.parser.pos = this.matchRegExp.lastIndex;\\n\\tif (title[0] !== \\\"~\\\") {\\n\\t\\tcallback(title, '~' + title);\\n\\t}\\n};\\n\\nexports.relink = function(text, fromTitle, toTitle, options) {\\n\\tvar entry = undefined;\\n\\tthis.parser.pos = this.matchRegExp.lastIndex;\\n\\tif (this.match[0] === fromTitle && this.match[0][0] !== \\\"~\\\") {\\n\\t\\tentry = {output: this.makeSyslink(toTitle, options)};\\n\\t\\tif (entry.output === undefined) {\\n\\t\\t\\tentry.impossible = true;\\n\\t\\t}\\n\\t}\\n\\treturn entry;\\n};\\n\\nexports.makeSyslink = function(title, options) {\\n\\tvar match = title.match(this.matchRegExp);\\n\\tif (match && match[0] === title && title[0] !== \\\"~\\\") {\\n\\t\\treturn title;\\n\\t} else {\\n\\t\\treturn utils.makePrettylink(this.parser, title);\\n\\t}\\n};\\n\",\"module-type\":\"relinkwikitextrule\",\"title\":\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/syslink.js\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/table.js\":{\"text\":\"/*\\\\\\nmodule-type: relinkwikitextrule\\n\\nHandles tables. Or rather handles the cells inside the tables, since tables\\nthemselves aren't relinked.\\n\\n\\\\*/\\n\\nvar Rebuilder = require(\\\"$:/plugins/flibbles/relink/js/utils/rebuilder\\\");\\n\\nexports.name = \\\"table\\\";\\n\\nexports.types = {block: true};\\n\\nexports.report = function(text, callback, options) {\\n\\tvar rowRegExp = /^\\\\|([^\\\\n]*)\\\\|([fhck]?)\\\\r?(?:\\\\n|$)/mg,\\n\\t\\trowTermRegExp = /(\\\\|(?:[fhck]?)\\\\r?(?:\\\\n|$))/mg;\\n\\t// Match the row\\n\\trowRegExp.lastIndex = this.parser.pos;\\n\\tvar rowMatch = rowRegExp.exec(this.parser.source);\\n\\twhile(rowMatch && rowMatch.index === this.parser.pos) {\\n\\t\\tvar rowType = rowMatch[2];\\n\\t\\t// Check if it is a class assignment\\n\\t\\tif(rowType === \\\"k\\\") {\\n\\t\\t\\tthis.parser.pos = rowMatch.index + rowMatch[0].length;\\n\\t\\t} else if(rowType === \\\"c\\\") {\\n\\t\\t\\t// Is this a caption row?\\n\\t\\t\\t// If so, move past the opening `|` of the row\\n\\t\\t\\tthis.parser.pos++;\\n\\t\\t\\t// Parse the caption\\n\\t\\t\\tvar oldCallback = this.parser.callback;\\n\\t\\t\\tthis.parser.callback = function(title, blurb) {\\n\\t\\t\\t\\tcallback(title, '|' + blurb + '|c');\\n\\t\\t\\t};\\n\\t\\t\\ttry {\\n\\t\\t\\t\\tthis.parser.parseInlineRun(rowTermRegExp,{eatTerminator: true});\\n\\t\\t\\t} finally {\\n\\t\\t\\t\\tthis.parser.callback = oldCallback;\\n\\t\\t\\t}\\n\\t\\t} else {\\n\\t\\t\\t// Process the row\\n\\t\\t\\tprocessRow.call(this, rowType, callback);\\n\\t\\t\\tthis.parser.pos = rowMatch.index + rowMatch[0].length;\\n\\t\\t}\\n\\t\\trowMatch = rowRegExp.exec(this.parser.source);\\n\\t}\\n};\\n\\nexports.relink = function(text, fromTitle, toTitle, options) {\\n\\tvar rowRegExp = /^\\\\|([^\\\\n]*)\\\\|([fhck]?)\\\\r?(?:\\\\n|$)/mg,\\n\\t\\trowTermRegExp = /(\\\\|(?:[fhck]?)\\\\r?(?:\\\\n|$))/mg,\\n\\t\\tbuilder = new Rebuilder(text, this.parser.pos),\\n\\t\\timpossible = false,\\n\\t\\toutput,\\n\\t\\tentry;\\n\\t// Match the row\\n\\trowRegExp.lastIndex = this.parser.pos;\\n\\tvar rowMatch = rowRegExp.exec(this.parser.source);\\n\\twhile(rowMatch && rowMatch.index === this.parser.pos) {\\n\\t\\tvar rowType = rowMatch[2];\\n\\t\\t// Check if it is a class assignment\\n\\t\\tif(rowType === \\\"k\\\") {\\n\\t\\t\\tthis.parser.pos = rowMatch.index + rowMatch[0].length;\\n\\t\\t} else {\\n\\t\\t\\t// Is this a caption row?\\n\\t\\t\\tif(rowType === \\\"c\\\") {\\n\\t\\t\\t\\t// If so, move past the opening `|` of the row\\n\\t\\t\\t\\tthis.parser.pos++;\\n\\t\\t\\t\\t// Parse the caption\\n\\t\\t\\t\\toutput = this.parser.parseInlineRun(rowTermRegExp,{eatTerminator: true});\\n\\t\\t\\t} else {\\n\\t\\t\\t\\t// Process the row\\n\\t\\t\\t\\toutput = processRow.call(this);\\n\\t\\t\\t\\tthis.parser.pos = rowMatch.index + rowMatch[0].length;\\n\\t\\t\\t}\\n\\t\\t\\tif (output.length > 0) {\\n\\t\\t\\t\\tfor (var i = 0; i \u003C output.length; i++) {\\n\\t\\t\\t\\t\\tvar o = output[i];\\n\\t\\t\\t\\t\\tif (o.output) {\\n\\t\\t\\t\\t\\t\\tbuilder.add(o.output, o.start, o.end);\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\tif (o.impossible) {\\n\\t\\t\\t\\t\\t\\timpossible = true;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\trowMatch = rowRegExp.exec(this.parser.source);\\n\\t}\\n\\tif (builder.changed() || impossible) {\\n\\t\\tentry = {}\\n\\t\\tentry.output = builder.results(this.parser.pos);\\n\\t\\tif (impossible) {\\n\\t\\t\\tentry.impossible = true;\\n\\t\\t}\\n\\t}\\n\\treturn entry;\\n};\\n\\nvar processRow = function(rowType, callback) {\\n\\tvar cellRegExp = /(?:\\\\|([^\\\\n\\\\|]*)\\\\|)|(\\\\|[fhck]?\\\\r?(?:\\\\n|$))/mg,\\n\\t\\tcellTermRegExp = /((?:\\\\x20*)\\\\|)/mg,\\n\\t\\tchildren = [];\\n\\t// Match a single cell\\n\\tcellRegExp.lastIndex = this.parser.pos;\\n\\tvar cellMatch = cellRegExp.exec(this.parser.source);\\n\\twhile(cellMatch && cellMatch.index === this.parser.pos) {\\n\\t\\tif(cellMatch[2]) {\\n\\t\\t\\t// End of row\\n\\t\\t\\tthis.parser.pos = cellRegExp.lastIndex - 1;\\n\\t\\t\\tbreak;\\n\\t\\t}\\n\\t\\tswitch (cellMatch[1]) {\\n\\t\\tcase '~':\\n\\t\\tcase '>':\\n\\t\\tcase '\u003C':\\n\\t\\t\\t// Move to just before the `|` terminating the cell\\n\\t\\t\\tthis.parser.pos = cellRegExp.lastIndex - 1;\\n\\t\\t\\tbreak;\\n\\t\\tdefault:\\n\\t\\t\\t// For ordinary cells, step beyond the opening `|`\\n\\t\\t\\tthis.parser.pos++;\\n\\t\\t\\t// Look for a space at the start of the cell\\n\\t\\t\\tvar spaceLeft = false;\\n\\t\\t\\tvar prefix = '|';\\n\\t\\t\\tvar suffix = '|';\\n\\t\\t\\tif(this.parser.source.substr(this.parser.pos).search(/^\\\\^([^\\\\^]|\\\\^\\\\^)/) === 0) {\\n\\t\\t\\t\\tprefix += '^';\\n\\t\\t\\t\\tthis.parser.pos++;\\n\\t\\t\\t} else if(this.parser.source.substr(this.parser.pos).search(/^,([^,]|,,)/) === 0) {\\n\\t\\t\\t\\tprefix += ',';\\n\\t\\t\\t\\tthis.parser.pos++;\\n\\t\\t\\t}\\n\\t\\t\\tvar chr = this.parser.source.substr(this.parser.pos,1);\\n\\t\\t\\twhile(chr === \\\" \\\") {\\n\\t\\t\\t\\tspaceLeft = true;\\n\\t\\t\\t\\tthis.parser.pos++;\\n\\t\\t\\t\\tchr = this.parser.source.substr(this.parser.pos,1);\\n\\t\\t\\t}\\n\\t\\t\\tif (spaceLeft) {\\n\\t\\t\\t\\tprefix += ' ';\\n\\t\\t\\t}\\n\\t\\t\\t// Check whether this is a heading cell\\n\\t\\t\\tif(chr === \\\"!\\\") {\\n\\t\\t\\t\\tthis.parser.pos++;\\n\\t\\t\\t\\tprefix += '!';\\n\\t\\t\\t}\\n\\t\\t\\t// Parse the cell\\n\\t\\t\\tvar oldCallback = this.parser.callback;\\n\\t\\t\\tvar reports = [];\\n\\t\\t\\tthis.parser.callback = function(title, blurb) {\\n\\t\\t\\t\\treports.push(title, blurb);\\n\\t\\t\\t};\\n\\t\\t\\ttry {\\n\\t\\t\\t\\tvar output = this.parser.parseInlineRun(cellTermRegExp,{eatTerminator: true});\\n\\t\\t\\t\\tif (output.length > 0) {\\n\\t\\t\\t\\t\\tchildren.push(output[0]);\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tif(this.parser.source.substr(this.parser.pos - 2,1) === \\\" \\\") { // spaceRight\\n\\t\\t\\t\\t\\tsuffix = ' |';\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tfor (var i = 0; i \u003C reports.length; i += 2) {\\n\\t\\t\\t\\t\\tcallback(reports[i], prefix + reports[i+1] + suffix + rowType);\\n\\t\\t\\t\\t}\\n\\t\\t\\t} finally {\\n\\t\\t\\t\\tthis.parser.callback = oldCallback;\\n\\t\\t\\t}\\n\\t\\t\\t// Move back to the closing `|`\\n\\t\\t\\tthis.parser.pos--;\\n\\t\\t}\\n\\t\\tcellRegExp.lastIndex = this.parser.pos;\\n\\t\\tcellMatch = cellRegExp.exec(this.parser.source);\\n\\t}\\n\\treturn children;\\n};\\n\",\"module-type\":\"relinkwikitextrule\",\"title\":\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/table.js\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/transclude.js\":{\"text\":\"/*\\\\\\nmodule-type: relinkwikitextrule\\n\\nHandles replacement of transclusions in wiki text like,\\n\\n{{RenamedTiddler}}\\n{{RenamedTiddler||TemplateTitle}}\\n\\nThis renames both the tiddler and the template field.\\n\\n\\\\*/\\n\\nvar refHandler = require(\\\"$:/plugins/flibbles/relink/js/fieldtypes/reference\\\");\\nvar utils = require(\\\"./utils.js\\\");\\nvar relinkUtils = require('$:/plugins/flibbles/relink/js/utils.js');\\nvar referenceOperators = relinkUtils.getModulesByTypeAsHashmap('relinkreference', 'name');\\n\\nexports.name = ['transcludeinline', 'transcludeblock'];\\n\\nexports.report = function(text, callback, options) {\\n\\tvar m = this.match,\\n\\t\\trefString = $tw.utils.trim(m[1]),\\n\\t\\tref = parseTextReference(refString);\\n\\t\\ttemplate = $tw.utils.trim(m[2]);\\n\\tfor (var operator in referenceOperators) {\\n\\t\\treferenceOperators[operator].report(ref, function(title, blurb) {\\n\\t\\t\\tblurb = blurb || \\\"\\\";\\n\\t\\t\\tif (template) {\\n\\t\\t\\t\\tblurb += '||' + template;\\n\\t\\t\\t}\\n\\t\\t\\tcallback(title, \\\"{{\\\" + blurb + \\\"}}\\\");\\n\\t\\t}, options);\\n\\t}\\n\\tif (template) {\\n\\t\\tcallback(template, '{{' + refString + '||}}');\\n\\t}\\n\\tthis.parser.pos = this.matchRegExp.lastIndex;\\n};\\n\\nexports.relink = function(text, fromTitle, toTitle, options) {\\n\\tvar m = this.match,\\n\\t\\treference = parseTextReference(m[1]),\\n\\t\\ttemplate = m[2],\\n\\t\\tentry = undefined,\\n\\t\\timpossible = false,\\n\\t\\tmodified = false;\\n\\tthis.parser.pos = this.matchRegExp.lastIndex;\\n\\tfor (var operator in referenceOperators) {\\n\\t\\tvar result = referenceOperators[operator].relink(reference, fromTitle, toTitle, options);\\n\\t\\tif (result !== undefined) {\\n\\t\\t\\tif (result.impossible) {\\n\\t\\t\\t\\timpossible = true;\\n\\t\\t\\t}\\n\\t\\t\\tif (result.output) {\\n\\t\\t\\t\\treference = result.output;\\n\\t\\t\\t\\tmodified = true\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\tif ($tw.utils.trim(template) === fromTitle) {\\n\\t\\ttemplate = template.replace(fromTitle, toTitle);\\n\\t\\tmodified = true;\\n\\t}\\n\\tif (modified) {\\n\\t\\tvar output = this.makeTransclude(this.parser, reference, template);\\n\\t\\tif (output) {\\n\\t\\t\\t// Adding any newline that might have existed is\\n\\t\\t\\t// what allows this relink method to work for both\\n\\t\\t\\t// the block and inline filter wikitext rule.\\n\\t\\t\\tentry = {output: output + utils.getEndingNewline(m[0])};\\n\\t\\t} else {\\n\\t\\t\\timpossible = true;\\n\\t\\t}\\n\\t}\\n\\tif (impossible) {\\n\\t\\tentry = entry || {};\\n\\t\\tentry.impossible = true;\\n\\t}\\n\\treturn entry;\\n};\\n\\n// I have my own because the core one is deficient for my needs.\\nfunction parseTextReference(textRef) {\\n\\t// Separate out the title, field name and/or JSON indices\\n\\tvar reTextRef = /^([\\\\w\\\\W]*?)(?:!!(\\\\S[\\\\w\\\\W]*)|##(\\\\S[\\\\w\\\\W]*))?$/g;\\n\\t\\tmatch = reTextRef.exec(textRef),\\n\\t\\tresult = {};\\n\\tif(match) {\\n\\t\\t// Return the parts\\n\\t\\tresult.title = match[1];\\n\\t\\tresult.field = match[2];\\n\\t\\tresult.index = match[3];\\n\\t} else {\\n\\t\\t// If we couldn't parse it\\n\\t\\tresult.title = textRef\\n\\t}\\n\\treturn result;\\n};\\n\\n/** This converts a reference and a template into a string representation\\n * of a transclude.\\n */\\nexports.makeTransclude = function(parser, reference, template) {\\n\\tvar rtn;\\n\\tif (!canBePrettyTemplate(template)) {\\n\\t\\tvar widget = utils.makeWidget(parser, '$transclude', {\\n\\t\\t\\ttiddler: $tw.utils.trim(template),\\n\\t\\t\\tfield: reference.field,\\n\\t\\t\\tindex: reference.index});\\n\\t\\tif (reference.title && widget !== undefined) {\\n\\t\\t\\trtn = utils.makeWidget(parser, '$tiddler', {tiddler: $tw.utils.trim(reference.title)}, widget);\\n\\t\\t} else {\\n\\t\\t\\trtn = widget;\\n\\t\\t}\\n\\t} else if (!canBePrettyTitle(reference.title) || !canBePrettyField(reference.field)) {\\n\\t\\t// This block and the next account for the 1%...\\n\\t\\tvar transclude;\\n\\t\\tif (canBePrettyField(reference.field)) {\\n\\t\\t\\tvar reducedRef = {field: reference.field, index: reference.index};\\n\\t\\t\\ttransclude = prettyTransclude(reducedRef, template);\\n\\t\\t} else {\\n\\t\\t\\ttransclude = utils.makeWidget(parser, \\\"$transclude\\\", {tiddler: $tw.utils.trim(reference.title), field: reference.field});\\n\\t\\t}\\n\\t\\trtn = utils.makeWidget(parser, '$tiddler', {tiddler: $tw.utils.trim(reference.title)}, transclude);\\n\\t} else {\\n\\t\\t// This block takes care of 99% of all cases\\n\\t\\trtn = prettyTransclude(reference, template);\\n\\t}\\n\\treturn rtn;\\n};\\n\\nfunction canBePrettyTitle(value) {\\n\\treturn refHandler.canBePretty(value) && canBePrettyTemplate(value);\\n};\\n\\nfunction canBePrettyField(value) {\\n\\treturn !/[\\\\|\\\\}\\\\{]/.test(value);\\n};\\n\\nfunction canBePrettyTemplate(value) {\\n\\treturn !value || (value.indexOf('}') \u003C 0 && value.indexOf('{') \u003C 0 && value.indexOf('|') \u003C 0);\\n};\\n\\nfunction prettyTransclude(textReference, template) {\\n\\tif (typeof textReference !== \\\"string\\\") {\\n\\t\\ttextReference = refHandler.toString(textReference);\\n\\t}\\n\\tif (!textReference) {\\n\\t\\ttextReference = '';\\n\\t}\\n\\tif (template !== undefined) {\\n\\t\\treturn \\\"{{\\\"+textReference+\\\"||\\\"+template+\\\"}}\\\";\\n\\t} else {\\n\\t\\treturn \\\"{{\\\"+textReference+\\\"}}\\\";\\n\\t}\\n};\\n\",\"module-type\":\"relinkwikitextrule\",\"title\":\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/transclude.js\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/typedblock.js\":{\"text\":\"/*\\\\\\nmodule-type: relinkwikitextrule\\n\\nHandles the typeed blocks, as in:\\n\\n$$$text/vnd.tiddlywiki>text/html\\n...\\n$$$\\n\\n\\\\*/\\n\\nvar utils = require('$:/plugins/flibbles/relink/js/utils.js');\\nvar Rebuilder = require(\\\"$:/plugins/flibbles/relink/js/utils/rebuilder\\\");\\nvar language = require('$:/plugins/flibbles/relink/js/language.js');\\n\\nexports.name = \\\"typedblock\\\";\\n\\nexports.types = {block: true};\\n\\nvar textOperators;\\nvar oldTextOperators;\\n\\nfunction getTextOperator(type, options) {\\n\\tvar operator;\\n\\tif (textOperators === undefined) {\\n\\t\\ttextOperators = utils.getModulesByTypeAsHashmap('relinktext', 'type');\\n\\t\\toldTextOperators = utils.getModulesByTypeAsHashmap('relinktextoperator', 'type');\\n\\t}\\n\\toperator = textOperators[type];\\n\\tif (operator) {\\n\\t\\treturn operator;\\n\\t}\\n\\tvar info = $tw.utils.getFileExtensionInfo(type);\\n\\tif (info && textOperators[info.type]) {\\n\\t\\treturn textOperators[info.type];\\n\\t}\\n\\tvar old = oldTextOperators[type] || (info && oldTextOperators[info.type]);\\n\\tif (old) {\\n\\t\\tvar vars = Object.create(options);\\n\\t\\tvars.variables = {type: old.type, keyword: type};\\n\\t\\tvar warnString = language.getString(\\\"text/html\\\", \\\"Warning/OldRelinkTextOperator\\\", vars)\\n\\t\\tlanguage.warn(warnString);\\n\\t\\toldTextOperators[type] = undefined;\\n\\t}\\n};\\n\\nfunction getText() {\\n\\tvar reEnd = /\\\\r?\\\\n\\\\$\\\\$\\\\$\\\\r?(?:\\\\n|$)/mg;\\n\\t// Move past the match\\n\\tthis.parser.pos = this.matchRegExp.lastIndex;\\n\\t// Look for the end of the block\\n\\treEnd.lastIndex = this.parser.pos;\\n\\tvar match = reEnd.exec(this.parser.source),\\n\\t\\ttext;\\n\\t// Process the block\\n\\tif(match) {\\n\\t\\ttext = this.parser.source.substring(this.parser.pos,match.index);\\n\\t\\tthis.parser.pos = match.index + match[0].length;\\n\\t} else {\\n\\t\\ttext = this.parser.source.substr(this.parser.pos);\\n\\t\\tthis.parser.pos = this.parser.sourceLength;\\n\\t}\\n\\treturn text;\\n};\\n\\nexports.report = function(text, callback, options) {\\n\\tvar innerText = getText.call(this),\\n\\t\\toperator = getTextOperator(this.match[1], options);\\n\\tif (operator) {\\n\\t\\treturn operator.report(innerText, callback, options);\\n\\t}\\n};\\n\\nexports.relink = function(text, fromTitle, toTitle, options) {\\n\\tvar start = this.parser.pos,\\n\\t\\tinnerStart = this.matchRegExp.lastIndex,\\n\\t\\tinnerText = getText.call(this),\\n\\t\\toperator = getTextOperator(this.match[1], options);\\n\\tif (operator) {\\n\\t\\tvar innerOptions = Object.create(options);\\n\\t\\tinnerOptions.settings = this.parser.context;\\n\\t\\tvar results = operator.relink(innerText, fromTitle, toTitle, innerOptions);\\n\\t\\tif (results && results.output) {\\n\\t\\t\\tvar builder = new Rebuilder(text, start);\\n\\t\\t\\tbuilder.add(results.output, innerStart, innerStart + innerText.length);\\n\\t\\t\\tresults.output = builder.results(this.parser.pos);\\n\\t\\t}\\n\\t\\treturn results;\\n\\t}\\n};\\n\",\"module-type\":\"relinkwikitextrule\",\"title\":\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/typedblock.js\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/utils.js\":{\"text\":\"/*\\\\\\nmodule-type: library\\n\\nUtility methods for the wikitext relink rules.\\n\\n\\\\*/\\n\\nexports.makeWidget = function(parser, tag, attributes, body) {\\n\\tif (!parser.context.allowWidgets()) {\\n\\t\\treturn undefined;\\n\\t}\\n\\tvar string = '\u003C' + tag;\\n\\tfor (var attr in attributes) {\\n\\t\\tvar value = attributes[attr];\\n\\t\\tif (value !== undefined) {\\n\\t\\t\\tvar quoted = exports.wrapAttributeValue(value);\\n\\t\\t\\tif (!quoted) {\\n\\t\\t\\t\\tif (!parser.options.placeholder) {\\n\\t\\t\\t\\t\\t// It's not possible to make this widget\\n\\t\\t\\t\\t\\treturn undefined;\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tvar category = getPlaceholderCategory(parser.context, tag, attr);\\n\\t\\t\\t\\tquoted = '\u003C\u003C' + parser.placeholder.getPlaceholderFor(value, category) + '>>';\\n\\t\\t\\t}\\n\\t\\t\\tstring += ' ' + attr + '=' + quoted;\\n\\t\\t}\\n\\t}\\n\\tif (body !== undefined) {\\n\\t\\tstring += '>' + body + '\u003C/' + tag + '>';\\n\\t} else {\\n\\t\\tstring += '/>';\\n\\t}\\n\\treturn string;\\n};\\n\\nfunction getPlaceholderCategory(context, tag, attribute) {\\n\\tvar element = context.getAttribute(tag);\\n\\tvar rule = element && element[attribute];\\n\\t// titles go to relink-\\\\d\\n\\t// plaintext goes to relink-plaintext-\\\\d\\n\\t// because titles are way more common, also legacy\\n\\tif (rule === undefined) {\\n\\t\\treturn 'plaintext';\\n\\t} else {\\n\\t\\trule = rule.fields.text;\\n\\t\\tif (rule === 'title') {\\n\\t\\t\\trule = undefined;\\n\\t\\t}\\n\\t\\treturn rule;\\n\\t}\\n};\\n\\nexports.makePrettylink = function(parser, title, caption) {\\n\\tvar output;\\n\\tif (parser.context.allowPrettylinks() && canBePrettylink(title, caption)) {\\n\\t\\tif (caption !== undefined) {\\n\\t\\t\\toutput = \\\"[[\\\" + caption + \\\"|\\\" + title + \\\"]]\\\";\\n\\t\\t} else {\\n\\t\\t\\toutput = \\\"[[\\\" + title + \\\"]]\\\";\\n\\t\\t}\\n\\t} else if (caption !== undefined) {\\n\\t\\tvar safeCaption = sanitizeCaption(parser, caption);\\n\\t\\tif (safeCaption !== undefined) {\\n\\t\\t\\toutput = exports.makeWidget(parser, '$link', {to: title}, safeCaption);\\n\\t\\t}\\n\\t} else if (exports.shorthandPrettylinksSupported(parser.wiki)) {\\n\\t\\toutput = exports.makeWidget(parser, '$link', {to: title});\\n\\t} else if (parser.context.allowWidgets() && parser.placeholder) {\\n\\t\\t// If we don't have a caption, we must resort to\\n\\t\\t// placeholders anyway to prevent link/caption desync\\n\\t\\t// from later relinks.\\n\\t\\t// It doesn't matter whether the tiddler is quotable.\\n\\t\\tvar ph = parser.placeholder.getPlaceholderFor(title);\\n\\t\\toutput = \\\"\u003C$link to=\u003C\u003C\\\"+ph+\\\">>>\u003C$text text=\u003C\u003C\\\"+ph+\\\">>/>\u003C/$link>\\\";\\n\\t}\\n\\treturn output;\\n};\\n\\n/**In version 5.1.20, Tiddlywiki made it so \u003C$link to\\\"something\\\" /> would\\n * use \\\"something\\\" as a caption. This is preferable. However, Relink works\\n * going back to 5.1.14, so we need to have different handling for both\\n * cases.\\n */\\nvar _supported;\\nexports.shorthandPrettylinksSupported = function(wiki) {\\n\\tif (_supported === undefined) {\\n\\t\\tvar test = wiki.renderText(\\\"text/plain\\\", \\\"text/vnd.tiddlywiki\\\", \\\"\u003C$link to=test/>\\\");\\n\\t\\t_supported = (test === \\\"test\\\");\\n\\t}\\n\\treturn _supported;\\n};\\n\\n/**Return true if value can be used inside a prettylink.\\n */\\nfunction canBePrettylink(value, customCaption) {\\n\\treturn value.indexOf(\\\"]]\\\") \u003C 0 && value[value.length-1] !== ']' && (customCaption !== undefined || value.indexOf('|') \u003C 0);\\n};\\n\\nfunction sanitizeCaption(parser, caption) {\\n\\tvar plaintext = parser.wiki.renderText(\\\"text/plain\\\", \\\"text/vnd.tiddlywiki\\\", caption);\\n\\tif (plaintext === caption && caption.indexOf(\\\"\u003C/$link>\\\") \u003C= 0) {\\n\\t\\treturn caption;\\n\\t} else {\\n\\t\\treturn exports.makeWidget(parser, '$text', {text: caption});\\n\\t}\\n};\\n\\n/**Finds an appropriate quote mark for a given value.\\n *\\n *Tiddlywiki doesn't have escape characters for attribute values. Instead,\\n * we just have to find the type of quotes that'll work for the given title.\\n * There exist titles that simply can't be quoted.\\n * If it can stick with the preference, it will.\\n *\\n * return: Returns the wrapped value, or undefined if it's impossible to wrap\\n */\\nexports.wrapAttributeValue = function(value, preference) {\\n\\tvar whitelist = [\\\"\\\", \\\"'\\\", '\\\"', '\\\"\\\"\\\"'];\\n\\tvar choices = {\\n\\t\\t\\\"\\\": function(v) {return !/([\\\\/\\\\s\u003C>\\\"'=])/.test(v) && v.length > 0; },\\n\\t\\t\\\"'\\\": function(v) {return v.indexOf(\\\"'\\\") \u003C 0; },\\n\\t\\t'\\\"': function(v) {return v.indexOf('\\\"') \u003C 0; },\\n\\t\\t'\\\"\\\"\\\"': function(v) {return v.indexOf('\\\"\\\"\\\"') \u003C 0 && v[v.length-1] != '\\\"';}\\n\\t};\\n\\tif (choices[preference] && choices[preference](value)) {\\n\\t\\treturn wrap(value, preference);\\n\\t}\\n\\tfor (var i = 0; i \u003C whitelist.length; i++) {\\n\\t\\tvar quote = whitelist[i];\\n\\t\\tif (choices[quote](value)) {\\n\\t\\t\\treturn wrap(value, quote);\\n\\t\\t}\\n\\t}\\n\\t// No quotes will work on this\\n\\treturn undefined;\\n};\\n\\nfunction wrap(value, wrapper) {\\n\\tvar wrappers = {\\n\\t\\t\\\"\\\": function(v) {return v; },\\n\\t\\t\\\"'\\\": function(v) {return \\\"'\\\"+v+\\\"'\\\"; },\\n\\t\\t'\\\"': function(v) {return '\\\"'+v+'\\\"'; },\\n\\t\\t'\\\"\\\"\\\"': function(v) {return '\\\"\\\"\\\"'+v+'\\\"\\\"\\\"'; },\\n\\t\\t\\\"[[\\\": function(v) {return \\\"[[\\\"+v+\\\"]]\\\"; }\\n\\t};\\n\\tvar chosen = wrappers[wrapper];\\n\\tif (chosen) {\\n\\t\\treturn chosen(value);\\n\\t} else {\\n\\t\\treturn undefined;\\n\\t}\\n};\\n\\nfunction canBePrettyOperand(value) {\\n\\treturn value.indexOf(']') \u003C 0;\\n};\\n\\n// Finds the newline at the end of a string and returns it. Empty string if\\n// none exists.\\nexports.getEndingNewline = function(string) {\\n\\tvar l = string.length;\\n\\tif (string[l-1] === '\\\\n') {\\n\\t\\treturn (string[l-2] === '\\\\r') ? \\\"\\\\r\\\\n\\\" : \\\"\\\\n\\\";\\n\\t}\\n\\treturn \\\"\\\";\\n};\\n\",\"module-type\":\"library\",\"title\":\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/utils.js\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/wikilink.js\":{\"text\":\"/*\\\\\\nmodule-type: relinkwikitextrule\\n\\nHandles CamelCase links\\n\\nWikiLink\\n\\nbut not:\\n\\n~WikiLink\\n\\n\\\\*/\\n\\nvar utils = require(\\\"./utils.js\\\");\\n\\nexports.name = \\\"wikilink\\\";\\n\\nexports.report = function(text, callback, options) {\\n\\tvar title = this.match[0],\\n\\t\\tunlink = $tw.config.textPrimitives.unWikiLink;\\n\\tthis.parser.pos = this.matchRegExp.lastIndex;\\n\\tif (title[0] !== unlink) {\\n\\t\\tcallback(title, unlink + title);\\n\\t}\\n};\\n\\nexports.relink = function(text, fromTitle, toTitle, options) {\\n\\tvar entry = undefined,\\n\\t\\ttitle = this.match[0];\\n\\tthis.parser.pos = this.matchRegExp.lastIndex;\\n\\tif (title === fromTitle && title[0] !== $tw.config.textPrimitives.unWikiLink) {\\n\\t\\tentry = { output: this.makeWikilink(toTitle, options) };\\n\\t\\tif (entry.output === undefined) {\\n\\t\\t\\tentry.impossible = true;\\n\\t\\t}\\n\\t}\\n\\treturn entry;\\n};\\n\\nexports.makeWikilink = function(title, options) {\\n\\tif (title.match(this.matchRegExp) && title[0] !== $tw.config.textPrimitives.unWikiLink) {\\n\\t\\treturn title;\\n\\t} else {\\n\\t\\treturn utils.makePrettylink(this.parser, title);\\n\\t}\\n};\\n\",\"module-type\":\"relinkwikitextrule\",\"title\":\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/wikilink.js\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/html/attributes.js\":{\"text\":\"/*\\\\\\n\\nHandles all element attribute values. Most widget relinking happens here.\\n\\n\\\\*/\\n\\nvar relinkUtils = require('$:/plugins/flibbles/relink/js/utils.js');\\nvar refHandler = relinkUtils.getType('reference');\\nvar filterHandler = relinkUtils.getType('filter');\\nvar macrocall = require(\\\"$:/plugins/flibbles/relink/js/utils/macrocall.js\\\");\\nvar attributeOperators = relinkUtils.getModulesByTypeAsHashmap('relinkhtmlattributes', 'name');\\n\\nexports.name = \\\"attributes\\\";\\n\\nexports.report = function(element, parser, callback, options) {\\n\\tfor (var attributeName in element.attributes) {\\n\\t\\tvar attr = element.attributes[attributeName];\\n\\t\\tvar nextEql = parser.source.indexOf('=', attr.start);\\n\\t\\t// This is the rare case of changing tiddler\\n\\t\\t// \\\"true\\\" to something else when \\\"true\\\" is\\n\\t\\t// implicit, like \u003C$link to /> We ignore those.\\n\\t\\tif (nextEql \u003C 0 || nextEql > attr.end) {\\n\\t\\t\\tcontinue;\\n\\t\\t}\\n\\t\\tvar entry;\\n\\t\\tswitch (attr.type) {\\n\\t\\tcase \\\"string\\\":\\n\\t\\t\\tfor (var operatorName in attributeOperators) {\\n\\t\\t\\t\\tvar operator = attributeOperators[operatorName];\\n\\t\\t\\t\\tvar handler = operator.getHandler(element, attr, options);\\n\\t\\t\\t\\tif (handler) {\\n\\t\\t\\t\\t\\thandler.report(attr.value, function(title, blurb) {\\n\\t\\t\\t\\t\\t\\tif (operator.formBlurb) {\\n\\t\\t\\t\\t\\t\\t\\tcallback(title, operator.formBlurb(element, attr, blurb, options));\\n\\t\\t\\t\\t\\t\\t} else if (blurb) {\\n\\t\\t\\t\\t\\t\\t\\tcallback(title, element.tag + ' ' + attributeName + '=\\\"' + blurb + '\\\"');\\n\\t\\t\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\t\\t\\tcallback(title, element.tag + ' ' + attributeName);\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t}, options);\\n\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t\\tbreak;\\n\\t\\tcase \\\"indirect\\\":\\n\\t\\t\\tentry = refHandler.report(attr.textReference, function(title, blurb) {\\n\\t\\t\\t\\tcallback(title, element.tag + ' ' + attributeName + '={{' + (blurb || '') + '}}');\\n\\t\\t\\t}, options);\\n\\t\\t\\tbreak;\\n\\t\\tcase \\\"filtered\\\":\\n\\t\\t\\tentry = filterHandler.report(attr.filter, function(title, blurb) {\\n\\t\\t\\t\\tcallback(title, element.tag + ' ' + attributeName + '={{{' + blurb + '}}}');\\n\\t\\t\\t}, options);\\n\\t\\t\\tbreak;\\n\\t\\tcase \\\"macro\\\":\\n\\t\\t\\tvar macro = attr.value;\\n\\t\\t\\tentry = macrocall.report(options.settings, macro, function(title, blurb) {\\n\\t\\t\\t\\tcallback(title, element.tag + ' ' + attributeName + '=\u003C\u003C' + blurb + '>>');\\n\\t\\t\\t}, options);\\n\\t\\t\\tbreak;\\n\\t\\t}\\n\\t}\\n};\\n\\nexports.relink = function(element, parser, fromTitle, toTitle, options) {\\n\\tvar changed = undefined, impossible = undefined;\\n\\tfor (var attributeName in element.attributes) {\\n\\t\\tvar attr = element.attributes[attributeName];\\n\\t\\tvar nextEql = parser.source.indexOf('=', attr.start);\\n\\t\\t// This is the rare case of changing tiddler\\n\\t\\t// \\\"true\\\" to something else when \\\"true\\\" is\\n\\t\\t// implicit, like \u003C$link to /> We ignore those.\\n\\t\\tif (nextEql \u003C 0 || nextEql > attr.end) {\\n\\t\\t\\tattr.valueless = true;\\n\\t\\t\\tcontinue;\\n\\t\\t}\\n\\t\\tvar entry;\\n\\t\\tswitch (attr.type) {\\n\\t\\tcase 'string':\\n\\t\\t\\tfor (var operatorName in attributeOperators) {\\n\\t\\t\\t\\tvar operator = attributeOperators[operatorName];\\n\\t\\t\\t\\tvar handler = operator.getHandler(element, attr, options);\\n\\t\\t\\t\\tif (handler) {\\n\\t\\t\\t\\t\\tentry = handler.relink(attr.value, fromTitle, toTitle, options);\\n\\t\\t\\t\\t\\tif (entry && entry.output) {\\n\\t\\t\\t\\t\\t\\tattr.value = entry.output;\\n\\t\\t\\t\\t\\t\\tattr.handler = handler.name;\\n\\t\\t\\t\\t\\t\\tchanged = true;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t\\tbreak;\\n\\t\\tcase 'indirect':\\n\\t\\t\\tentry = refHandler.relinkInBraces(attr.textReference, fromTitle, toTitle, options);\\n\\t\\t\\tif (entry && entry.output) {\\n\\t\\t\\t\\tattr.textReference = entry.output;\\n\\t\\t\\t\\tchanged = true;\\n\\t\\t\\t}\\n\\t\\t\\tbreak;\\n\\t\\tcase 'filtered':\\n\\t\\t\\tentry = filterHandler.relinkInBraces(attr.filter, fromTitle, toTitle, options);\\n\\t\\t\\tif (entry && entry.output) {\\n\\t\\t\\t\\tattr.filter = entry.output;\\n\\t\\t\\t\\tchanged = true;\\n\\t\\t\\t}\\n\\t\\t\\tbreak;\\n\\t\\tcase 'macro':\\n\\t\\t\\tvar macro = attr.value;\\n\\t\\t\\tentry = macrocall.relink(options.settings, macro, parser.source, fromTitle, toTitle, false, options);\\n\\t\\t\\tif (entry && entry.output) {\\n\\t\\t\\t\\tattr.output = macrocall.reassemble(entry.output, parser.source, options);\\n\\t\\t\\t\\tattr.value = entry.output;\\n\\t\\t\\t\\tchanged = true;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\tif (entry && entry.impossible) {\\n\\t\\t\\timpossible = true;\\n\\t\\t}\\n\\t}\\n\\tif (changed || impossible) {\\n\\t\\treturn {output: changed, impossible: impossible};\\n\\t}\\n};\\n\",\"module-type\":\"relinkhtml\",\"title\":\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/html/attributes.js\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/html/importvariables.js\":{\"text\":\"/*\\\\\\n\\nHandles state updating required for $importvariables widgets\\n\\n\\\\*/\\n\\nvar relinkUtils = require('$:/plugins/flibbles/relink/js/utils.js');\\nvar ImportContext = relinkUtils.getContext('import');\\n\\nexports.name = \\\"importvariables\\\";\\n\\nexports.report = function(element, parser, callback, options) {\\n\\tif (element.tag === \\\"$importvariables\\\") {\\n\\t\\tprocessImport(element, parser, options);\\n\\t}\\n};\\n\\nexports.relink = function(element, parser, fromTitle, toTitle, options) {\\n\\tif (element.tag === \\\"$importvariables\\\") {\\n\\t\\tprocessImport(element, parser, options);\\n\\t}\\n};\\n\\nfunction processImport(element, parser, options) {\\n\\tvar importFilterAttr = element.attributes.filter;\\n\\tif (importFilterAttr) {\\n\\t\\tprocessImportFilter(parser, importFilterAttr, options);\\n\\t}\\n};\\n\\n// This processes a \u003C$importvariables> filter attribute and adds any new\\n// variables to our parser.\\nfunction processImportFilter(parser, importAttribute, options) {\\n\\tif (typeof importAttribute === \\\"string\\\") {\\n\\t\\t// It was changed. Reparse it. It'll be a quoted\\n\\t\\t// attribute value. Add a dummy attribute name.\\n\\t\\timportAttribute = $tw.utils.parseAttribute(\\\"p=\\\"+importAttribute, 0)\\n\\t}\\n\\tvar context = parser.context;\\n\\tvar importFilter = computeAttribute(context, importAttribute, options);\\n\\tparser.context = new ImportContext(options.wiki, context, importFilter);\\n};\\n\\nfunction computeAttribute(context, attribute, options) {\\n\\tvar value;\\n\\tif(attribute.type === \\\"filtered\\\") {\\n\\t\\tvar parentWidget = context.widget;\\n\\t\\tvalue = options.wiki.filterTiddlers(attribute.filter,parentWidget)[0] || \\\"\\\";\\n\\t} else if(attribute.type === \\\"indirect\\\") {\\n\\t\\tvar parentWidget = context.widget;\\n\\t\\tvalue = options.wiki.getTextReference(attribute.textReference,\\\"\\\",parentWidget.variables.currentTiddler.value);\\n\\t} else if(attribute.type === \\\"macro\\\") {\\n\\t\\tvar parentWidget = context.widget;\\n\\t\\tvalue = parentWidget.getVariable(attribute.value.name,{params: attribute.value.params});\\n\\t} else { // String attribute\\n\\t\\tvalue = attribute.value;\\n\\t}\\n\\treturn value;\\n};\\n\",\"module-type\":\"relinkhtml\",\"title\":\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/html/importvariables.js\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/html/attributes/fields.js\":{\"text\":\"/*\\\\ \\nHandles replacement in widgets which allow arbitrary attributes that\\ncorrespond to tiddler fields.\\n\\n\\\\*/\\n\\nexports.name = \\\"fields\\\";\\n\\nexports.getHandler = function(element, attribute, options) {\\n\\tvar regexp = options.settings.getConfig(\\\"fieldattributes\\\")[element.tag];\\n\\tif (regexp) {\\n\\t\\tvar results = regexp.exec(attribute.name);\\n\\t\\tif (results && results[0] === attribute.name) {\\n\\t\\t\\treturn options.settings.getFields()[results[1]];\\n\\t\\t}\\n\\t}\\n};\\n\",\"module-type\":\"relinkhtmlattributes\",\"title\":\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/html/attributes/fields.js\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/html/attributes/macrocall.js\":{\"text\":\"/*\\\\\\n\\nHandles replacement in $macrocall widgets\\n\\n\\\\*/\\n\\nexports.name = \\\"macrocall\\\";\\n\\nexports.getHandler = function(element, attribute, options) {\\n\\tif (element.tag === \\\"$macrocall\\\") {\\n\\t\\tvar nameAttr = element.attributes[\\\"$name\\\"];\\n\\t\\tif (nameAttr) {\\n\\t\\t\\tvar setting = options.settings.getMacro(nameAttr.value);\\n\\t\\t\\treturn setting && setting[attribute.name];\\n\\t\\t}\\n\\t}\\n};\\n\\nexports.formBlurb = function(element, attribute, blurb, options) {\\n\\tvar nameAttr = element.attributes[\\\"$name\\\"];\\n\\tvar newBlurb = '\u003C' + nameAttr.value + ' ' + attribute.name;\\n\\tif (blurb) {\\n\\t\\tnewBlurb += '=\\\"' + blurb + '\\\"';\\n\\t}\\n\\treturn newBlurb;\\n};\\n\",\"module-type\":\"relinkhtmlattributes\",\"title\":\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/html/attributes/macrocall.js\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/html/attributes/whitelist.js\":{\"text\":\"/*\\\\ \\n\\nHandles replacement of widget attributes that are specified in the whitelist.\\n\\n\\\\*/\\n\\nexports.name = \\\"whitelist\\\";\\n\\nexports.getHandler = function(element, attribute, options) {\\n\\tvar setting = options.settings.getAttribute(element.tag);\\n\\treturn setting && setting[attribute.name];\\n};\\n\",\"module-type\":\"relinkhtmlattributes\",\"title\":\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/html/attributes/whitelist.js\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/contexts/context.js\":{\"text\":\"/*\\\\\\n\\nBase class for relink contexts.\\n\\n\\\\*/\\n\\nfunction Context() {\\n};\\n\\nexports.context = Context;\\n\\n// This class does no special handling of fields, operators, or attributes.\\n// we pass it along to the parent.\\nContext.prototype.getFields = function() {\\n\\treturn this.parent.getFields();\\n};\\n\\nContext.prototype.getOperator = function(name, index) {\\n\\treturn this.parent.getOperator(name, index);\\n};\\n\\nContext.prototype.getOperators = function() {\\n\\treturn this.parent.getOperators();\\n};\\n\\nContext.prototype.getAttribute = function(elementName) {\\n\\treturn this.parent.getAttribute(elementName);\\n};\\n\\nContext.prototype.getAttributes = function() {\\n\\treturn this.parent.getAttributes();\\n};\\n\\nContext.prototype.getConfig = function(category) {\\n\\treturn this.parent.getConfig(category);\\n};\\n\\nContext.prototype.getMacro = function(macroName) {\\n\\treturn this.parent.getMacro(macroName);\\n};\\n\\nContext.prototype.getMacros = function() {\\n\\treturn this.parent.getMacros();\\n};\\n\\nContext.prototype.allowPrettylinks = function() {\\n\\treturn this.parent.allowPrettylinks();\\n};\\n\\nContext.prototype.allowWidgets = function() {\\n\\treturn this.parent.allowWidgets();\\n};\\n\\nContext.prototype.hasImports = function(value) {\\n\\treturn this.parent.hasImports(value);\\n};\\n\",\"module-type\":\"relinkcontext\",\"title\":\"$:/plugins/flibbles/relink/js/contexts/context.js\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/contexts/import.js\":{\"text\":\"/*\\\\\\n\\nThis handles the fetching and distribution of relink settings.\\n\\n\\\\*/\\n\\nvar WidgetContext = require('./widget').widget;\\n\\nfunction ImportContext(wiki, parent, filter) {\\n\\tthis.parent = parent;\\n\\tthis.wiki = wiki;\\n\\tvar importWidget = createImportWidget(filter, this.wiki, this.parent.widget);\\n\\tthis._compileList(importWidget.tiddlerList);\\n\\t// This only works if only one filter is imported\\n\\tthis.widget = this.getBottom(importWidget);\\n\\t// Trickle this up, so that any containing tiddlercontext knows that this\\n\\t// tiddler does some importing, and must be checked regularly.\\n\\tparent.hasImports(true);\\n};\\n\\nexports.import = ImportContext;\\n\\nImportContext.prototype = new WidgetContext();\\n\\nImportContext.prototype.changed = function(changes) {\\n\\treturn this.widget && this.widget.refresh(changes)\\n};\\n\\nfunction createImportWidget(filter, wiki, parent) {\\n\\tvar widget = wiki.makeWidget( { tree: [{\\n\\t\\ttype: \\\"importvariables\\\",\\n\\t\\tattributes: {\\n\\t\\t\\t\\\"filter\\\": {\\n\\t\\t\\t\\ttype: \\\"string\\\",\\n\\t\\t\\t\\tvalue: filter\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}] }, { parentWidget: parent} );\\n\\tif (parent) {\\n\\t\\tparent.children.push(widget);\\n\\t}\\n\\twidget.execute();\\n\\twidget.renderChildren();\\n\\tvar importWidget = widget.children[0];\\n\\treturn importWidget;\\n};\\n\\nImportContext.prototype._compileList = function(titleList) {\\n\\tfor (var i = 0; i \u003C titleList.length; i++) {\\n\\t\\tvar parser = this.wiki.parseTiddler(titleList[i]);\\n\\t\\tif (parser) {\\n\\t\\t\\tvar parseTreeNode = parser.tree[0];\\n\\t\\t\\twhile (parseTreeNode && parseTreeNode.type === \\\"set\\\") {\\n\\t\\t\\t\\tif (parseTreeNode.relink) {\\n\\t\\t\\t\\t\\tfor (var macroName in parseTreeNode.relink) {\\n\\t\\t\\t\\t\\t\\tvar parameters = parseTreeNode.relink[macroName];\\n\\t\\t\\t\\t\\t\\tfor (paramName in parameters) {\\n\\t\\t\\t\\t\\t\\t\\tthis.addSetting(this.wiki, macroName, paramName, parameters[paramName], titleList[i]);\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tparseTreeNode = parseTreeNode.children && parseTreeNode.children[0];\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n};\\n\",\"module-type\":\"relinkcontext\",\"title\":\"$:/plugins/flibbles/relink/js/contexts/import.js\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/contexts/tiddler.js\":{\"text\":\"/*\\\\\\n\\nContext for a tiddler. Defines nothing but makes an entry point to test if\\na tiddler must be refreshed.\\n\\n\\\\*/\\n\\nvar WidgetContext = require('./widget.js').widget;\\n\\nfunction TiddlerContext(wiki, parentContext, title) {\\n\\tthis.title = title;\\n\\tthis.parent = parentContext;\\n\\tvar globalWidget = parentContext && parentContext.widget;\\n\\tvar parentWidget = wiki.makeWidget(null, {parentWidget: globalWidget});\\n\\tparentWidget.setVariable('currentTiddler', title);\\n\\tthis.widget = wiki.makeWidget(null, {parentWidget: parentWidget});\\n};\\n\\nexports.tiddler = TiddlerContext;\\n\\nTiddlerContext.prototype = new WidgetContext();\\n\\nTiddlerContext.prototype.changed = function(changes) {\\n\\treturn this.widget && this.widget.refresh(changes);\\n};\\n\\n// By default, a tiddler context does not use imports, unless an import\\n// statement is later discovered somewhere in the fields.\\nTiddlerContext.prototype.hasImports = function(value) {\\n\\treturn this._hasImports || (this._hasImports = value);\\n};\\n\",\"module-type\":\"relinkcontext\",\"title\":\"$:/plugins/flibbles/relink/js/contexts/tiddler.js\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/contexts/variable.js\":{\"text\":\"/*\\\\\\n\\nThis handles the context for variables. Either from $set, $vars, or \\\\define\\n\\n\\\\*/\\n\\nvar WidgetContext = require('./widget').widget;\\n\\nfunction VariableContext(parent, setParseTreeNode) {\\n\\tthis.parent = parent;\\n\\t// Now create a new widget and attach it.\\n\\tvar attachPoint = parent.widget;\\n\\tvar setWidget = attachPoint.makeChildWidget(setParseTreeNode);\\n\\tattachPoint.children.push(setWidget);\\n\\tsetWidget.computeAttributes();\\n\\tsetWidget.execute();\\n\\t// point our widget to bottom, where any other contexts would attach to\\n\\tthis.widget = this.getBottom(setWidget);\\n};\\n\\nexports.variable = VariableContext;\\n\\nVariableContext.prototype = new WidgetContext();\\n\",\"module-type\":\"relinkcontext\",\"title\":\"$:/plugins/flibbles/relink/js/contexts/variable.js\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/contexts/whitelist.js\":{\"text\":\"/*\\\\\\n\\nThis top-level context manages settings inside the whitelist. It never has\\na parent.\\n\\n\\\\*/\\n\\nvar utils = require('../utils');\\nvar Context = require('./context').context;\\n\\nvar prefix = \\\"$:/config/flibbles/relink/\\\";\\n\\n/**Factories define methods that create settings given config tiddlers.\\n * for factory method 'example', it will be called once for each:\\n * \\\"$:/config/flibbles/relink/example/...\\\" tiddler that exists.\\n * the argument \\\"key\\\" will be set to the contents of \\\"...\\\"\\n *\\n * The reason I build relink settings in this convoluted way is to minimize\\n * the number of times tiddlywiki has to run through EVERY tiddler looking\\n * for relink config tiddlers.\\n */\\nvar settingsGenerators = utils.getModulesByTypeAsHashmap('relinksetting', 'name');\\n\\nfunction WhitelistContext(wiki) {\\n\\tbuild(this, wiki);\\n};\\n\\nexports.whitelist = WhitelistContext;\\n\\nWhitelistContext.prototype = new Context();\\n\\n/**Hot directories are directories for which if anything changes inside them,\\n * then Relink must completely rebuild its index.\\n * By default, this includes the whitelist settings, but relink-titles also\\n * includes its rules disabling directory.\\n * This is the FIRST solution I came up with to this problem. If you're\\n * looking at this, please make a github issue so I have a chance to understand\\n * your needs. This is currently a HACK solution.\\n */\\nWhitelistContext.hotDirectories = [prefix];\\n\\nWhitelistContext.prototype.getAttribute = function(elementName) {\\n\\treturn this.attributes[elementName];\\n};\\n\\nWhitelistContext.prototype.getAttributes = function() {\\n\\treturn flatten(this.attributes);\\n};\\n\\nWhitelistContext.prototype.getFields = function() {\\n\\treturn this.fields;\\n};\\n\\nWhitelistContext.prototype.getConfig = function(category) {\\n\\treturn this[category];\\n};\\n\\nWhitelistContext.prototype.getOperator = function(operatorName, operandIndex) {\\n\\tvar op = this.operators[operatorName];\\n\\treturn op && op[operandIndex || 1];\\n};\\n\\nWhitelistContext.prototype.getOperators = function() {\\n\\tvar signatures = Object.create(null);\\n\\tfor (var op in this.operators) {\\n\\t\\tvar operandSet = this.operators[op];\\n\\t\\tfor (var index in operandSet) {\\n\\t\\t\\tvar entry = operandSet[index];\\n\\t\\t\\tsignatures[entry.key] = entry;\\n\\t\\t}\\n\\t}\\n\\treturn signatures;\\n};\\n\\nWhitelistContext.prototype.getMacro = function(macroName) {\\n\\treturn this.macros[macroName];\\n};\\n\\nWhitelistContext.prototype.getMacros = function() {\\n\\treturn flatten(this.macros);\\n};\\n\\nWhitelistContext.prototype.changed = function(changedTiddlers) {\\n\\tfor (var i = 0; i \u003C WhitelistContext.hotDirectories.length; i++) {\\n\\t\\tvar dir = WhitelistContext.hotDirectories[i];\\n\\t\\tfor (var title in changedTiddlers) {\\n\\t\\t\\tif (title.substr(0, dir.length) === dir) {\\n\\t\\t\\t\\treturn true;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\treturn false;\\n};\\n\\nWhitelistContext.prototype.hasImports = function(value) {\\n\\t// We don't care if imports are used. This is the global level.\\n\\treturn false;\\n};\\n\\nfunction build(settings, wiki) {\\n\\tfor (var name in settingsGenerators) {\\n\\t\\tsettings[name] = Object.create(null);\\n\\t}\\n\\twiki.eachShadowPlusTiddlers(function(tiddler, title) {\\n\\t\\tif (title.substr(0, prefix.length) === prefix) {\\n\\t\\t\\tvar remainder = title.substr(prefix.length);\\n\\t\\t\\tvar category = root(remainder);\\n\\t\\t\\tvar factory = settingsGenerators[category];\\n\\t\\t\\tif (factory) {\\n\\t\\t\\t\\tvar name = remainder.substr(category.length+1);\\n\\t\\t\\t\\tfactory.generate(settings[category], tiddler, name, wiki);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t});\\n};\\n\\n/* Returns first bit of a path. path/to/tiddler -> path\\n */\\nfunction root(string) {\\n\\tvar index = string.indexOf('/');\\n\\tif (index >= 0) {\\n\\t\\treturn string.substr(0, index);\\n\\t}\\n};\\n\\n/* Turns {dir: {file1: 'value1', file2: 'value2'}}\\n * into {dir/file1: 'value1', dir/file2: 'value2'}\\n */\\nfunction flatten(set) {\\n\\tvar signatures = Object.create(null);\\n\\tfor (var outerName in set) {\\n\\t\\tvar setItem = set[outerName];\\n\\t\\tfor (var innerName in setItem) {\\n\\t\\t\\tsignatures[outerName + \\\"/\\\" + innerName] = setItem[innerName];\\n\\t\\t}\\n\\t}\\n\\treturn signatures;\\n};\\n\",\"module-type\":\"relinkcontext\",\"title\":\"$:/plugins/flibbles/relink/js/contexts/whitelist.js\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/contexts/widget.js\":{\"text\":\"/*\\\\\\n\\nThis is a virtual subclass of context for contexts that exist within widgets\\nof a specific tiddler.\\n\\nAll widget contexts must have a widget member.\\n\\n\\\\*/\\n\\nvar Context = require('./context.js').context;\\nvar utils = require('$:/plugins/flibbles/relink/js/utils.js');\\n\\nfunction WidgetContext() {};\\n\\nexports.widget = WidgetContext;\\n\\nWidgetContext.prototype = new Context();\\n\\nWidgetContext.prototype.getMacroDefinition = function(variableName) {\\n\\t// widget.variables is prototyped, so it looks up into all its parents too\\n\\treturn this.widget.variables[variableName] || $tw.macros[variableName];\\n};\\n\\nWidgetContext.prototype.addSetting = function(wiki, macroName, parameter, type, sourceTitle) {\\n\\tthis.macros = this.macros || Object.create(null);\\n\\tvar macro = this.macros[macroName];\\n\\ttype = type || utils.getDefaultType(wiki);\\n\\tif (macro === undefined) {\\n\\t\\tmacro = this.macros[macroName] = Object.create(null);\\n\\t}\\n\\tvar handler = utils.getType(type);\\n\\tif (handler) {\\n\\t\\thandler.source = sourceTitle;\\n\\t\\t// We attach the fields of the defining tiddler for the benefit\\n\\t\\t// of any 3rd party field types that want access to them.\\n\\t\\tvar tiddler = wiki.getTiddler(sourceTitle);\\n\\t\\thandler.fields = tiddler.fields;\\n\\t\\tmacro[parameter] = handler;\\n\\t}\\n};\\n\\nWidgetContext.prototype.getMacros = function() {\\n\\tvar signatures = this.parent.getMacros();\\n\\tif (this.macros) {\\n\\t\\tfor (var macroName in this.macros) {\\n\\t\\t\\tvar macro = this.macros[macroName];\\n\\t\\t\\tfor (var param in macro) {\\n\\t\\t\\t\\tsignatures[macroName + \\\"/\\\" + param] = macro[param];\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\treturn signatures;\\n};\\n\\n/**This does strange handling because it's possible for a macro to have\\n * its individual parameters whitelisted in separate places.\\n * Don't know WHY someone would do this, but it can happen.\\n */\\nWidgetContext.prototype.getMacro = function(macroName) {\\n\\tvar theseSettings = this.macros && this.macros[macroName];\\n\\tvar parentSettings;\\n\\tif (this.parent) {\\n\\t\\tparentSettings = this.parent.getMacro(macroName);\\n\\t}\\n\\tif (theseSettings && parentSettings) {\\n\\t\\t// gotta merge them without changing either. This is expensive,\\n\\t\\t// but it'll happen rarely.\\n\\t\\tvar rtnSettings = $tw.utils.extend(Object.create(null), theseSettings, parentSettings);\\n\\t\\treturn rtnSettings;\\n\\t}\\n\\treturn theseSettings || parentSettings;\\n};\\n\\n/**Returns the deepest descendant of the given widget.\\n */\\nWidgetContext.prototype.getBottom = function(widget) {\\n\\twhile (widget.children.length > 0) {\\n\\t\\twidget = widget.children[0];\\n\\t}\\n\\treturn widget;\\n};\\n\",\"module-type\":\"relinkcontext\",\"title\":\"$:/plugins/flibbles/relink/js/contexts/widget.js\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/contexts/wikitext.js\":{\"text\":\"/*\\\\\\n\\nContext for wikitext. It can contain rules about what's allowed in this\\ncurrent layer of wikitext.\\n\\n\\\\*/\\n\\nvar WidgetContext = require('./widget.js').widget;\\n\\nfunction WikitextContext(parentContext) {\\n\\tthis.parent = parentContext;\\n\\tthis.widget = parentContext.widget;\\n};\\n\\nexports.wikitext = WikitextContext;\\n\\nWikitextContext.prototype = new WidgetContext();\\n\\n// Unless this specific context has rules about it, widgets and prettyLInks are allowed.\\nWikitextContext.prototype.allowWidgets = enabled;\\nWikitextContext.prototype.allowPrettylinks = enabled;\\n\\nfunction enabled() { return true; };\\n\",\"module-type\":\"relinkcontext\",\"title\":\"$:/plugins/flibbles/relink/js/contexts/wikitext.js\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/utils/backupIndexer.js\":{\"text\":\"/*\\\\\\nmodule-type: library\\n\\nThis is a backup indexer Relink uses if the real one is disabled, or we're\\n\u003CV5.1.23. It's not nearly as good, but it caches some.\\n\\n\\\\*/\\n\\n\\\"use strict\\\";\\n\\nvar utils = require(\\\"$:/plugins/flibbles/relink/js/utils.js\\\");\\nvar TiddlerContext = utils.getContext('tiddler');\\n\\n// This is the indexer we use if the current wiki doesn't support indexers.\\nfunction BackupIndexer(wiki) {\\n\\tthis.wiki = wiki;\\n};\\n\\nmodule.exports = BackupIndexer;\\n\\nBackupIndexer.prototype.lookup = function(title) {\\n\\treturn getCache(this.wiki).lookup[title];\\n};\\n\\nBackupIndexer.prototype.reverseLookup = function(title) {\\n\\tvar index = getCache(this.wiki);\\n\\tif (!index.reverse[title]) {\\n\\t\\tvar record = Object.create(null);\\n\\t\\tfor (var other in index.lookup) {\\n\\t\\t\\tif (index.lookup[other][title]) {\\n\\t\\t\\t\\trecord[other] = index.lookup[other][title];\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\tindex.reverse[title] = record;\\n\\t}\\n\\treturn index.reverse[title];\\n};\\n\\n/* The backup indexer doesn't bother caching relink reports. It would always\\n * be called after a draft tiddler had changed, which would defeat the point.\\n */\\nBackupIndexer.prototype.relinkLookup = function(fromTitle, toTitle, options) {\\n\\tvar cache = getCache(this.wiki);\\n\\tif (cache.lastRelinkFrom === fromTitle && cache.lastRelinkTo === toTitle) {\\n\\t\\toptions.cache = cache.lastRelinkCache;\\n\\t\\treturn cache.lastRelink;\\n\\t}\\n\\tcache.lastRelink = utils.getRelinkResults(this.wiki, fromTitle, toTitle, cache.context, undefined, options);\\n\\tcache.lastRelinkFrom = fromTitle;\\n\\tcache.lastRelinkTo = toTitle;\\n\\tcache.lastRelinkCache = options.cache;\\n\\treturn cache.lastRelink;\\n};\\n\\nBackupIndexer.prototype.orphans = function() {\\n\\tvar index = getCache(this.wiki).lookup;\\n\\tvar results = [];\\n\\tfor (var title in index) {\\n\\t\\tvar found = false;\\n\\t\\tfor (var anything in this.reverseLookup(title)) {\\n\\t\\t\\tfound = true;\\n\\t\\t\\tbreak;\\n\\t\\t}\\n\\t\\tif (!found) {\\n\\t\\t\\tresults.push(title);\\n\\t\\t}\\n\\t}\\n\\treturn results;\\n};\\n\\nfunction getCache(wiki) {\\n\\treturn wiki.getGlobalCache('relink', function() {\\n\\t\\tvar tiddlerList = wiki.getRelinkableTitles();\\n\\t\\tvar index = Object.create(null);\\n\\t\\tvar wikiContext = utils.getWikiContext(wiki);\\n\\t\\tfor (var i = 0; i \u003C tiddlerList.length; i++) {\\n\\t\\t\\tvar title = tiddlerList[i];\\n\\t\\t\\tvar tiddler = wiki.getTiddler(title);\\n\\t\\t\\tif (tiddler && !tiddler.fields[\\\"plugin-type\\\"]) {\\n\\t\\t\\t\\tvar context = new TiddlerContext(wiki, wikiContext, title);\\n\\t\\t\\t\\tindex[title] = utils.getTiddlerRelinkReferences(wiki, title, context);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\treturn {\\n\\t\\t\\tlookup: index,\\n\\t\\t\\treverse: Object.create(null),\\n\\t\\t\\tcontext: wikiContext};\\n\\t});\\n};\\n\",\"module-type\":\"library\",\"title\":\"$:/plugins/flibbles/relink/js/utils/backupIndexer.js\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/utils/entry.js\":{\"text\":\"/*\\\\\\n\\nEntries are deprecated. Don't use them. These classes are here just so that\\nany 3rd party modules built for Relink V1 don't break.\\n\\nJust return an object like, {output: \\\"string\\\", impossible: true|undefined}\\n\\n\\\\*/\\n\\nfunction EntryNode() {\\n\\tthis.children = [];\\n};\\n\\nmodule.exports = EntryNode;\\n\\n/** PURE VIRTUAL\\n * EntryNode.prototype.report = function() -> [\\\"string\\\", ...]\\n */\\n\\nEntryNode.newType = function() {\\n\\treturn EntryNode;\\n};\\n\\nEntryNode.prototype.add = function(entry) {\\n\\tthis.children.push(entry);\\n};\\n\\nfunction EntryCollection() {\\n\\tthis.children = Object.create(null);\\n\\tthis.types = Object.create(null);\\n};\\n\\nEntryNode.newCollection = function(name) {\\n\\treturn EntryCollection;\\n};\\n\\n// Again. I reiterate. Don't use this. All this is just legacy support.\\nObject.defineProperty(EntryCollection, 'impossible', {\\n\\tget: function() {\\n\\t\\tvar imp = this._impossible;\\n\\t\\tthis.eachChild(function(child) { imp = imp || child.impossible; });\\n\\t\\treturn imp;\\n\\t},\\n\\tset: function(impossible) {\\n\\t\\tthis._impossible = true;\\n\\t}\\n});\\n\\nEntryCollection.prototype.eachChild = function(method) {\\n\\tfor (var child in this.children) {\\n\\t\\tmethod(this.children[child]);\\n\\t}\\n};\\n\\nEntryCollection.prototype.addChild = function(child, name, type) {\\n\\tthis.children[name] = child;\\n\\tthis.types[name] = type;\\n};\\n\\nEntryCollection.prototype.hasChildren = function() {\\n\\treturn Object.keys(this.children).length > 0;\\n};\\n\",\"module-type\":\"library\",\"title\":\"$:/plugins/flibbles/relink/js/utils/entry.js\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/utils/macrocall.js\":{\"text\":\"/*\\\\\\n\\nMethods for reporting and relinking macros. Behaves much like a fieldtype, except that it's not.\\n\\n\\\\*/\\n\\nvar utils = require('$:/plugins/flibbles/relink/js/utils.js');\\nvar Rebuilder = require(\\\"$:/plugins/flibbles/relink/js/utils/rebuilder\\\");\\n\\n// Error thrown when a macro's definition is needed, but can't be found.\\nfunction CannotFindMacroDef() {};\\nCannotFindMacroDef.prototype.impossible = true;\\nCannotFindMacroDef.prototype.name = \\\"macroparam\\\";\\n// Failed relinks due to missing definitions aren't reported for now.\\n// I may want to do something special later on.\\nCannotFindMacroDef.prototype.report = function() { return []; };\\n\\n/** As in, report a macrocall invocation that is an html attribute.\\n * macro: must be a macro object.*/\\nexports.report = function(context, macro, callback, options) {\\n\\tvar managedMacro = context.getMacro(macro.name);\\n\\tif (!managedMacro) {\\n\\t\\t// We don't manage this macro. Bye.\\n\\t\\treturn undefined;\\n\\t}\\n\\tfor (var managedArg in managedMacro) {\\n\\t\\tvar index;\\n\\t\\ttry {\\n\\t\\t\\tindex = getParamIndexWithinMacrocall(context, macro.name, managedArg, macro.params, options);\\n\\t\\t} catch (e) {\\n\\t\\t\\tcontinue;\\n\\t\\t}\\n\\t\\tif (index \u003C 0) {\\n\\t\\t\\t// The argument was not supplied. Move on to next.\\n\\t\\t\\tcontinue;\\n\\t\\t}\\n\\t\\tvar param = macro.params[index];\\n\\t\\tvar handler = managedMacro[managedArg];\\n\\t\\tvar nestedOptions = Object.create(options);\\n\\t\\tnestedOptions.settings = context;\\n\\t\\tvar entry = handler.report(param.value, function(title, blurb) {\\n\\t\\t\\tvar rtn = managedArg;\\n\\t\\t\\tif (blurb) {\\n\\t\\t\\t\\trtn += ': \\\"' + blurb + '\\\"';\\n\\t\\t\\t}\\n\\t\\t\\tcallback(title, macro.name + ' ' + rtn);\\n\\t\\t}, nestedOptions);\\n\\t}\\n};\\n\\n/**Processes the given macro,\\n * macro: {name:, params:, start:, end:}\\n * each parameters: {name:, end:, value:}\\n * Macro invocation returned is the same, but relinked, and may have new keys:\\n * parameters: {type: macro, start:, newValue: (quoted replacement value)}\\n * Output of the returned entry isn't a string, but a macro object. It needs\\n * to be converted.\\n */\\nexports.relink = function(context, macro, text, fromTitle, toTitle, mayBeWidget, options) {\\n\\tvar managedMacro = context.getMacro(macro.name);\\n\\tvar modified = false;\\n\\tif (!managedMacro) {\\n\\t\\t// We don't manage this macro. Bye.\\n\\t\\treturn undefined;\\n\\t}\\n\\tvar outMacro = $tw.utils.extend({}, macro);\\n\\tvar macroEntry = {};\\n\\toutMacro.params = macro.params.slice();\\n\\tfor (var managedArg in managedMacro) {\\n\\t\\tvar index;\\n\\t\\ttry {\\n\\t\\t\\tindex = getParamIndexWithinMacrocall(context, macro.name, managedArg, macro.params, options);\\n\\t\\t} catch (e) {\\n\\t\\t\\tif (e instanceof CannotFindMacroDef) {\\n\\t\\t\\t\\tmacroEntry.impossible = true;\\n\\t\\t\\t\\tcontinue;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\tif (index \u003C 0) {\\n\\t\\t\\t// this arg either was not supplied, or we can't find\\n\\t\\t\\t// the definition, so we can't tie it to an anonymous\\n\\t\\t\\t// argument. Either way, move on to the next.\\n\\t\\t\\tcontinue;\\n\\t\\t}\\n\\t\\tvar param = macro.params[index];\\n\\t\\tvar handler = managedMacro[managedArg];\\n\\t\\tvar nestedOptions = Object.create(options);\\n\\t\\tnestedOptions.settings = context;\\n\\t\\tvar entry = handler.relink(param.value, fromTitle, toTitle, nestedOptions);\\n\\t\\tif (entry === undefined) {\\n\\t\\t\\tcontinue;\\n\\t\\t}\\n\\t\\t// Macro parameters can only be string parameters, not\\n\\t\\t// indirect, or macro, or filtered\\n\\t\\tif (entry.impossible) {\\n\\t\\t\\tmacroEntry.impossible = true;\\n\\t\\t}\\n\\t\\tif (!entry.output) {\\n\\t\\t\\tcontinue;\\n\\t\\t}\\n\\t\\tvar quote = utils.determineQuote(text, param);\\n\\t\\tvar quoted = wrapParameterValue(entry.output, quote);\\n\\t\\tvar newParam = $tw.utils.extend({}, param);\\n\\t\\tif (quoted === undefined) {\\n\\t\\t\\tif (!mayBeWidget || !options.placeholder) {\\n\\t\\t\\t\\tmacroEntry.impossible = true;\\n\\t\\t\\t\\tcontinue;\\n\\t\\t\\t}\\n\\t\\t\\tvar ph = options.placeholder.getPlaceholderFor(entry.output,handler.name);\\n\\t\\t\\tnewParam.newValue = \\\"\u003C\u003C\\\"+ph+\\\">>\\\";\\n\\t\\t\\tnewParam.type = \\\"macro\\\";\\n\\t\\t} else {\\n\\t\\t\\tnewParam.start = newParam.end - (newParam.value.length + (quote.length*2));\\n\\t\\t\\tnewParam.value = entry.output;\\n\\t\\t\\tnewParam.newValue = quoted;\\n\\t\\t}\\n\\t\\toutMacro.params[index] = newParam;\\n\\t\\tmodified = true;\\n\\t}\\n\\tif (modified || macroEntry.impossible) {\\n\\t\\tif (modified) {\\n\\t\\t\\tmacroEntry.output = outMacro;\\n\\t\\t}\\n\\t\\treturn macroEntry;\\n\\t}\\n\\treturn undefined;\\n};\\n\\n/**Converts the macro object into a string, includes the \u003C\u003C..>>.\\n * The text is the old text the macro was formed from. It's used to preserve\\n * whitespace.\\n */\\nexports.reassemble = function(macro, text, options) {\\n\\tvar builder = new Rebuilder(text, macro.start);\\n\\tfor (var i = 0; i \u003C macro.params.length; i++) {\\n\\t\\tvar param = macro.params[i];\\n\\t\\tif (param.newValue) {\\n\\t\\t\\tbuilder.add(param.newValue, param.start, param.end);\\n\\t\\t}\\n\\t}\\n\\treturn builder.results(macro.end);\\n};\\n\\n\\n/** Returns -1 if param definitely isn't in macrocall.\\n */\\nfunction getParamIndexWithinMacrocall(context, macroName, param, params, options) {\\n\\tvar index, i, anonsExist = false;\\n\\tfor (i = 0; i \u003C params.length; i++) {\\n\\t\\tvar name = params[i].name;\\n\\t\\tif (name === param) {\\n\\t\\t\\treturn i;\\n\\t\\t}\\n\\t\\tif (name === undefined) {\\n\\t\\t\\tanonsExist = true;\\n\\t\\t}\\n\\t}\\n\\tif (!anonsExist) {\\n\\t\\t// If no anonymous parameters are present, and we didn't find\\n\\t\\t// it among the named ones, it must not be there.\\n\\t\\treturn -1;\\n\\t}\\n\\tvar expectedIndex = indexOfParameterDef(context, macroName, param, options);\\n\\t// We've got to skip over all the named parameter instances.\\n\\tif (expectedIndex >= 0) {\\n\\t\\tvar anonI = 0;\\n\\t\\tfor (i = 0; i \u003C params.length; i++) {\\n\\t\\t\\tif (params[i].name === undefined) {\\n\\t\\t\\t\\tif (anonI === expectedIndex) {\\n\\t\\t\\t\\t\\treturn i;\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tanonI++;\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tvar indexOfOther = indexOfParameterDef(context, macroName, params[i].name, options);\\n\\t\\t\\t\\tif (indexOfOther \u003C expectedIndex) {\\n\\t\\t\\t\\t\\tanonI++;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\treturn -1;\\n};\\n\\n// Looks up the definition of a macro, and figures out what the expected index\\n// is for the given parameter.\\nfunction indexOfParameterDef(context, macroName, paramName, options) {\\n\\tvar def = context.getMacroDefinition(macroName);\\n\\tif (def === undefined) {\\n\\t\\tthrow new CannotFindMacroDef();\\n\\t}\\n\\tvar params = def.params || [];\\n\\tfor (var i = 0; i \u003C params.length; i++) {\\n\\t\\tif (params[i].name === paramName) {\\n\\t\\t\\treturn i;\\n\\t\\t}\\n\\t}\\n\\treturn -1;\\n};\\n\\n// Looks up the definition of a macro, and figures out what the expected index\\n// is for the given parameter.\\nfunction indexOfParameterDef(context, macroName, paramName, options) {\\n\\tvar def = context.getMacroDefinition(macroName);\\n\\tif (def === undefined) {\\n\\t\\tthrow new CannotFindMacroDef();\\n\\t}\\n\\tvar params = def.params || [];\\n\\tfor (var i = 0; i \u003C params.length; i++) {\\n\\t\\tif (params[i].name === paramName) {\\n\\t\\t\\treturn i;\\n\\t\\t}\\n\\t}\\n\\treturn -1;\\n};\\n\\n/**Like wrapAttribute value, except for macro parameters, not attributes.\\n *\\n * These are more permissive. Allows brackets,\\n * and slashes and '\u003C' in unquoted values.\\n */\\nfunction wrapParameterValue(value, preference) {\\n\\tvar whitelist = [\\\"\\\", \\\"'\\\", '\\\"', '[[', '\\\"\\\"\\\"'];\\n\\tvar choices = {\\n\\t\\t\\\"\\\": function(v) {return !/([\\\\s>\\\"'=])/.test(v); },\\n\\t\\t\\\"'\\\": function(v) {return v.indexOf(\\\"'\\\") \u003C 0; },\\n\\t\\t'\\\"': function(v) {return v.indexOf('\\\"') \u003C 0; },\\n\\t\\t\\\"[[\\\": canBePrettyOperand,\\n\\t\\t'\\\"\\\"\\\"': function(v) {return v.indexOf('\\\"\\\"\\\"') \u003C 0 && v[v.length-1] != '\\\"';}\\n\\t};\\n\\tif (choices[preference] && choices[preference](value)) {\\n\\t\\treturn wrap(value, preference);\\n\\t}\\n\\tfor (var i = 0; i \u003C whitelist.length; i++) {\\n\\t\\tvar quote = whitelist[i];\\n\\t\\tif (choices[quote](value)) {\\n\\t\\t\\treturn wrap(value, quote);\\n\\t\\t}\\n\\t}\\n\\t// No quotes will work on this\\n\\treturn undefined;\\n};\\n\\nfunction canBePrettyOperand(value) {\\n\\treturn value.indexOf(']') \u003C 0;\\n};\\n\\n\\nfunction wrap(value, wrapper) {\\n\\tvar wrappers = {\\n\\t\\t\\\"\\\": function(v) {return v; },\\n\\t\\t\\\"'\\\": function(v) {return \\\"'\\\"+v+\\\"'\\\"; },\\n\\t\\t'\\\"': function(v) {return '\\\"'+v+'\\\"'; },\\n\\t\\t'\\\"\\\"\\\"': function(v) {return '\\\"\\\"\\\"'+v+'\\\"\\\"\\\"'; },\\n\\t\\t\\\"[[\\\": function(v) {return \\\"[[\\\"+v+\\\"]]\\\"; }\\n\\t};\\n\\tvar chosen = wrappers[wrapper];\\n\\tif (chosen) {\\n\\t\\treturn chosen(value);\\n\\t} else {\\n\\t\\treturn undefined;\\n\\t}\\n};\\n\",\"module-type\":\"library\",\"title\":\"$:/plugins/flibbles/relink/js/utils/macrocall.js\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/utils/placeholder.js\":{\"text\":\"/*\\\\\\n\\nA method which doles out placeholders when requested, and constructs\\nthe necessary supporting pragma when requested.\\n\\n\\\\*/\\n\\nvar utils = require('../utils');\\n\\nfunction Placeholder() {\\n\\tthis.placeholders = Object.create(null);\\n\\tthis.reverseMap = {};\\n\\tthis.used = Object.create(null);\\n};\\n\\nmodule.exports = Placeholder;\\n\\nPlaceholder.prototype.getPlaceholderFor = function(value, category) {\\n\\tthis.reverseMap[category] = this.reverseMap[category] || Object.create(null);\\n\\tvar placeholder = this.reverseMap[category][value];\\n\\tif (placeholder) {\\n\\t\\treturn placeholder;\\n\\t}\\n\\tvar config = (this.parser && this.parser.context) || utils.getWikiContext(this.parser.wiki);\\n\\tvar number = 0;\\n\\tvar prefix = \\\"relink-\\\"\\n\\tif (category && category !== \\\"title\\\") {\\n\\t\\t// I don't like \\\"relink-title-1\\\". \\\"relink-1\\\" should be for\\n\\t\\t// titles. lists, and filters can have descriptors though.\\n\\t\\tprefix += category + \\\"-\\\";\\n\\t}\\n\\tdo {\\n\\t\\tnumber += 1;\\n\\t\\tplaceholder = prefix + number;\\n\\t} while (config.getMacroDefinition(placeholder) || this.used[placeholder]);\\n\\tthis.placeholders[placeholder] = value;\\n\\tthis.reverseMap[category][value] = placeholder;\\n\\tthis.used[placeholder] = true;\\n\\treturn placeholder;\\n};\\n\\n// For registering placeholders that already existed\\nPlaceholder.prototype.registerExisting = function(key, value) {\\n\\tthis.reverseMap[value] = key;\\n\\tthis.used[key] = true;\\n};\\n\\nPlaceholder.prototype.getPreamble = function() {\\n\\tvar results = [];\\n\\tvar keys = Object.keys(this.placeholders);\\n\\tif (keys.length > 0) {\\n\\t\\tkeys.sort();\\n\\t\\tfor (var i = 0; i \u003C keys.length; i++) {\\n\\t\\t\\tvar name = keys[i];\\n\\t\\t\\tvar val = this.placeholders[name];\\n\\t\\t\\tresults.push(\\\"\\\\\\\\define \\\"+name+\\\"() \\\"+val+\\\"\\\\n\\\");\\n\\t\\t}\\n\\t}\\n\\treturn results.join('');\\n};\\n\\n\",\"module-type\":\"library\",\"title\":\"$:/plugins/flibbles/relink/js/utils/placeholder.js\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/utils/rebuilder.js\":{\"text\":\"/*\\\\\\n\\nThis helper class aids in reconstructing an existing string with new parts.\\n\\n\\\\*/\\n\\nfunction Rebuilder(text, start) {\\n\\tthis.text = text;\\n\\tthis.index = start || 0;\\n\\tthis.pieces = [];\\n};\\n\\nmodule.exports = Rebuilder;\\n\\n/**Pieces must be added consecutively.\\n * Start and end are the indices in the old string specifying where to graft\\n * in the new piece.\\n */\\nRebuilder.prototype.add = function(value, start, end) {\\n\\tthis.pieces.push(this.text.substring(this.index, start), value);\\n\\tthis.index = end;\\n};\\n\\nRebuilder.prototype.changed = function() {\\n\\treturn this.pieces.length > 0;\\n};\\n\\nRebuilder.prototype.results = function(end) {\\n\\tif (this.changed()) {\\n\\t\\tthis.pieces.push(this.text.substring(this.index, end));\\n\\t\\treturn this.pieces.join('');\\n\\t}\\n\\treturn undefined;\\n};\\n\",\"module-type\":\"library\",\"title\":\"$:/plugins/flibbles/relink/js/utils/rebuilder.js\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/Filters/Missing\":{\"title\":\"$:/plugins/flibbles/relink/Filters/Missing\",\"description\":\"{{$:/plugins/flibbles/relink/language/Filters/Missing}}\",\"filter\":\"[all[]!is[system]relink:references[]!is[tiddler]!is[shadow]!prefix[$:/tags/]sort[title]] -[[]]\",\"tags\":\"$:/tags/Filter\"},\"$:/plugins/flibbles/relink/Filters/Orphans\":{\"title\":\"$:/plugins/flibbles/relink/Filters/Orphans\",\"description\":\"{{$:/plugins/flibbles/relink/language/Filters/Orphans}}\",\"filter\":\"[relink:orphans[]!is[system]sort[title]]\",\"tags\":\"$:/tags/Filter\"},\"$:/config/flibbles/relink/attributes/$action-deletefield/$tiddler\":{\"title\":\"$:/config/flibbles/relink/attributes/$action-deletefield/$tiddler\",\"text\":\"filter\"},\"$:/config/flibbles/relink/attributes/$action-deletetiddler/$filter\":{\"title\":\"$:/config/flibbles/relink/attributes/$action-deletetiddler/$filter\",\"text\":\"filter\"},\"$:/config/flibbles/relink/attributes/$action-deletetiddler/$tiddler\":{\"title\":\"$:/config/flibbles/relink/attributes/$action-deletetiddler/$tiddler\",\"text\":\"title\"},\"$:/config/flibbles/relink/attributes/$action-listops/$filter\":{\"title\":\"$:/config/flibbles/relink/attributes/$action-listops/$filter\",\"text\":\"filter\"},\"$:/config/flibbles/relink/attributes/$action-listops/$tiddler\":{\"title\":\"$:/config/flibbles/relink/attributes/$action-listops/$tiddler\",\"text\":\"title\"},\"$:/config/flibbles/relink/attributes/$action-log/$$filter\":{\"title\":\"$:/config/flibbles/relink/attributes/$action-log/$$filter\",\"text\":\"filter\"},\"$:/config/flibbles/relink/attributes/$action-navigate/$to\":{\"title\":\"$:/config/flibbles/relink/attributes/$action-navigate/$to\",\"text\":\"title\"},\"$:/config/flibbles/relink/attributes/$action-popup/$state\":{\"title\":\"$:/config/flibbles/relink/attributes/$action-popup/$state\",\"text\":\"title\"},\"$:/config/flibbles/relink/attributes/$action-sendmessage/$names\":{\"title\":\"$:/config/flibbles/relink/attributes/$action-sendmessage/$names\",\"text\":\"filter\"},\"$:/config/flibbles/relink/attributes/$action-sendmessage/$values\":{\"title\":\"$:/config/flibbles/relink/attributes/$action-sendmessage/$values\",\"text\":\"filter\"},\"$:/config/flibbles/relink/attributes/$action-setfield/$tiddler\":{\"title\":\"$:/config/flibbles/relink/attributes/$action-setfield/$tiddler\",\"text\":\"title\"},\"$:/config/flibbles/relink/attributes/$action-setmultiplefields/$tiddler\":{\"title\":\"$:/config/flibbles/relink/attributes/$action-setmultiplefields/$tiddler\",\"text\":\"title\"},\"$:/config/flibbles/relink/attributes/$action-setmultiplefields/$fields\":{\"title\":\"$:/config/flibbles/relink/attributes/$action-setmultiplefields/$fields\",\"text\":\"filter\"},\"$:/config/flibbles/relink/attributes/$action-setmultiplefields/$indexes\":{\"title\":\"$:/config/flibbles/relink/attributes/$action-setmultiplefields/$indexes\",\"text\":\"filter\"},\"$:/config/flibbles/relink/attributes/$action-setmultiplefields/$values\":{\"title\":\"$:/config/flibbles/relink/attributes/$action-setmultiplefields/$values\",\"text\":\"filter\"},\"$:/config/flibbles/relink/attributes/$button/actions\":{\"title\":\"$:/config/flibbles/relink/attributes/$button/actions\",\"text\":\"wikitext\"},\"$:/config/flibbles/relink/attributes/$button/set\":{\"title\":\"$:/config/flibbles/relink/attributes/$button/set\",\"text\":\"reference\"},\"$:/config/flibbles/relink/attributes/$button/setTo\":{\"title\":\"$:/config/flibbles/relink/attributes/$button/setTo\",\"text\":\"title\"},\"$:/config/flibbles/relink/attributes/$button/to\":{\"title\":\"$:/config/flibbles/relink/attributes/$button/to\",\"text\":\"title\"},\"$:/config/flibbles/relink/attributes/$checkbox/actions\":{\"title\":\"$:/config/flibbles/relink/attributes/$checkbox/actions\",\"text\":\"wikitext\"},\"$:/config/flibbles/relink/attributes/$checkbox/checkactions\":{\"title\":\"$:/config/flibbles/relink/attributes/$checkbox/checkactions\",\"text\":\"wikitext\"},\"$:/config/flibbles/relink/attributes/$checkbox/tiddler\":{\"title\":\"$:/config/flibbles/relink/attributes/$checkbox/tiddler\",\"text\":\"title\"},\"$:/config/flibbles/relink/attributes/$checkbox/tag\":{\"title\":\"$:/config/flibbles/relink/attributes/$checkbox/tag\",\"text\":\"title\"},\"$:/config/flibbles/relink/attributes/$checkbox/uncheckactions\":{\"title\":\"$:/config/flibbles/relink/attributes/$checkbox/uncheckactions\",\"text\":\"wikitext\"},\"$:/config/flibbles/relink/attributes/$count/filter\":{\"title\":\"$:/config/flibbles/relink/attributes/$count/filter\",\"text\":\"filter\"},\"$:/config/flibbles/relink/attributes/$draggable/tiddler\":{\"title\":\"$:/config/flibbles/relink/attributes/$draggable/tiddler\",\"text\":\"title\"},\"$:/config/flibbles/relink/attributes/$draggable/filter\":{\"title\":\"$:/config/flibbles/relink/attributes/$draggable/filter\",\"text\":\"filter\"},\"$:/config/flibbles/relink/attributes/$droppable/actions\":{\"title\":\"$:/config/flibbles/relink/attributes/$droppable/actions\",\"text\":\"wikitext\"},\"$:/config/flibbles/relink/attributes/$dropzone/actions\":{\"title\":\"$:/config/flibbles/relink/attributes/$dropzone/actions\",\"text\":\"wikitext\"},\"$:/config/flibbles/relink/attributes/$edit-bitmap/tiddler\":{\"title\":\"$:/config/flibbles/relink/attributes/$edit-bitmap/tiddler\",\"text\":\"title\"},\"$:/config/flibbles/relink/attributes/$edit-text/tiddler\":{\"title\":\"$:/config/flibbles/relink/attributes/$edit-text/tiddler\",\"text\":\"title\"},\"$:/config/flibbles/relink/attributes/$edit/inputActions\":{\"title\":\"$:/config/flibbles/relink/attributes/$edit/inputActions\",\"text\":\"wikitext\"},\"$:/config/flibbles/relink/attributes/$edit/refreshTitle\":{\"title\":\"$:/config/flibbles/relink/attributes/$edit/refreshTitle\",\"text\":\"title\"},\"$:/config/flibbles/relink/attributes/$edit/tiddler\":{\"title\":\"$:/config/flibbles/relink/attributes/$edit/tiddler\",\"text\":\"title\"},\"$:/config/flibbles/relink/attributes/$encrypt/filter\":{\"title\":\"$:/config/flibbles/relink/attributes/$encrypt/filter\",\"text\":\"filter\"},\"$:/config/flibbles/relink/attributes/$fieldmangler/tiddler\":{\"title\":\"$:/config/flibbles/relink/attributes/$fieldmangler/tiddler\",\"text\":\"title\"},\"$:/config/flibbles/relink/attributes/$fields/tiddler\":{\"title\":\"$:/config/flibbles/relink/attributes/$fields/tiddler\",\"text\":\"title\"},\"$:/config/flibbles/relink/attributes/$genesis/$names\":{\"title\":\"$:/config/flibbles/relink/attributes/$genesis/$names\",\"text\":\"filter\"},\"$:/config/flibbles/relink/attributes/$genesis/$values\":{\"title\":\"$:/config/flibbles/relink/attributes/$genesis/$values\",\"text\":\"filter\"},\"$:/config/flibbles/relink/attributes/$image/source\":{\"title\":\"$:/config/flibbles/relink/attributes/$image/source\",\"text\":\"title\"},\"$:/config/flibbles/relink/attributes/$importvariables/filter\":{\"title\":\"$:/config/flibbles/relink/attributes/$importvariables/filter\",\"text\":\"filter\"},\"$:/config/flibbles/relink/attributes/$jsontiddler/tiddler\":{\"title\":\"$:/config/flibbles/relink/attributes/$jsontiddler/tiddler\",\"text\":\"title\"},\"$:/config/flibbles/relink/attributes/$keyboard/actions\":{\"title\":\"$:/config/flibbles/relink/attributes/$keyboard/actions\",\"text\":\"wikitext\"},\"$:/config/flibbles/relink/attributes/$linkcatcher/to\":{\"title\":\"$:/config/flibbles/relink/attributes/$linkcatcher/to\",\"text\":\"title\"},\"$:/config/flibbles/relink/attributes/$linkcatcher/set\":{\"title\":\"$:/config/flibbles/relink/attributes/$linkcatcher/set\",\"text\":\"title\"},\"$:/config/flibbles/relink/attributes/$link/to\":{\"title\":\"$:/config/flibbles/relink/attributes/$link/to\",\"text\":\"title\"},\"$:/config/flibbles/relink/attributes/$link/tooltip\":{\"title\":\"$:/config/flibbles/relink/attributes/$link/tooltip\",\"text\":\"wikitext\"},\"$:/config/flibbles/relink/attributes/$linkcatcher/actions\":{\"title\":\"$:/config/flibbles/relink/attributes/$linkcatcher/actions\",\"text\":\"wikitext\"},\"$:/config/flibbles/relink/attributes/$list/filter\":{\"title\":\"$:/config/flibbles/relink/attributes/$list/filter\",\"text\":\"filter\"},\"$:/config/flibbles/relink/attributes/$list/template\":{\"title\":\"$:/config/flibbles/relink/attributes/$list/template\",\"text\":\"title\"},\"$:/config/flibbles/relink/attributes/$list/editTemplate\":{\"title\":\"$:/config/flibbles/relink/attributes/$list/editTemplate\",\"text\":\"title\"},\"$:/config/flibbles/relink/attributes/$list/emptyMessage\":{\"title\":\"$:/config/flibbles/relink/attributes/$list/emptyMessage\",\"text\":\"wikitext\"},\"$:/config/flibbles/relink/attributes/$list/history\":{\"title\":\"$:/config/flibbles/relink/attributes/$list/history\",\"text\":\"title\"},\"$:/config/flibbles/relink/attributes/$log/$$filter\":{\"title\":\"$:/config/flibbles/relink/attributes/$log/$$filter\",\"text\":\"filter\"},\"$:/config/flibbles/relink/attributes/$messagecatcher/actions\":{\"title\":\"$:/config/flibbles/relink/attributes/$messagecatcher/actions\",\"text\":\"wikitext\"},\"$:/config/flibbles/relink/attributes/$navigator/story\":{\"title\":\"$:/config/flibbles/relink/attributes/$navigator/story\",\"text\":\"title\"},\"$:/config/flibbles/relink/attributes/$navigator/history\":{\"title\":\"$:/config/flibbles/relink/attributes/$navigator/history\",\"text\":\"title\"},\"$:/config/flibbles/relink/attributes/$radio/actions\":{\"title\":\"$:/config/flibbles/relink/attributes/$radio/actions\",\"text\":\"wikitext\"},\"$:/config/flibbles/relink/attributes/$radio/tiddler\":{\"title\":\"$:/config/flibbles/relink/attributes/$radio/tiddler\",\"text\":\"title\"},\"$:/config/flibbles/relink/attributes/$range/actions\":{\"title\":\"$:/config/flibbles/relink/attributes/$range/actions\",\"text\":\"wikitext\"},\"$:/config/flibbles/relink/attributes/$range/actionsStart\":{\"title\":\"$:/config/flibbles/relink/attributes/$range/actionsStart\",\"text\":\"wikitext\"},\"$:/config/flibbles/relink/attributes/$range/actionsStop\":{\"title\":\"$:/config/flibbles/relink/attributes/$range/actionsStop\",\"text\":\"wikitext\"},\"$:/config/flibbles/relink/attributes/$range/tiddler\":{\"title\":\"$:/config/flibbles/relink/attributes/$range/tiddler\",\"text\":\"title\"},\"$:/config/flibbles/relink/attributes/$reveal/state\":{\"title\":\"$:/config/flibbles/relink/attributes/$reveal/state\",\"text\":\"reference\"},\"$:/config/flibbles/relink/attributes/$reveal/stateTitle\":{\"title\":\"$:/config/flibbles/relink/attributes/$reveal/stateTitle\",\"text\":\"title\"},\"$:/config/flibbles/relink/attributes/$select/actions\":{\"title\":\"$:/config/flibbles/relink/attributes/$select/actions\",\"text\":\"wikitext\"},\"$:/config/flibbles/relink/attributes/$select/tiddler\":{\"title\":\"$:/config/flibbles/relink/attributes/$select/tiddler\",\"text\":\"title\"},\"$:/config/flibbles/relink/attributes/$setvariable/tiddler\":{\"title\":\"$:/config/flibbles/relink/attributes/$setvariable/tiddler\",\"text\":\"title\"},\"$:/config/flibbles/relink/attributes/$setvariable/subtiddler\":{\"title\":\"$:/config/flibbles/relink/attributes/$setvariable/subtiddler\",\"text\":\"title\"},\"$:/config/flibbles/relink/attributes/$setvariable/filter\":{\"title\":\"$:/config/flibbles/relink/attributes/$setvariable/filter\",\"text\":\"filter\"},\"$:/config/flibbles/relink/attributes/$set/tiddler\":{\"title\":\"$:/config/flibbles/relink/attributes/$set/tiddler\",\"text\":\"title\"},\"$:/config/flibbles/relink/attributes/$set/subtiddler\":{\"title\":\"$:/config/flibbles/relink/attributes/$set/subtiddler\",\"text\":\"title\"},\"$:/config/flibbles/relink/attributes/$set/filter\":{\"title\":\"$:/config/flibbles/relink/attributes/$set/filter\",\"text\":\"filter\"},\"$:/config/flibbles/relink/attributes/$setmultiplevariables/$names\":{\"title\":\"$:/config/flibbles/relink/attributes/$setmultiplevariables/$names\",\"text\":\"filter\"},\"$:/config/flibbles/relink/attributes/$setmultiplevariables/$values\":{\"title\":\"$:/config/flibbles/relink/attributes/$setmultiplevariables/$values\",\"text\":\"filter\"},\"$:/config/flibbles/relink/attributes/$tiddler/tiddler\":{\"title\":\"$:/config/flibbles/relink/attributes/$tiddler/tiddler\",\"text\":\"title\"},\"$:/config/flibbles/relink/attributes/$transclude/tiddler\":{\"title\":\"$:/config/flibbles/relink/attributes/$transclude/tiddler\",\"text\":\"title\"},\"$:/config/flibbles/relink/attributes/$transclude/subtiddler\":{\"title\":\"$:/config/flibbles/relink/attributes/$transclude/subtiddler\",\"text\":\"title\"},\"$:/config/flibbles/relink/attributes/$view/tiddler\":{\"title\":\"$:/config/flibbles/relink/attributes/$view/tiddler\",\"text\":\"title\"},\"$:/config/flibbles/relink/attributes/$view/subtiddler\":{\"title\":\"$:/config/flibbles/relink/attributes/$view/subtiddler\",\"text\":\"title\"},\"$:/config/flibbles/relink/attributes/$wikify/text\":{\"title\":\"$:/config/flibbles/relink/attributes/$wikify/text\",\"text\":\"wikitext\"},\"$:/plugins/flibbles/relink/configuration\":{\"title\":\"$:/plugins/flibbles/relink/configuration\",\"text\":\"\\\\whitespace trim\\n\u003Cdiv class=\\\"tc-control-panel\\\">\\n\u003C\u003Ctabs \\\"[all[shadows+tiddlers]tag[$:/tags/flibbles/relink/Configuration]!has[draft.of]]\\\" \\\"$:/plugins/flibbles/relink/ui/configuration/Fields\\\">>\\n\u003C/div>\\n\"},\"$:/config/flibbles/relink/fieldattributes/$action-createtiddler\":{\"title\":\"$:/config/flibbles/relink/fieldattributes/$action-createtiddler\",\"text\":\"([^$].*)\"},\"$:/config/flibbles/relink/fieldattributes/$action-deletefield\":{\"title\":\"$:/config/flibbles/relink/fieldattributes/$action-deletefield\",\"text\":\"([^$].*)\"},\"$:/config/flibbles/relink/fieldattributes/$action-setfield\":{\"title\":\"$:/config/flibbles/relink/fieldattributes/$action-setfield\",\"text\":\"([^$].*)\"},\"$:/config/flibbles/relink/fieldattributes/$jsontiddler\":{\"title\":\"$:/config/flibbles/relink/fieldattributes/$jsontiddler\",\"text\":\"\\\\$(.*)\"},\"$:/config/flibbles/relink/fields/caption\":{\"title\":\"$:/config/flibbles/relink/fields/caption\",\"text\":\"wikitext\"},\"$:/config/flibbles/relink/fields/filter\":{\"title\":\"$:/config/flibbles/relink/fields/filter\",\"text\":\"filter\"},\"$:/config/flibbles/relink/fields/list\":{\"title\":\"$:/config/flibbles/relink/fields/list\",\"text\":\"list\"},\"$:/config/flibbles/relink/fields/list-after\":{\"title\":\"$:/config/flibbles/relink/fields/list-after\",\"text\":\"title\"},\"$:/config/flibbles/relink/fields/list-before\":{\"title\":\"$:/config/flibbles/relink/fields/list-before\",\"text\":\"title\"},\"$:/config/flibbles/relink/fields/tags\":{\"title\":\"$:/config/flibbles/relink/fields/tags\",\"text\":\"list\"},\"$:/plugins/flibbles/relink/language/Buttons/Delete/Hint\":{\"title\":\"$:/plugins/flibbles/relink/language/Buttons/Delete/Hint\",\"text\":\"delete\"},\"$:/plugins/flibbles/relink/language/Buttons/LinkToInline/Hint\":{\"title\":\"$:/plugins/flibbles/relink/language/Buttons/LinkToInline/Hint\",\"text\":\"go to defining tiddler\"},\"$:/plugins/flibbles/relink/language/Buttons/NewAttribute/Hint\":{\"title\":\"$:/plugins/flibbles/relink/language/Buttons/NewAttribute/Hint\",\"text\":\"Specify a new widget/element attribute to be updated whenever a tiddler is renamed\"},\"$:/plugins/flibbles/relink/language/Buttons/NewAttribute/Caption\":{\"title\":\"$:/plugins/flibbles/relink/language/Buttons/NewAttribute/Caption\",\"text\":\"add\"},\"$:/plugins/flibbles/relink/language/Buttons/NewField/Hint\":{\"title\":\"$:/plugins/flibbles/relink/language/Buttons/NewField/Hint\",\"text\":\"Specify a new field to be updated whenever a tiddler is renamed\"},\"$:/plugins/flibbles/relink/language/Buttons/NewField/Caption\":{\"title\":\"$:/plugins/flibbles/relink/language/Buttons/NewField/Caption\",\"text\":\"add\"},\"$:/plugins/flibbles/relink/language/Buttons/NewOperator/Hint\":{\"title\":\"$:/plugins/flibbles/relink/language/Buttons/NewOperator/Hint\",\"text\":\"Specify a new filter operator to be considered whenever a tiddler is renamed\"},\"$:/plugins/flibbles/relink/language/Buttons/NewOperator/Caption\":{\"title\":\"$:/plugins/flibbles/relink/language/Buttons/NewOperator/Caption\",\"text\":\"add\"},\"$:/plugins/flibbles/relink/language/Buttons/NewParameter/Hint\":{\"title\":\"$:/plugins/flibbles/relink/language/Buttons/NewParameter/Hint\",\"text\":\"Specify a new macro parameter to be updated whenever a tiddler is renamed\"},\"$:/plugins/flibbles/relink/language/Buttons/NewParameter/Caption\":{\"title\":\"$:/plugins/flibbles/relink/language/Buttons/NewParameter/Caption\",\"text\":\"add\"},\"$:/plugins/flibbles/relink/language/Error/InvalidAttributeName\":{\"title\":\"$:/plugins/flibbles/relink/language/Error/InvalidAttributeName\",\"text\":\"Illegal characters in attribute name \\\"\u003C$text text=\u003C\u003CattributeName>>/>\\\". Attributes cannot contain slashes ('/'), closing angle or square brackets ('>' or ']'), quotes or apostrophes ('\\\"' or \\\"'\\\"), equals ('='), or whitespace\"},\"$:/plugins/flibbles/relink/language/Error/InvalidElementName\":{\"title\":\"$:/plugins/flibbles/relink/language/Error/InvalidElementName\",\"text\":\"Illegal characters in element/widget name \\\"\u003C$text text=\u003C\u003CelementName>>/>\\\". Element tags can only contain letters and the characters hyphen (`-`) and dollar sign (`$`)\"},\"$:/plugins/flibbles/relink/language/Error/InvalidMacroName\":{\"title\":\"$:/plugins/flibbles/relink/language/Error/InvalidMacroName\",\"text\":\"Illegal characters in macro name \\\"\u003C$text text=\u003C\u003CmacroName>>/>\\\". Macros cannot contain whitespace\"},\"$:/plugins/flibbles/relink/language/Error/InvalidParameterName\":{\"title\":\"$:/plugins/flibbles/relink/language/Error/InvalidParameterName\",\"text\":\"Illegal characters in parameter name \\\"\u003C$text text=\u003C\u003CparameterName>>/>\\\". Parameters can only contain letters, digits, and the characters underscore (`_`) and hyphen (`-`)\"},\"$:/plugins/flibbles/relink/language/Error/RelinkFilterOperator\":{\"title\":\"$:/plugins/flibbles/relink/language/Error/RelinkFilterOperator\",\"text\":\"Filter Error: Unknown suffix for the 'relink' filter operator\"},\"$:/plugins/flibbles/relink/language/Error/ReportFailedRelinks\":{\"title\":\"$:/plugins/flibbles/relink/language/Error/ReportFailedRelinks\",\"text\":\"Relink could not update '\u003C\u003Cfrom>>' to '\u003C\u003Cto>>' inside the following tiddlers:\"},\"$:/plugins/flibbles/relink/language/Error/UnrecognizedType\":{\"title\":\"$:/plugins/flibbles/relink/language/Error/UnrecognizedType\",\"text\":\"Relink parse error: Unrecognized field type '\u003C\u003Ctype>>'\"},\"$:/plugins/flibbles/relink/language/Filters/Missing\":{\"title\":\"$:/plugins/flibbles/relink/language/Filters/Missing\",\"text\":\"//Relink// Missing tiddlers\"},\"$:/plugins/flibbles/relink/language/Filters/Orphans\":{\"title\":\"$:/plugins/flibbles/relink/language/Filters/Orphans\",\"text\":\"//Relink// Orphans tiddlers\"},\"$:/plugins/flibbles/relink/language/Help/Attributes\":{\"title\":\"$:/plugins/flibbles/relink/language/Help/Attributes\",\"text\":\"See the \u003Ca href={{{[{$:/plugins/flibbles/relink!!demo}addsuffix[#Attributes]]}}} class=\\\"tc-tiddlylink-external\\\">Attributes documentation page\u003C/a> for details.\"},\"$:/plugins/flibbles/relink/language/Help/Fields\":{\"title\":\"$:/plugins/flibbles/relink/language/Help/Fields\",\"text\":\"See the \u003Ca href={{{[{$:/plugins/flibbles/relink!!demo}addsuffix[#Fields]]}}} class=\\\"tc-tiddlylink-external\\\">Fields documentation page\u003C/a> for details.\"},\"$:/plugins/flibbles/relink/language/Help/Macros\":{\"title\":\"$:/plugins/flibbles/relink/language/Help/Macros\",\"text\":\"See the \u003Ca href={{{[{$:/plugins/flibbles/relink!!demo}addsuffix[#Macros]]}}} class=\\\"tc-tiddlylink-external\\\">Macros documentation page\u003C/a> for details.\"},\"$:/plugins/flibbles/relink/language/Help/Operators\":{\"title\":\"$:/plugins/flibbles/relink/language/Help/Operators\",\"text\":\"See the \u003Ca href={{{[{$:/plugins/flibbles/relink!!demo}addsuffix[#Operators]]}}} class=\\\"tc-tiddlylink-external\\\">Operators documentation page\u003C/a> for details.\"},\"$:/plugins/flibbles/relink/language/SideBar/Missing/Caption\":{\"title\":\"$:/plugins/flibbles/relink/language/SideBar/Missing/Caption\",\"text\":\"//Relink//\u003Cbr>Missing\"},\"$:/plugins/flibbles/relink/language/SideBar/Orphans/Caption\":{\"title\":\"$:/plugins/flibbles/relink/language/SideBar/Orphans/Caption\",\"text\":\"//Relink//\u003Cbr>Orphans\"},\"$:/plugins/flibbles/relink/language/TiddlerInfo/References/Empty\":{\"title\":\"$:/plugins/flibbles/relink/language/TiddlerInfo/References/Empty\",\"text\":\"No tiddlers contain any fields, links, macros, transclusions, or widgets referencing this one\"},\"$:/plugins/flibbles/relink/language/TiddlerInfo/References/Description\":{\"title\":\"$:/plugins/flibbles/relink/language/TiddlerInfo/References/Description\",\"text\":\"The following tiddlers contain fields, links, macros, transclusions, or widgets referencing this one:\"},\"$:/plugins/flibbles/relink/language/TiddlerInfo/References/Caption\":{\"title\":\"$:/plugins/flibbles/relink/language/TiddlerInfo/References/Caption\",\"text\":\"//Relink// References\"},\"$:/plugins/flibbles/relink/language/ui/Attributes/Caption\":{\"title\":\"$:/plugins/flibbles/relink/language/ui/Attributes/Caption\",\"text\":\"Attributes\"},\"$:/plugins/flibbles/relink/language/ui/Fields/Caption\":{\"title\":\"$:/plugins/flibbles/relink/language/ui/Fields/Caption\",\"text\":\"Fields\"},\"$:/plugins/flibbles/relink/language/ui/Macros/Caption\":{\"title\":\"$:/plugins/flibbles/relink/language/ui/Macros/Caption\",\"text\":\"Macros\"},\"$:/plugins/flibbles/relink/language/ui/Operators/Caption\":{\"title\":\"$:/plugins/flibbles/relink/language/ui/Operators/Caption\",\"text\":\"Operators\"},\"$:/plugins/flibbles/relink/language/Warning/OldRelinkTextOperator\":{\"title\":\"$:/plugins/flibbles/relink/language/Warning/OldRelinkTextOperator\",\"text\":\"Relink cannot parse your \u003Ccode>$$$\u003C\u003Ckeyword>>\u003C/code> wikitext until you migrate your \\\"\u003C\u003Ctype>>\\\" relink module from the deprecated ''relinktextoperator'' module-type to ''relinktext''.\u003Cbr>\u003Cbr>See \u003Ca href={{{ [[Versions/2.1.0]addprefix[#]addprefix{$:/plugins/flibbles/relink!!demo}encodeuri[]] }}} class=\\\"tc-tiddlylink-external\\\">the online documentation\u003C/a> for details.\"},\"$:/plugins/flibbles/relink/license\":{\"title\":\"$:/plugins/flibbles/relink/license\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003Ca href={{$:/plugins/flibbles/relink!!demo}} class=\\\"tc-tiddlylink-external\\\">Relink Plugin\u003C/a> Copyright (c) 2019-\u003C\u003Cnow YYYY>> Cameron Fischer\\n\\n[[BSD 3-Clause License|https://raw.githubusercontent.com/flibbles/tw5-relink/master/LICENSE]]\\n\"},\"$:/config/flibbles/relink/macros/colour-picker/actions\":{\"title\":\"$:/config/flibbles/relink/macros/colour-picker/actions\",\"text\":\"wikitext\"},\"$:/config/flibbles/relink/macros/csvtiddlers/filter\":{\"title\":\"$:/config/flibbles/relink/macros/csvtiddlers/filter\",\"text\":\"filter\"},\"$:/config/flibbles/relink/macros/datauri/title\":{\"title\":\"$:/config/flibbles/relink/macros/datauri/title\",\"text\":\"title\"},\"$:/config/flibbles/relink/macros/image-picker/actions\":{\"title\":\"$:/config/flibbles/relink/macros/image-picker/actions\",\"text\":\"wikitext\"},\"$:/config/flibbles/relink/macros/jsontiddler/title\":{\"title\":\"$:/config/flibbles/relink/macros/jsontiddler/title\",\"text\":\"title\"},\"$:/config/flibbles/relink/macros/jsontiddlers/filter\":{\"title\":\"$:/config/flibbles/relink/macros/jsontiddlers/filter\",\"text\":\"filter\"},\"$:/config/flibbles/relink/macros/keyboard-driven-input/configTiddlerFilter\":{\"title\":\"$:/config/flibbles/relink/macros/keyboard-driven-input/configTiddlerFilter\",\"text\":\"filter\"},\"$:/config/flibbles/relink/macros/keyboard-driven-input/inputAcceptActions\":{\"title\":\"$:/config/flibbles/relink/macros/keyboard-driven-input/inputAcceptActions\",\"text\":\"wikitext\"},\"$:/config/flibbles/relink/macros/keyboard-driven-input/inputAcceptVariantActions\":{\"title\":\"$:/config/flibbles/relink/macros/keyboard-driven-input/inputAcceptVariantActions\",\"text\":\"wikitext\"},\"$:/config/flibbles/relink/macros/keyboard-driven-input/inputCancelActions\":{\"title\":\"$:/config/flibbles/relink/macros/keyboard-driven-input/inputCancelActions\",\"text\":\"wikitext\"},\"$:/config/flibbles/relink/macros/keyboard-driven-input/selectionStateTitle\":{\"title\":\"$:/config/flibbles/relink/macros/keyboard-driven-input/selectionStateTitle\",\"text\":\"title\"},\"$:/config/flibbles/relink/macros/keyboard-driven-input/storeTitle\":{\"title\":\"$:/config/flibbles/relink/macros/keyboard-driven-input/storeTitle\",\"text\":\"title\"},\"$:/config/flibbles/relink/macros/keyboard-driven-input/tiddler\":{\"title\":\"$:/config/flibbles/relink/macros/keyboard-driven-input/tiddler\",\"text\":\"title\"},\"$:/config/flibbles/relink/macros/list-links/filter\":{\"title\":\"$:/config/flibbles/relink/macros/list-links/filter\",\"text\":\"filter\"},\"$:/config/flibbles/relink/macros/list-links/emptyMessage\":{\"title\":\"$:/config/flibbles/relink/macros/list-links/emptyMessage\",\"text\":\"wikitext\"},\"$:/config/flibbles/relink/macros/list-links-draggable/tiddler\":{\"title\":\"$:/config/flibbles/relink/macros/list-links-draggable/tiddler\",\"text\":\"title\"},\"$:/config/flibbles/relink/macros/list-links-draggable/itemTemplate\":{\"title\":\"$:/config/flibbles/relink/macros/list-links-draggable/itemTemplate\",\"text\":\"title\"},\"$:/config/flibbles/relink/macros/list-tagged-draggable/tag\":{\"title\":\"$:/config/flibbles/relink/macros/list-tagged-draggable/tag\",\"text\":\"title\"},\"$:/config/flibbles/relink/macros/list-tagged-draggable/emptyMessage\":{\"title\":\"$:/config/flibbles/relink/macros/list-tagged-draggable/emptyMessage\",\"text\":\"wikitext\"},\"$:/config/flibbles/relink/macros/list-tagged-draggable/itemTemplate\":{\"title\":\"$:/config/flibbles/relink/macros/list-tagged-draggable/itemTemplate\",\"text\":\"title\"},\"$:/config/flibbles/relink/macros/list-thumbnails/filter\":{\"title\":\"$:/config/flibbles/relink/macros/list-thumbnails/filter\",\"text\":\"filter\"},\"$:/config/flibbles/relink/macros/tabs/actions\":{\"title\":\"$:/config/flibbles/relink/macros/tabs/actions\",\"text\":\"wikitext\"},\"$:/config/flibbles/relink/macros/tabs/buttonTemplate\":{\"title\":\"$:/config/flibbles/relink/macros/tabs/buttonTemplate\",\"text\":\"title\"},\"$:/config/flibbles/relink/macros/tabs/default\":{\"title\":\"$:/config/flibbles/relink/macros/tabs/default\",\"text\":\"title\"},\"$:/config/flibbles/relink/macros/tabs/tabsList\":{\"title\":\"$:/config/flibbles/relink/macros/tabs/tabsList\",\"text\":\"filter\"},\"$:/config/flibbles/relink/macros/tabs/template\":{\"title\":\"$:/config/flibbles/relink/macros/tabs/template\",\"text\":\"title\"},\"$:/config/flibbles/relink/macros/tag/tag\":{\"title\":\"$:/config/flibbles/relink/macros/tag/tag\",\"text\":\"title\"},\"$:/config/flibbles/relink/macros/tag-picker/actions\":{\"title\":\"$:/config/flibbles/relink/macros/tag-picker/actions\",\"text\":\"wikitext\"},\"$:/config/flibbles/relink/macros/tag-pill/actions\":{\"title\":\"$:/config/flibbles/relink/macros/tag-pill/actions\",\"text\":\"wikitext\"},\"$:/config/flibbles/relink/macros/tag-pill/tag\":{\"title\":\"$:/config/flibbles/relink/macros/tag-pill/tag\",\"text\":\"title\"},\"$:/config/flibbles/relink/macros/toc/tag\":{\"title\":\"$:/config/flibbles/relink/macros/toc/tag\",\"text\":\"title\"},\"$:/config/flibbles/relink/macros/toc/itemClassFilter\":{\"title\":\"$:/config/flibbles/relink/macros/toc/itemClassFilter\",\"text\":\"filter\"},\"$:/config/flibbles/relink/macros/toc-expandable/tag\":{\"title\":\"$:/config/flibbles/relink/macros/toc-expandable/tag\",\"text\":\"title\"},\"$:/config/flibbles/relink/macros/toc-expandable/itemClassFilter\":{\"title\":\"$:/config/flibbles/relink/macros/toc-expandable/itemClassFilter\",\"text\":\"filter\"},\"$:/config/flibbles/relink/macros/toc-expandable/exclude\":{\"title\":\"$:/config/flibbles/relink/macros/toc-expandable/exclude\",\"text\":\"list\"},\"$:/config/flibbles/relink/macros/toc-selective-expandable/tag\":{\"title\":\"$:/config/flibbles/relink/macros/toc-selective-expandable/tag\",\"text\":\"title\"},\"$:/config/flibbles/relink/macros/toc-selective-expandable/itemClassFilter\":{\"title\":\"$:/config/flibbles/relink/macros/toc-selective-expandable/itemClassFilter\",\"text\":\"filter\"},\"$:/config/flibbles/relink/macros/toc-selective-expandable/exclude\":{\"title\":\"$:/config/flibbles/relink/macros/toc-selective-expandable/exclude\",\"text\":\"list\"},\"$:/config/flibbles/relink/macros/toc-tabbed-external-nav/tag\":{\"title\":\"$:/config/flibbles/relink/macros/toc-tabbed-external-nav/tag\",\"text\":\"title\"},\"$:/config/flibbles/relink/macros/toc-tabbed-external-nav/selectedTiddler\":{\"title\":\"$:/config/flibbles/relink/macros/toc-tabbed-external-nav/selectedTiddler\",\"text\":\"title\"},\"$:/config/flibbles/relink/macros/toc-tabbed-external-nav/unselectedText\":{\"title\":\"$:/config/flibbles/relink/macros/toc-tabbed-external-nav/unselectedText\",\"text\":\"wikitext\"},\"$:/config/flibbles/relink/macros/toc-tabbed-external-nav/missingText\":{\"title\":\"$:/config/flibbles/relink/macros/toc-tabbed-external-nav/missingText\",\"text\":\"wikitext\"},\"$:/config/flibbles/relink/macros/toc-tabbed-external-nav/template\":{\"title\":\"$:/config/flibbles/relink/macros/toc-tabbed-external-nav/template\",\"text\":\"title\"},\"$:/config/flibbles/relink/macros/toc-tabbed-internal-nav/tag\":{\"title\":\"$:/config/flibbles/relink/macros/toc-tabbed-internal-nav/tag\",\"text\":\"title\"},\"$:/config/flibbles/relink/macros/toc-tabbed-internal-nav/selectedTiddler\":{\"title\":\"$:/config/flibbles/relink/macros/toc-tabbed-internal-nav/selectedTiddler\",\"text\":\"title\"},\"$:/config/flibbles/relink/macros/toc-tabbed-internal-nav/unselectedText\":{\"title\":\"$:/config/flibbles/relink/macros/toc-tabbed-internal-nav/unselectedText\",\"text\":\"wikitext\"},\"$:/config/flibbles/relink/macros/toc-tabbed-internal-nav/missingText\":{\"title\":\"$:/config/flibbles/relink/macros/toc-tabbed-internal-nav/missingText\",\"text\":\"wikitext\"},\"$:/config/flibbles/relink/macros/toc-tabbed-internal-nav/template\":{\"title\":\"$:/config/flibbles/relink/macros/toc-tabbed-internal-nav/template\",\"text\":\"title\"},\"$:/config/flibbles/relink/operators/filter\":{\"title\":\"$:/config/flibbles/relink/operators/filter\",\"text\":\"filter\"},\"$:/config/flibbles/relink/operators/list\":{\"title\":\"$:/config/flibbles/relink/operators/list\",\"text\":\"reference\"},\"$:/config/flibbles/relink/operators/subfilter\":{\"title\":\"$:/config/flibbles/relink/operators/subfilter\",\"text\":\"filter\"},\"$:/config/flibbles/relink/operators/tag\":{\"title\":\"$:/config/flibbles/relink/operators/tag\",\"text\":\"title\"},\"$:/config/flibbles/relink/operators/title\":{\"title\":\"$:/config/flibbles/relink/operators/title\",\"text\":\"title\"},\"$:/config/flibbles/relink/operators/field:title\":{\"title\":\"$:/config/flibbles/relink/operators/field:title\",\"text\":\"title\"},\"$:/config/flibbles/relink/operators/relink:report\":{\"title\":\"$:/config/flibbles/relink/operators/relink:report\",\"text\":\"title\"},\"$:/language/EditTemplate/Title/Impossibles/Prompt\":{\"title\":\"$:/language/EditTemplate/Title/Impossibles/Prompt\",\"text\":\"''Warning:'' Not all references in the following tiddlers can be updated by //Relink// due to the complexity of the new title:\"},\"$:/language/EditTemplate/Title/References/Prompt\":{\"title\":\"$:/language/EditTemplate/Title/References/Prompt\",\"text\":\"The following tiddlers will be updated if relinking:\"},\"$:/language/EditTemplate/Title/Relink/Prompt\":{\"title\":\"$:/language/EditTemplate/Title/Relink/Prompt\",\"text\":\"Use //Relink// to update ''\u003C$text text=\u003C\u003CfromTitle>>/>'' to ''\u003C$text text=\u003C\u003CtoTitle>>/>'' across all other tiddlers\"},\"$:/core/ui/EditTemplate/title\":{\"title\":\"$:/core/ui/EditTemplate/title\",\"tags\":\"$:/tags/EditTemplate\",\"text\":\"\\\\whitespace trim\\n\u003C$edit-text field=\\\"draft.title\\\" class=\\\"tc-titlebar tc-edit-texteditor\\\" focus=\\\"true\\\" tabindex={{$:/config/EditTabIndex}}/>\\n\\n\u003C$reveal state=\\\"!!draft.title\\\" type=\\\"nomatch\\\" text={{!!draft.of}} tag=\\\"div\\\">\\n\\n\u003C$vars pattern=\\\"\\\"\\\"[\\\\|\\\\[\\\\]{}]\\\"\\\"\\\" bad-chars=\\\"\\\"\\\"`| [ ] { }`\\\"\\\"\\\">\\n\\n\u003C$list filter=\\\"[all[current]regexp:draft.title\u003Cpattern>]\\\" variable=\\\"listItem\\\">\\n\\n\u003Cdiv class=\\\"tc-message-box\\\">\\n\\n{{$:/core/images/warning}}&#32;{{$:/language/EditTemplate/Title/BadCharacterWarning}}\\n\\n\u003C/div>\\n\\n\u003C/$list>\\n\\n\u003C/$vars>\\n\\n\u003C$list filter=\\\"[{!!draft.title}!is[missing]]\\\" variable=\\\"listItem\\\">\\n\\n\u003Cdiv class=\\\"tc-message-box\\\">\\n\\n{{$:/core/images/warning}}&#32;{{$:/language/EditTemplate/Title/Exists/Prompt}}\\n\\n\u003C/div>\\n\\n\u003C/$list>\\n\\n\u003C$list filter=\\\"[{!!draft.of}!is[missing]]\\\" variable=\\\"listItem\\\">\\n\\n\u003C$vars fromTitle={{!!draft.of}} toTitle={{!!draft.title}}>\\n\\n\u003C$checkbox tiddler=\\\"$:/config/RelinkOnRename\\\" field=\\\"text\\\" checked=\\\"yes\\\" unchecked=\\\"no\\\" default=\\\"no\\\">&#32;{{$:/language/EditTemplate/Title/Relink/Prompt}}\u003C/$checkbox>\\n\\n\u003C$tiddler tiddler=\u003C\u003CfromTitle>> >\\n\\n\u003C$list filter=\\\"[relink:wouldchange\u003CtoTitle>limit[1]]\\\" variable=\\\"listItem\\\">\\n\\n\u003C$vars stateTiddler=\u003C\u003Cqualify \\\"$:/state/edit/references\\\">> >\\n\\n\u003C$set\\n\\tname=\\\"prompt\\\"\\n\\tfilter=\\\"[relink:wouldchange\u003CtoTitle>relink:impossible\u003CtoTitle>]\\\"\\n\\tvalue=\\\"EditTemplate/Title/Impossibles/Prompt\\\"\\n\\temptyValue=\\\"EditTemplate/Title/References/Prompt\\\" >\\n\u003C$reveal type=\\\"nomatch\\\" state=\u003C\u003CstateTiddler>> text=\\\"show\\\">\\n\u003C$button set=\u003C\u003CstateTiddler>> setTo=\\\"show\\\" class=\\\"tc-btn-invisible\\\">\\n{{$:/core/images/right-arrow}}\\n&#32;\\n\u003C$macrocall $name=lingo title=\u003C\u003Cprompt>> />\\n\u003C/$button>\\n\u003C/$reveal>\\n\u003C$reveal type=\\\"match\\\" state=\u003C\u003CstateTiddler>> text=\\\"show\\\">\\n\u003C$button set=\u003C\u003CstateTiddler>> setTo=\\\"hide\\\" class=\\\"tc-btn-invisible\\\">\\n{{$:/core/images/down-arrow}}\\n&#32;\\n\u003C$macrocall $name=lingo title=\u003C\u003Cprompt>> />\\n\u003C/$button>\\n\u003C/$reveal>\\n\u003C/$set>\\n\\n\u003C$reveal type=\\\"match\\\" state=\u003C\u003CstateTiddler>> text=\\\"show\\\">\\n\u003C$list variable=\\\"listItem\\\" filter=\\\"[relink:wouldchange\u003CtoTitle>!title[$:/StoryList]sort[title]]\\\" template=\\\"$:/plugins/flibbles/relink/ui/ListItemTemplate\\\">\\n\u003C/$list>\\n\u003C/$reveal>\\n\\n\u003C/$vars>\\n\\n\u003C/$list>\\n\\n\u003C/$tiddler>\\n\\n\u003C/$vars>\\n\\n\u003C/$list>\\n\\n\u003C/$reveal>\\n\"},\"$:/config/flibbles/relink/PluginLibrary\":{\"title\":\"$:/config/flibbles/relink/PluginLibrary\",\"caption\":\"//Relink// Library\",\"url\":\"https://flibbles.github.io/tw5-relink/library/index.html\",\"tags\":\"$:/tags/PluginLibrary\",\"text\":\"The //Relink// library contains //Relink// as well as its supplemental plugins. It is maintained by Flibbles. See the [[github page|https://github.com/flibbles/tw5-relink]] for more information.\\n\"},\"$:/plugins/flibbles/relink/readme\":{\"title\":\"$:/plugins/flibbles/relink/readme\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"When renaming a tiddler, Relink can update the fields, filters, and widgets\\nof all other tiddlers. However, it works through whitelisting.\\n\\nIt's already configured to update tiddler titles for all core widgets, filters,\\nand fields, but the whitelists can be customized for each of this in the\\nconfiguration panel.\\n\\nSee \u003Ca href={{$:/plugins/flibbles/relink!!source}} class=\\\"tc-tiddlylink-external\\\">the tw5-relink website\u003C/a> for more details and examples.\\n\"},\"$:/config/flibbles/relink/settings/default-type\":{\"title\":\"$:/config/flibbles/relink/settings/default-type\",\"text\":\"title\"},\"$:/config/flibbles/relink/touch-modify\":{\"title\":\"$:/config/flibbles/relink/touch-modify\",\"text\":\"yes\"},\"$:/config/DefaultColourMappings/relink-impossible\":{\"title\":\"$:/config/DefaultColourMappings/relink-impossible\",\"text\":\"\u003C\u003Ccolour dirty-indicator>>\"},\"$:/language/Docs/PaletteColours/relink-impossible\":{\"title\":\"$:/language/Docs/PaletteColours/relink-impossible\",\"text\":\"Relink link impossible\"},\"$:/plugins/flibbles/relink/ui/ListItemTemplate\":{\"title\":\"$:/plugins/flibbles/relink/ui/ListItemTemplate\",\"text\":\"\\\\whitespace trim\\n\u003C$set\\n\\tname=\\\"classes\\\"\\n\\tfilter=\\\"[\u003ClistItem>relink:impossible\u003CtoTitle>]\\\"\\n\\tvalue=\\\"tc-menu-list-item tc-relink-impossible\\\"\\n\\temptyValue=\\\"tc-menu-list-item\\\">\\n\u003Cdiv class=\u003C\u003Cclasses>>>\\n\u003C$link to=\u003C\u003ClistItem>>>\u003C$text text=\u003C\u003ClistItem>> />\u003C/$link>\\n\u003C/div>\\n\u003C/$set>\\n\"},\"$:/plugins/flibbles/relink/ui/ListItemWithBlurbTemplate\":{\"title\":\"$:/plugins/flibbles/relink/ui/ListItemWithBlurbTemplate\",\"text\":\"\u003Cdiv class=\\\"tc-menu-list-item\\\">\u003C$link />\u003C/div>\\n\u003C$list variable=blurb filter=\\\"[\u003CcurrentTiddler>relink:report\u003CmissingTiddler>]\\\">\u003Cdiv class=\\\"tc-relink-menu-missing-blurb\\\">\u003C$text text=\u003C\u003Cblurb>> />\u003C/div>\\n\"},\"$:/plugins/flibbles/relink/ui/MissingTemplate\":{\"title\":\"$:/plugins/flibbles/relink/ui/MissingTemplate\",\"text\":\"\\\\whitespace trim\\n\u003C$set name=\\\"missingTiddler\\\" value=\u003C\u003CcurrentTiddler>> >\\n\u003Cdiv class=\\\"tc-tiddler-missing\\\">\\n\u003C$button popup=\u003C\u003Cqualify \\\"$:/state/relink/popup/missing\\\">> class=\\\"tc-btn-invisible tc-missing-tiddler-label\\\">\\n\u003C$view field=\\\"title\\\" format=\\\"text\\\" />\\n\u003C/$button>\\n\u003C$reveal state=\u003C\u003Cqualify \\\"$:/state/relink/popup/missing\\\">> type=\\\"popup\\\" position=\\\"below\\\" animate=\\\"yes\\\">\\n\u003Cdiv class=\\\"tc-drop-down\\\">\\n\u003C$transclude tiddler=\\\"$:/core/ui/ListItemTemplate\\\"/>\\n\u003Chr>\\n\u003C$list filter=\\\"[all[current]relink:backreferences[]sort[title]]\\\" template=\\\"$:/plugins/flibbles/relink/ui/ListItemWithBlurbTemplate\\\"/>\\n\u003C/div>\\n\u003C/$reveal>\\n\u003C/div>\\n\u003C/$set>\\n\"},\"$:/plugins/flibbles/relink/ui/MoreSideBar/Missing\":{\"title\":\"$:/plugins/flibbles/relink/ui/MoreSideBar/Missing\",\"caption\":\"{{$:/plugins/flibbles/relink/language/SideBar/Missing/Caption}}\",\"tags\":\"$:/tags/MoreSideBar\",\"text\":\"\u003C$list filter={{$:/plugins/flibbles/relink/Filters/Missing!!filter}} template=\\\"$:/plugins/flibbles/relink/ui/MissingTemplate\\\" />\\n\"},\"$:/plugins/flibbles/relink/ui/MoreSideBar/Orphans\":{\"title\":\"$:/plugins/flibbles/relink/ui/MoreSideBar/Orphans\",\"caption\":\"{{$:/plugins/flibbles/relink/language/SideBar/Orphans/Caption}}\",\"tags\":\"$:/tags/MoreSideBar\",\"text\":\"\u003C$list filter={{$:/plugins/flibbles/relink/Filters/Orphans!!filter}} template=\\\"$:/core/ui/ListItemTemplate\\\" />\\n\"},\"$:/plugins/flibbles/relink/ui/TiddlerInfo/References\":{\"title\":\"$:/plugins/flibbles/relink/ui/TiddlerInfo/References\",\"caption\":\"{{$:/plugins/flibbles/relink/language/TiddlerInfo/References/Caption}}\",\"tags\":\"$:/tags/TiddlerInfo\",\"text\":\"\\\\define lingo-base() $:/plugins/flibbles/relink/language/TiddlerInfo/\\n\\\\define filter() [all[current]relink:backreferences[]!title[$:/StoryList]!prefix[$:/temp/]sort[title]]\\n\\\\whitespace trim\\n\u003C$list filter=\\\"[subfilter\u003Cfilter>first[]]\\\">\\n\u003C\u003Clingo References/Description>>\\n\u003C/$list>\\n\u003Ctable class=\\\"tc-relink-references-table\\\">\\n\u003Ctbody>\\n\u003C$list filter=\u003C\u003Cfilter>> emptyMessage=\u003C\u003Clingo References/Empty>> variable=\\\"listItem\\\" template=\\\"$:/plugins/flibbles/relink/ui/TiddlerInfo/ReferencesTemplate\\\" />\\n\u003C/tbody>\\n\u003C/table>\\n\"},\"$:/plugins/flibbles/relink/ui/TiddlerInfo/ReferencesTemplate\":{\"title\":\"$:/plugins/flibbles/relink/ui/TiddlerInfo/ReferencesTemplate\",\"text\":\"\\\\whitespace trim\\n\u003Ctr class=\\\"tc-relink-references\\\">\\n\u003Ctd class=\\\"tc-relink-references-title\\\">\\n\u003C$link to=\u003C\u003ClistItem>>/>\\n\u003C/td>\\n\u003Ctd class=\\\"tc-relink-references-report\\\">\\n\u003C$list filter=\\\"[\u003ClistItem>relink:report\u003CcurrentTiddler>]\\\">\\n\\n\u003C$text text=\u003C\u003CcurrentTiddler>> />\\n\u003C/$list>\\n\\n\u003C/td>\\n\u003C/tr>\\n\"},\"$:/plugins/flibbles/relink/ui/components/button-delete\":{\"title\":\"$:/plugins/flibbles/relink/ui/components/button-delete\",\"text\":\"\\\\define lingo-base() $:/plugins/flibbles/relink/language/Buttons/\\n\\\\define prefix() $:/config/flibbles/relink/\\n\\\\whitespace trim\\n\\n\u003C$list\\n\\tfilter=\\\"[all[current]prefix\u003Cprefix>]\\\"\\n\\temptyMessage=\\\"\u003C$link>\u003C$button class='tc-btn-invisible' tooltip={{$:/plugins/flibbles/relink/language/Buttons/LinkToInline/Hint}}>{{$:/core/images/link}}\u003C/$button>\u003C/$link>\\\">\\n\u003C$button class=\\\"tc-btn-invisible\\\" tooltip={{$:/plugins/flibbles/relink/language/Buttons/Delete/Hint}}>\u003C$list filter=\\\"[all[current]is[tiddler]]\\\">\\n\u003C$action-deletetiddler $tiddler=\u003C\u003CcurrentTiddler>> />\\n\u003C/$list>\u003C$list filter=\\\"[all[current]is[shadow]]\\\">\\n\u003C$action-setfield $tiddler=\u003C\u003CtiddlerName>> text=\\\"\\\" />\\n\u003C/$list>\\n{{$:/core/images/delete-button}}\\n\u003C/$button>\\n\u003C/$list>\\n\"},\"$:/plugins/flibbles/relink/ui/components/select-fieldtype\":{\"title\":\"$:/plugins/flibbles/relink/ui/components/select-fieldtype\",\"text\":\"\\\\define prefix() $:/config/flibbles/relink/\\n\\\\whitespace trim\\n\\n\u003C$vars type={{{ [\u003Csignature>relink:type[]] }}} >\\n\u003C$list filter=\\\"[all[current]prefix\u003Cprefix>]\\\" >\\n\u003C$select tiddler=\u003C\u003CcurrentTiddler>> >\\n\u003C$list variable=\\\"option\\\" filter=\\\"[relink:types[]]\\\">\\n\u003Coption>\u003C$text text=\u003C\u003Coption>> />\u003C/option>\\n\u003C/$list>\\n\u003C/$select>\\n\u003C/$list>\u003C$list filter=\\\"[all[current]!prefix\u003Cprefix>]\\\">\\n\u003C$text text=\u003C\u003Ctype>> />\\n\u003C/$list>\\n\u003C/$vars>\\n\"},\"$:/plugins/flibbles/relink/ui/components/tables\":{\"title\":\"$:/plugins/flibbles/relink/ui/components/tables\",\"text\":\"\\\\define .make-table(title, plugin, default-table-state:yes)\\n\\\\whitespace trim\\n\\n\u003C$list variable=\\\"render\\\" filter=\\\"[relink:signatures\u003C__plugin__>prefix\u003C__category__>first[]]\\\">\\n\u003C$set name=\\\"table-state\\\" value=\u003C\u003Cqualify \\\"\\\"\\\"$:/state/flibbles/relink/tables/$title$\\\"\\\"\\\">>>\\n\u003Ctr>\u003Cth class=\\\"tc-relink-header-plugin\\\" colspan=\u003C\u003Ccolumn-count>> >\\n\u003C$reveal type=\\\"nomatch\\\" state=\u003C\u003Ctable-state>> text=\\\"yes\\\" default=\\\"\\\"\\\"$default-table-state$\\\"\\\"\\\">\\n\u003C$button class=\\\"tc-btn-invisible tc-btn-dropdown\\\" set=\u003C\u003Ctable-state>> setTo=\\\"yes\\\">\\n{{$:/core/images/right-arrow}}&#32;$title$\\n\u003C/$button>\\n\u003C/$reveal>\\n\u003C$reveal type=\\\"match\\\" state=\u003C\u003Ctable-state>> text=\\\"yes\\\" default=\\\"\\\"\\\"$default-table-state$\\\"\\\"\\\">\\n\u003C$button class=\\\"tc-btn-invisible tc-btn-dropdown\\\" set=\u003C\u003Ctable-state>> setTo=\\\"no\\\">\\n{{$:/core/images/down-arrow}}&#32;$title$\\n\u003C/$button>\\n\u003C/$reveal>\\n\u003C/th>\u003C/tr>\\n\u003C$list\\n\\tvariable=\\\"signature\\\"\\n\\tfilter=\\\"[relink:signatures\u003C__plugin__>prefix\u003C__category__>sort[]]\\\">\\n\u003C$vars key={{{ [\u003Csignature>removeprefix\u003C__category__>removeprefix[/]] }}} >\\n\u003C$tiddler tiddler={{{[\u003Csignature>relink:source[]]}}} >\\n\u003C$reveal tag=\\\"tr\\\" type=\\\"match\\\" state=\u003C\u003Ctable-state>> text=\\\"yes\\\" default=\\\"\\\"\\\"$default-table-state$\\\"\\\"\\\">\\n\u003C$macrocall $name=\u003C\u003C__list-row-macro__>> signature=\u003C\u003Csignature>> />\\n\u003Ctd class=\\\"tc-relink-column-type\\\">{{||$:/plugins/flibbles/relink/ui/components/select-fieldtype}}\u003C/td>\\n\u003Ctd class=\\\"tc-relink-column-delete\\\">{{||$:/plugins/flibbles/relink/ui/components/button-delete}}\u003C/td>\\n\u003C/$reveal>\\n\u003C/$tiddler>\\n\u003C/$vars>\\n\u003C/$list>\\n\u003C/$set>\\n\u003C/$list>\\n\\\\end\\n\\n\\\\define tables(category, list-row-macro, header-list)\\n\\\\whitespace trim\\n\u003C$vars\\n\\tcolumn-count={{{[enlist\u003C__header-list__>] [[DeleteColumn]] +[count[]]}}}>\\n\u003Ctable class=\\\"tc-relink-whitelist\\\">\u003Ctbody>\\n\u003Ctr>\\n\u003C$list variable=\\\"header\\\" filter=\\\"[enlist\u003C__header-list__>butlast[]]\\\">\u003Cth>\u003C\u003Cheader>>\u003C/th>\u003C/$list>\\n\u003C!-- We have the last column extend into the delete/link column, which is unlabeled. -->\\n\u003Cth colspan=2>\u003C$text text={{{ [enlist\u003C__header-list__>last[]] }}} />\u003C/th>\\n\u003C/tr>\\n\u003C\u003C.make-table Custom \\\"\\\" yes>>\\n\\n\u003C$list\\n\\tfilter=\\\"[plugin-type[plugin]![$:/core]![$:/plugins/flibbles/relink]]\\\">\\n\u003C$set name=\\\"subtitle\\\" filter=\\\"[all[current]has[description]]\\\" value=\\\"''{{!!name}}'':&#32;\u003C$text text={{!!description}}/>\\\" emptyValue=\\\"''{{!!name}}''\\\" >\\n\u003C$macrocall $name=\\\".make-table\\\" title=\u003C\u003Csubtitle>> plugin=\u003C\u003CcurrentTiddler>> />\\n\u003C/$set>\\n\u003C/$list>\\n\u003C\u003C.make-table Core \\\"$:/plugins/flibbles/relink\\\">>\\n\\n\u003C/tbody>\u003C/table>\\n\u003C/$vars>\\n\\\\end\\n\"},\"$:/plugins/flibbles/relink/ui/configuration/Attributes\":{\"title\":\"$:/plugins/flibbles/relink/ui/configuration/Attributes\",\"caption\":\"{{$:/plugins/flibbles/relink/language/ui/Attributes/Caption}}\",\"tags\":\"$:/tags/flibbles/relink/Configuration\",\"text\":\"\\\\import $:/plugins/flibbles/relink/ui/components/tables\\n\\\\define prefix-attr() $:/config/flibbles/relink/attributes/\\n\\\\define lingo-base() $:/plugins/flibbles/relink/language/Buttons/\\n\\\\define element-name-tiddler() $:/state/flibbles/relink/element-name\\n\\\\define attribute-name-tiddler() $:/state/flibbles/relink/attribute-name\\n\\n\\\\define row()\\n\\\\whitespace trim\\n\u003C$set name='element'\\n value={{{[\u003Ckey>splitbefore[/]removesuffix[/]]}}}>\\n\u003C$set name=\\\"attribute\\\"\\n value={{{[\u003Ckey>removeprefix\u003Celement>removeprefix[/]]}}}>\\n\u003Ctd>\u003C$text text=\u003C\u003Celement>> />\u003C/td>\\n\u003Ctd>\u003C$text text=\u003C\u003Cattribute>> />\u003C/td>\\n\u003C/$set>\u003C/$set>\\n\\\\end\\n\\\\define body()\\n\\\\whitespace trim\\n\\n\u003Cem class=\\\"tc-edit\\\">Add a new attribute:\u003C/em>\\n&#32;\\n\u003C$edit-text\\n\\ttiddler=\u003C\u003Celement-name-tiddler>>\\n\\ttag=\\\"input\\\"\\n\\tdefault=\\\"\\\"\\n\\tplaceholder=\\\"widget/element\\\" />\\n&#32;\\n\u003C$edit-text\\n\\ttiddler=\u003C\u003Cattribute-name-tiddler>>\\n\\ttag=\\\"input\\\"\\n\\tdefault=\\\"\\\"\\n\\tplaceholder=\\\"attribute\\\" />\\n&#32;\\n\u003C$reveal type=\\\"nomatch\\\" text=\\\"\\\" state=\u003C\u003Celement-name-tiddler>> >\\n\u003C$reveal type=\\\"nomatch\\\" text=\\\"\\\" state=\u003C\u003Cattribute-name-tiddler>> >\\n\u003C$relinkmangler>\\n\u003C$button\\n\\ttooltip={{$(lingo-base)$NewAttribute/Hint}}\\n\\taria-label={{$(lingo-base)$NewAttribute/Caption}}>\\n\u003C$action-sendmessage\\n\\t$message=\\\"relink-add-attribute\\\"\\n\\telement={{$(element-name-tiddler)$}}\\n\\tattribute={{$(attribute-name-tiddler)$}} />\\n\u003C$action-deletetiddler $tiddler=\u003C\u003Cattribute-name-tiddler>> />\\n\u003C$action-deletetiddler $tiddler=\u003C\u003Celement-name-tiddler>> />\\n\u003C$text text={{$(lingo-base)$NewAttribute/Caption}}/>\\n\u003C/$button>\\n\u003C/$relinkmangler>\\n\u003C/$reveal>\\n\u003C$reveal type=\\\"match\\\" text=\\\"\\\" state=\u003C\u003Cattribute-name-tiddler>> >\\n\u003C$button>\\n\u003C$text text={{$(lingo-base)$NewAttribute/Caption}}/>\\n\u003C/$button>\\n\u003C/$reveal>\\n\u003C/$reveal>\\n\u003C$reveal type=\\\"match\\\" text=\\\"\\\" state=\u003C\u003Celement-name-tiddler>> >\\n\u003C$button>\\n\u003C$text text={{$(lingo-base)$NewAttribute/Caption}}/>\\n\u003C/$button>\\n\u003C/$reveal>\\n\u003C$macrocall\\n\\t$name=tables\\n\\tcategory=\\\"attributes\\\"\\n\\theader-list=\\\"[[Widget/HTML Element]] Attribute Type\\\"\\n\\tlist-row-macro=\\\"row\\\" />\\n\\\\end\\n\\n{{$:/plugins/flibbles/relink/language/Help/Attributes}}\\n\\n\u003C\u003Cbody>>\\n\"},\"$:/plugins/flibbles/relink/ui/configuration/Fields\":{\"title\":\"$:/plugins/flibbles/relink/ui/configuration/Fields\",\"caption\":\"{{$:/plugins/flibbles/relink/language/ui/Fields/Caption}}\",\"tags\":\"$:/tags/flibbles/relink/Configuration\",\"text\":\"\\\\import $:/plugins/flibbles/relink/ui/components/tables\\n\\\\define lingo-base() $:/plugins/flibbles/relink/language/Buttons/\\n\\\\define field-name-tiddler() $:/state/flibbles/relink/field-name\\n\\n\\\\define row()\\n\u003Ctd>\u003C$text text=\u003C\u003Ckey>> />\u003C/td>\\n\\\\end\\n\\n\\\\define body()\\n\\\\whitespace trim\\n\\n\u003Cem class='tc-edit'>Add a new field:\u003C/em>\\n&#32;\\n\u003C$edit-text\\n\\ttiddler=\u003C\u003Cfield-name-tiddler>>\\n\\ttag=\\\"input\\\"\\n\\tdefault=\\\"\\\"\\n\\tplaceholder=\\\"field name\\\" />\\n&#32;\\n\u003C$reveal type=\\\"nomatch\\\" text=\\\"\\\" state=\u003C\u003Cfield-name-tiddler>> >\\n\u003C$relinkmangler>\\n\u003C$button\\n\\ttooltip={{$(lingo-base)$NewField/Hint}}\\n\\taria-label={{$(lingo-base)$NewField/Caption}}>\\n\u003C$action-sendmessage\\n\\t$message=\\\"relink-add-field\\\"\\n\\tfield={{$(field-name-tiddler)$}} />\\n\u003C$action-deletetiddler $tiddler=\u003C\u003Cfield-name-tiddler>> />\\n\u003C$text text={{$(lingo-base)$NewField/Caption}}/>\\n\u003C/$button>\\n\u003C/$relinkmangler>\\n\u003C/$reveal>\\n\u003C$reveal type=\\\"match\\\" text=\\\"\\\" state=\u003C\u003Cfield-name-tiddler>> >\\n\u003C$button>\\n\u003C$text text={{$(lingo-base)$NewField/Caption}}/>\\n\u003C/$button>\\n\u003C/$reveal>\\n\u003C$macrocall\\n\\t$name=tables\\n\\tcategory=\\\"fields\\\"\\n\\theader-list=\\\"[[Field Name]] [[Field Type]]\\\"\\n\\tlist-row-macro=\\\"row\\\" />\\n\\\\end\\n\\n{{$:/plugins/flibbles/relink/language/Help/Fields}}\\n\\n\u003C\u003Cbody>>\\n\"},\"$:/plugins/flibbles/relink/ui/configuration/Macros\":{\"title\":\"$:/plugins/flibbles/relink/ui/configuration/Macros\",\"caption\":\"{{$:/plugins/flibbles/relink/language/ui/Macros/Caption}}\",\"tags\":\"$:/tags/flibbles/relink/Configuration\",\"text\":\"\\\\import $:/plugins/flibbles/relink/ui/components/tables\\n\\\\define prefix-macro() $:/config/flibbles/relink/macros/\\n\\\\define lingo-base() $:/plugins/flibbles/relink/language/Buttons/\\n\\\\define macro-name-tiddler() $:/state/flibbles/relink/macro-name\\n\\\\define parameter-name-tiddler() $:/state/flibbles/relink/parameter-name\\n\\n\\\\define row()\\n\\\\whitespace trim\\n\u003C$set name=\\\"parameter\\\"\\n value={{{[\u003Ckey>relink:splitafter[/]]}}}>\\n\u003C$set name='macro'\\n value={{{[\u003Ckey>removesuffix\u003Cparameter>removesuffix[/]]}}}>\\n\u003Ctd>\u003C$text text=\u003C\u003Cmacro>> />\u003C/td>\\n\u003Ctd>\u003C$text text=\u003C\u003Cparameter>> />\u003C/td>\\n\u003C/$set>\u003C/$set>\\n\\\\end\\n\\n\\\\define body()\\n\\\\whitespace trim\\n\\n\u003Cem class=\\\"tc-edit\\\">Add a new macro parameter:\u003C/em>\\n&#32;\\n\u003C$edit-text\\n\\ttiddler=\u003C\u003Cmacro-name-tiddler>>\\n\\ttag=\\\"input\\\"\\n\\tdefault=\\\"\\\"\\n\\tplaceholder=\\\"macro\\\" />\\n&#32;\\n\u003C$edit-text\\n\\ttiddler=\u003C\u003Cparameter-name-tiddler>>\\n\\ttag=\\\"input\\\"\\n\\tdefault=\\\"\\\"\\n\\tplaceholder=\\\"parameter\\\" />\\n&#32;\\n\u003C$reveal type=\\\"nomatch\\\" text=\\\"\\\" state=\u003C\u003Cmacro-name-tiddler>> >\\n\u003C$reveal type=\\\"nomatch\\\" text=\\\"\\\" state=\u003C\u003Cparameter-name-tiddler>> >\\n\u003C$relinkmangler>\\n\u003C$button\\n\\ttooltip={{$(lingo-base)$NewParameter/Hint}}\\n\\taria-label={{$(lingo-base)$NewParameter/Caption}}>\\n\u003C$action-sendmessage\\n\\t$message=\\\"relink-add-parameter\\\"\\n\\tmacro={{$(macro-name-tiddler)$}}\\n\\tparameter={{$(parameter-name-tiddler)$}} />\\n\u003C$action-deletetiddler $tiddler=\u003C\u003Cparameter-name-tiddler>> />\\n\u003C$action-deletetiddler $tiddler=\u003C\u003Cmacro-name-tiddler>> />\\n\u003C$text text={{$(lingo-base)$NewParameter/Caption}}/>\\n\u003C/$button>\\n\u003C/$relinkmangler>\\n\u003C/$reveal>\\n\u003C$reveal type=\\\"match\\\" text=\\\"\\\" state=\u003C\u003Cparameter-name-tiddler>> >\\n\u003C$button>\\n\u003C$text text={{$(lingo-base)$NewParameter/Caption}}/>\\n\u003C/$button>\\n\u003C/$reveal>\\n\u003C/$reveal>\\n\u003C$reveal type=\\\"match\\\" text=\\\"\\\" state=\u003C\u003Cmacro-name-tiddler>> >\\n\u003C$button>\\n\u003C$text text={{$(lingo-base)$NewParameter/Caption}}/>\\n\u003C/$button>\\n\u003C/$reveal>\\n\u003C$macrocall\\n\\t$name=tables\\n\\tcategory=\\\"macros\\\"\\n\\theader-list=\\\"Macro Parameter Type\\\"\\n\\tlist-row-macro=\\\"row\\\" />\\n\\\\end\\n\\n{{$:/plugins/flibbles/relink/language/Help/Macros}}\\n\\n\u003C\u003Cbody>>\\n\"},\"$:/plugins/flibbles/relink/ui/configuration/Operators\":{\"title\":\"$:/plugins/flibbles/relink/ui/configuration/Operators\",\"caption\":\"{{$:/plugins/flibbles/relink/language/ui/Operators/Caption}}\",\"tags\":\"$:/tags/flibbles/relink/Configuration\",\"text\":\"\\\\import $:/plugins/flibbles/relink/ui/components/tables\\n\\\\define lingo-base() $:/plugins/flibbles/relink/language/Buttons/\\n\\\\define operator-name-tiddler() $:/state/flibbles/relink/operator-name\\n\\n\\\\define row()\\n\u003Ctd>\u003C$text text=\u003C\u003Ckey>> />\u003C/td>\\n\\\\end\\n\\n\\\\define body()\\n\\\\whitespace trim\\n\\n\u003Cem class='tc-edit'>Add a new filter operator:\u003C/em>\\n&#32;\\n\u003C$edit-text\\n\\ttiddler=\u003C\u003Coperator-name-tiddler>>\\n\\ttag=\\\"input\\\"\\n\\tdefault=\\\"\\\"\\n\\tplaceholder=\\\"operator name\\\" />\\n&#32;\\n\u003C$reveal type=\\\"nomatch\\\" text=\\\"\\\" state=\u003C\u003Coperator-name-tiddler>>>\\n\u003C$relinkmangler>\\n\u003C$button\\n\\ttooltip={{$(lingo-base)$NewOperator/Hint}}\\n\\taria-label={{$(lingo-base)$NewOperator/Caption}}>\\n\u003C$action-sendmessage\\n\\t$message=\\\"relink-add-operator\\\"\\n\\toperator={{$(operator-name-tiddler)$}} />\\n\u003C$action-deletetiddler $tiddler=\u003C\u003Coperator-name-tiddler>> />\\n\u003C$text text={{$(lingo-base)$NewOperator/Caption}}/>\\n\u003C/$button>\\n\u003C/$relinkmangler>\\n\u003C/$reveal>\\n\u003C$reveal type=\\\"match\\\" text=\\\"\\\" state=\u003C\u003Coperator-name-tiddler>>>\\n\u003C$button>\\n\u003C$text text={{$(lingo-base)$NewOperator/Caption}}/>\\n\u003C/$button>\\n\u003C/$reveal>\\n\u003C$macrocall\\n\\t$name=tables\\n\\tcategory=\\\"operators\\\"\\n\\theader-list=\\\"[[Filter Operator]] [[Operand Type]]\\\"\\n\\tlist-row-macro=\\\"row\\\" />\\n\\\\end\\n\\n{{$:/plugins/flibbles/relink/language/Help/Operators}}\\n\\n\u003C\u003Cbody>>\\n\"},\"$:/plugins/flibbles/relink/ui/stylesheet.css\":{\"title\":\"$:/plugins/flibbles/relink/ui/stylesheet.css\",\"tags\":\"$:/tags/Stylesheet\",\"text\":\".tc-relink-references {\\n}\\n\\n.tc-relink-references-table {\\n\\twidth: 100%;\\n\\tborder: none;\\n}\\n\\n.tc-relink-references-table td {\\n\\tborder-left: none;\\n}\\n\\n.tc-relink-references-table tr:first-child td {\\n\\tborder-top: none;\\n}\\n\\n.tc-relink-references-title {\\n\\ttext-align: left;\\n\\tvertical-align: top;\\n}\\n\\n.tc-relink-references-occurrence {\\n\\tfont-style: italic;\\n\\ttext-align: left;\\n\\tfont-weight: 200;\\n\\tpadding-left: 25px;\\n\\tvertical-align: top;\\n}\\n\\n.tc-relink-header-plugin {\\n\\ttext-align: left;\\n}\\n\\n.tc-relink-header-plugin button {\\n\\twidth: 100%\\n}\\n\\n.tc-relink-column-type {\\n\\twidth: 8em;\\n}\\n\\n.tc-relink-column-type select {\\n\\twidth: 100%;\\n}\\n\\n.tc-relink-column-delete {\\n\\tborder-left: none;\\n\\ttext-align: left;\\n}\\n\\n.tc-relink-column-delete button {\\n\\tpadding-left: 1em;\\n}\\n\\n.tc-relink-impossible a.tc-tiddlylink {\\n\\tcolor: \u003C\u003Ccolour relink-impossible>>;\\n}\\n\\n.tc-relink-menu-missing-blurb {\\n\\tmargin-left: 30pt;\\n}\\n\"}}}","created":"20230108171504382"},
{"name":"Relink Field Names","title":"$:/plugins/flibbles/relink-fieldnames","description":"Renames field names with titles matching Relinked tiddlers","author":"Flibbles","version":"2.3.0","core-version":">=5.1.22","parent-plugin":"$:/plugins/flibbles/relink","source":"https://github.com/flibbles/tw5-relink","demo":"http://flibbles.github.io/tw5-relink/","list":"readme reference","dependents":"","plugin-type":"plugin","type":"application/json","text":"{\"tiddlers\":{\"$:/config/flibbles/relink/attributes/$action-deletefield/$field\":{\"title\":\"$:/config/flibbles/relink/attributes/$action-deletefield/$field\",\"text\":\"fieldname\"},\"$:/config/flibbles/relink/attributes/$action-listops/$field\":{\"title\":\"$:/config/flibbles/relink/attributes/$action-listops/$field\",\"text\":\"fieldname\"},\"$:/config/flibbles/relink/attributes/$action-setfield/$field\":{\"title\":\"$:/config/flibbles/relink/attributes/$action-setfield/$field\",\"text\":\"fieldname\"},\"$:/config/flibbles/relink/attributes/$button/setField\":{\"title\":\"$:/config/flibbles/relink/attributes/$button/setField\",\"text\":\"fieldname\"},\"$:/config/flibbles/relink/attributes/$checkbox/field\":{\"title\":\"$:/config/flibbles/relink/attributes/$checkbox/field\",\"text\":\"fieldname\"},\"$:/config/flibbles/relink/attributes/$edit-text/field\":{\"title\":\"$:/config/flibbles/relink/attributes/$edit-text/field\",\"text\":\"fieldname\"},\"$:/config/flibbles/relink/attributes/$edit/field\":{\"title\":\"$:/config/flibbles/relink/attributes/$edit/field\",\"text\":\"fieldname\"},\"$:/config/flibbles/relink/attributes/$fields/exclude\":{\"title\":\"$:/config/flibbles/relink/attributes/$fields/exclude\",\"text\":\"fieldnamelist\"},\"$:/config/flibbles/relink/attributes/$fields/include\":{\"title\":\"$:/config/flibbles/relink/attributes/$fields/include\",\"text\":\"fieldnamelist\"},\"$:/config/flibbles/relink/attributes/$jsontiddler/exclude\":{\"title\":\"$:/config/flibbles/relink/attributes/$jsontiddler/exclude\",\"text\":\"fieldnamelist\"},\"$:/config/flibbles/relink/attributes/$radio/field\":{\"title\":\"$:/config/flibbles/relink/attributes/$radio/field\",\"text\":\"fieldname\"},\"$:/config/flibbles/relink/attributes/$range/field\":{\"title\":\"$:/config/flibbles/relink/attributes/$range/field\",\"text\":\"fieldname\"},\"$:/config/flibbles/relink/attributes/$reveal/stateField\":{\"title\":\"$:/config/flibbles/relink/attributes/$reveal/stateField\",\"text\":\"fieldname\"},\"$:/config/flibbles/relink/attributes/$select/field\":{\"title\":\"$:/config/flibbles/relink/attributes/$select/field\",\"text\":\"fieldname\"},\"$:/config/flibbles/relink/attributes/$setvariable/field\":{\"title\":\"$:/config/flibbles/relink/attributes/$setvariable/field\",\"text\":\"fieldname\"},\"$:/config/flibbles/relink/attributes/$set/field\":{\"title\":\"$:/config/flibbles/relink/attributes/$set/field\",\"text\":\"fieldname\"},\"$:/config/flibbles/relink/attributes/$transclude/field\":{\"title\":\"$:/config/flibbles/relink/attributes/$transclude/field\",\"text\":\"fieldname\"},\"$:/config/flibbles/relink/attributes/$view/field\":{\"title\":\"$:/config/flibbles/relink/attributes/$view/field\",\"text\":\"fieldname\"},\"$:/config/flibbles/relink/fieldnames/blacklist\":{\"title\":\"$:/config/flibbles/relink/fieldnames/blacklist\",\"filter\":\"[all[shadows+tiddlers]removeprefix[$:/language/Docs/Fields/]]\",\"text\":\"This tiddler specifies what fields //Relink-fieldname// should refuse to change. Edit its `filter` field if you'd like to change that list.\\n\"},\"$:/plugins/flibbles/relink-fieldnames/fieldtypes/fieldname.js\":{\"title\":\"$:/plugins/flibbles/relink-fieldnames/fieldtypes/fieldname.js\",\"text\":\"/*\\\\\\ntitle: $:/plugins/flibbles/relink-fieldnames/fieldtypes/fieldname.js\\nmodule-type: relinkfieldtype\\ntype: application/javascript\\n\\nThis field type behaves exactly like the \\\"title\\\" field type, except that\\nit ignores any titles that appear on the field name blacklist.\\n\\n\\\\*/\\n\\nexports.name = 'fieldname';\\n\\nvar utils = require(\\\"../utils.js\\\");\\n\\nexports.report = function(value, callback, options) {\\n\\tif (!utils.isReserved(value, options)) {\\n\\t\\tcallback(value);\\n\\t}\\n};\\n\\nexports.relink = function(value, fromTitle, toTitle, options) {\\n\\tif (value === fromTitle\\n\\t&& !utils.isReserved(fromTitle, options)) {\\n\\t\\tif (utils.isReserved(toTitle, options)\\n\\t\\t|| !utils.isValidFieldName(toTitle)) {\\n\\t\\t\\treturn {impossible: true};\\n\\t\\t} else {\\n\\t\\t\\treturn {output: toTitle};\\n\\t\\t}\\n\\t}\\n\\treturn undefined;\\n};\\n\",\"module-type\":\"relinkfieldtype\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink-fieldnames/fieldtypes/fieldnamelist.js\":{\"title\":\"$:/plugins/flibbles/relink-fieldnames/fieldtypes/fieldnamelist.js\",\"text\":\"/*\\\\\\ntitle: $:/plugins/flibbles/relink-fieldnames/fieldtypes/fieldnamelist.js\\nmodule-type: relinkfieldtype\\ntype: application/javascript\\n\\nThis field type behaves exactly like the \\\"title\\\" field type, except that\\nit ignores any titles that appear on the field name blacklist.\\n\\n\\\\*/\\n\\nexports.name = 'fieldnamelist';\\n\\nvar utils = require(\\\"../utils.js\\\");\\nvar listModule = require(\\\"$:/plugins/flibbles/relink/js/fieldtypes/list.js\\\");\\n\\nexports.report = function(value, callback, options) {\\n\\tvar list = $tw.utils.parseStringArray(value);\\n\\tfor (var i = 0; i \u003C list.length; i++) {\\n\\t\\tif (!utils.isReserved(list[i], options)) {\\n\\t\\t\\tcallback(list[i]);\\n\\t\\t}\\n\\t}\\n};\\n\\nexports.relink = function(value, fromTitle, toTitle, options) {\\n\\tvar entry;\\n\\tif (!utils.isReserved(fromTitle, options)) {\\n\\t\\tentry = listModule.relink(value, fromTitle, toTitle, options);\\n\\t\\tif (entry && entry.output && utils.isReserved(toTitle, options)) {\\n\\t\\t\\t// The list updated, but we can't actaully update to this new title\\n\\t\\t\\treturn {impossible: true};\\n\\t\\t}\\n\\t}\\n\\treturn entry;\\n};\\n\",\"module-type\":\"relinkfieldtype\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink-fieldnames/filters/field.js\":{\"title\":\"$:/plugins/flibbles/relink-fieldnames/filters/field.js\",\"text\":\"/*\\\\\\ntitle: $:/plugins/flibbles/relink-fieldnames/filters/field.js\\nmodule-type: relinkfilter\\ntype: application/javascript\\n\\nHandles reporting/relinking of shorthand [[field:{field}[]] operators.\\n\\n\\\\*/\\n\\nvar utils = require(\\\"../utils.js\\\");\\n\\nexports.name = \\\"field\\\";\\n\\nexports.report = function(filterParseTree, callback, options) {\\n\\tvar operators = options.wiki.getFilterOperators();\\n\\tfor (var i = 0; i \u003C filterParseTree.length; i++) {\\n\\t\\tvar run = filterParseTree[i];\\n\\t\\tfor (var j = 0; j \u003C run.operators.length; j++) {\\n\\t\\t\\tvar operator = run.operators[j];\\n\\t\\t\\tif (!operators[operator.operator]\\n\\t\\t\\t&& !utils.isReserved(operator.operator, options)) {\\n\\t\\t\\t\\tcallback(operator.operator, \\\"[field:\\\" + utils.blurbOperands(operator) + \\\"]\\\");\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n};\\n\\nexports.relink = function(filterParseTree, fromTitle, toTitle, options) {\\n\\tvar output = {};\\n\\tif (!utils.isReserved(fromTitle, options)) {\\n\\t\\tfor (var i = 0; i \u003C filterParseTree.length; i++) {\\n\\t\\t\\tvar run = filterParseTree[i];\\n\\t\\t\\tfor (var j = 0; j \u003C run.operators.length; j++) {\\n\\t\\t\\t\\tvar operator = run.operators[j];\\n\\t\\t\\t\\tif (operator.operator === fromTitle\\n\\t\\t\\t\\t&& !options.wiki.getFilterOperators()[fromTitle]) {\\n\\t\\t\\t\\t\\tif (toTitle.search(/[\\\\[\\\\{\u003C\\\\/]/) >= 0\\n\\t\\t\\t\\t\\t|| utils.isReserved(toTitle, options)) {\\n\\t\\t\\t\\t\\t\\t// can't be an operator or a suffix. we must fail.\\n\\t\\t\\t\\t\\t\\toutput.impossible = true;\\n\\t\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\t\\tif (options.wiki.getFilterOperators()[toTitle]\\n\\t\\t\\t\\t\\t\\t|| toTitle.indexOf(':') >= 0) {\\n\\t\\t\\t\\t\\t\\t\\t// It can't use the shorthand without causing problems\\n\\t\\t\\t\\t\\t\\t\\t// we use longhand field operator\\n\\t\\t\\t\\t\\t\\t\\toperator.operator = \\\"field\\\";\\n\\t\\t\\t\\t\\t\\t\\toperator.suffix = toTitle;\\n\\t\\t\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\t\\t\\toperator.operator = toTitle;\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\toutput.changed = true;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\treturn output;\\n};\\n\",\"module-type\":\"relinkfilter\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink-fieldnames/filters/search.js\":{\"title\":\"$:/plugins/flibbles/relink-fieldnames/filters/search.js\",\"text\":\"/*\\\\\\ntitle: $:/plugins/flibbles/relink-fieldnames/filters/search.js\\nmodule-type: relinkfilter\\ntype: application/javascript\\n\\nHandles reporting/relinking of filter operator suffixes using a hidden whitelist.\\n\\n\\\\*/\\n\\nvar utils = require(\\\"../utils.js\\\");\\n\\nexports.name = \\\"search\\\";\\n\\nexports.report = function(filterParseTree, callback, options) {\\n\\tvar inverted = false;\\n\\teachSuffix(filterParseTree, function(title, rawEntry, operator, index) {\\n\\t\\tif (index === 0 && rawEntry[0] === '-') {\\n\\t\\t\\tinverted = true;\\n\\t\\t}\\n\\t\\tif (!utils.isReserved(title, options)) {\\n\\t\\t\\tvar blurb = inverted? \\\"[search:-\\\": \\\"[search:\\\";\\n\\t\\t\\tif (operator.suffixes[1]) {\\n\\t\\t\\t\\tblurb += ':' + operator.suffixes[1].join(',');\\n\\t\\t\\t}\\n\\t\\t\\tcallback(title, blurb + utils.blurbOperands(operator) + \\\"]\\\");\\n\\t\\t}\\n\\t});\\n};\\n\\nexports.relink = function(filterParseTree, fromTitle, toTitle, options) {\\n\\tvar output = {};\\n\\tif (!utils.isReserved(fromTitle, options)) {\\n\\t\\teachSuffix(filterParseTree, function(title, rawEntry, operator, index) {\\n\\t\\t\\tif (title === fromTitle) {\\n\\t\\t\\t\\tif (utils.isReserved(toTitle, options)\\n\\t\\t\\t\\t|| toTitle.search(/[\\\\[\\\\{\u003C\\\\/,:]/) >= 0\\n\\t\\t\\t\\t|| (index == 0\\n\\t\\t\\t\\t\\t&& rawEntry[0] !== '-'\\n\\t\\t\\t\\t\\t&& (toTitle[0] === '-' || toTitle === '*'))) {\\n\\t\\t\\t\\t\\toutput.impossible = true;\\n\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\toutput.changed = true;\\n\\t\\t\\t\\t\\treturn toTitle;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t});\\n\\t}\\n\\treturn output;\\n};\\n\\nfunction eachSuffix(filterParseTree, callback) {\\n\\tfor (var i = 0; i \u003C filterParseTree.length; i++) {\\n\\t\\tvar run = filterParseTree[i];\\n\\t\\tfor (var j = 0; j \u003C run.operators.length; j++) {\\n\\t\\t\\tvar operator = run.operators[j];\\n\\t\\t\\tvar opChanged = false;\\n\\t\\t\\tif (operator.operator === 'search' && operator.suffix) {\\n\\t\\t\\t\\tvar list = operator.suffixes[0];\\n\\t\\t\\t\\tfor (var index = 0; index \u003C list.length; index++) {\\n\\t\\t\\t\\t\\tvar title = list[index];\\n\\t\\t\\t\\t\\tvar raw = title;\\n\\t\\t\\t\\t\\tif (index === 0) {\\n\\t\\t\\t\\t\\t\\tif (title[0] === '-') {\\n\\t\\t\\t\\t\\t\\t\\ttitle = title.substr(1);\\n\\t\\t\\t\\t\\t\\t} else if (title === '*') {\\n\\t\\t\\t\\t\\t\\t\\tcontinue;\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\tvar newValue = callback(title, raw, operator, index);\\n\\t\\t\\t\\t\\tif (newValue) {\\n\\t\\t\\t\\t\\t\\tlist[index] = (index === 0 && raw[0] === '-') ?\\n\\t\\t\\t\\t\\t\\t\\t'-' + newValue:\\n\\t\\t\\t\\t\\t\\t\\tnewValue;\\n\\t\\t\\t\\t\\t\\topChanged = true;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t\\tif (opChanged) {\\n\\t\\t\\t\\t// There was a change. reassemble the suffix\\n\\t\\t\\t\\toperator.suffix = operator.suffixes.map(function(part) {\\n\\t\\t\\t\\t\\treturn part.join(',');\\n\\t\\t\\t\\t}).join(':');\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n};\\n\",\"module-type\":\"relinkfilter\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink-fieldnames/filters/suffixes.js\":{\"title\":\"$:/plugins/flibbles/relink-fieldnames/filters/suffixes.js\",\"text\":\"/*\\\\\\ntitle: $:/plugins/flibbles/relink-fieldnames/filters/suffixes.js\\nmodule-type: relinkfilter\\ntype: application/javascript\\n\\nHandles reporting/relinking of filter operator suffixes using a hidden whitelist.\\n\\n\\\\*/\\n\\nvar utils = require(\\\"../utils.js\\\");\\n\\nexports.name = \\\"suffixes\\\";\\n\\nexports.report = function(filterParseTree, callback, options) {\\n\\tfor (var i = 0; i \u003C filterParseTree.length; i++) {\\n\\t\\tvar run = filterParseTree[i];\\n\\t\\tfor (var j = 0; j \u003C run.operators.length; j++) {\\n\\t\\t\\tvar operator = run.operators[j];\\n\\t\\t\\tvar settings = options.settings.getConfig('suffixes')[operator.operator];\\n\\t\\t\\tif (settings) {\\n\\t\\t\\t\\tsettings[1].report(operator.suffix, function(title, blurb) {\\n\\t\\t\\t\\t\\tcallback(title, '[' + operator.operator + ':' + (blurb || '') + utils.blurbOperands(operator) + ']');\\n\\t\\t\\t\\t}, options);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n};\\n\\nexports.relink = function(filterParseTree, fromTitle, toTitle, options) {\\n\\tvar output = {};\\n\\tfor (var i = 0; i \u003C filterParseTree.length; i++) {\\n\\t\\tvar run = filterParseTree[i];\\n\\t\\tfor (var j = 0; j \u003C run.operators.length; j++) {\\n\\t\\t\\tvar operator = run.operators[j];\\n\\t\\t\\tvar settings = options.settings.getConfig('suffixes')[operator.operator];\\n\\t\\t\\tvar operatorChanged = false;\\n\\t\\t\\tif (settings) {\\n\\t\\t\\t\\tvar handler = settings[1];\\n\\t\\t\\t\\tif (handler) {\\n\\t\\t\\t\\t\\tvar entry = handler.relink(operator.suffix, fromTitle, toTitle, options);\\n\\t\\t\\t\\t\\tif (entry) {\\n\\t\\t\\t\\t\\t\\tif (entry.output) {\\n\\t\\t\\t\\t\\t\\t\\tif (entry.output.search(/[\\\\[\\\\{\u003C\\\\/]/) \u003C 0) {\\n\\t\\t\\t\\t\\t\\t\\t\\toutput.changed = true;\\n\\t\\t\\t\\t\\t\\t\\t\\toperatorChanged = true;\\n\\t\\t\\t\\t\\t\\t\\t\\toperator.suffix = entry.output;\\n\\t\\t\\t\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\t\\t\\t\\tentry.impossible = true;\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\tif (entry.impossible) {\\n\\t\\t\\t\\t\\t\\t\\toutput.impossible = true;\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\treturn output;\\n};\\n\",\"module-type\":\"relinkfilter\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink-fieldnames/htmlFields.js\":{\"title\":\"$:/plugins/flibbles/relink-fieldnames/htmlFields.js\",\"text\":\"/*\\\\\\ntitle: $:/plugins/flibbles/relink-fieldnames/htmlFields.js\\nmodule-type: relinkhtml\\ntype: application/javascript\\n\\nThis updates html attribute names which correspond to fields.\\n\\ne.g.\\n\\n\u003C$action-createtiddler myfield=\\\"...\\\" />\\n\\n\\\\*/\\n\\nvar utils = require(\\\"./utils.js\\\");\\n\\nexports.name = \\\"fieldnames\\\";\\n\\nexports.report = function(element, parser, callback, options) {\\n\\tvar regexp = parser.context.getConfig(\\\"fieldattributes\\\")[element.tag];\\n\\tif (regexp) {\\n\\t\\tfor (var attributeName in element.attributes) {\\n\\t\\t\\tvar results = regexp.exec(attributeName);\\n\\t\\t\\tif (results\\n\\t\\t\\t&& results[0] === attributeName\\n\\t\\t\\t&& !utils.isReserved(results[1], options)) {\\n\\t\\t\\t\\tvar attr = element.attributes[attributeName];\\n\\t\\t\\t\\tvar blurb;\\n\\t\\t\\t\\tswitch (attr.type) { \\n\\t\\t\\t\\tcase \\\"string\\\":\\n\\t\\t\\t\\t\\tblurb = '\\\"' + utils.abridge(attr.value) + '\\\"';\\n\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\tcase \\\"indirect\\\":\\n\\t\\t\\t\\t\\tblurb = \\\"{{\\\" + attr.textReference + \\\"}}\\\";\\n\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\tcase \\\"filtered\\\":\\n\\t\\t\\t\\t\\tblurb = \\\"{{{\\\" + utils.abridge(attr.filter) + \\\"}}}\\\";\\n\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\tcase \\\"macro\\\":\\n\\t\\t\\t\\t\\t// Find the equals\\n\\t\\t\\t\\t\\tvar equals = parser.source.indexOf(\\\"=\\\", attr.start);\\n\\t\\t\\t\\t\\t// Now that the macrostart after that equals\\n\\t\\t\\t\\t\\tvar macroStart = parser.source.indexOf(\\\"\u003C\\\", equals);\\n\\t\\t\\t\\t\\tblurb = \\\"\u003C\u003C\\\" + utils.abridge(parser.source.substring(macroStart+2, attr.end-2)) + \\\">>\\\";\\n\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tcallback(results[1], element.tag + ' =' + blurb);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n};\\n\\nexports.relink = function(element, parser, fromTitle, toTitle, options) {\\n\\tvar entry = {};\\n\\tif (!utils.isReserved(fromTitle, options)) {\\n\\t\\tvar regexp = parser.context.getConfig(\\\"fieldattributes\\\")[element.tag];\\n\\t\\tif (regexp) {\\n\\t\\t\\tfor (var attributeName in element.attributes) {\\n\\t\\t\\t\\tvar results = regexp.exec(attributeName);\\n\\t\\t\\t\\tif (results\\n\\t\\t\\t\\t&& results[0] === attributeName\\n\\t\\t\\t\\t&& results[1] === fromTitle) {\\n\\t\\t\\t\\t\\tvar newName = alterAttributeName(attributeName, fromTitle, toTitle, regexp, options);\\n\\t\\t\\t\\t\\tif (newName === undefined) {\\n\\t\\t\\t\\t\\t\\tentry.impossible = true;\\n\\t\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\t\\telement.attributes[attributeName].name = newName;\\n\\t\\t\\t\\t\\t\\tentry.output = true;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\treturn entry;\\n};\\n\\n// Returns undefined if it doesn't work out.\\nfunction alterAttributeName(attributeName, fromTitle, toTitle, regexp, options) {\\n\\tif (!utils.isReserved(toTitle, options)) {\\n\\t\\tvar newName = attributeName.replace(fromTitle, toTitle);\\n\\t\\tvar match = regexp.exec(newName);\\n\\t\\tif (match && match[0] === newName && match[1] === toTitle) {\\n\\t\\t\\t// Taken from parseutils.js\\n\\t\\t\\tvar reAttributeName = /([^\\\\/\\\\s>\\\"'=]+)/;\\n\\t\\t\\tmatch = reAttributeName.exec(newName);\\n\\t\\t\\tif (match && match[0] === newName) {\\n\\t\\t\\t\\treturn newName;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\treturn undefined;\\n};\\n\",\"module-type\":\"relinkhtml\",\"type\":\"application/javascript\"},\"$:/config/flibbles/relink/macros/keyboard-driven-input/firstSearchFilterField\":{\"title\":\"$:/config/flibbles/relink/macros/keyboard-driven-input/firstSearchFilterField\",\"text\":\"fieldname\"},\"$:/config/flibbles/relink/macros/keyboard-driven-input/secondSearchFilterField\":{\"title\":\"$:/config/flibbles/relink/macros/keyboard-driven-input/secondSearchFilterField\",\"text\":\"fieldname\"},\"$:/config/flibbles/relink/macros/list-links-draggable/field\":{\"title\":\"$:/config/flibbles/relink/macros/list-links-draggable/field\",\"text\":\"fieldname\"},\"$:/config/flibbles/relink/macros/tag-picker/tagField\":{\"title\":\"$:/config/flibbles/relink/macros/tag-picker/tagField\",\"text\":\"fieldname\"},\"$:/config/flibbles/relink/macros/timeline/dateField\":{\"title\":\"$:/config/flibbles/relink/macros/timeline/dateField\",\"text\":\"fieldname\"},\"$:/config/flibbles/relink/operators/each\":{\"title\":\"$:/config/flibbles/relink/operators/each\",\"text\":\"fieldname\"},\"$:/config/flibbles/relink/operators/eachday\":{\"title\":\"$:/config/flibbles/relink/operators/eachday\",\"text\":\"fieldname\"},\"$:/config/flibbles/relink/operators/fields\":{\"title\":\"$:/config/flibbles/relink/operators/fields\",\"text\":\"fieldnamelist\"},\"$:/config/flibbles/relink/operators/get\":{\"title\":\"$:/config/flibbles/relink/operators/get\",\"text\":\"fieldname\"},\"$:/config/flibbles/relink/operators/has\":{\"title\":\"$:/config/flibbles/relink/operators/has\",\"text\":\"fieldname\"},\"$:/config/flibbles/relink/operators/listed\":{\"title\":\"$:/config/flibbles/relink/operators/listed\",\"text\":\"fieldname\"},\"$:/config/flibbles/relink/operators/nsort\":{\"title\":\"$:/config/flibbles/relink/operators/nsort\",\"text\":\"fieldname\"},\"$:/config/flibbles/relink/operators/nsortcs\":{\"title\":\"$:/config/flibbles/relink/operators/nsortcs\",\"text\":\"fieldname\"},\"$:/config/flibbles/relink/operators/sort\":{\"title\":\"$:/config/flibbles/relink/operators/sort\",\"text\":\"fieldname\"},\"$:/config/flibbles/relink/operators/sortan\":{\"title\":\"$:/config/flibbles/relink/operators/sortan\",\"text\":\"fieldname\"},\"$:/config/flibbles/relink/operators/sortcs\":{\"title\":\"$:/config/flibbles/relink/operators/sortcs\",\"text\":\"fieldname\"},\"$:/config/flibbles/relink/operators/has:field\":{\"title\":\"$:/config/flibbles/relink/operators/has:field\",\"text\":\"fieldname\"},\"$:/plugins/flibbles/relink-fieldnames/readme\":{\"title\":\"$:/plugins/flibbles/relink-fieldnames/readme\",\"text\":\"\\\\whitespace trim\\n\\nEnables Relink to relink field names associated with renamed tiddlers. The following fields cannot be interacted with in this way:\\n\\n\u003C\u003C\u003C\\n\u003C$set name=blacklisted filter={{$:/config/flibbles/relink-fieldnames/blacklist!!filter}}>\\n''\u003C$list counter=counter filter=\\\"[enlist\u003Cblacklisted>sort[]]\\\">\\n\u003C\u003CcurrentTiddler>>\u003Cbr>\\n\u003C/$list>''\\n\u003C/$set>\\n\u003C\u003C\u003C\\n\\nSee&#32;\u003Ca href={{$:/plugins/flibbles/relink-fieldnames!!source}} class=\\\"tc-tiddlylink-external\\\">the tw5-relink website\u003C/a>&#32;for more details and examples.\\n\"},\"$:/plugins/flibbles/relink-fieldnames/reference.js\":{\"title\":\"$:/plugins/flibbles/relink-fieldnames/reference.js\",\"text\":\"/*\\\\\\ntitle: $:/plugins/flibbles/relink-fieldnames/reference.js\\nmodule-type: relinkreference\\ntype: application/javascript\\n\\nTakes care of renaming \\n\\\\*/\\n\\nvar utils = require(\\\"./utils.js\\\");\\n\\nexports.name = 'fieldname';\\n\\nexports.report = function(reference, callback, options) {\\n\\tif (reference.field\\n\\t&& !utils.isReserved(reference.field, options)) {\\n\\t\\tcallback(reference.field, (reference.title || '') + \\\"!!\\\");\\n\\t}\\n};\\n\\nexports.relink = function(reference, fromTitle, toTitle, options) {\\n\\tif (reference.field === fromTitle\\n\\t&& !utils.isReserved(fromTitle, options)) {\\n\\t\\tif (utils.isReserved(toTitle, options)) {\\n\\t\\t\\treturn {impossible: true};\\n\\t\\t} else {\\n\\t\\t\\treference.field = toTitle;\\n\\t\\t\\treturn {output: reference};\\n\\t\\t}\\n\\t}\\n};\\n\",\"module-type\":\"relinkreference\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink-fieldnames/reference\":{\"title\":\"$:/plugins/flibbles/relink-fieldnames/reference\",\"caption\":\"Field Names\",\"tags\":\"$:/tags/flibbles/relink/Configuration\",\"text\":\"\\\\define label(arrow, setTo) \u003C$reveal type=\\\"nomatch\\\" state=\u003C\u003Ctable-state>> text=\\\"$setTo$\\\" default=\\\"no\\\">\u003C$button class=\\\"tc-btn-invisible tc-btn-dropdown\\\" set=\u003C\u003Ctable-state>> setTo=\\\"$setTo$\\\">{{$arrow$}} ''\u003C$link to=\u003C\u003Cfield>>/>''\u003C/$button> \u003Cspan class=\\\"tc-relink-fieldnames-count\\\">(\u003C$text text={{{ [has\u003Cfield>count[]] }}} />)\u003C/span>\u003C/$reveal>\\n\\n\\\\define entry(field)\\n\u003C$set name=\\\"table-state\\\" value=\u003C\u003Cqualify \\\"\\\"\\\"$:/state/flibbles/relink-fieldnames/table/$field$\\\"\\\"\\\">>>\\n\u003Ctr class=\\\"tc-relink-fieldnames-field\\\">\\n\u003Ctd colspan=\\\"3\\\">\\n\u003C\u003Clabel $:/core/images/right-arrow yes>>\\n\u003C\u003Clabel $:/core/images/down-arrow no>>\\n\u003C/td>\\n\u003C/tr>\\n\u003C$list filter=\\\"[has\u003Cfield>]\\\" >\\n\u003C$reveal tag=\\\"tr\\\" type=\\\"match\\\" state=\u003C\u003Ctable-state>> text=\\\"yes\\\" default=\\\"no\\\" class=\\\"tc-relink-fieldnames-entry\\\">\\n\u003Ctd class=\\\"tc-relink-fieldnames-margin\\\">\u003C/td>\\n\u003Ctd class=\\\"tc-relink-fieldnames-title\\\">\u003C$link to=\u003C\u003CcurrentTiddler>> />\u003C/td>\u003Ctd>\u003C$text text={{{ [all[current]get\u003Cfield>] }}} />\u003C/td>\\n\u003C/$reveal>\\n\u003C/$list>\\n\u003C/$set>\\n\\\\end\\n\\\\whitespace trim\\n\\nThe following is a table of all tiddlers currently being used as field names.\\n\\n\u003C$set name=blacklisted filter={{$:/config/flibbles/relink-fieldnames/blacklist!!filter}} >\\n\u003Ctable class=\\\"tc-relink-fieldnames-table\\\">\\n\u003Ctbody>\\n\u003C$list variable=\\\"field\\\" filter=\\\"[fields[]is[tiddler]] -[enlist\u003Cblacklisted>]\\\">\\n\u003C$macrocall $name=\\\"entry\\\" field=\u003C\u003Cfield>> />\\n\u003C/$list>\\n\u003C/tbody>\\n\u003C/table>\\n\u003C/$set>\\n\"},\"$:/plugins/flibbles/relink-fieldnames/relinkoperator.js\":{\"title\":\"$:/plugins/flibbles/relink-fieldnames/relinkoperator.js\",\"text\":\"/*\\\\\\ntitle: $:/plugins/flibbles/relink-fieldnames/relinkoperator.js\\nmodule-type: relinkoperator\\ntype: application/javascript\\n\\nUpdates the field names if they correspond to the renamed tiddler.\\n\\n\\\\*/\\n\\n/*jslint node: false, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nexports.name = 'field-names';\\n\\nvar utils = require(\\\"./utils.js\\\");\\n\\nvar configPrefix = \\\"$:/config/flibbles/relink/fields/\\\";\\n\\nexports.report = function(tiddler, callback, options) {\\n\\tvar fields = tiddler.fields;\\n\\tfor (var field in fields) {\\n\\t\\tif (!utils.isReserved(field, options)) {\\n\\t\\t\\tcallback(field, ': ' + utils.abridge(fields[field]), {soft: true});\\n\\t\\t}\\n\\t}\\n};\\n\\nexports.relink = function(tiddler, fromTitle, toTitle, changes, options) {\\n\\tif ($tw.utils.hop(tiddler.fields, fromTitle)\\n\\t&& !utils.isReserved(fromTitle, options)) {\\n\\t\\tif ($tw.utils.hop(tiddler.fields, toTitle)\\n\\t\\t|| utils.isReserved(toTitle, options)\\n\\t\\t|| !utils.isValidFieldName(toTitle)) {\\n\\t\\t\\t// There is already a [toTitle] field, and we won't clobber it.\\n\\t\\t\\t// Or this is an illegal field name\\n\\t\\t\\tchanges[fromTitle] = {impossible: true};\\n\\t\\t} else if ($tw.utils.hop(changes, fromTitle)) {\\n\\t\\t\\t// If the value changed, we need the changed value, assuming there\\n\\t\\t\\t// is one.\\n\\t\\t\\tchanges[toTitle] = {\\n\\t\\t\\t\\toutput: changes[fromTitle].output || tiddler.fields[fromTitle]\\n\\t\\t\\t};\\n\\t\\t\\t// But we leave the original change in place in case it described\\n\\t\\t\\t// an impossible relink or something.\\n\\t\\t\\tchanges[fromTitle].output = null;\\n\\t\\t} else {\\n\\t\\t\\tchanges[toTitle] = {output: tiddler.fields[fromTitle]};\\n\\t\\t\\tchanges[fromTitle] = {output: null};\\n\\t\\t}\\n\\t}\\n\\t// If this is a whitelist entry for the fromTitle field, update it.\\n\\tif (tiddler.fields.title === configPrefix + fromTitle) {\\n\\t\\tvar newTitle = configPrefix + toTitle;\\n\\t\\t// Make sure we wouldn't be deleting an existing whitelist entry.\\n\\t\\tchanges.title = (!options.wiki.tiddlerExists(newTitle)) ?\\n\\t\\t\\t{ output: newTitle }:\\n\\t\\t\\t{ impossible: true };\\n\\t}\\n};\\n\\nfunction abridge(string, length) {\\n\\treturn (string.length > length)? string.substr(0, length) + \\\"...\\\" : string;\\n};\\n\\n\",\"module-type\":\"relinkoperator\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink-fieldnames/setting/fieldnames.js\":{\"title\":\"$:/plugins/flibbles/relink-fieldnames/setting/fieldnames.js\",\"text\":\"/*\\\\\\n\\ntitle: $:/plugins/flibbles/relink-fieldnames/setting/fieldnames.js\\nmodule-type: relinksetting\\ntype: application/javascript\\n\\nThe setting module interfaces with the relink settings to store\\na configuration for the blacklist.\\n\\\\*/\\n\\nexports.name = \\\"fieldnames\\\";\\n\\nexports.generate = function(settings, tiddler, key, wiki) {\\n\\tif (key === \\\"blacklist\\\") {\\n\\t\\tvar tiddlers = wiki.filterTiddlers(tiddler.fields.filter);\\n\\t\\tvar fieldMap = Object.create(null);\\n\\t\\tfor (var i = 0; i \u003C tiddlers.length; i++) {\\n\\t\\t\\tfieldMap[tiddlers[i]] = true;\\n\\t\\t}\\n\\t\\tsettings.blacklist = function(field) {\\n\\t\\t\\treturn fieldMap[field] || false;\\n\\t\\t};\\n\\t}\\n\\t// else { I don't know what else there could be... }\\n};\\n\",\"module-type\":\"relinksetting\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink-fieldnames/setting/suffixes.js\":{\"title\":\"$:/plugins/flibbles/relink-fieldnames/setting/suffixes.js\",\"text\":\"/*\\\\\\n\\ntitle: $:/plugins/flibbles/relink-fieldnames/setting/suffixes.js\\nmodule-type: relinksetting\\ntype: application/javascript\\n\\nThe setting module interfaces with the relink settings to store\\nthe whitelist for all the operator suffixes\\n\\\\*/\\n\\nvar utils = require('$:/plugins/flibbles/relink/js/utils');\\n\\nexports.name = \\\"suffixes\\\";\\n\\nexports.generate = function(suffixes, tiddler, key) {\\n\\tvar data = utils.getType(tiddler.fields.text.trim());\\n\\tif (data) {\\n\\t\\tdata.source = tiddler.fields.title;\\n\\t\\t// Secret feature. You can access a config tiddler's\\n\\t\\t// fields from inside the fieldtype handler. Cool\\n\\t\\t// tricks can be done with this.\\n\\t\\tdata.fields = tiddler.fields;\\n\\t\\tvar pair = key.split('/');\\n\\t\\tvar name = pair[0];\\n\\t\\tdata.key = key;\\n\\t\\tsuffixes[name] = suffixes[name] || Object.create(null);\\n\\t\\tsuffixes[name][pair[1] || 1] = data;\\n\\t}\\n};\\n\",\"module-type\":\"relinksetting\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink-fieldnames/style\":{\"title\":\"$:/plugins/flibbles/relink-fieldnames/style\",\"tags\":\"$:/tags/Stylesheet\",\"text\":\".tc-relink-fieldnames-table {\\n\\twidth: 100%;\\n\\tborder: 0px;\\n}\\n\\n.tc-relink-fieldnames-field a {\\n\\tfont-weight: bold;\\n}\\n\\n.tc-relink-fieldnames-field td {\\n\\tborder: 0px;\\n}\\n\\n.tc-relink-fieldnames-count {\\n\\tcolor: lightgray;\\n}\\n\\n.tc-relink-fieldnames-title {\\n\\tmargin-left: 3pt;\\n\\tmin-width: 30%;\\n}\\n\\n.tc-relink-fieldnames-entry td {\\n\\tborder: 0px;\\n\\tborder-bottom: 1px solid \u003C\u003Ccolour table-border>>;\\n}\\n\\n.tc-relink-fieldnames-margin {\\n\\twidth: 25pt;\\n}\\n\"},\"$:/config/flibbles/relink/suffixes/contains\":{\"title\":\"$:/config/flibbles/relink/suffixes/contains\",\"text\":\"fieldname\"},\"$:/config/flibbles/relink/suffixes/days\":{\"title\":\"$:/config/flibbles/relink/suffixes/days\",\"text\":\"fieldname\"},\"$:/config/flibbles/relink/suffixes/field\":{\"title\":\"$:/config/flibbles/relink/suffixes/field\",\"text\":\"fieldname\"},\"$:/config/flibbles/relink/suffixes/regexp\":{\"title\":\"$:/config/flibbles/relink/suffixes/regexp\",\"text\":\"fieldname\"},\"$:/plugins/flibbles/relink-fieldnames/utils.js\":{\"title\":\"$:/plugins/flibbles/relink-fieldnames/utils.js\",\"text\":\"/*\\\\\\ntitle: $:/plugins/flibbles/relink-fieldnames/utils.js\\nmodule-type: library\\ntype: application/javascript\\n\\n\\\\*/\\n\\nvar blacklistTiddler = \\\"$:/config/flibbles/relink/fieldnames/blacklist\\\";\\nvar docPrefix = \\\"$:/language/Docs/Fields/\\\";\\n\\nvar whitelist = require('$:/plugins/flibbles/relink/js/utils.js').getContext('whitelist');\\n\\nwhitelist.hotDirectories.push(docPrefix);\\n\\nexports.isReserved = function(field, options) {\\n\\tvar method = options.settings.getConfig(\\\"fieldnames\\\").blacklist || function() { return true; };\\n\\treturn method(field);\\n};\\n\\nexports.abridge = function(string, length) {\\n\\tif (typeof string === \\\"string\\\") {\\n\\t\\tlength = length || 30;\\n\\t\\tstring = string.replace(/\\\\s+/g, \\\" \\\");\\n\\t\\treturn (string.length > length)? string.substr(0, length) + \\\"...\\\" : string;\\n\\t}\\n\\treturn string;\\n}\\n\\n// Pre v5.2.0, this will be false. But we can't rely on utils.isValidFieldName\\n// entirely, because it is forgiving about capitalization when we can't be.\\nvar capitalizationAllowed = $tw.utils.isValidFieldName(\\\"A:\\\");\\n\\nexports.isValidFieldName = function(field) {\\n\\treturn $tw.utils.isValidFieldName(field)\\n\\t\\t&& (capitalizationAllowed || !/[A-Z]/.test(field));\\n};\\n\\nexports.blurbOperands = function(operator) {\\n\\tvar string = ''\\n\\tfor (var index = 0; index \u003C operator.operands.length; index++) {\\n\\t\\tif (index > 0) {\\n\\t\\t\\tstring += ',';\\n\\t\\t}\\n\\t\\tvar operand = operator.operands[index];\\n\\t\\tif (operand.indirect) {\\n\\t\\t\\tstring += '{' + exports.abridge(operand.text) + '}';\\n\\t\\t} else if (operand.variable) {\\n\\t\\t\\tstring += '\u003C' + exports.abridge(operand.text) + '>';\\n\\t\\t} else {\\n\\t\\t\\tstring += '[' + exports.abridge(operand.text) + ']';\\n\\t\\t}\\n\\t}\\n\\treturn string;\\n};\\n\",\"module-type\":\"library\",\"type\":\"application/javascript\"}}}"},
{"name":"Relink Markdown","title":"$:/plugins/flibbles/relink-markdown","description":"Markdown support for Relink","author":"Flibbles","version":"2.1.0","core-version":">=5.1.22","parent-plugin":"$:/plugins/flibbles/relink","source":"https://github.com/flibbles/tw5-relink","list":"readme","dependents":"","plugin-type":"plugin","type":"application/json","text":"{\"tiddlers\":{\"$:/plugins/flibbles/relink/js/fieldtypes/markdown.js\":{\"title\":\"$:/plugins/flibbles/relink/js/fieldtypes/markdown.js\",\"text\":\"/*\\\\\\nmodule-type: relinkfieldtype\\ntitle: $:/plugins/flibbles/relink/js/fieldtypes/markdown.js\\ntype: application/javascript\\n\\nThis relinks tiddlers which contain markdown. It tries to be agnostic to\\nwhichever markdown plugin you're using.\\n\\n\\\\*/\\n\\nvar Rebuilder = require(\\\"$:/plugins/flibbles/relink/js/utils/rebuilder.js\\\");\\nvar wikitextHandler = require(\\\"$:/plugins/flibbles/relink/js/utils.js\\\").getType('wikitext');\\nvar utils = require(\\\"$:/plugins/flibbles/relink/js/utils/markdown.js\\\");\\nvar WikiParser = require(\\\"$:/core/modules/parsers/wikiparser/wikiparser.js\\\")['text/vnd.tiddlywiki'];\\n\\nfunction MarkdownWalker(text, options) {\\n\\tthis.wiki = options.wiki;\\n\\tthis.options = Object.create(options);\\n\\tthis.options.macrodefCanBeDisabled = true;\\n\\tif(!this.mdInlineRuleClasses) {\\n\\t\\tMarkdownWalker.prototype.mdInlineRuleClasses = $tw.modules.createClassesFromModules(\\\"relinkmarkdownrule\\\",\\\"inline\\\",$tw.MarkdownRuleBase);\\n\\t}\\n\\tif(!this.mdBlockRuleClasses) {\\n\\t\\tMarkdownWalker.prototype.mdBlockRuleClasses = $tw.modules.createClassesFromModules(\\\"relinkmarkdownrule\\\",\\\"block\\\",$tw.MarkdownRuleBase);\\n\\t}\\n\\tthis.source = text || \\\"\\\";\\n\\tthis.sourceLength = this.source.length;\\n\\t// Set current parse position\\n\\tthis.pos = 0;\\n\\t// Instantiate the parser block and inline rules\\n\\tthis.blockRules = this.instantiateRules(this.mdBlockRuleClasses,\\\"block\\\",0);\\n\\tthis.inlineRules = this.instantiateRules(this.mdInlineRuleClasses,\\\"inline\\\",0);\\n\\t// instantiateRules first with indent==undefined so we can match regardless\\n\\t// of tabdepth. Now we need to be strict about it.\\n\\tthis.indent = 0;\\n\\tthis.parseBlocks();\\n};\\n\\nMarkdownWalker.prototype = Object.create(WikiParser.prototype);\\n\\nmodule.exports\\n\\nMarkdownWalker.prototype.parseBlock = function(terminatorRegExpString) {\\n\\tvar terminatorRegExp = /([^\\\\S\\\\n]*\\\\r?\\\\n)/mg;\\n\\tthis.skipEmptyLines();\\n\\tif(this.pos >= this.sourceLength) {\\n\\t\\treturn [];\\n\\t}\\n\\t// Look for a block rule that applies at the current position\\n\\tvar nextMatch = this.findNextMatch(this.blockRules, this.pos);\\n\\tif(nextMatch && nextMatch.matchIndex === this.pos) {\\n\\t\\treturn this.handleRule(nextMatch);\\n\\t}\\n\\treturn this.parseInlineRun(terminatorRegExp);\\n};\\n\\nMarkdownWalker.prototype.parseInlineRunTerminated = function(terminatorRegExp,options) {\\n\\toptions = options || {};\\n\\tvar tree = [];\\n\\t// Find the next occurrence of the terminator\\n\\tterminatorRegExp.lastIndex = this.pos;\\n\\tvar terminatorMatch = terminatorRegExp.exec(this.source);\\n\\t// Find the next occurrence of a inlinerule\\n\\tvar inlineRuleMatch = this.findNextMatch(this.inlineRules,this.pos);\\n\\t// Loop around until we've reached the end of the text\\n\\twhile(this.pos \u003C this.sourceLength && (terminatorMatch || inlineRuleMatch)) {\\n\\t\\t// Return if we've found the terminator, and it precedes any inline rule match\\n\\t\\tif(terminatorMatch) {\\n\\t\\t\\tif(!inlineRuleMatch || inlineRuleMatch.matchIndex >= terminatorMatch.index) {\\n\\t\\t\\t\\tthis.handleWikitext(this.pos, terminatorMatch.index);\\n\\t\\t\\t\\t//if(options.eatTerminator) {\\n\\t\\t\\t\\t\\tthis.pos += terminatorMatch[0].length;\\n\\t\\t\\t\\t//}\\n\\t\\t\\t\\treturn tree;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\t// Process any inline rule, along with the text preceding it\\n\\t\\tif(inlineRuleMatch) {\\n\\t\\t\\t// Preceding text\\n\\t\\t\\tthis.handleWikitext(this.pos, inlineRuleMatch.matchIndex);\\n\\t\\t\\tthis.handleRule(inlineRuleMatch);\\n\\t\\t\\t// Look for the next inline rule\\n\\t\\t\\tinlineRuleMatch = this.findNextMatch(this.inlineRules,this.pos);\\n\\t\\t\\t// Look for the next terminator match\\n\\t\\t\\tterminatorRegExp.lastIndex = this.pos;\\n\\t\\t\\tterminatorMatch = terminatorRegExp.exec(this.source);\\n\\t\\t}\\n\\t}\\n\\t// Process the remaining text\\n\\tthis.handleWikitext(this.pos, this.sourceLength);\\n\\treturn tree;\\n};\\n\\nMarkdownWalker.prototype.skipEmptyLines = function() {\\n\\tvar emptyRegExp = /(?:[^\\\\S\\\\n]*\\\\n)+/mg;\\n\\temptyRegExp.lastIndex = this.pos;\\n\\tvar emptyMatch = emptyRegExp.exec(this.source);\\n\\tif(emptyMatch && emptyMatch.index === this.pos) {\\n\\t\\tthis.pos = emptyRegExp.lastIndex;\\n\\t}\\n};\\n\\nfunction MarkdownReporter(text, callback, options) {\\n\\tthis.callback = callback;\\n\\tMarkdownWalker.call(this, text, options);\\n};\\n\\nMarkdownReporter.prototype = Object.create(MarkdownWalker.prototype);\\n\\nMarkdownReporter.prototype.handleRule = function(ruleInfo) {\\n\\tif (ruleInfo.rule.report) {\\n\\t\\truleInfo.rule.report(this.source, this.callback, this.options);\\n\\t} else {\\n\\t\\tif (ruleInfo.rule.matchRegExp !== undefined) {\\n\\t\\t\\tthis.pos = ruleInfo.rule.matchRegExp.lastIndex;\\n\\t\\t} else {\\n\\t\\t\\t// We can't easily determine the end of this\\n\\t\\t\\t// rule match. We'll \\\"parse\\\" it so that\\n\\t\\t\\t// parser.pos gets updated, but we throw away\\n\\t\\t\\t// the results.\\n\\t\\t\\truleInfo.rule.parse();\\n\\t\\t}\\n\\t}\\n};\\n\\nMarkdownReporter.prototype.handleWikitext = function(startPos, end) {\\n\\tif (startPos \u003C end) {\\n\\t\\tvar config = utils.getSettings(this.wiki);\\n\\t\\tif (config.wikitext) {\\n\\t\\t\\tvar substr = this.source.substring(this.pos, end);\\n\\n\\t\\t\\tvar pragma = config.wikitextPragma;\\n\\t\\t\\tvar wikiEntry = wikitextHandler.report(pragma + substr, this.callback, this.options);\\n\\t\\t}\\n\\t}\\n\\tthis.pos = end;\\n};\\n\\nexports.report = function(markdowntext, callback, options) {\\n\\tnew MarkdownReporter(markdowntext, callback, options);\\n};\\n\\nfunction MarkdownRelinker(text, fromTitle, toTitle, options) {\\n\\tthis.fromTitle = fromTitle;\\n\\tthis.toTitle = toTitle;\\n\\tthis.builder = new Rebuilder(text);\\n\\tMarkdownWalker.call(this, text, options);\\n};\\n\\nMarkdownRelinker.prototype = Object.create(MarkdownWalker.prototype);\\n\\nMarkdownRelinker.prototype.handleRule = function(ruleInfo) {\\n\\tvar newEntry = ruleInfo.rule.relink(this.source, this.fromTitle, this.toTitle, this.options);\\n\\tif (newEntry !== undefined) {\\n\\t\\tif (newEntry.impossible) {\\n\\t\\t\\tthis.impossible = true;\\n\\t\\t}\\n\\t\\tif (newEntry.output) {\\n\\t\\t\\tthis.builder.add(newEntry.output, ruleInfo.matchIndex, this.pos);\\n\\t\\t}\\n\\t}\\n};\\n\\nMarkdownRelinker.prototype.handleWikitext = function(startPos, end) {\\n\\tif (startPos \u003C end) {\\n\\t\\tvar config = utils.getSettings(this.wiki);\\n\\t\\tif (config.wikitext) {\\n\\t\\t\\tvar substr = this.source.substring(this.pos, end);\\n\\n\\t\\t\\tvar pragma = config.wikitextPragma;\\n\\t\\t\\tvar wikiEntry = wikitextHandler.relink(pragma + substr, this.fromTitle, this.toTitle, this.options);\\n\\t\\t\\tif (wikiEntry != undefined) {\\n\\t\\t\\t\\tif (wikiEntry.impossible) {\\n\\t\\t\\t\\t\\tthis.impossible = true;\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tif (wikiEntry.output) {\\n\\t\\t\\t\\t\\tthis.builder.add(wikiEntry.output.slice(pragma.length), startPos, end);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\tthis.pos = end;\\n};\\n\\nexports.name = \\\"markdown\\\";\\n\\nexports.relink = function(markdowntext, fromTitle, toTitle, options) {\\n\\tvar relinker = new MarkdownRelinker(markdowntext, fromTitle, toTitle, options),\\n\\t\\tentry;\\n\\tif (relinker.builder.changed() || relinker.impossible) {\\n\\t\\tentry = {\\n\\t\\t\\toutput: relinker.builder.results(),\\n\\t\\t\\timpossible: relinker.impossible };\\n\\t}\\n\\treturn entry;\\n};\\n\",\"module-type\":\"relinkfieldtype\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/relinkoperations/text/markdowntext/codeblock.js\":{\"title\":\"$:/plugins/flibbles/relink/js/relinkoperations/text/markdowntext/codeblock.js\",\"text\":\"/*\\\\\\nmodule-type: relinkmarkdownrule\\ntitle: $:/plugins/flibbles/relink/js/relinkoperations/text/markdowntext/codeblock.js\\ntype: application/javascript\\n\\n```javascript\\ncode\\n```\\n\\n\\\\*/\\n\\nvar utils = require(\\\"$:/plugins/flibbles/relink/js/utils/markdown\\\");\\n\\nexports.name = \\\"codeblock\\\";\\nexports.types = {inline: true};\\n\\nexports.init = function(parser) {\\n\\tthis.parser = parser;\\n\\tthis.matchRegExp = /(```+)[^\\\\n`]*(?:\\\\n|$)/mg;\\n\\tthis.maxIndent = 3;\\n};\\n\\nexports.relink = function(text, fromTitle, toTitle, options) {\\n\\tvar endRegExp = new RegExp(\\\"^ {0,3}\\\" + this.match[1] + \\\"+[^\\\\\\\\S\\\\\\\\n]*\\\\\\\\n\\\", \\\"mg\\\");\\n\\tendRegExp.lastIndex = this.matchRegExp.lastIndex;\\n\\tvar endMatch = endRegExp.exec(this.parser.source);\\n\\tif (endMatch) {\\n\\t\\tthis.parser.pos = endRegExp.lastIndex;\\n\\t} else {\\n\\t\\tthis.parser.pos = this.parser.sourceLength;\\n\\t}\\n\\treturn undefined;\\n};\\n\\nexports.report = exports.relink;\\n\",\"module-type\":\"relinkmarkdownrule\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/relinkoperations/text/markdowntext/codeinline.js\":{\"title\":\"$:/plugins/flibbles/relink/js/relinkoperations/text/markdowntext/codeinline.js\",\"text\":\"/*\\\\\\nmodule-type: relinkmarkdownrule\\ntitle: $:/plugins/flibbles/relink/js/relinkoperations/text/markdowntext/codeinline.js\\ntype: application/javascript\\n\\nHandles markdown `code` and ``code``.\\n\\n\\\\*/\\n\\nvar utils = require(\\\"$:/plugins/flibbles/relink/js/utils/markdown\\\");\\n\\nexports.name = \\\"codeinline\\\";\\nexports.types = {inline: true};\\n\\nexports.init = function(parser) {\\n\\tthis.parser = parser;\\n};\\n\\nexports.findNextMatch = function(startPos) {\\n\\tvar match, matchRegExp = /`+/mg;\\n\\tmatchRegExp.lastIndex = startPos;\\n\\twhile (match = matchRegExp.exec(this.parser.source)) {\\n\\t\\tvar next = this.parser.source.indexOf(match[0], matchRegExp.lastIndex);\\n\\t\\t// make sure we find the corresponding ticks\\n\\t\\tif (next >= 0) {\\n\\t\\t\\t// Make sure it's the right length\\n\\t\\t\\tvar end = next + match[0].length;\\n\\t\\t\\tif (match[0].length \u003C 3 || !isLineStart(this.parser.source, next)) {\\n\\t\\t\\t\\tif (this.parser.source.charAt(end) !== '`') {\\n\\t\\t\\t\\t\\t// make sure there aren't paragraph breaks between the points\\n\\t\\t\\t\\t\\tvar nextGraph = utils.indexOfParagraph(this.parser.source, matchRegExp.lastIndex);\\n\\t\\t\\t\\t\\tif (nextGraph \u003C 0 || nextGraph > next) {\\n\\t\\t\\t\\t\\t\\tthis.end = end;\\n\\t\\t\\t\\t\\t\\treturn match.index;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\treturn undefined;\\n};\\n\\nfunction isLineStart(text, pos) {\\n\\t// if 3 or less spaces precede it, it's a line start.\\n\\tvar p = text.lastIndexOf('\\\\n', pos);\\n\\tif (pos - p > 3) {\\n\\t\\treturn false;\\n\\t}\\n\\twhile (++p \u003C pos) {\\n\\t\\tif (text.charAt(p) !== ' ') {\\n\\t\\t\\treturn false;\\n\\t\\t}\\n\\t}\\n\\treturn true;\\n};\\n\\nexports.relink = function() {\\n\\tthis.parser.pos = this.end;\\n\\treturn undefined;\\n};\\n\\nexports.report = exports.relink;\\n\",\"module-type\":\"relinkmarkdownrule\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/relinkoperations/text/markdowntext/footnote.js\":{\"title\":\"$:/plugins/flibbles/relink/js/relinkoperations/text/markdowntext/footnote.js\",\"text\":\"/*\\\\\\nmodule-type: relinkmarkdownrule\\ntitle: $:/plugins/flibbles/relink/js/relinkoperations/text/markdowntext/footnote.js\\ntype: application/javascript\\n\\nHandles markdown footnotes\\n\\n[1]: #link\\n\\n\\\\*/\\n\\nvar utils = require(\\\"$:/plugins/flibbles/relink/js/utils/markdown\\\");\\n\\nexports.name = \\\"markdownfootnote\\\";\\nexports.types = {block: true};\\n\\nexports.init = function(parser) {\\n\\tthis.parser = parser;\\n\\tthis.matchRegExp = /\\\\[((?:[^\\\\\\\\\\\\]]|\\\\\\\\.)*)\\\\]:(\\\\s*)(#?)(\\\\S+)([^\\\\S\\\\n]*(?:\\\\n|$))/mg;\\n\\tthis.maxIndent = 3;\\n};\\n\\nexports.report = function(text, callback, options) {\\n\\tvar m = this.match,\\n\\t\\tlink = decodeURIComponent(m[4]),\\n\\t\\tentry;\\n\\tthis.parser.pos = m.index + m[0].length;\\n\\tif (m[1].charAt(0) !== \\\"^\\\"\\n\\t && (m[3] === \\\"#\\\" || options.wiki.isImageTiddler(link))) {\\n\\t\\tcallback(link, '[' + utils.abridge(m[1]) + ']:');\\n\\t}\\n};\\n\\nexports.relink = function(text, fromTitle, toTitle, options) {\\n\\tvar m = this.match,\\n\\t\\tlink = m[4],\\n\\t\\tentry;\\n\\tthis.parser.pos = m.index + m[0].length;\\n\\tif (m[1].charAt(0) !== \\\"^\\\"\\n\\t && (m[3] === \\\"#\\\" || options.wiki.isImageTiddler(toTitle))\\n\\t && decodeURIComponent(link) === fromTitle) {\\n\\t\\tentry = { output: this.indentString + \\\"[\\\" + m[1] + \\\"]:\\\" + m[2] + m[3] + utils.encodeLink(toTitle) + m[5] };\\n\\t}\\n\\treturn entry;\\n};\\n\",\"module-type\":\"relinkmarkdownrule\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/relinkoperations/text/markdowntext/link.js\":{\"title\":\"$:/plugins/flibbles/relink/js/relinkoperations/text/markdowntext/link.js\",\"text\":\"/*\\\\\\nmodule-type: relinkmarkdownrule\\ntitle: $:/plugins/flibbles/relink/js/relinkoperations/text/markdowntext/link.js\\ntype: application/javascript\\n\\nHandles markdown links\\n\\n[caption](#link)\\n\\n\\\\*/\\n\\nvar utils = require(\\\"$:/plugins/flibbles/relink/js/utils/markdown\\\");\\nvar markdown = require(\\\"$:/plugins/flibbles/relink/js/utils\\\").getType('markdown');\\n\\nexports.name = \\\"markdownlink\\\";\\nexports.types = {inline: true};\\n\\nexports.init = function(parser) {\\n\\tthis.parser = parser;\\n};\\n\\nexports.findNextMatch = function(startPos) {\\n\\tthis.endMatch = this.matchLink(this.parser.source, startPos);\\n\\treturn this.endMatch ? this.endMatch.index : undefined;\\n};\\n\\n/**A zero side-effect method which returns a regexp which pretended to match\\n * the whole link, caption and all. I do this instead of just using a\\n * regexp to begin with, because markdown links require context-free grammar\\n * matching.\\n * Currently, it doesn't properly set match[0]. No need as of yet.\\n * 1. \\\"!\\\"\\n * 2. caption\\n * 3. \\\"\\\\s*#?\\\"\\n * 4. \\\"link\\\"\\n * 5. \\\"\\\\s*'tooltip'\\\"\\n */\\nexports.matchLink = function(text, pos) {\\n\\tpos = pos-1;\\n\\tvar match = undefined;\\n\\tdo {\\n\\t\\tpos = text.indexOf('[', pos+1);\\n\\t\\tif (pos \u003C 0) {\\n\\t\\t\\treturn undefined;\\n\\t\\t}\\n\\t\\tvar caption = this.getEnclosed(text, pos, '[', ']');\\n\\t\\tif (caption === undefined) {\\n\\t\\t\\tcontinue;\\n\\t\\t}\\n\\t\\tvar linkStart = pos + caption.length+2;\\n\\t\\tif (text.charAt(linkStart) !== '(') {\\n\\t\\t\\tcontinue;\\n\\t\\t}\\n\\t\\t// match[1] and match[2] are the \\\"!\\\" and \\\"caption\\\", filled in later.\\n\\t\\tvar regExp = /\\\\(()()(\\\\s*#?)((?:[^\\\\s\\\\(\\\\)]|\\\\([^\\\\s\\\\(\\\\)]*\\\\))+)((?:\\\\s+(?:'(?:[^'\\\\\\\\]|\\\\\\\\.)*'|\\\"(?:[^\\\"\\\\\\\\]|\\\\\\\\.)*\\\"|\\\\([^)]*\\\\)))?\\\\s*)\\\\)/g;\\n\\t\\tregExp.lastIndex = linkStart;\\n\\t\\tmatch = regExp.exec(text);\\n\\t\\tif (match && match.index === linkStart && utils.indexOfParagraph(match[0]) \u003C 0) {\\n\\t\\t\\tmatch[2] = caption;\\n\\t\\t\\tif (text.charAt(pos-1) === \\\"!\\\") {\\n\\t\\t\\t\\tmatch.index = pos-1;\\n\\t\\t\\t\\tmatch[1] = \\\"!\\\";\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tmatch.index = pos;\\n\\t\\t\\t}\\n\\t\\t} else {\\n\\t\\t\\tmatch = undefined;\\n\\t\\t}\\n\\t} while (!match);\\n\\treturn match;\\n};\\n\\nexports.report = function(text, callback, options) {\\n\\tvar em = this.endMatch,\\n\\t\\tcaption = em[2],\\n\\t\\tprefix = em[1],\\n\\t\\tisImage = (prefix === '!'),\\n\\t\\tlink = em[4],\\n\\t\\thash = '#';\\n\\tif (prefix) {\\n\\t\\thash = '';\\n\\t}\\n\\tthis.parser.pos = em.index + em[1].length + caption.length + em[0].length + 2;\\n\\tif (!isImage) {\\n\\t\\tmarkdown.report(caption, function(title, blurb) {\\n\\t\\t\\tcallback(title, prefix + '[' + (blurb || '') + '](' + hash + link + ')');\\n\\t\\t}, options);\\n\\t}\\n\\tif (isImage !== (em[3].lastIndexOf('#') >= 0)) {\\n\\t\\tvar safeCaption = utils.abridge(caption);\\n\\t\\ttry {\\n\\t\\t\\tcallback(decodeURIComponent(link), em[1] + '[' + safeCaption + '](' + hash + ')');\\n\\t\\t} catch (e) {\\n\\t\\t\\t// It must be a malformed link. Not our problem.\\n\\t\\t\\t// Just move on.\\n\\t\\t}\\n\\t}\\n};\\n\\nexports.relink = function(text, fromTitle, toTitle, options) {\\n\\tvar entry = {},\\n\\t\\tem = this.endMatch,\\n\\t\\tmodified = false,\\n\\t\\tcaption = em[2],\\n\\t\\tisImage = (em[1] === '!'),\\n\\t\\tlink = em[4];\\n\\tthis.parser.pos = em.index + em[1].length + caption.length + em[0].length + 2;\\n\\tif (!isImage) {\\n\\t\\tvar newCaption = markdown.relink(caption, fromTitle, toTitle, options);\\n\\t\\tif (newCaption) {\\n\\t\\t\\tif (newCaption.output) {\\n\\t\\t\\t\\tif (this.canBeCaption(newCaption.output)) {\\n\\t\\t\\t\\t\\tcaption = newCaption.output;\\n\\t\\t\\t\\t\\tmodified = true;\\n\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\tentry.impossible = true;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t\\tif (newCaption.impossible) {\\n\\t\\t\\t\\tentry.impossible = true;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\t// I don't know why internal images links don't use the '#', but links\\n\\t// do, but that's just how it is.\\n\\tif (isImage !== (em[3].lastIndexOf('#') >=0)) {\\n\\t\\ttry {\\n\\t\\t\\tif (decodeURIComponent(link) === fromTitle) {\\n\\t\\t\\t\\tlink = utils.encodeLink(toTitle);\\n\\t\\t\\t\\tmodified = true;\\n\\t\\t\\t}\\n\\t\\t} catch (e) {\\n\\t\\t\\t// It must be a malformed link. Not our problem.\\n\\t\\t\\t// Keep going in case the caption needs relinking.\\n\\t\\t}\\n\\t}\\n\\tif (modified) {\\n\\t\\t// This way preserves whitespace\\n\\t\\tentry.output = em[1]+\\\"[\\\"+caption+\\\"](\\\"+em[3]+link+em[5]+\\\")\\\";\\n\\t}\\n\\tif (modified || entry.impossible) {\\n\\t\\treturn entry;\\n\\t}\\n\\treturn undefined;\\n};\\n\\nexports.canBeCaption = function(caption) {\\n\\treturn this.indexOfClose(caption+']', -1, '[', ']') === caption.length;\\n};\\n\\nexports.getEnclosed = function(text, pos, openChar, closeChar) {\\n\\tvar capEnd = this.indexOfClose(text, pos, openChar, closeChar);\\n\\tif (capEnd \u003C 0) {\\n\\t\\treturn undefined;\\n\\t}\\n\\tvar enclosed = text.substring(pos+1, capEnd);\\n\\tif (enclosed.match(/\\\\n\\\\s*\\\\n/)) {\\n\\t\\t// Paragraph breaks are not allowed\\n\\t\\treturn undefined;\\n\\t}\\n\\treturn enclosed;\\n};\\n\\nexports.indexOfClose = function(text, pos, openChar, closeChar) {\\n\\tvar close = pos-1,\\n\\t\\topen = pos; // First char is open\\n\\tdo {\\n\\t\\tclose = text.indexOf(closeChar, close+1);\\n\\t\\tif (close \u003C 0) {\\n\\t\\t\\treturn -1;\\n\\t\\t}\\n\\t\\topen = text.indexOf(openChar, open+1);\\n\\t} while (open >= 0 && open \u003C= close);\\n\\treturn close;\\n};\\n\",\"module-type\":\"relinkmarkdownrule\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/relinkoperations/text/markdowntext/markdownrulebase.js\":{\"title\":\"$:/plugins/flibbles/relink/js/relinkoperations/text/markdowntext/markdownrulebase.js\",\"text\":\"/*\\\\\\ntitle: $:/plugins/flibbles/relink/js/relinkoperations/text/markdowntext/markdownrulebase.js\\ntype: application/javascript\\nmodule-type: global\\n\\nBase class for markdown parser rules\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nvar utils = require(\\\"$:/plugins/flibbles/relink/js/utils/markdown\\\");\\n\\nvar MarkdownRuleBase = function() {};\\n\\nMarkdownRuleBase.prototype.init = function(parser) {\\n\\tthis.parser = parser;\\n};\\n\\nMarkdownRuleBase.prototype.findNextMatch = function(startPos) {\\n\\tthis.matchRegExp.lastIndex = startPos;\\n\\twhile (this.match = this.matchRegExp.exec(this.parser.source)) {\\n\\t\\tif (utils.indexOfParagraph(this.match[0]) >= 0) {\\n\\t\\t\\tcontinue;\\n\\t\\t}\\n\\t\\tif (this.maxIndent !== undefined) {\\n\\t\\t\\tvar indent = utils.indentation(this.parser.source,this.match.index);\\n\\t\\t\\tif (indent \u003C 0\\n\\t\\t\\t || (this.parser.indent !== undefined\\n\\t\\t\\t && (indent > this.parser.indent + this.maxIndent))) {\\n\\t\\t\\t\\tcontinue;\\n\\t\\t\\t}\\n\\t\\t\\tvar nl = this.parser.source.lastIndexOf('\\\\n', this.match.index-1)+1;\\n\\t\\t\\tthis.indentString = this.parser.source.substring(nl, this.match.index);\\n\\t\\t\\treturn nl \u003C startPos ? startPos : nl;\\n\\t\\t}\\n\\t\\treturn this.match.index;\\n\\t}\\n\\treturn undefined;\\n};\\n\\n\\nexports.MarkdownRuleBase = MarkdownRuleBase;\\n\\n})();\\n\",\"type\":\"application/javascript\",\"module-type\":\"global\"},\"$:/plugins/flibbles/relink/js/relinkoperations/text/markdowntext.js\":{\"title\":\"$:/plugins/flibbles/relink/js/relinkoperations/text/markdowntext.js\",\"text\":\"/*\\\\\\nmodule-type: relinktext\\ntitle: $:/plugins/flibbles/relink/js/relinkoperations/text/markdowntext.js\\ntype: application/javascript\\n\\nThis relinks tiddlers which contain markdown. It tries to be agnostic to\\nwhichever markdown plugin you're using.\\n\\n\\\\*/\\n\\n/*jslint node: false, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nvar Placeholder = require(\\\"$:/plugins/flibbles/relink/js/utils/placeholder.js\\\");\\nvar markdownHandler = require('$:/plugins/flibbles/relink/js/utils.js').getType('markdown');\\n\\nexports.type = \\\"text/x-markdown\\\";\\n\\nexports.report = markdownHandler.report;\\n\\nexports.relink = function(text, fromTitle, toTitle, options) {\\n\\tvar placeholder = new Placeholder();\\n\\tvar extraOptions = $tw.utils.extend(\\n\\t\\t{\\n\\t\\t\\tplaceholder: placeholder\\n\\t\\t}, options);\\n\\tvar entry = markdownHandler.relink(text, fromTitle, toTitle, extraOptions);\\n\\tif (entry && entry.output) {\\n\\t\\t// If there's output, we've also got to prepend any macros\\n\\t\\t// that the placeholder defined.\\n\\t\\tvar preamble = placeholder.getPreamble();\\n\\t\\tentry.output = preamble + entry.output\\n\\t}\\n\\treturn entry;\\n};\\n\",\"module-type\":\"relinktext\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/utils/markdown.js\":{\"title\":\"$:/plugins/flibbles/relink/js/utils/markdown.js\",\"text\":\"/*\\\\\\nmodule-type: library\\ntitle: $:/plugins/flibbles/relink/js/utils/markdown.js\\ntype: application/javascript\\n\\nMethods used in markdown parsing.\\n\\n\\\\*/\\n\\n// tiddlywiki/markdown can't handle having these characters escaped, so we\\n// need to unescape them.\\nvar problemChars = {\\n\\t\\\"23\\\": \\\"#\\\",\\n\\t\\\"24\\\": \\\"$\\\",\\n\\t\\\"26\\\": \\\"&\\\",\\n\\t\\\"2B\\\": \\\"+\\\",\\n\\t\\\"2C\\\": \\\",\\\",\\n\\t\\\"2F\\\": \\\"/\\\",\\n\\t\\\"3A\\\": \\\":\\\",\\n\\t\\\"3B\\\": \\\";\\\",\\n\\t\\\"3D\\\": \\\"=\\\",\\n\\t\\\"3F\\\": \\\"?\\\",\\n\\t\\\"40\\\": \\\"@\\\",\\n};\\n\\nexports.encodeLink = function(title) {\\n\\tvar encoded = encodeURIComponent(title),\\n\\t\\tbalance = 0;\\n\\tencoded = encoded.replace(/[\\\\(\\\\)]/g, function(p) {\\n\\t\\tif (p === '(') {\\n\\t\\t\\tif (balance >=1) {\\n\\t\\t\\t\\treturn '%28';\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tbalance++;\\n\\t\\t\\t}\\n\\t\\t} else {\\n\\t\\t\\tif (balance \u003C= 0) {\\n\\t\\t\\t\\treturn '%29';\\n\\t\\t\\t}\\n\\t\\t\\tbalance--;\\n\\t\\t}\\n\\t\\treturn p;\\n\\t});\\n\\twhile (balance--) {\\n\\t\\tvar i = encoded.lastIndexOf('(');\\n\\t\\tencoded = encoded.substr(0, i) + '%28' + encoded.substr(i+1);\\n\\t}\\n\\t// tiddlywiki/markdown can't handle these characters escaped\\n\\treturn encoded.replace(/%([0-9A-F]{2})/g, function(str, code) {\\n\\t\\treturn problemChars[code] || str;\\n\\t});\\n};\\n\\n// Returns index of next paragraph, or -1\\nexports.indexOfParagraph = function(text, startPos) {\\n\\tvar regExp = /\\\\n\\\\s*\\\\n/mg;\\n\\tregExp.lastIndex = startPos || 0;\\n\\tvar match = regExp.exec(text);\\n\\treturn match ? regExp.lastIndex : -1;\\n};\\n\\n/** Returns how much indentation there is between pos and the previous\\n * newline (or other char).\\n * tabs are counted as 4 chars.\\n */\\nexports.indentation = function(text, pos, startChar) {\\n\\tvar p = text.lastIndexOf(startChar || '\\\\n', pos-1);\\n\\tvar count = 0;\\n\\twhile (++p \u003C pos) {\\n\\t\\tvar c = text.charAt(p);\\n\\t\\tif (c === ' ') {\\n\\t\\t\\tcount++;\\n\\t\\t} else if (c === '\\\\t') {\\n\\t\\t\\tcount = count + 4 - (count%4);\\n\\t\\t} else {\\n\\t\\t\\treturn -1;\\n\\t\\t}\\n\\t}\\n\\treturn count;\\n};\\n\\n\\nexports.getSettings = function(wiki) {\\n\\t// Stored here so it's only calculated once, but also so it's different\\n\\t// per tiddler for testing\\n\\tif (wiki._markdownSettings === undefined) {\\n\\t\\tvar settings = Object.create(null);\\n\\t\\tvar text = wiki.getTiddlerText(\\\"$:/config/markdown/renderWikiText\\\");\\n\\t\\tsettings.wikitext = (text === undefined || text.toLowerCase() === \\\"true\\\");\\n\\t\\ttext = wiki.getTiddlerText(\\\"$:/config/markdown/renderWikiTextPragma\\\");\\n\\t\\tif (text) {\\n\\t\\t\\ttext = text.trim() + '\\\\n';\\n\\t\\t} else {\\n\\t\\t\\ttext = '';\\n\\t\\t}\\n\\t\\tsettings.wikitextPragma = text;\\n\\t\\twiki._markdownSettings = settings;\\n\\t}\\n\\treturn wiki._markdownSettings;\\n};\\n\\n// This is the maximum length a reported caption may be\\nexports.captionLength = 15;\\n\\n/** Abridges a string to one that is more log-friendly.\\n */\\nexports.abridge = function(string) {\\n\\tvar safe = string.replace(/\\\\s+/mg, ' ');\\n\\tif (safe.length > this.captionLength) {\\n\\t\\tsafe = safe.substr(0, this.captionLength) + \\\"...\\\";\\n\\t}\\n\\treturn safe;\\n};\\n\\n/**I don't actually use this, but I've kept the code around anyway.\\n * The only time this plugin is installed and markdown isn't enabled would\\n * be if the user forgot to install a markdown plugin, or they disabled it.\\n * I GUESS Relink should still be Relinking markdown in that case.\\n */\\nexports.markdownEnabled = function() {\\n\\tif (_enabled === undefined) {\\n\\t\\tvar test = $tw.wiki.renderText(\\\"text/html\\\", \\\"text/x-markdown\\\", \\\"[test](#test)\\\");\\n\\t\\t_enabled = (test.indexOf(\\\"\u003Ca\\\") >= 0);\\n\\t}\\n\\treturn _enabled;\\n};\\nvar _enabled;\\n\",\"module-type\":\"library\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink-markdown/readme\":{\"title\":\"$:/plugins/flibbles/relink-markdown/readme\",\"text\":\"Markdown support for Relink.\\n\\n...or Relink support for Markdown.\\n\\nThis supplimental plugin allows ''text/x-markdown'' files to be relinked. This means markdown linking syntax like `[Caption](#MyTiddler)` is supported. If your markdown supports wikitext markup as well, this will handle that too.\\n\\nThis plugin is designed for `tiddlywiki/markdown`, but it will also work for `anstosa/tw5-markdown` and others.\\n\"}}}"},
{"name":"Relink Titles","title":"$:/plugins/flibbles/relink-titles","description":"Renames tiddlers with titles derived from Relinked tiddler","author":"Flibbles","version":"2.3.1","core-version":">=5.1.22","parent-plugin":"$:/plugins/flibbles/relink","source":"https://github.com/flibbles/tw5-relink","demo":"http://flibbles.github.io/tw5-relink/","list":"readme configuration","dependents":"","plugin-type":"plugin","type":"application/json","text":"{\"tiddlers\":{\"$:/plugins/flibbles/relink-titles/configuration\":{\"title\":\"$:/plugins/flibbles/relink-titles/configuration\",\"caption\":\"{{$:/plugins/flibbles/relink-titles/language/Caption}}\",\"tags\":\"$:/tags/flibbles/relink/Configuration\",\"text\":\"\\\\define lingo-base() $:/plugins/flibbles/relink-titles/language/\\n\\\\define prefix() $:/config/flibbles/relink-titles/relink/\\n\\\\whitespace trim\\n\\n\u003Cdiv class=\\\"tc-control-panel\\\">\\n\\n\u003C\u003Clingo Help>>\\n\\n\u003Ctable>\\n\u003Ctbody>\\n\u003C$list filter=\\\"[[relinktitlesrule]modules[]]\\\">\\n\u003Ctr>\\n\u003Ctd>\\n\u003C$checkbox\\n\\ttiddler={{{ [all[current]addprefix\u003Cprefix>] }}}\\n\\tfield=\\\"text\\\"\\n\\tchecked=\\\"enabled\\\"\\n\\tunchecked=\\\"disabled\\\"\\n\\tdefault=\\\"enabled\\\">\\n&#32;\\n''{{!!caption}}''\\n\u003C/$checkbox>\u003C/td>\u003Ctd>\\n\\n\u003C$transclude field='description' />\\n\\n\u003C/td>\u003C/tr>\u003C/$list>\\n\u003C/tbody>\u003C/table>\u003C/div>\\n\"},\"$:/plugins/flibbles/relink-titles/language/Caption\":{\"title\":\"$:/plugins/flibbles/relink-titles/language/Caption\",\"text\":\"Titles\"},\"$:/plugins/flibbles/relink-titles/language/Directory/Caption\":{\"title\":\"$:/plugins/flibbles/relink-titles/language/Directory/Caption\",\"text\":\"Rename subdirectories\"},\"$:/plugins/flibbles/relink-titles/language/Directory/Description\":{\"title\":\"$:/plugins/flibbles/relink-titles/language/Directory/Description\",\"text\":\"For wikis set up hierarchically using `/`, like a filesystem. This option will update all tiddlers nested inside the target tiddler. i.e. `fromTiddler/path/file` becomes `toTiddler/path/file`.\"},\"$:/plugins/flibbles/relink-titles/language/Lookup/Caption\":{\"title\":\"$:/plugins/flibbles/relink-titles/language/Lookup/Caption\",\"text\":\"Lookup tiddlers\"},\"$:/plugins/flibbles/relink-titles/language/Help\":{\"title\":\"$:/plugins/flibbles/relink-titles/language/Help\",\"text\":\"See the \u003Ca href={{{ [{$:/plugins/flibbles/relink-titles!!demo}addsuffix[#Plugins/Titles]] }}} class=\\\"tc-tiddlylink-external\\\">//Relink-titles// documentation page\u003C/a> for details.\"},\"$:/plugins/flibbles/relink-titles/readme\":{\"title\":\"$:/plugins/flibbles/relink-titles/readme\",\"text\":\"Highly customizable relinking of tiddler titles //related// to the renamed tiddler.\\n\\n* Rename a hierarchy of subtiddlers when renaming a root tiddler.\\n* Make custom filter rules to rename other tiddlers the way you want when Relinking.\\n* Integrates with other plugins for plugin-specific rules.\\n\\nSee \u003Ca href={{$:/plugins/flibbles/relink-titles!!source}} class=\\\"tc-tiddlylink-external\\\">the tw5-relink website\u003C/a> for more details and examples.\\n\\n{{$:/core/images/warning}} ''Warning:'' You must use //Relink// v1.10.2 or greater with this, or this plugin may delete some tiddler bodies while trying to relink titles.\\n\"},\"$:/plugins/flibbles/relink-titles/relinkoperations/title.js\":{\"title\":\"$:/plugins/flibbles/relink-titles/relinkoperations/title.js\",\"text\":\"/*\\\\\\nmodule-type: relinkoperator\\ntitle: $:/plugins/flibbles/relink-titles/relinkoperations/title.js\\ntype: application/javascript\\n\\nRenames tiddlers which have titles derived from fromTitle. Then it makes\\nsure that those tiddlers are properly relinked too.\\n\\n\\\\*/\\n\\n/*jslint node: false, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nvar configPrefix = \\\"$:/config/flibbles/relink-titles/relink/\\\";\\nvar utils = require('$:/plugins/flibbles/relink/js/utils.js');\\n// This is using hotDirectories, which is a deprecated feature. It should be\\n// using the $:/config/flibbles/relink/{cateogory} directory which would be\\n// automatically maintained and regenerated.\\n// Maybe in time I'll get around to migrating this, but no need to complicate\\n// things now with changes that would require migration, and that would\\n// have no outward effect.\\nutils.getContext('whitelist').hotDirectories.push(configPrefix);\\n\\nvar titleRules = Object.create(null);\\n$tw.modules.forEachModuleOfType('relinktitlesrule', function(title, module) {\\n\\ttitleRules[title] = module;\\n});\\n\\nexports.name = 'title';\\n\\nexports.report = function(tiddler, callback, options) {\\n\\tvar cache = getCache(options),\\n\\t\\trules = cache.rules;\\n\\tfor (var i = 0; i \u003C rules.length; i++) {\\n\\t\\trules[i].report(tiddler.fields.title, function(title, blurb) {\\n\\t\\t\\tcallback(title, blurb ? ('title: ' + blurb) : 'title');\\n\\t\\t}, options);\\n\\t}\\n};\\n\\nexports.relink = function(tiddler, fromTitle, toTitle, changes, options) {\\n\\tvar cache = getCache(options),\\n\\t\\ttitle = tiddler.fields.title;\\n\\tif (!cache.touched[title]) {\\n\\t\\tvar rules = cache.rules;\\n\\t\\tfor (var i = 0; i \u003C rules.length; i++) {\\n\\t\\t\\tvar rule = rules[i];\\n\\t\\t\\tvar entry = rule.relink(title, fromTitle, toTitle, options);\\n\\t\\t\\tif (entry) {\\n\\t\\t\\t\\tvar result = entry.output;\\n\\t\\t\\t\\tif (result && (result !== title)) {\\n\\t\\t\\t\\t\\tif (options.wiki.getTiddler(result) || cache.touched[result]) {\\n\\t\\t\\t\\t\\t\\t// There's already a tiddler there. We won't clobber it.\\n\\t\\t\\t\\t\\t\\tentry.impossible = true;\\n\\t\\t\\t\\t\\t\\tentry.output = undefined;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\tcache.touched[result] = true;\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\t// Record that we've touched this one, so we only touch it once.\\n\\t\\t\\t\\t// Both its prior and latter. Neither should be touched again.\\n\\t\\t\\t\\tcache.touched[title] = true;\\n\\t\\t\\t\\tchanges.title = entry;\\n\\t\\t\\t\\tbreak;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n};\\n\\nfunction getCache(options) {\\n\\treturn utils.getCacheForRun(options, 'titles', function() {\\n\\t\\treturn {\\n\\t\\t\\trules: getRules(options.wiki),\\n\\t\\t\\ttouched: Object.create(null)\\n\\t\\t};\\n\\t});\\n};\\n\\nfunction getRules(wiki) {\\n\\tvar activeRules = [];\\n\\tfor (var rule in titleRules) {\\n\\t\\tvar configTiddler = wiki.getTiddler(configPrefix + rule);\\n\\t\\tif (!configTiddler || configTiddler.fields.text !== \\\"disabled\\\") {\\n\\t\\t\\tactiveRules.push(titleRules[rule]);\\n\\t\\t}\\n\\t}\\n\\treturn activeRules;\\n};\\n\",\"module-type\":\"relinkoperator\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink-titles/rules/directory\":{\"title\":\"$:/plugins/flibbles/relink-titles/rules/directory\",\"text\":\"/*\\\\\\ncaption: {{$:/plugins/flibbles/relink-titles/language/Directory/Caption}}\\ndescription: {{$:/plugins/flibbles/relink-titles/language/Directory/Description}}\\nmodule-type: relinktitlesrule\\ntitle: $:/plugins/flibbles/relink-titles/rules/directory\\ntype: application/javascript\\n\\nHandles subdirectory renaming.\\n\\n\\\\*/\\n\\n/*jslint node: false, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nexports.name = 'directory';\\n\\n/**The report returns all parent directories of a given title which exist.\\n */\\nexports.report = function(title, callback, options) {\\n\\tvar index = -1;\\n\\twhile ((index = title.indexOf('/', index+1)) >= 0) {\\n\\t\\tvar dir = title.substr(0, index);\\n\\t\\tcallback(dir, '.' + title.substr(index));\\n\\t}\\n};\\n\\n/**The relink returns the new title (if any) derived from title for a given\\n * rename of fromTitle to toTitle.\\n */\\nexports.relink = function(title, fromTitle, toTitle, options) {\\n\\tvar length = fromTitle.length;\\n\\tif (title.charAt(length) === '/' && title.substr(0, length) === fromTitle) {\\n\\t\\treturn {output: toTitle + title.substr(length)};\\n\\t}\\n\\treturn undefined;\\n};\\n\",\"caption\":\"{{$:/plugins/flibbles/relink-titles/language/Directory/Caption}}\",\"description\":\"{{$:/plugins/flibbles/relink-titles/language/Directory/Description}}\",\"module-type\":\"relinktitlesrule\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink-titles/language/Lookup/Description\":{\"title\":\"$:/plugins/flibbles/relink-titles/language/Lookup/Description\",\"text\":\"This option updates all configuration tiddlers which relate to target tiddlers either through fixed prefixes or suffixes, i.e. `$:/config/Buttons/Visibility/fromFile` becomes `$:/config/Buttons/Visibility/toFile` when \\\"fromFile\\\" is renamed.\\n\\nEach line corresponds to a pattern, where `$(currentTiddler)$` would be the name of the tiddler being renamed, and `$(*)$` matches with anything.\\n\\n\u003C$edit-text\\n\\ttiddler=\\\"$:/config/flibbles/relink-titles/lookup/patterns\\\"\\n\\ttag=\\\"textarea\\\"\\n/>\\n\"},\"$:/config/flibbles/relink-titles/lookup/patterns\":{\"title\":\"$:/config/flibbles/relink-titles/lookup/patterns\",\"text\":\"$:/config/$(*)$/Visibility/$(currentTiddler)$\\n\"},\"$:/plugins/flibbles/relink-titles/rules/lookup\":{\"title\":\"$:/plugins/flibbles/relink-titles/rules/lookup\",\"text\":\"/*\\\\\\ncaption: {{$:/plugins/flibbles/relink-titles/language/Lookup/Caption}}\\ndescription: {{$:/plugins/flibbles/relink-titles/language/Lookup/Description}}\\nmodule-type: relinktitlesrule\\ntitle: $:/plugins/flibbles/relink-titles/rules/lookup\\ntype: application/javascript\\n\\nHandles setting tiddlers which are derived from other tiddlers, like how\\n\\n```\\n$:/config/PageControlButtons/Visibility/$(currentTiddler)$\\n```\\n\\nset the visibility for $(currentTiddler)$\\n\\n\\\\*/\\n\\n\\\"use strict\\\";\\n\\nexports.name = 'lookup';\\n\\nvar patternTiddler = \\\"$:/config/flibbles/relink-titles/lookup/patterns\\\";\\nvar anyMatcher = /\\\\$\\\\((?:\\\\*|currentTiddler)\\\\)\\\\$/g;\\n\\nexports.report = function(targetTitle, callback, options) {\\n\\tvar patterns = getPatterns(options.wiki);\\n\\tfor (var i = 0; i \u003C patterns.length; i++) {\\n\\t\\tvar pattern = patterns[i];\\n\\t\\tvar index = 0;\\n\\t\\tvar results = match(pattern, targetTitle);\\n\\t\\tif (results) {\\n\\t\\t\\tvar blurb = pattern.string.replace(anyMatcher, function(match) {\\n\\t\\t\\t\\tindex++;\\n\\t\\t\\t\\tif (match === \\\"$(*)$\\\") {\\n\\t\\t\\t\\t\\treturn results[index];\\n\\t\\t\\t\\t} else { // must be \\\"$(currentTiddler)$\\\"\\n\\t\\t\\t\\t\\treturn \\\"...\\\";\\n\\t\\t\\t\\t}\\n\\t\\t\\t});\\n\\t\\t\\tcallback(results.title, blurb);\\n\\t\\t}\\n\\t}\\n};\\n\\nexports.relink = function(targetTitle, fromTitle, toTitle, options) {\\n\\tvar patterns = getPatterns(options.wiki);\\n\\tfor (var i = 0; i \u003C patterns.length; i++) {\\n\\t\\tvar pattern = patterns[i];\\n\\t\\tvar results = match(pattern, targetTitle, fromTitle);\\n\\t\\tif (results) {\\n\\t\\t\\tvar groupIndex = 0;\\n\\t\\t\\t// Make all the correct substitutions to create the new title\\n\\t\\t\\tvar output = pattern.string.replace(anyMatcher, function(match) {\\n\\t\\t\\t\\tgroupIndex++;\\n\\t\\t\\t\\tif (match === \\\"$(*)$\\\") {\\n\\t\\t\\t\\t\\treturn results[groupIndex];\\n\\t\\t\\t\\t} else { // must be \\\"$(currentTiddler)$\\\"\\n\\t\\t\\t\\t\\treturn toTitle;\\n\\t\\t\\t\\t}\\n\\t\\t\\t});\\n\\t\\t\\treturn {output: output};\\n\\t\\t}\\n\\t}\\n\\treturn undefined;\\n};\\n\\nfunction match(pattern, string, matchTitle) {\\n\\tvar results = pattern.matcher.exec(string);\\n\\tif (results) {\\n\\t\\t// It superficially matches, but we need to make sure all the right\\n\\t\\t// groups match too.\\n\\t\\tfor (var j = 0; j \u003C pattern.groups.length; j++) {\\n\\t\\t\\tvar index = pattern.groups[j];\\n\\t\\t\\tif (matchTitle === undefined) {\\n\\t\\t\\t\\t// It doesn't matter what matchTitle is, as long as all\\n\\t\\t\\t\\t// groups match the same thing.\\n\\t\\t\\t\\tmatchTitle = results[index];\\n\\t\\t\\t} else if (results[index] !== matchTitle) {\\n\\t\\t\\t\\treturn null;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\tresults.title = matchTitle;\\n\\t}\\n\\treturn results;\\n};\\n\\nfunction getPatterns(wiki) {\\n\\treturn wiki.getCacheForTiddler(patternTiddler, \\\"relink-titles\\\", function() {\\n\\t\\tvar text = wiki.getTiddlerText(patternTiddler);\\n\\t\\tvar matchers = []\\n\\t\\tif (text) {\\n\\t\\t\\tvar array = text.split('\\\\n');\\n\\t\\t\\tfor (var i = 0; i \u003C array.length; i++) {\\n\\t\\t\\t\\tvar pattern = formPatternFromString(array[i]);\\n\\t\\t\\t\\tif (pattern) {\\n\\t\\t\\t\\t\\tmatchers.push(pattern);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\treturn matchers;\\n\\t});\\n};\\n\\nfunction formPatternFromString(string) {\\n\\tvar groupIndex = 1;\\n\\tvar matchingGroups = [];\\n\\tstring = $tw.utils.trim(string);\\n\\tvar parts = string.split(\\\"$(currentTiddler)$\\\");\\n\\tif (parts.length \u003C= 1) {\\n\\t\\t// $(currentTiddler)$ must not have been there\\n\\t\\treturn null;\\n\\t}\\n\\tfor (var j = 0; j \u003C parts.length; j++) {\\n\\t\\t// Split it up by the wildcards\\n\\t\\tvar sections = parts[j].split(\\\"$(*)$\\\");\\n\\t\\tfor (var k = 0; k \u003C sections.length; k++) {\\n\\t\\t\\tsections[k] = $tw.utils.escapeRegExp(sections[k]);\\n\\t\\t}\\n\\t\\tparts[j] = sections.join(\\\"(.*)\\\");\\n\\t\\t// If there are 3 sections, then there is 2 $(*)$, so the index\\n\\t\\t// must skip them. etc...\\n\\t\\tgroupIndex += sections.length-1;\\n\\t\\tif (j \u003C parts.length-1) {\\n\\t\\t\\t// If there are 3 parts, that means 2 $(currentTiddler)$, and\\n\\t\\t\\t// so we skip the last part\\n\\t\\t\\tmatchingGroups.push(groupIndex);\\n\\t\\t\\tgroupIndex++;\\n\\t\\t}\\n\\t}\\n\\treturn {\\n\\t\\tstring: string,\\n\\t\\tgroups: matchingGroups,\\n\\t\\tmatcher: new RegExp(\\\"^\\\" + parts.join(\\\"(.*)\\\") + \\\"$\\\")\\n\\t};\\n};\\n\",\"caption\":\"{{$:/plugins/flibbles/relink-titles/language/Lookup/Caption}}\",\"description\":\"{{$:/plugins/flibbles/relink-titles/language/Lookup/Description}}\",\"module-type\":\"relinktitlesrule\",\"type\":\"application/javascript\"}}}"},
{"created":"20220329160652137","text":"{\"tiddlers\":{\"$:/plugins/Gk0Wk/sidebar-resizer/LICENSE\":{\"title\":\"$:/plugins/Gk0Wk/sidebar-resizer/LICENSE\",\"text\":\"MIT License\\n\\nCopyright (c) 2021 Ke Wang (Gk0Wk in GitHub)\\n\\nPermission is hereby granted, free of charge, to any person obtaining a copy\\nof this software and associated documentation files (the \\\"Software\\\"), to deal\\nin the Software without restriction, including without limitation the rights\\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\\ncopies of the Software, and to permit persons to whom the Software is\\nfurnished to do so, subject to the following conditions:\\n\\nThe above copyright notice and this permission notice shall be included in all\\ncopies or substantial portions of the Software.\\n\\nTHE SOFTWARE IS PROVIDED \\\"AS IS\\\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\\nSOFTWARE.\\n\",\"type\":\"text/plain\"},\"$:/plugins/Gk0Wk/sidebar-resizer/hook.js\":{\"title\":\"$:/plugins/Gk0Wk/sidebar-resizer/hook.js\",\"text\":\"(function () {\\n \\\"use strict\\\";\\n if (typeof window !== \\\"undefined\\\" && window.document) {\\n var sidebarResizerNode = null;\\n var canResize = false;\\n var body = document.querySelector(\\\"body\\\");\\n if (!body) return;\\n\\n function dragBegin(event) {\\n canResize = true;\\n if (window.PointerEvent) body.setPointerCapture(event.pointerId);\\n // When drag begins, prevent text selecting (for event.preventDefault cannot work in Mozilla)\\n body.style.useSelect = \\\"none\\\";\\n body.style.MozUserSelect = \\\"none\\\";\\n }\\n\\n function dragEnd(event) {\\n if (canResize) {\\n canResize = false;\\n if (window.PointerEvent) body.releasePointerCapture(event.pointerId);\\n body.style.useSelect = \\\"auto\\\";\\n body.style.MozUserSelect = \\\"auto\\\";\\n }\\n }\\n\\n $tw.hooks.addHook(\\\"th-page-refreshed\\\", function () {\\n if (\\n sidebarResizerNode &&\\n sidebarResizerNode.ownerDocument.contains(sidebarResizerNode)\\n )\\n return;\\n sidebarResizerNode = document.querySelector(\\\"#gk0wk-sidebar-resize-area\\\");\\n if (!sidebarResizerNode) return;\\n canResize = false;\\n\\n // Hide Sidebar\\n function hideSideBar(event) {\\n $tw.wiki.setText(\\\"$:/state/sidebar\\\", null, null, \\\"no\\\");\\n dragEnd(event);\\n }\\n\\n // Drag to resize\\n function drag(event) {\\n if (!canResize) return;\\n if (!event) event = window.event;\\n // Prevent event pass\\n event.preventDefault(event);\\n event.stopPropagation(event);\\n event.stopImmediatePropagation(event);\\n event.returnValue = false;\\n var widthPercent = 100 - (event.clientX / window.innerWidth) * 100;\\n if (widthPercent > 80) return false;\\n if (window.innerWidth - event.clientX \u003C 100) {\\n $tw.wiki.setText(\\n \\\"$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth\\\",\\n null,\\n null,\\n 30000 / window.innerWidth + \\\"vw\\\"\\n );\\n hideSideBar(event);\\n } else {\\n $tw.wiki.setText(\\n \\\"$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth\\\",\\n null,\\n null,\\n widthPercent + \\\"vw\\\"\\n );\\n }\\n return false;\\n }\\n\\n // Double click to hide sidebar\\n sidebarResizerNode.addEventListener(\\\"dblclick\\\", hideSideBar);\\n // Detect whter PointerEvent is supported\\n if (window.PointerEvent) {\\n // PointerEvent = Mouse + Touch\\n sidebarResizerNode.addEventListener(\\\"pointerdown\\\", dragBegin);\\n body.addEventListener(\\\"pointerup\\\", dragEnd);\\n body.addEventListener(\\\"blur\\\", dragEnd);\\n body.addEventListener(\\\"pointermove\\\", drag, true);\\n } else {\\n // If not\\n sidebarResizerNode.addEventListener(\\\"mousedown\\\", dragBegin);\\n body.addEventListener(\\\"mouseup\\\", dragEnd);\\n body.addEventListener(\\\"blur\\\", dragEnd);\\n body.addEventListener(\\\"mousemove\\\", drag, true);\\n sidebarResizerNode.addEventListener(\\\"touchstart\\\", dragBegin);\\n body.addEventListener(\\\"touchcancel\\\", dragEnd);\\n body.addEventListener(\\\"touchend\\\", dragEnd);\\n body.addEventListener(\\\"touchmove\\\", drag, true);\\n }\\n });\\n }\\n})();\\n\",\"type\":\"application/javascript\",\"module-type\":\"startup\"},\"$:/plugins/Gk0Wk/sidebar-resizer/readme\":{\"title\":\"$:/plugins/Gk0Wk/sidebar-resizer/readme\",\"text\":\"\\\\define lingo-base() $:/language/ThemeTweaks/\\n\\n\u003C$list filter=\\\"[[$:/language]get[text]removeprefix[$:/languages/]else[en-GB]]\\\" variable=\\\"lang\\\">\\n\u003C$list filter=\\\"[\u003Clang>search[zh]]\\\">\\n\\n会在侧边栏的左侧边缘添加一个可拖动的边框当鼠标移动到左侧边缘时会看到这个边框。拖动这个边框可以改变侧边栏的宽度拖动到靠近窗口右侧边缘时就会自动收起侧边栏。\\n\\n原理是更改[[$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth]]的值。\\n\\n注意首先请将 \u003C$link to=\\\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\\\">\u003C\u003Clingo Options/SidebarLayout>>\u003C/$link> 调整为`fluid-fixed`,本插件才可生效。\\n\\n\u003C$button set=\\\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\\\" setTo=\\\"fluid-fixed\\\">点击设置\u003C\u003Clingo Options/SidebarLayout>>\u003C/$button>\\n\\n\u003C/$list>\\n\\n\u003C$list filter=\\\"[\u003Clang>!search[zh]]\\\">\\n\\nA draggable border is added to the left edge of the sidebar, which will be visible when the mouse is moved to the left edge. Dragging this border will change the width of the sidebar, and it will automatically close the sidebar when dragged near the right edge of the window.\\n\\nThe principle is to change the value of [[$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth]].\\n\\nNote: First, please adjust \u003C$link to=\\\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\\\">\u003C\u003Clingo Options/SidebarLayout>>\u003C/$link> to `fluid-fixed` for this plugin to take effect.\\n\\n\u003C$button set=\\\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\\\" setTo=\\\"fluid-fixed\\\">Click to adjust\u003C\u003Clingo Options/SidebarLayout>>\u003C/$button>\\n\\n\u003C/$list>\\n\u003C/$list>\\n\"},\"$:/plugins/Gk0Wk/sidebar-resizer/resizer\":{\"title\":\"$:/plugins/Gk0Wk/sidebar-resizer/resizer\",\"tags\":\"$:/tags/SideBarSegment\",\"text\":\"\u003Cdiv id=\\\"gk0wk-sidebar-resize-area\\\">\u003C/div>\\n\"},\"$:/plugins/Gk0Wk/sidebar-resizer/style.css\":{\"title\":\"$:/plugins/Gk0Wk/sidebar-resizer/style.css\",\"text\":\"\u003C$reveal state=\\\"$:/state/sidebar\\\" type=\\\"match\\\" text=\\\"no\\\">\\n.tc-sidebar-scrollable {\\n\\tdisplay: none;\\n}\\n\u003C/$reveal>\\n\\ndiv#gk0wk-sidebar-resize-area {\\n\\theight: 100vh;\\n\\twidth: 10px;\\n\\tposition: absolute;\\n\\ttop: 0;\\n\\tleft: -5px;\\n\\tcursor: ew-resize;\\n\\ttransition: all {{$:/config/AnimationDuration}}ms;\\n}\\n\\ndiv#gk0wk-sidebar-resize-area:hover {\\n\\tbackground: \u003C\u003Ccolour primary>>;\\n}\\n\",\"tags\":\"$:/tags/Stylesheet\",\"type\":\"text/vnd.tiddlywiki\"}}}","version":"0.0.3","type":"application/json","title":"$:/plugins/Gk0Wk/sidebar-resizer","plugin-type":"plugin","name":"Sidebar Resizer","list":"readme LICENSE","description":"Use the cursor to resize the width of the sidebar.","author":"Gk0Wk","source":"https://github.com/Gk0Wk/TiddlySeq/tree/master/plugins/Gk0Wk/sidebar-resizer","dependents":"","revision":"0","bag":"default","modified":"20220329160653489","tags":"$:/giffmex/stroll"},
{"text":"{\"tiddlers\":{\"$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/mode/tiddlywiki5.js\":{\"text\":\"// CodeMirror, copyright (c) by Marijn Haverbeke and others\\n// Distributed under an MIT license: https://codemirror.net/LICENSE\\n\\n/* Enhance from and specially thank to https://github.com/adithya-badidey/TW5-codemirror-plus,\\n and the original author of this mode is PMario(https://github.com/pmario) */\\n(function(mod) {\\n if (typeof exports == \\\"object\\\" && typeof module == \\\"object\\\") // CommonJS\\n mod(require(\\\"$:/plugins/tiddlywiki/codemirror/lib/codemirror.js\\\"));\\n else if (typeof define == \\\"function\\\" && define.amd) // AMD\\n define([\\\"$:/plugins/tiddlywiki/codemirror/lib/codemirror.js\\\"], mod);\\n else // Plain browser env\\n mod(CodeMirror);\\n})(function(CodeMirror) {\\n \\\"use strict\\\";\\n\\n CodeMirror.defineMode(\\\"tiddlywiki5\\\", function(cmCfg, modeCfg) {\\n var styleSheet = {\\n 'rainbow': ['keyword', 'variable-2', 'variable-3']\\n };\\n\\n var macroKeywords = {\\n \\\"changecount\\\": true,\\n \\\"colour\\\": true,\\n \\\"colour-picker\\\": true,\\n \\\"contrastcolour\\\": true,\\n \\\"copy-to-clipboard\\\": true,\\n \\\"csvtiddlers\\\": true,\\n \\\"datauri\\\": true,\\n \\\"dumpvariables\\\": true,\\n \\\"image-picker\\\": true,\\n \\\"jsontiddler\\\": true,\\n \\\"jsontiddlers\\\": true,\\n \\\"lingo\\\": true,\\n \\\"list-links\\\": true,\\n \\\"list-links-draggable\\\": true,\\n \\\"list-tagged-draggable\\\": true,\\n \\\"list-thumbnails\\\": true,\\n \\\"makedatauri\\\": true,\\n \\\"now\\\": true,\\n \\\"qualify\\\": true,\\n \\\"resolvepath\\\": true,\\n \\\"box-shadow\\\": true,\\n \\\"filter\\\": true,\\n \\\"transition\\\": true,\\n \\\"background-linear-gradient\\\": true,\\n \\\"transform-origin\\\": true,\\n \\\"toc\\\": true,\\n \\\"toc-expandable\\\": true,\\n \\\"toc-selective-expandable\\\": true,\\n \\\"toc-tabbed-internal-nav\\\": true,\\n \\\"toc-tabbed-external-nav\\\": true,\\n \\\"tabs\\\": true,\\n \\\"tag\\\": true,\\n \\\"tag-picker\\\": true,\\n \\\"tag-pill\\\": true,\\n \\\"thumbnail\\\": true,\\n \\\"timeline\\\": true,\\n \\\"tree\\\": true,\\n \\\"unusedtitle\\\": true,\\n \\\"version\\\": true\\n };\\n\\n function getMode(name) {\\n if (CodeMirror.findModeByName) {\\n var found = CodeMirror.findModeByName(name);\\n if (found) name = found.mime || found.mimes[0];\\n }\\n var mode_ = CodeMirror.getMode(cmCfg, name);\\n return mode_.name == \\\"null\\\" ? null : mode_;\\n }\\n\\n if (modeCfg.fencedCodeBlockHighlighting === undefined)\\n modeCfg.fencedCodeBlockHighlighting = true;\\n\\n if (modeCfg.fencedCodeBlockDefaultMode === undefined)\\n modeCfg.fencedCodeBlockDefaultMode = 'text/plain';\\n\\n var reHR = /^\\\\-\\\\-\\\\-+$/, // \u003Chr>\\n reBlockQuote = /^\u003C\u003C\u003C/,\\n rePreStart = /^```[ \\\\t]*([\\\\w\\\\/+#-]*)[^\\\\n`]*$/,\\n rePreEnd = /^```$/;\\n\\n function chain(stream, state, f) {\\n state.tokenize = f;\\n return f(stream, state);\\n }\\n\\n function onNewLine(state) {\\n state.line++;\\n state.listLevel = 0;\\n state.boldLine = false;\\n }\\n\\n function tokenBase(stream, state) {\\n var sol = stream.sol();\\n // 解析\\n var tokens = tokenBaseBald(sol, stream, state);\\n if (tokens == null) tokens = '';\\n // 后缀\\n if (state.quoteLevel > 0 && sol) {\\n tokens += ' line-cm-quote-line quote-' + state.quoteLevel;\\n }\\n if (state.codeBlockModeState != null) {\\n tokens += ' comment';\\n }\\n if (state.listLevel > 0) {\\n tokens += ' list ' + styleSheet.rainbow[state.listLevel % styleSheet.rainbow.length];\\n }\\n if (state.boldLine) {\\n tokens += ' strong';\\n }\\n return tokens.trim();\\n }\\n\\n function tokenBaseBald(sol, stream, state) {\\n var ch = stream.peek(); // Returns the next character in the stream without advancing it. Will return a null at the end of the line.\\n\\n // 检查是不是block的开头\\n // 两个条件1.在行首 2.以\u003C/*{}-`开头\\n if (sol && /[\u003C\\\\/\\\\*{}\\\\-`]/.test(ch)) {\\n // \u003C\u003C\u003C引用block\\n if (stream.match(reBlockQuote)) {\\n return twTokenQuote(stream, state);\\n }\\n\\n // 分割线\\n if (stream.match(reHR))\\n return 'hr';\\n\\n // 代码块\\n var match = null;\\n if (match = stream.match(rePreStart, false))\\n return twTokenPre(stream, state, match);\\n }\\n\\n // 其他情况\\n var matched = null;\\n if (sol && (matched = stream.match(/^\\\\s*([\\\\/\\\\*!#;:>|])/))) {\\n ch = matched[1];\\n // 标题\\n if (ch === \\\"!\\\") {\\n var countOfHeaderLevel = 1;\\n while (stream.eat('!'))\\n countOfHeaderLevel++;\\n stream.skipToEnd();\\n return 'header h' + countOfHeaderLevel;\\n }\\n\\n // 列表\\n if (/[\\\\*#;:]/.test(ch)) {\\n var countOfListLevel = 1;\\n var past_ch = ch;\\n while (ch = stream.eat(/[\\\\*#;:]/)) {\\n countOfListLevel++;\\n past_ch = ch;\\n }\\n state.boldLine = past_ch === \\\";\\\";\\n state.listLevel = countOfListLevel;\\n return 'list ' + styleSheet.rainbow[countOfListLevel % styleSheet.rainbow.length] + (past_ch === \\\";\\\" ? ' strong' : '');\\n }\\n if (ch === \\\">\\\") { // single line quote\\n stream.eatWhile(\\\">\\\");\\n return \\\"quote\\\";\\n }\\n if (ch === \\\"|\\\")\\n return 'header';\\n }\\n\\n stream.next();\\n\\n // 外部链接\\n // rudimentary html:// file:// link matching. TW knows much more ...\\n if (/[hf]/i.test(ch) &&\\n /[ti]/i.test(stream.peek()) &&\\n stream.match(/\\\\b(ttps?|tp|ile):\\\\/\\\\/[\\\\-A-Z0-9+&@#\\\\/%?=~_|$!:,.;]*[A-Z0-9+&@#\\\\/%=~_|$]/i, true))\\n return 'externallink link';\\n\\n // LaTeX 公式\\n if (ch == '$' && stream.match(\\\"$\\\", false) && !stream.match(\\\"$$\\\", false)) {\\n stream.next();\\n return twTokenFormula(stream, state);\\n }\\n\\n // `xx`等宽\\n if (ch == '`') {\\n return chain(stream, state, twTokenMonospace);\\n }\\n\\n // 斜体\\n if (ch == \\\"/\\\" && stream.eat(\\\"/\\\")) {\\n return chain(stream, state, twTokenEm);\\n }\\n\\n //\\n if (ch == \\\"{\\\" && stream.eat(\\\"{\\\"))\\n return chain(stream, state, twTranslclude);\\n\\n // wikilink 或 图片\\n if (ch == \\\"[\\\" && stream.eat(\\\"[\\\"))\\n return chain(stream, state, twInternalLink);\\n\\n // 下划线\\n if (ch == \\\"_\\\" && stream.eat(\\\"_\\\"))\\n return chain(stream, state, twTokenUnderline);\\n\\n // 上角标\\n if (ch == \\\"^\\\" && stream.eat(\\\"^\\\"))\\n return chain(stream, state, twSuperscript);\\n\\n // 下角标\\n if (ch == \\\",\\\" && stream.eat(\\\",\\\"))\\n return chain(stream, state, twSubscript);\\n\\n // 删除线\\n if (ch == \\\"~\\\" && stream.eat(\\\"~\\\")) {\\n return chain(stream, state, twTokenStrike);\\n }\\n\\n // 粗体\\n if (ch == \\\"'\\\" && stream.eat(\\\"'\\\"))\\n return chain(stream, state, twTokenStrong);\\n\\n // 宏\\n if (ch == \\\"\u003C\\\" && stream.eat(\\\"\u003C\\\"))\\n return chain(stream, state, twTokenMacro);\\n\\n return null;\\n }\\n\\n // 粗体\\n function twTokenStrong(stream, state) {\\n var maybeEnd = false,\\n ch;\\n while (ch = stream.next()) {\\n if (ch == \\\"'\\\" && maybeEnd) {\\n state.tokenize = tokenBase;\\n break;\\n }\\n maybeEnd = (ch == \\\"'\\\");\\n }\\n return \\\"strong\\\";\\n }\\n\\n // `xx`等宽\\n function twTokenMonospace(stream, state) {\\n var ch;\\n while (ch = stream.next()) {\\n if (ch == \\\"`\\\") {\\n state.tokenize = tokenBase;\\n break;\\n }\\n }\\n return \\\"comment\\\";\\n }\\n\\n // 斜体\\n function twTokenEm(stream, state) {\\n var maybeEnd = false,\\n ch;\\n while (ch = stream.next()) {\\n if (ch == \\\"/\\\" && maybeEnd) {\\n state.tokenize = tokenBase;\\n break;\\n }\\n maybeEnd = (ch == \\\"/\\\");\\n }\\n return \\\"em\\\";\\n }\\n\\n // 包含\\n function twTranslclude(stream, state) {\\n state.tokenize = function(stream_, state_) {\\n var ch;\\n while (ch = stream_.next()) {\\n if (ch === \\\"}\\\" && stream_.peek() === \\\"}\\\") {\\n stream_.backUp(1);\\n state_.tokenize = function(stream__, state__) {\\n stream__.match(\\\"}}\\\");\\n state__.tokenize = tokenBase;\\n return \\\"builtin\\\";\\n };\\n break;\\n }\\n }\\n return \\\"builtin internallink\\\";\\n };\\n return \\\"builtin\\\";\\n }\\n\\n // tw internal links\\n function twInternalLink(stream, state) {\\n // 开头 [[\\n if (stream.current() == '[[') {\\n state.pastDivider = false;\\n return 'link';\\n }\\n // 结尾 ]]\\n if (stream.peek() == ']') {\\n stream.next();\\n if (stream.next() == ']') {\\n state.tokenize = tokenBase;\\n return 'link';\\n }\\n }\\n var pastDivider = state.pastDivider,\\n ch;\\n while (ch = stream.peek()) {\\n if (!pastDivider && ch == '|') {\\n stream.next();\\n state.pastDivider = true;\\n return 'internallink link';\\n }\\n if (ch == \\\"]\\\" && stream.peek() == \\\"]\\\") {\\n return 'internallink link';\\n }\\n ch = stream.next();\\n if (/[hf]/i.test(ch) &&\\n /[ti]/i.test(stream.peek()) &&\\n stream.match(/\\\\b(ttps?|tp|ile):\\\\/\\\\/[\\\\-A-Z0-9+&@#\\\\/%?=~_|$!:,.;]*[A-Z0-9+&@#\\\\/%=~_|$]/i, true)) {\\n return 'externallink link';\\n }\\n stream.eatWhile(/[^|\\\\]]/);\\n }\\n return null;\\n }\\n\\n // tw underlined text\\n function twTokenUnderline(stream, state) {\\n var maybeEnd = false,\\n ch;\\n while (ch = stream.next()) {\\n if (ch == \\\"_\\\" && maybeEnd) {\\n state.tokenize = tokenBase;\\n break;\\n }\\n maybeEnd = (ch == \\\"_\\\");\\n }\\n return \\\"underlined\\\";\\n }\\n\\n function twSubscript(stream, state) {\\n var maybeEnd = false,\\n ch;\\n\\n while (ch = stream.next()) {\\n if (ch == \\\",\\\" && maybeEnd) {\\n state.tokenize = tokenBase;\\n break;\\n }\\n maybeEnd = (ch == \\\",\\\");\\n }\\n return \\\"string subscript\\\";\\n }\\n\\n function twSuperscript(stream, state) {\\n var maybeEnd = false,\\n ch;\\n\\n while (ch = stream.next()) {\\n if (ch == \\\"^\\\" && maybeEnd) {\\n state.tokenize = tokenBase;\\n break;\\n }\\n maybeEnd = (ch == \\\"^\\\");\\n }\\n return \\\"string superscript\\\";\\n }\\n\\n function twTokenStrike(stream, state) {\\n var maybeEnd = false,\\n ch;\\n\\n while (ch = stream.next()) {\\n if (ch == \\\"~\\\" && maybeEnd) {\\n state.tokenize = tokenBase;\\n break;\\n }\\n maybeEnd = (ch == \\\"~\\\");\\n }\\n return \\\"strikethrough\\\";\\n }\\n\\n // LaTeX公式\\n function twTokenFormula(stream, state) {\\n state.tokenize = tokenBase;\\n var innerMode = modeCfg.fencedCodeBlockHighlighting && getMode(\\\"text/x-latex\\\");\\n state.LaTeXModeState = !innerMode ? 'unknown' : {\\n mode: innerMode,\\n state: CodeMirror.startState(innerMode),\\n start: state.line\\n };\\n return \\\"comment\\\";\\n }\\n\\n function twTokenPre(stream, state, match) {\\n state.tokenize = function(stream_, state_) {\\n state_.tokenize = tokenBase;\\n var innerMode = modeCfg.fencedCodeBlockHighlighting &&\\n getMode(match[1] || modeCfg.fencedCodeBlockDefaultMode);\\n state_.codeBlockModeState = !innerMode ? 'unknown' : {\\n mode: innerMode,\\n state: CodeMirror.startState(innerMode),\\n start: state.line\\n };\\n if (match[1]) {\\n stream_.skipToEnd();\\n return \\\"tag\\\";\\n } else {\\n return null;\\n }\\n };\\n stream.match('```');\\n return \\\"comment\\\";\\n }\\n\\n function twTokenQuote(stream, state) {\\n var level = 1;\\n while (stream.match(reBlockQuote))\\n level++;\\n if (state.quoteLevel == level) {\\n state.quoteLevel--;\\n } else if (state.quoteLevel \u003C level) {\\n state.quoteHead = true;\\n state.quoteLevel = level;\\n state.tokenize = function(stream_, state_) {\\n state_.quoteHead = false;\\n state_.tokenize = tokenBase;\\n if (!stream_.sol()) {\\n stream_.skipToEnd();\\n return \\\"tag\\\";\\n } else {\\n return null;\\n }\\n };\\n } else {\\n state.quoteLevel = level - 1;\\n }\\n return \\\"quote line-cm-quote-line\\\";\\n }\\n\\n function twTokenMacro(stream, state) {\\n if (stream.current() == '\u003C\u003C') {\\n return 'macro';\\n }\\n\\n var ch = stream.next();\\n if (!ch) {\\n state.tokenize = tokenBase;\\n return null;\\n }\\n if (ch == \\\">\\\") {\\n if (stream.peek() == '>') {\\n stream.next();\\n state.tokenize = tokenBase;\\n return \\\"macro\\\";\\n }\\n }\\n\\n stream.eatWhile(/[\\\\w\\\\$_]/);\\n return macroKeywords.propertyIsEnumerable(stream.current()) ? \\\"keyword\\\" : \\\"macro\\\";\\n }\\n\\n // Interface\\n var mode = {\\n blankLine: function(stream) {\\n onNewLine(stream);\\n return \\\"\\\";\\n },\\n closeBrackets: \\\"()[]{}''\\\\\\\"\\\\\\\"``\\\",\\n startState: function() {\\n return {\\n tokenize: tokenBase, // 当前解析器\\n curStream: null,\\n line: 0,\\n quoteLevel: 0,\\n quoteHead: false,\\n listLevel: 0,\\n boldLine: false,\\n codeBlockModeState: null,\\n LaTeXModeState: null\\n };\\n },\\n copyState: function(oldState) {\\n var newState = {};\\n for (var key in oldState) newState[key] = oldState[key];\\n if (oldState.codeBlockModeState && typeof oldState.codeBlockModeState == 'object')\\n newState.codeBlockModeState = {\\n mode: oldState.codeBlockModeState.mode,\\n state: CodeMirror.copyState(oldState.codeBlockModeState.mode, oldState.codeBlockModeState.state),\\n start: oldState.start\\n };\\n if (oldState.LaTeXModeState)\\n newState.LaTeXModeState = {\\n mode: oldState.LaTeXModeState.mode,\\n state: CodeMirror.copyState(oldState.LaTeXModeState.mode, oldState.LaTeXModeState.state),\\n start: oldState.start\\n };\\n },\\n token: function(stream, state) {\\n // 新的一行\\n if (stream != state.curStream) {\\n onNewLine(state);\\n state.curStream = stream;\\n }\\n\\n // ```代码块\\n if (state.codeBlockModeState != null) {\\n // 代码块的结束\\n if (stream.match(rePreEnd)) {\\n state.codeBlockModeState = null;\\n return \\\"comment\\\";\\n }\\n if (typeof state.codeBlockModeState === \\\"string\\\") {\\n stream.skipToEnd();\\n return \\\"comment line-background-cm-code-block-line\\\";\\n }\\n // 否则就是用对应的mode来做\\n return state.codeBlockModeState.mode.token(stream, state.codeBlockModeState.state) + \\\" line-background-cm-code-block-line\\\";\\n }\\n\\n // LaTeX公式块\\n if (state.LaTeXModeState != null) {\\n // 公式块的结束\\n if (stream.match('$$')) {\\n state.LaTeXModeState = null;\\n return \\\"comment\\\";\\n }\\n if (typeof state.LaTeXModeState === \\\"string\\\") {\\n stream.skipToEnd();\\n return \\\"comment latex\\\";\\n }\\n // 否则就是用对应的mode来做\\n return state.LaTeXModeState.mode.token(stream, state.LaTeXModeState.state) + \\\" latex\\\";\\n }\\n\\n // 读掉空行 / 行末的空白\\n if (stream.match(/^\\\\s+$/, true) || stream.match(/\\\\s+$/, true)) return null;\\n else return state.tokenize(stream, state);\\n },\\n innerMode: function(state) {\\n if (state.codeBlockModeState != null && typeof state.codeBlockModeState === \\\"object\\\") {\\n return state.codeBlockModeState;\\n }\\n if (state.LaTeXModeState != null && typeof state.LaTeXModeState === \\\"object\\\") {\\n return state.LaTeXModeState;\\n }\\n return {\\n state: state,\\n mode: mode\\n };\\n },\\n indent: function(state, textAfter, line) {\\n if (state.codeBlockModeState != null &&\\n typeof state.codeBlockModeState === \\\"object\\\" &&\\n typeof state.codeBlockModeState.mode.indent == 'function') {\\n return state.codeBlockModeState.mode.indent(state.codeBlockModeState.state, textAfter, line);\\n }\\n return CodeMirror.Pass;\\n },\\n blockCommentStart: '\u003C!--',\\n blockCommentEnd: '-->'\\n };\\n return mode;\\n });\\n\\n CodeMirror.defineMIME(\\\"text/vnd.tiddlywiki\\\", \\\"tiddlywiki5\\\");\\n CodeMirror.defineMIME(\\\"\\\", \\\"tiddlywiki5\\\");\\n});\\n\",\"title\":\"$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/mode/tiddlywiki5.js\",\"module-type\":\"codemirror\",\"type\":\"application/javascript\"},\"$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/style.css\":{\"text\":\"\\\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline html\\n.CodeMirror-hints {\\n /* Floating above tiddlers */\\n z-index: 800 !important;\\n background: \u003C\u003Ccolour background>> !important;\\n border: 1px solid \u003C\u003Ccolour table-border>> !important;\\n padding: 0 !important;\\n}\\n\\n.CodeMirror-hint {\\n width: 400px !important;\\n color: \u003C\u003Ccolour foreground>> !important;\\n border-radius: 0 !important;\\n padding: 2px 4px !important;\\n}\\n\\nli.CodeMirror-hint-active {\\n background: \u003C\u003Ccolour primary>> !important;\\n color: \u003C\u003Ccolour background>> !important;\\n}\\n\\nli.cm-hacked-hint {\\n display: flex;\\n justify-content: space-between;\\n white-space: nowrap;\\n}\\n\\nli.cm-hacked-hint>span.hint-title {\\n overflow: hidden;\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n}\\n\\nli.cm-hacked-hint>span.hint-title>span.hint-title-highlighted {\\n background: \u003C\u003Ccolour alert-highlight>>;\\n color: \u003C\u003Ccolour background>>;\\n}\\n\\nli.cm-hacked-hint>span.hint-type {\\n padding-left: 10px;\\n font-weight: bold;\\n opacity: 0.5;\\n}\\n\\n.CodeMirror-hints-append {\\n min-height: 20em !important;\\n width: 400px !important;\\n resize: both;\\n background: \u003C\u003Ccolour background>>;\\n word-wrap: break-word;\\n color: \u003C\u003Ccolour foreground>>;\\n fill: \u003C\u003Ccolour foreground>>;\\n}\\n\\nspan.cm-underlined {\\n text-decoration-line: underline;\\n}\\n\\n/* Enhance from and specially thank to https://github.com/adithya-badidey/TW5-codemirror-plus */\\nspan.cm-superscript {\\n vertical-align: super;\\n font-size: 0.7em;\\n line-height: 0.1em;\\n}\\n\\nspan.cm-subscript {\\n font-size: 0.7em;\\n line-height: 0.5;\\n}\\n\\npre.cm-quote-line {\\n padding-left: 0.4em !important;\\n border-left: #444 solid 0.2em !important;\\n}\\n\\n.cm-code-block-line,\\n.latex {\\n background: rgba(0, 0, 0, 0.2);\\n}\\n\\nspan.cm-h1 {\\n font-weight: 700;\\n font-size: 1.383em;\\n line-height: 1.802em;\\n}\\n\\nspan.cm-h2 {\\n font-weight: 600;\\n font-size: 1.296em;\\n line-height: 1.602em;\\n}\\n\\nspan.cm-h3 {\\n font-weight: 500;\\n font-size: 1.215em;\\n line-height: 1.424em;\\n}\\n\\nspan.cm-h4 {\\n font-weight: 400;\\n font-size: 1.138em;\\n line-height: 1.266em;\\n}\\n\\nspan.cm-h5 {\\n font-weight: 400;\\n font-size: 1.067em;\\n line-height: 1.125em;\\n}\\n\\nspan.cm-h6 {\\n font-weight: 400;\\n}\\n\\nspan.cm-link {\\n cursor: pointer;\\n}\\n\\nspan.cm-internallink,\\nspan.cm-externallink {\\n cursor: pointer;\\n font-weight: 800;\\n}\\n\\nspan.cm-internallink {\\n text-decoration: none;\\n}\\n\",\"title\":\"$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/style.css\",\"tags\":\"$:/tags/Stylesheet\"},\"$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/mode/tex.js\":{\"text\":\"// CodeMirror, copyright (c) by Marijn Haverbeke and others\\n// Distributed under an MIT license: https://codemirror.net/LICENSE\\n\\n/*\\n * Author: Constantin Jucovschi (c.jucovschi@jacobs-university.de)\\n * Licence: MIT\\n */\\n\\n(function(mod) {\\n if (typeof exports == \\\"object\\\" && typeof module == \\\"object\\\") // CommonJS\\n mod(require(\\\"$:/plugins/tiddlywiki/codemirror/lib/codemirror.js\\\"));\\n else if (typeof define == \\\"function\\\" && define.amd) // AMD\\n define([\\\"$:/plugins/tiddlywiki/codemirror/lib/codemirror.js\\\"], mod);\\n else // Plain browser env\\n mod(CodeMirror);\\n})(function(CodeMirror) {\\n \\\"use strict\\\";\\n\\n CodeMirror.defineMode(\\\"tex\\\", function(_config, parserConfig) {\\n function pushCommand(state, command) {\\n state.cmdState.push(command);\\n }\\n\\n function peekCommand(state) {\\n if (state.cmdState.length > 0) {\\n return state.cmdState[state.cmdState.length - 1];\\n } else {\\n return null;\\n }\\n }\\n\\n function popCommand(state) {\\n var plug = state.cmdState.pop();\\n if (plug) {\\n plug.closeBracket();\\n }\\n }\\n\\n // returns the non-default plugin closest to the end of the list\\n function getMostPowerful(state) {\\n var context = state.cmdState;\\n for (var i = context.length - 1; i >= 0; i--) {\\n var plug = context[i];\\n if (plug.name == \\\"DEFAULT\\\") {\\n continue;\\n }\\n return plug;\\n }\\n return {\\n styleIdentifier: function() {\\n return null;\\n }\\n };\\n }\\n\\n function addPluginPattern(pluginName, cmdStyle, styles) {\\n return function() {\\n this.name = pluginName;\\n this.bracketNo = 0;\\n this.style = cmdStyle;\\n this.styles = styles;\\n this.argument = null; // \\\\begin and \\\\end have arguments that follow. These are stored in the plugin\\n\\n this.styleIdentifier = function() {\\n return this.styles[this.bracketNo - 1] || null;\\n };\\n this.openBracket = function() {\\n this.bracketNo++;\\n return \\\"bracket\\\";\\n };\\n this.closeBracket = function() {};\\n };\\n }\\n\\n var plugins = {};\\n\\n plugins[\\\"importmodule\\\"] = addPluginPattern(\\\"importmodule\\\", \\\"tag\\\", [\\\"string\\\", \\\"builtin\\\"]);\\n plugins[\\\"documentclass\\\"] = addPluginPattern(\\\"documentclass\\\", \\\"tag\\\", [\\\"\\\", \\\"atom\\\"]);\\n plugins[\\\"usepackage\\\"] = addPluginPattern(\\\"usepackage\\\", \\\"tag\\\", [\\\"atom\\\"]);\\n plugins[\\\"begin\\\"] = addPluginPattern(\\\"begin\\\", \\\"tag\\\", [\\\"atom\\\"]);\\n plugins[\\\"end\\\"] = addPluginPattern(\\\"end\\\", \\\"tag\\\", [\\\"atom\\\"]);\\n\\n plugins[\\\"label\\\"] = addPluginPattern(\\\"label\\\", \\\"tag\\\", [\\\"atom\\\"]);\\n plugins[\\\"ref\\\"] = addPluginPattern(\\\"ref\\\", \\\"tag\\\", [\\\"atom\\\"]);\\n plugins[\\\"eqref\\\"] = addPluginPattern(\\\"eqref\\\", \\\"tag\\\", [\\\"atom\\\"]);\\n plugins[\\\"cite\\\"] = addPluginPattern(\\\"cite\\\", \\\"tag\\\", [\\\"atom\\\"]);\\n plugins[\\\"bibitem\\\"] = addPluginPattern(\\\"bibitem\\\", \\\"tag\\\", [\\\"atom\\\"]);\\n plugins[\\\"Bibitem\\\"] = addPluginPattern(\\\"Bibitem\\\", \\\"tag\\\", [\\\"atom\\\"]);\\n plugins[\\\"RBibitem\\\"] = addPluginPattern(\\\"RBibitem\\\", \\\"tag\\\", [\\\"atom\\\"]);\\n\\n plugins[\\\"DEFAULT\\\"] = function() {\\n this.name = \\\"DEFAULT\\\";\\n this.style = \\\"tag\\\";\\n\\n this.styleIdentifier = this.openBracket = this.closeBracket = function() {};\\n };\\n\\n function setState(state, f) {\\n state.f = f;\\n }\\n\\n // called when in a normal (no environment) context\\n function normal(source, state) {\\n var plug;\\n // Do we look like '\\\\command' ? If so, attempt to apply the plugin 'command'\\n if (source.match(/^\\\\\\\\[a-zA-Z@]+/)) {\\n var cmdName = source.current().slice(1);\\n plug = plugins.hasOwnProperty(cmdName) ? plugins[cmdName] : plugins[\\\"DEFAULT\\\"];\\n plug = new plug();\\n pushCommand(state, plug);\\n setState(state, beginParams);\\n return plug.style;\\n }\\n\\n // escape characters\\n if (source.match(/^\\\\\\\\[$&%#{}_]/)) {\\n return \\\"tag\\\";\\n }\\n\\n // white space control characters\\n if (source.match(/^\\\\\\\\[,;!\\\\/\\\\\\\\]/)) {\\n return \\\"tag\\\";\\n }\\n\\n // find if we're starting various math modes\\n if (source.match(\\\"\\\\\\\\[\\\")) {\\n setState(state, function(source, state) {\\n return inMathMode(source, state, \\\"\\\\\\\\]\\\");\\n });\\n return \\\"keyword\\\";\\n }\\n if (source.match(\\\"\\\\\\\\(\\\")) {\\n setState(state, function(source, state) {\\n return inMathMode(source, state, \\\"\\\\\\\\)\\\");\\n });\\n return \\\"keyword\\\";\\n }\\n if (source.match(\\\"$$\\\")) {\\n setState(state, function(source, state) {\\n return inMathMode(source, state, \\\"$$\\\");\\n });\\n return \\\"keyword\\\";\\n }\\n if (source.match(\\\"$\\\")) {\\n setState(state, function(source, state) {\\n return inMathMode(source, state, \\\"$\\\");\\n });\\n return \\\"keyword\\\";\\n }\\n\\n var ch = source.next();\\n if (ch == \\\"%\\\") {\\n source.skipToEnd();\\n return \\\"comment\\\";\\n } else if (ch == '}' || ch == ']') {\\n plug = peekCommand(state);\\n if (plug) {\\n plug.closeBracket(ch);\\n setState(state, beginParams);\\n } else {\\n return \\\"error\\\";\\n }\\n return \\\"bracket\\\";\\n } else if (ch == '{' || ch == '[') {\\n plug = plugins[\\\"DEFAULT\\\"];\\n plug = new plug();\\n pushCommand(state, plug);\\n return \\\"bracket\\\";\\n } else if (/\\\\d/.test(ch)) {\\n source.eatWhile(/[\\\\w.%]/);\\n return \\\"atom\\\";\\n } else {\\n source.eatWhile(/[\\\\w\\\\-_]/);\\n plug = getMostPowerful(state);\\n if (plug.name == 'begin') {\\n plug.argument = source.current();\\n }\\n return plug.styleIdentifier();\\n }\\n }\\n\\n function inMathMode(source, state, endModeSeq) {\\n if (source.eatSpace()) {\\n return null;\\n }\\n if (endModeSeq && source.match(endModeSeq)) {\\n setState(state, normal);\\n return \\\"keyword\\\";\\n }\\n if (source.match(/^\\\\\\\\[a-zA-Z@]+/)) {\\n return \\\"tag\\\";\\n }\\n if (source.match(/^[a-zA-Z]+/)) {\\n return \\\"variable-2\\\";\\n }\\n // escape characters\\n if (source.match(/^\\\\\\\\[$&%#{}_]/)) {\\n return \\\"tag\\\";\\n }\\n // white space control characters\\n if (source.match(/^\\\\\\\\[,;!\\\\/]/)) {\\n return \\\"tag\\\";\\n }\\n // special math-mode characters\\n if (source.match(/^[\\\\^_&]/)) {\\n return \\\"tag\\\";\\n }\\n // non-special characters\\n if (source.match(/^[+\\\\-\u003C>|=,\\\\/@!*:;'\\\"`~#?]/)) {\\n return null;\\n }\\n if (source.match(/^(\\\\d+\\\\.\\\\d*|\\\\d*\\\\.\\\\d+|\\\\d+)/)) {\\n return \\\"number\\\";\\n }\\n var ch = source.next();\\n if (ch == \\\"{\\\" || ch == \\\"}\\\" || ch == \\\"[\\\" || ch == \\\"]\\\" || ch == \\\"(\\\" || ch == \\\")\\\") {\\n return \\\"bracket\\\";\\n }\\n\\n if (ch == \\\"%\\\") {\\n source.skipToEnd();\\n return \\\"comment\\\";\\n }\\n return \\\"error\\\";\\n }\\n\\n function beginParams(source, state) {\\n var ch = source.peek(),\\n lastPlug;\\n if (ch == '{' || ch == '[') {\\n lastPlug = peekCommand(state);\\n lastPlug.openBracket(ch);\\n source.eat(ch);\\n setState(state, normal);\\n return \\\"bracket\\\";\\n }\\n if (/[ \\\\t\\\\r]/.test(ch)) {\\n source.eat(ch);\\n return null;\\n }\\n setState(state, normal);\\n popCommand(state);\\n\\n return normal(source, state);\\n }\\n\\n return {\\n startState: function() {\\n var f = parserConfig.inMathMode ? function(source, state) {\\n return inMathMode(source, state);\\n } : normal;\\n return {\\n cmdState: [],\\n f: f\\n };\\n },\\n copyState: function(s) {\\n return {\\n cmdState: s.cmdState.slice(),\\n f: s.f\\n };\\n },\\n token: function(stream, state) {\\n return state.f(stream, state);\\n },\\n blankLine: function(state) {\\n state.f = normal;\\n state.cmdState.length = 0;\\n },\\n lineComment: \\\"%\\\"\\n };\\n });\\n\\n CodeMirror.defineMIME(\\\"text/x-stex\\\", \\\"tex\\\");\\n CodeMirror.defineMIME(\\\"text/x-latex\\\", \\\"tex\\\");\\n});\\n\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/mode/tex.js\",\"module-type\":\"codemirror\"},\"$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/readme\":{\"text\":\"\u003C$wikify name=\\\"rendered\\\" text={{{[cmei18n[readme]]}}} output=html>\u003C\u003Crendered>>\u003C/$wikify>\\n\",\"title\":\"$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/readme\"},\"$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/LICENSE\":{\"text\":\"MIT License\\n\\nCopyright (c) 2021 Ke Wang (Gk0Wk in GitHub)\\n\\nPermission is hereby granted, free of charge, to any person obtaining a copy\\nof this software and associated documentation files (the \\\"Software\\\"), to deal\\nin the Software without restriction, including without limitation the rights\\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\\ncopies of the Software, and to permit persons to whom the Software is\\nfurnished to do so, subject to the following conditions:\\n\\nThe above copyright notice and this permission notice shall be included in all\\ncopies or substantial portions of the Software.\\n\\nTHE SOFTWARE IS PROVIDED \\\"AS IS\\\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\\nSOFTWARE.\\n\",\"title\":\"$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/LICENSE\"},\"$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/core.js\":{\"text\":\"(function (CodeMirror) {\\n 'use strict';\\n\\n function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\\n\\n function _interopNamespace(e) {\\n if (e && e.__esModule) return e;\\n var n = Object.create(null);\\n if (e) {\\n Object.keys(e).forEach(function (k) {\\n if (k !== 'default') {\\n var d = Object.getOwnPropertyDescriptor(e, k);\\n Object.defineProperty(n, k, d.get ? d : {\\n enumerable: true,\\n get: function () { return e[k]; }\\n });\\n }\\n });\\n }\\n n[\\\"default\\\"] = e;\\n return Object.freeze(n);\\n }\\n\\n var CodeMirror__default = /*#__PURE__*/_interopDefaultLegacy(CodeMirror);\\n var CodeMirror__namespace = /*#__PURE__*/_interopNamespace(CodeMirror);\\n\\n /*! *****************************************************************************\\r\\n Copyright (c) Microsoft Corporation.\\r\\n\\r\\n Permission to use, copy, modify, and/or distribute this software for any\\r\\n purpose with or without fee is hereby granted.\\r\\n\\r\\n THE SOFTWARE IS PROVIDED \\\"AS IS\\\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\\r\\n REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\\r\\n AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\\r\\n INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\\r\\n LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\\r\\n OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\\r\\n PERFORMANCE OF THIS SOFTWARE.\\r\\n ***************************************************************************** */\\r\\n\\r\\n var __assign = function() {\\r\\n __assign = Object.assign || function __assign(t) {\\r\\n for (var s, i = 1, n = arguments.length; i \u003C n; i++) {\\r\\n s = arguments[i];\\r\\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\\r\\n }\\r\\n return t;\\r\\n };\\r\\n return __assign.apply(this, arguments);\\r\\n };\\r\\n\\r\\n function __awaiter(thisArg, _arguments, P, generator) {\\r\\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\\r\\n return new (P || (P = Promise))(function (resolve, reject) {\\r\\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\\r\\n function rejected(value) { try { step(generator[\\\"throw\\\"](value)); } catch (e) { reject(e); } }\\r\\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\\r\\n step((generator = generator.apply(thisArg, _arguments || [])).next());\\r\\n });\\r\\n }\\r\\n\\r\\n function __generator(thisArg, body) {\\r\\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\\r\\n return g = { next: verb(0), \\\"throw\\\": verb(1), \\\"return\\\": verb(2) }, typeof Symbol === \\\"function\\\" && (g[Symbol.iterator] = function() { return this; }), g;\\r\\n function verb(n) { return function (v) { return step([n, v]); }; }\\r\\n function step(op) {\\r\\n if (f) throw new TypeError(\\\"Generator is already executing.\\\");\\r\\n while (_) try {\\r\\n if (f = 1, y && (t = op[0] & 2 ? y[\\\"return\\\"] : op[0] ? y[\\\"throw\\\"] || ((t = y[\\\"return\\\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\\r\\n if (y = 0, t) op = [op[0] & 2, t.value];\\r\\n switch (op[0]) {\\r\\n case 0: case 1: t = op; break;\\r\\n case 4: _.label++; return { value: op[1], done: false };\\r\\n case 5: _.label++; y = op[1]; op = [0]; continue;\\r\\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\\r\\n default:\\r\\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\\r\\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] \u003C t[3]))) { _.label = op[1]; break; }\\r\\n if (op[0] === 6 && _.label \u003C t[1]) { _.label = t[1]; t = op; break; }\\r\\n if (t && _.label \u003C t[2]) { _.label = t[2]; _.ops.push(op); break; }\\r\\n if (t[2]) _.ops.pop();\\r\\n _.trys.pop(); continue;\\r\\n }\\r\\n op = body.call(thisArg, _);\\r\\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\\r\\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\\r\\n }\\r\\n }\\n\\n function loadTiddler(tiddler) {\\n try {\\n switch ($tw.wiki.getTiddler(tiddler).fields.type) {\\n case 'application/javascript':\\n return require(tiddler);\\n case 'application/json':\\n return JSON.parse($tw.wiki.getTiddlerText(tiddler));\\n case 'application/x-tiddler-dictionary':\\n return $tw.utils.parseFields($tw.wiki.getTiddlerText(tiddler));\\n default:\\n return undefined;\\n }\\n }\\n catch (error) {\\n console.error(error);\\n return undefined;\\n }\\n }\\n\\n function getOriginalShadowTiddler(tiddler) {\\n var source = $tw.wiki.getShadowSource(tiddler);\\n if (source === undefined)\\n return undefined;\\n var plugin = $tw.wiki.getPluginInfo(source);\\n if (plugin === undefined)\\n return undefined;\\n return plugin.tiddlers[tiddler];\\n }\\n function isOverrideCMEShadowTiddler(tiddler) {\\n return $tw.wiki.filterTiddlers('[field:title[$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/config.json]is[shadow]]').length > 0;\\n }\\n function getOverridei18nShadowTiddler() {\\n return $tw.wiki.filterTiddlers('[!field:cmei18n[]!is[draft]is[shadow]]');\\n }\\n function mergeShadowAndTiddler(tiddler) {\\n var overrideTiddlerObject = loadTiddler(tiddler);\\n if (overrideTiddlerObject === undefined)\\n $tw.wiki.deleteTiddler(tiddler);\\n var plugin = $tw.wiki.getPluginInfo('$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced');\\n var shadowTiddlerObject;\\n try {\\n if (plugin.tiddlers[tiddler].type !== undefined && plugin.tiddlers[tiddler].type === 'application/x-tiddler-dictionary') {\\n shadowTiddlerObject = $tw.utils.parseFields(plugin.tiddlers[tiddler].text);\\n }\\n else {\\n shadowTiddlerObject = JSON.parse(plugin.tiddlers[tiddler].text);\\n }\\n }\\n catch (error) {\\n console.error(error);\\n return undefined;\\n }\\n return new $tw.Tiddler(__assign(__assign(__assign(__assign(__assign({}, $tw.wiki.getCreationFields()), $tw.wiki.getPluginInfo('$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced').tiddlers[tiddler]), $tw.wiki.getTiddler(tiddler)), { text: JSON.stringify(__assign(__assign({}, shadowTiddlerObject), overrideTiddlerObject), null, 4) }), $tw.wiki.getModificationFields()));\\n }\\n function checkIncomingTiddler(tiddler) {\\n var temporaryTiddler = tiddler;\\n if (temporaryTiddler.fields.title !== undefined &&\\n (temporaryTiddler.fields.title === '$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/config.json' || temporaryTiddler.fields.cmei18n !== undefined))\\n temporaryTiddler = mergeShadowAndTiddler(tiddler.fields.title);\\n return temporaryTiddler;\\n }\\n function init$5() {\\n if (isOverrideCMEShadowTiddler()) {\\n var mergedTiddler = mergeShadowAndTiddler('$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/config.json');\\n if (mergedTiddler !== undefined)\\n $tw.wiki.addTiddler(mergedTiddler);\\n else\\n $tw.wiki.deleteTiddler('$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/config.json');\\n }\\n $tw.utils.each(getOverridei18nShadowTiddler(), function (i18nShadowTiddler) {\\n var mergedTiddler = mergeShadowAndTiddler(i18nShadowTiddler);\\n if (mergedTiddler !== undefined)\\n $tw.wiki.addTiddler(mergedTiddler);\\n else\\n $tw.wiki.deleteTiddler(i18nShadowTiddler);\\n });\\n $tw.hooks.addHook('th-saving-tiddler', checkIncomingTiddler);\\n $tw.hooks.addHook('th-importing-tiddler', checkIncomingTiddler);\\n return {\\n getOriginalShadowTiddler: getOriginalShadowTiddler,\\n isOverrideCMEShadowTiddler: isOverrideCMEShadowTiddler,\\n };\\n }\\n\\n var activatedEditor;\\n function currentEditor() {\\n if (activatedEditor === undefined)\\n return undefined;\\n var wrapper = activatedEditor.getWrapperElement();\\n if (!wrapper.ownerDocument.contains(wrapper))\\n activatedEditor = undefined;\\n return activatedEditor;\\n }\\n function insertToCurrentEditor(text) {\\n var editor = currentEditor();\\n if (editor === undefined)\\n return false;\\n editor.replaceRange(text, editor.getCursor(), editor.getCursor(), 'input');\\n return true;\\n }\\n function getCurrentSelections() {\\n var editor = currentEditor();\\n if (editor === undefined)\\n return [];\\n return editor.getSelections();\\n }\\n function replaceCurrentSelections(textArray) {\\n var editor = currentEditor();\\n if (editor === undefined)\\n return;\\n editor.replaceSelections(textArray);\\n }\\n function init$4() {\\n CodeMirror__default[\\\"default\\\"].defineInitHook(function (editor) {\\n editor.on('focus', function (editor_) {\\n activatedEditor = editor_;\\n });\\n });\\n return {\\n currentEditor: currentEditor,\\n insertToCurrentEditor: insertToCurrentEditor,\\n getCurrentSelections: getCurrentSelections,\\n replaceCurrentSelections: replaceCurrentSelections,\\n };\\n }\\n\\n var InnerService = (function () {\\n function InnerService(bald) {\\n this.name = bald.name;\\n this.tag = bald.tag !== undefined ? bald.tag : undefined;\\n this.onLoad = bald.onLoad;\\n this.onHook = bald.onHook;\\n this.addons = {};\\n this.isLoad = false;\\n this.lastAddonsUpdateTime = new Date(0);\\n }\\n return InnerService;\\n }());\\n var services = {};\\n var api$1 = {};\\n function updateService() {\\n $tw.utils.each(services, function (service, name) {\\n if (service.tag === undefined)\\n return;\\n var tiddlers = $tw.wiki.filterTiddlers(\\\"[all[tiddlers+shadows]tag[\\\" + service.tag + \\\"]!is[draft]]\\\");\\n $tw.utils.each(tiddlers, function (tiddler) {\\n if (!(tiddler in service.addons)) {\\n var addon = loadTiddler(tiddler);\\n if (addon !== undefined)\\n service.addons[tiddler] = addon;\\n }\\n else {\\n var tiddlerData = $tw.wiki.getTiddler(tiddler);\\n if (tiddlerData !== undefined &&\\n ((tiddlerData.fields.modified !== undefined && tiddlerData.fields.modified >= service.lastAddonsUpdateTime) ||\\n (tiddlerData.fields.created !== undefined && tiddlerData.fields.created >= service.lastAddonsUpdateTime))) {\\n var addon = loadTiddler(tiddler);\\n if (addon !== undefined)\\n service.addons[tiddler] = addon;\\n else\\n delete service.addons[tiddler];\\n }\\n }\\n });\\n $tw.utils.each(service.addons, function (addon, tiddler) {\\n if (!tiddlers.includes(tiddler)) {\\n delete service.addons[tiddler];\\n }\\n });\\n service.lastAddonsUpdateTime = new Date();\\n });\\n }\\n function registerService(service) {\\n services[service.name] = new InnerService(service);\\n if (service.api !== undefined)\\n api$1[service.name] = service.api;\\n }\\n function getAddons(name) {\\n return services[name].addons;\\n }\\n function init$3(cme) {\\n CodeMirror__namespace.defineInitHook(function (editor) {\\n updateService();\\n for (var name_1 in services) {\\n var service = services[name_1];\\n if (!service.isLoad)\\n service.onLoad(cme);\\n service.onHook(editor, cme);\\n }\\n });\\n return api$1;\\n }\\n\\n function getOption(key) {\\n return $tw.wiki.filterTiddlers(\\\"[[$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/config.json]getindex[\\\" + key + \\\"]]\\\")[0];\\n }\\n function getBoolean(key, defaultValue) {\\n var optionText = getOption(key);\\n return optionText !== undefined ? optionText.toLowerCase() === 'true' : defaultValue;\\n }\\n var Options = (function () {\\n function Options() {\\n }\\n Object.defineProperty(Options, \\\"clickableService\\\", {\\n get: function () {\\n return getBoolean('clickable-links', false);\\n },\\n enumerable: false,\\n configurable: true\\n });\\n Object.defineProperty(Options, \\\"realtimeHint\\\", {\\n get: function () {\\n return getBoolean('realtime-hint', false);\\n },\\n enumerable: false,\\n configurable: true\\n });\\n Object.defineProperty(Options, \\\"hintPreview\\\", {\\n get: function () {\\n return getBoolean('hint-preview', false);\\n },\\n enumerable: false,\\n configurable: true\\n });\\n return Options;\\n }());\\n\\n var functionKey = /macintosh|mac os x/i.test(navigator.userAgent) ? 'metaKey' : 'ctrlKey';\\n function init$2() {\\n registerService({\\n name: 'ClickableToken',\\n tag: '$:/CodeMirrorEnhanced/ClickableToken',\\n onLoad: function (cme) {\\n },\\n onHook: function (editor, cme) {\\n editor.on('mousedown', function (cm, event) {\\n if (event[functionKey] && Options.clickableService) {\\n var addons = getAddons('ClickableToken');\\n for (var key in addons) {\\n if (addons[key].handler(editor, event, cme))\\n break;\\n }\\n }\\n });\\n },\\n });\\n }\\n\\n function globalHintRender(hintNode, hints, currentHint) {\\n var _a, _b, _c, _d;\\n var ownerDocument = hintNode.ownerDocument;\\n var titlePartNode = ownerDocument.createElement('span');\\n hintNode.append(titlePartNode);\\n titlePartNode.className = 'hint-title';\\n if (currentHint.render_ !== undefined) {\\n currentHint.render_(titlePartNode, hints, currentHint);\\n }\\n else {\\n var text_1 = (_b = (_a = currentHint.displayText) !== null && _a !== void 0 ? _a : currentHint.text) !== null && _b !== void 0 ? _b : '';\\n if (currentHint.hintMatch !== undefined) {\\n var textList_1 = [];\\n try {\\n currentHint.hintMatch.sort(function (a, b) {\\n return a.from - b.from;\\n });\\n var pointer_1 = 0;\\n $tw.utils.each(currentHint.hintMatch, function (range) {\\n if (range.from > pointer_1) {\\n textList_1.push(text_1.substring(pointer_1, range.from));\\n }\\n pointer_1 = range.to;\\n textList_1.push(\\\"\u003Cspan class=\\\\\\\"hint-title-highlighted\\\\\\\">\\\" + text_1.substring(range.from, pointer_1) + \\\"\u003C/span>\\\");\\n });\\n if (text_1.length > pointer_1)\\n textList_1.push(text_1.substring(pointer_1));\\n text_1 = textList_1.join('');\\n }\\n catch (_e) {\\n text_1 = (_d = (_c = currentHint.displayText) !== null && _c !== void 0 ? _c : currentHint.text) !== null && _d !== void 0 ? _d : '';\\n }\\n }\\n titlePartNode.innerHTML = text_1;\\n }\\n var typeString = currentHint.type;\\n if (typeString !== undefined) {\\n var typePartNode = ownerDocument.createElement('span');\\n hintNode.append(typePartNode);\\n typePartNode.className = 'hint-type';\\n typePartNode.append(ownerDocument.createTextNode(typeString));\\n }\\n }\\n function init$1() {\\n var _this = this;\\n registerService({\\n name: 'RealtimeHint',\\n tag: '$:/CodeMirrorEnhanced/RealtimeHint',\\n onLoad: function (cme) {\\n CodeMirror__default[\\\"default\\\"].registerHelper('hint', 'tiddlywiki5', function (editor, options) { return __awaiter(_this, void 0, void 0, function () {\\n var addons, getHintAsyncTasks, _loop_1, addonTiddler, result_1, _a, _b, previewBoxNode_1, closePreview_1, error_1;\\n return __generator(this, function (_c) {\\n switch (_c.label) {\\n case 0:\\n _c.trys.push([0, 2, , 3]);\\n addons = getAddons('RealtimeHint');\\n getHintAsyncTasks = [];\\n _loop_1 = function (addonTiddler) {\\n var addon = addons[addonTiddler];\\n getHintAsyncTasks.push(new Promise(function (resolve) {\\n var hintAddon = addon;\\n try {\\n var hints_1 = hintAddon.hint(editor, options, cme);\\n var tmplist_1 = [];\\n var minPos_1 = editor.getCursor();\\n if (typeof hints_1 === 'object') {\\n if (hints_1.from !== undefined && CodeMirror__default[\\\"default\\\"].cmpPos(minPos_1, hints_1.from) > 0)\\n minPos_1 = hints_1.from;\\n $tw.utils.each(hints_1.list, function (hint) {\\n if (typeof hint === 'string') {\\n if (hints_1.from !== undefined && hints_1.to !== undefined)\\n tmplist_1.push({\\n text: hint,\\n from: hints_1.from,\\n to: hints_1.to,\\n render_: hints_1.render,\\n render: globalHintRender,\\n renderPreview: hints_1.renderPreview,\\n hint: hints_1.hint,\\n type: hints_1.type,\\n className: 'cm-hacked-hint',\\n });\\n }\\n else {\\n var _from = hint.from === undefined ? hints_1.from : hint.from;\\n var _to = hint.to === undefined ? hints_1.to : hint.to;\\n if (_from !== undefined && _to !== undefined)\\n tmplist_1.push({\\n text: hint.text,\\n displayText: hint.displayText,\\n from: _from,\\n to: _to,\\n render_: hint.render === undefined ? hints_1.render : hint.render,\\n render: globalHintRender,\\n renderPreview: hint.renderPreview === undefined ? hints_1.renderPreview : hint.renderPreview,\\n hintMatch: hint.hintMatch === undefined ? hints_1.hintMatch : hint.hintMatch,\\n hint: hint.hint === undefined ? hints_1.hint : hint.hint,\\n type: hint.type === undefined ? hints_1.type : hint.type,\\n renderCache: hint.renderCache,\\n className: 'cm-hacked-hint',\\n });\\n if (hint.from !== undefined && CodeMirror__default[\\\"default\\\"].cmpPos(minPos_1, hint.from) > 0)\\n minPos_1 = hint.from;\\n }\\n });\\n }\\n resolve({\\n from: minPos_1,\\n list: tmplist_1,\\n to: editor.getCursor(),\\n });\\n }\\n catch (error) {\\n console.error(\\\"Error occured by tiddler \\\" + addonTiddler + \\\":\\\");\\n console.error(error);\\n resolve(undefined);\\n }\\n }));\\n };\\n for (addonTiddler in addons) {\\n _loop_1(addonTiddler);\\n }\\n result_1 = {\\n from: editor.getCursor(),\\n list: [],\\n to: editor.getCursor(),\\n };\\n _b = (_a = $tw.utils).each;\\n return [4, Promise.all(getHintAsyncTasks)];\\n case 1:\\n _b.apply(_a, [_c.sent(), function (hints) {\\n if (hints === undefined)\\n return;\\n $tw.utils.each(hints.list, function (hint) {\\n result_1.list.push(hint);\\n });\\n if (CodeMirror__default[\\\"default\\\"].cmpPos(result_1.from, hints.from) > 0)\\n result_1.from = hints.from;\\n }]);\\n closePreview_1 = function () {\\n var _a;\\n if (((_a = previewBoxNode_1 === null || previewBoxNode_1 === void 0 ? void 0 : previewBoxNode_1.ownerDocument.body) === null || _a === void 0 ? void 0 : _a.contains(previewBoxNode_1)) === true)\\n previewBoxNode_1 === null || previewBoxNode_1 === void 0 ? void 0 : previewBoxNode_1.remove();\\n };\\n if (result_1.list.length > 0) {\\n CodeMirror__default[\\\"default\\\"].on(result_1, 'select', function (selectedData_, selectedNode_) {\\n var selectedData = selectedData_;\\n var selectedNode = selectedNode_;\\n if (Options.hintPreview) {\\n var parentNode = selectedNode.parentNode;\\n var appendId = parentNode.id + '-hint-append';\\n previewBoxNode_1 = selectedNode.ownerDocument.querySelector(\\\"#\\\" + appendId);\\n var shouldCreate = previewBoxNode_1 === null || previewBoxNode_1 === undefined;\\n if (shouldCreate) {\\n previewBoxNode_1 = selectedNode.ownerDocument.createElement('div');\\n previewBoxNode_1.id = appendId;\\n previewBoxNode_1.className =\\n 'CodeMirror-hints CodeMirror-hints-append ' + (editor.getOption('theme') === undefined ? '' : editor.getOption('theme'));\\n previewBoxNode_1.style.left = parentNode.offsetLeft + parentNode.offsetWidth + \\\"px\\\";\\n previewBoxNode_1.style.top = parentNode.offsetTop + \\\"px\\\";\\n }\\n var shouldDisplay = false;\\n try {\\n if (typeof selectedData.renderCache === 'string') {\\n previewBoxNode_1.innerHTML = selectedData.renderCache;\\n shouldDisplay = true;\\n }\\n else if (typeof selectedData.renderPreview === 'function') {\\n shouldDisplay = selectedData.renderPreview(previewBoxNode_1, selectedData, selectedNode);\\n if (shouldDisplay && previewBoxNode_1.innerHTML.trim() === '')\\n shouldDisplay = false;\\n }\\n }\\n catch (error) {\\n previewBoxNode_1.textContent = String(error);\\n console.error(error);\\n }\\n if (shouldDisplay) {\\n if (shouldCreate) {\\n CodeMirror__default[\\\"default\\\"].on(result_1, 'close', closePreview_1);\\n CodeMirror__default[\\\"default\\\"].on(editor, 'endCompletion', closePreview_1);\\n var closingOnBlur_1;\\n editor.on('blur', function () {\\n closingOnBlur_1 = setTimeout(closePreview_1, 100);\\n });\\n editor.on('focus', function () { return clearTimeout(closingOnBlur_1); });\\n selectedNode.ownerDocument.body.append(previewBoxNode_1);\\n }\\n }\\n else if (selectedNode.ownerDocument.body.contains(previewBoxNode_1))\\n previewBoxNode_1 === null || previewBoxNode_1 === void 0 ? void 0 : previewBoxNode_1.remove();\\n }\\n });\\n }\\n else {\\n closePreview_1();\\n }\\n return [2, result_1];\\n case 2:\\n error_1 = _c.sent();\\n console.error(error_1);\\n return [2, null];\\n case 3: return [2];\\n }\\n });\\n }); });\\n },\\n onHook: function (editor, cme) {\\n editor.on('change', function (cm, event) {\\n if (cm.state.completeActive || typeof cm.showHint !== 'function' || !Options.realtimeHint)\\n return;\\n if (event.origin === '+input') {\\n if (cm.getDoc().modeOption === 'text/vnd.tiddlywiki') {\\n if (/[,;]$/.test(event.text[0]))\\n return;\\n }\\n else {\\n if (/[(),;[\\\\]{}]$/.test(event.text[0]))\\n return;\\n }\\n if (event.text[0].trim() === '') {\\n if (event.text.length > 1) {\\n if (event.text[1].trim() === '')\\n return;\\n }\\n else\\n return;\\n }\\n }\\n else if (event.origin === '+delete') {\\n if (event.removed === undefined || event.removed.length > 2 || event.removed[0] === '')\\n return;\\n if (event.to.ch \u003C 2)\\n return;\\n var theLine = cm.getDoc().getLine(event.to.line);\\n if (theLine === undefined || theLine.length === 0 || theLine.substr(0, event.to.ch - 1).trim() === '')\\n return;\\n }\\n else {\\n return;\\n }\\n cm.showHint({\\n completeSingle: false,\\n closeOnPick: true,\\n });\\n });\\n },\\n api: {\\n makeLiteralHintMatch: function (text, search, options) {\\n var hintMatch = [];\\n if (text.length === 0 || search.length === 0)\\n return hintMatch;\\n if ((options === null || options === void 0 ? void 0 : options.maxTimes) === 0)\\n return hintMatch;\\n if ((options === null || options === void 0 ? void 0 : options.caseSensitive) !== true) {\\n text = text.toLowerCase();\\n search = search.toLowerCase();\\n }\\n var to = 0;\\n if ((options === null || options === void 0 ? void 0 : options.maxTimes) !== undefined && options.maxTimes > 0) {\\n var counter = 0;\\n var times = options.maxTimes;\\n while (counter++ \u003C times) {\\n var from = text.indexOf(search, to);\\n if (from \u003C 0)\\n break;\\n to = from + search.length;\\n hintMatch.push({ from: from, to: to });\\n }\\n }\\n else {\\n while (true) {\\n var from = text.indexOf(search, to);\\n if (from \u003C 0)\\n break;\\n to = from + search.length;\\n hintMatch.push({ from: from, to: to });\\n }\\n }\\n return hintMatch;\\n },\\n },\\n });\\n }\\n\\n function getSnippetsList() {\\n return getAddons('SnippetsList');\\n }\\n function init() {\\n registerService({\\n name: 'SnippetsList',\\n tag: '$:/CodeMirrorEnhanced/SnippetsList',\\n onLoad: function (cme) {\\n },\\n onHook: function (editor, cme) {\\n },\\n api: {\\n getSnippetsList: getSnippetsList,\\n },\\n });\\n }\\n\\n var api = {};\\n api.CodeMirror = CodeMirror__default[\\\"default\\\"];\\n api.tiddlerMerge = init$5();\\n api.editor = init$4();\\n api.service = init$3(api);\\n init$2();\\n init$1();\\n init();\\n var selfGlobal = (window === undefined ? globalThis : window);\\n selfGlobal.$cme = api;\\n\\n})(CodeMirror);\\n\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/core.js\",\"module-type\":\"codemirror\"},\"$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/hint/hint-tw5-tiddler.js\":{\"text\":\"/* Enhance from and specially thank to https://github.com/adithya-badidey/TW5-codemirror-plus */\\n(function(mod) {\\n if (typeof exports === 'object' && typeof module === 'object')\\n // CommonJS\\n module.exports = mod();\\n else if (typeof define === 'function' && define.amd)\\n // AMD\\n define([], mod);\\n // Plain browser env\\n else mod();\\n})(function() {\\n 'use strict';\\n\\n function hintTiddler(editor, options, cme) {\\n const current = editor.getCursor();\\n var currentLine = editor.getLine(current.line);\\n var pointer = current.ch;\\n var end = current.ch;\\n var max_length = 30;\\n\\n // wikilink match\\n // look forward from cursor to [{|\\\"\\n // if meet ]}.> or line head, stop\\n var escapeChars = ['.', ']', '}', '>'];\\n var stopChars = ['[', '{', '|', '\\\"'];\\n while (pointer) {\\n var ch = currentLine.charAt(pointer - 1);\\n if (end - pointer > max_length || escapeChars.includes(ch)) {\\n return undefined;\\n }\\n if (!stopChars.includes(ch)) {\\n pointer--;\\n } else {\\n break;\\n }\\n }\\n if (pointer == 0) return undefined;\\n var curWord = pointer !== end && currentLine.slice(pointer, end);\\n\\n var tiddlerList = [];\\n var filteredTiddler =\\n currentLine.charAt(pointer) === '$' ?\\n $tw.wiki.filterTiddlers('[all[tiddlers]search:title:literal[' + curWord + ']!prefix[$:/state]]') :\\n $tw.wiki.filterTiddlers('[all[tiddlers]!is[system]search:title:literal[' + curWord + ']!prefix[$:/state]]');\\n $tw.utils.each(filteredTiddler, (tiddler) => {\\n tiddlerList.push({\\n text: tiddler,\\n hintMatch: cme.service.RealtimeHint.makeLiteralHintMatch(tiddler, curWord),\\n });\\n })\\n\\n return {\\n from: cme.CodeMirror.Pos(current.line, pointer),\\n to: cme.CodeMirror.Pos(current.line, end),\\n renderPreview: function(domNode, selectedData, selectedNode) {\\n selectedNode.renderCache = domNode.innerHTML = $tw.wiki.renderTiddler('text/html', selectedData.text);\\n return true;\\n },\\n type: 'tiddler',\\n list: tiddlerList,\\n };\\n }\\n\\n return {\\n hint: hintTiddler,\\n };\\n});\\n\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/hint/hint-tw5-tiddler.js\",\"tags\":\"$:/CodeMirrorEnhanced/RealtimeHint\",\"module-type\":\"library\"},\"$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/hint/hint-tw5-snippet.js\":{\"text\":\"(function(mod) {\\n if (typeof exports === 'object' && typeof module === 'object')\\n // CommonJS\\n module.exports = mod();\\n else if (typeof define === 'function' && define.amd)\\n // AMD\\n define(mod);\\n // Plain browser env\\n else mod();\\n})(function() {\\n 'use strict';\\n\\n function getSnippetName(tiddler) {\\n let name = tiddler.fields['snippet-name'];\\n if (!name) {\\n const splits = tiddler.fields.title.split('/');\\n name = splits[splits.length - 1];\\n }\\n return name;\\n }\\n\\n function hintSnippet(editor, options, cme) {\\n const current = editor.getCursor();\\n const currentLine = editor.getLine(current.line);\\n let pointer = current.ch;\\n const end = current.ch;\\n const max_length = 30;\\n\\n // Match /xxxx\\n while (pointer) {\\n const ch = currentLine.charAt(pointer - 1);\\n if (end - pointer > max_length && !/[\\\\w./\\\\-]/i.test(ch)) {\\n return undefined;\\n }\\n if (ch !== '/') {\\n pointer--;\\n } else {\\n break;\\n }\\n }\\n if (pointer == 0) return undefined;\\n const currentWord = currentLine.slice(pointer, end);\\n\\n const hints = [];\\n const snippetsList = cme.service.SnippetsList.getSnippetsList();\\n $tw.utils.each(cme.service.SnippetsList.getSnippetsList(), (snippets) => {\\n $tw.utils.each(snippets, (snippet) => {\\n try {\\n if (snippet.id.includes(currentWord)) {\\n if (snippet.i18n) {\\n // cannot use ... syntax here, for backward compatibility\\n snippet = Object.assign(snippet, {\\n name: $tw.wiki.filterTiddlers(`[cmei18n[${snippet.name}]]`)[0],\\n preview: $tw.wiki.filterTiddlers(`[cmei18n[${snippet.preview}]]`)[0],\\n });\\n }\\n const displayText = snippet.name + \\\" /\\\" + snippet.id;\\n hints.push({\\n /** pass full snippet object to hint service */\\n text: snippet,\\n displayText: displayText,\\n hintMatch: cme.service.RealtimeHint.makeLiteralHintMatch(displayText, currentWord),\\n });\\n }\\n } catch (error) {\\n console.error(error);\\n }\\n });\\n });\\n\\n // Load tw5 snippet\\n $tw.utils.each($tw.wiki.filterTiddlers('[all[tiddlers+shadows]tag[$:/tags/TextEditor/Snippet]]'), (snippetTiddler) => {\\n const snippet = $tw.wiki.getTiddler(snippetTiddler);\\n const name = getSnippetName(snippet);\\n if (name.includes(currentWord)) {\\n hints.push({\\n text: {\\n snippet: snippet.fields.text,\\n preview: '!! ' + snippet.fields.caption + (snippet.fields['snippet-description'] ? '\\\\n\\\\n' + snippet.fields['snippet-description'] : ''),\\n },\\n displayText: name,\\n hintMatch: cme.service.RealtimeHint.makeLiteralHintMatch(name, currentWord),\\n });\\n }\\n });\\n\\n // Load KaTeX snippet\\n $tw.utils.each($tw.wiki.filterTiddlers('[all[tiddlers+shadows]tag[$:/tags/KaTeX/Snippet]]'), (snippetTiddler) => {\\n const snippet = $tw.wiki.getTiddler(snippetTiddler);\\n const name = getSnippetName(snippet);\\n if (name.includes(currentWord)) {\\n hints.push({\\n text: {\\n snippet: snippet.fields.text,\\n preview: snippet.fields.text,\\n },\\n displayText: name,\\n hintMatch: cme.service.RealtimeHint.makeLiteralHintMatch(name, currentWord),\\n });\\n }\\n });\\n\\n return {\\n from: cme.CodeMirror.Pos(current.line, pointer - 1),\\n to: cme.CodeMirror.Pos(current.line, end),\\n renderPreview: function(domNode, selectedData, selectedNode) {\\n selectedNode.renderCache = domNode.innerHTML = $tw.wiki.renderText(\\n 'text/html',\\n 'text/vnd.tiddlywiki',\\n selectedData.text.preview ? selectedData.text.preview.replaceAll(/(\\\\$\\\\d+)/g, '') : '',\\n );\\n return true;\\n },\\n hint: function(editor_, hints_, hint_) {\\n // Snippet text replace\\n const replaceText = hint_.text.snippet.replaceAll(/(\\\\$\\\\d+)/g, '');\\n editor_.replaceRange(replaceText, hint_.from || hints_.from, hint_.to || hints_.to, 'complete');\\n // Relocate cursor to placeholder\\n const current_ = editor_.getCursor();\\n let col = current_.ch;\\n let row = current_.line;\\n const parts = hint_.text.snippet.split(/(\\\\$\\\\d+)/, 3);\\n if (parts[2]) {\\n const splits = parts[2].split(/\\\\n/);\\n if (splits.length > 1) {\\n row -= splits.length - 1;\\n col = editor.getLine(row).length - splits[0].length;\\n } else {\\n col -= parts[2].length;\\n }\\n editor_.setCursor(row, col);\\n }\\n },\\n type: 'snippet',\\n list: hints,\\n };\\n }\\n\\n return {\\n hint: hintSnippet,\\n };\\n});\\n\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/hint/hint-tw5-snippet.js\",\"tags\":\"$:/CodeMirrorEnhanced/RealtimeHint\",\"module-type\":\"library\"},\"$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/snippetslist/tw5-snippets.json\":{\"text\":\"[\\n {\\n \\\"i18n\\\": true,\\n \\\"id\\\": \\\"blockquoteSingleline\\\",\\n \\\"name\\\": \\\"tw-snippet.blockquoteSingleline.name\\\",\\n \\\"preview\\\": \\\"tw-snippet.blockquoteSingleline.preview\\\",\\n \\\"snippet\\\": \\\"> $1\\\"\\n },\\n {\\n \\\"i18n\\\": true,\\n \\\"id\\\": \\\"blockquote\\\",\\n \\\"name\\\": \\\"tw-snippet.blockquote.name\\\",\\n \\\"preview\\\": \\\"tw-snippet.blockquote.preview\\\",\\n \\\"snippet\\\": \\\"\u003C\u003C\u003C\\\\n$1\\\\n\u003C\u003C\u003C\\\"\\n },\\n {\\n \\\"i18n\\\": true,\\n \\\"id\\\": \\\"blockquoteWithCSSClass\\\",\\n \\\"name\\\": \\\"tw-snippet.blockquoteWithCSSClass.name\\\",\\n \\\"preview\\\": \\\"tw-snippet.blockquoteWithCSSClass.preview\\\",\\n \\\"snippet\\\": \\\"\u003C\u003C\u003C$1\\\\n$2\\\\n\u003C\u003C\u003C\\\"\\n },\\n {\\n \\\"i18n\\\": true,\\n \\\"id\\\": \\\"blockquoteCitation\\\",\\n \\\"name\\\": \\\"tw-snippet.blockquoteCitation.name\\\",\\n \\\"preview\\\": \\\"tw-snippet.blockquoteCitation.preview\\\",\\n \\\"snippet\\\": \\\"\u003C\u003C\u003C\\\\n$1\\\\n\u003C\u003C\u003C $2\\\"\\n },\\n {\\n \\\"i18n\\\": true,\\n \\\"id\\\": \\\"codeblock\\\",\\n \\\"name\\\": \\\"tw-snippet.codeblock.name\\\",\\n \\\"preview\\\": \\\"tw-snippet.codeblock.preview\\\",\\n \\\"snippet\\\": \\\"```$1\\\\n$2\\\\n```\\\"\\n },\\n {\\n \\\"i18n\\\": true,\\n \\\"id\\\": \\\"image\\\",\\n \\\"name\\\": \\\"tw-snippet.image.name\\\",\\n \\\"preview\\\": \\\"tw-snippet.image.preview\\\",\\n \\\"snippet\\\": \\\"[img[$1]]\\\"\\n },\\n {\\n \\\"i18n\\\": true,\\n \\\"id\\\": \\\"dash\\\",\\n \\\"name\\\": \\\"tw-snippet.dash.name\\\",\\n \\\"preview\\\": \\\"tw-snippet.dash.preview\\\",\\n \\\"snippet\\\": \\\"---\\\"\\n },\\n {\\n \\\"i18n\\\": true,\\n \\\"id\\\": \\\"definitions\\\",\\n \\\"name\\\": \\\"tw-snippet.definitions.name\\\",\\n \\\"preview\\\": \\\"tw-snippet.definitions.preview\\\",\\n \\\"snippet\\\": \\\"; $1\\\\n: $2\\\\n\\\"\\n },\\n {\\n \\\"i18n\\\": true,\\n \\\"id\\\": \\\"codeinline\\\",\\n \\\"name\\\": \\\"tw-snippet.codeinline.name\\\",\\n \\\"preview\\\": \\\"tw-snippet.codeinline.preview\\\",\\n \\\"snippet\\\": \\\"`$1`\\\"\\n },\\n {\\n \\\"i18n\\\": true,\\n \\\"id\\\": \\\"bold\\\",\\n \\\"name\\\": \\\"tw-snippet.bold.name\\\",\\n \\\"preview\\\": \\\"tw-snippet.bold.preview\\\",\\n \\\"snippet\\\": \\\"''$1''\\\"\\n },\\n {\\n \\\"i18n\\\": true,\\n \\\"id\\\": \\\"italic\\\",\\n \\\"name\\\": \\\"tw-snippet.italic.name\\\",\\n \\\"preview\\\": \\\"tw-snippet.italic.preview\\\",\\n \\\"snippet\\\": \\\"//$1//\\\"\\n },\\n {\\n \\\"i18n\\\": true,\\n \\\"id\\\": \\\"underlinescore\\\",\\n \\\"name\\\": \\\"tw-snippet.underline.name\\\",\\n \\\"preview\\\": \\\"tw-snippet.underline.preview\\\",\\n \\\"snippet\\\": \\\"__$1__\\\"\\n },\\n {\\n \\\"i18n\\\": true,\\n \\\"id\\\": \\\"superscript\\\",\\n \\\"name\\\": \\\"tw-snippet.superscript.name\\\",\\n \\\"preview\\\": \\\"tw-snippet.superscript.preview\\\",\\n \\\"snippet\\\": \\\"^^$1^^\\\"\\n },\\n {\\n \\\"i18n\\\": true,\\n \\\"id\\\": \\\"subscript\\\",\\n \\\"name\\\": \\\"tw-snippet.subscript.name\\\",\\n \\\"preview\\\": \\\"tw-snippet.subscript.preview\\\",\\n \\\"snippet\\\": \\\",,$1,,\\\"\\n },\\n {\\n \\\"i18n\\\": true,\\n \\\"id\\\": \\\"deleteStrikeThrough\\\",\\n \\\"name\\\": \\\"tw-snippet.deleteStrikeThrough.name\\\",\\n \\\"preview\\\": \\\"tw-snippet.deleteStrikeThrough.preview\\\",\\n \\\"snippet\\\": \\\"~~$1~~\\\"\\n },\\n {\\n \\\"i18n\\\": true,\\n \\\"id\\\": \\\"center\\\",\\n \\\"name\\\": \\\"tw-snippet.center.name\\\",\\n \\\"preview\\\": \\\"tw-snippet.center.preview\\\",\\n \\\"snippet\\\": \\\"\u003Ccenter>$1\u003C/center>\\\"\\n }\\n]\\n\",\"type\":\"application/json\",\"title\":\"$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/snippetslist/tw5-snippets.json\",\"tags\":\"$:/CodeMirrorEnhanced/SnippetsList\"},\"$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/clickable/clickable-link.js\":{\"text\":\"/* Enhance from and specially thank to https://github.com/adithya-badidey/TW5-codemirror-plus */\\n(function (mod) {\\n if (typeof exports === 'object' && typeof module === 'object')\\n // CommonJS\\n module.exports = mod();\\n else if (typeof define === 'function' && define.amd)\\n // AMD\\n define(mod);\\n // Plain browser env\\n else mod();\\n})(function () {\\n 'use strict';\\n\\n function handler(editor, event, cme) {\\n if (event.target.classList.contains('cm-externallink')) {\\n window.open(event.target.innerText);\\n return true;\\n } else if (event.target.classList.contains('cm-internallink')) {\\n new $tw.Story().navigateTiddler(event.target.innerText);\\n return true;\\n } else {\\n return false;\\n }\\n }\\n\\n return {\\n handler: handler,\\n };\\n});\\n\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/clickable/clickable-link.js\",\"tags\":\"$:/CodeMirrorEnhanced/ClickableToken\",\"module-type\":\"library\"},\"$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/filters/cmei18n.js\":{\"text\":\"(function () {\\n 'use strict';\\n\\n // Load tiddler object\\n function loadTiddler(tiddler, tw) {\\n try {\\n switch (tw.wiki.filterTiddlers('[[' + tiddler + ']get[type]]')[0]) {\\n case 'application/javascript':\\n return require(tiddler);\\n case 'application/json':\\n return JSON.parse(tw.wiki.filterTiddlers('[[' + tiddler + ']get[text]]')[0]);\\n case 'application/x-tiddler-dictionary':\\n return tw.utils.parseFields(tw.wiki.filterTiddlers('[[' + tiddler + ']get[text]]')[0]);\\n default:\\n return {};\\n }\\n } catch (error) {\\n console.error(error);\\n return {};\\n }\\n }\\n\\n // i18n message cache\\n const cache = {};\\n\\n exports.cmei18n = function (source, operator, options) {\\n // Get language\\n let language = options.wiki.filterTiddlers('[[$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/config.json]getindex[language]]')[0];\\n if (!language || language === 'system') {\\n language = options.wiki.getTiddlerText('$:/language').substring(13);\\n }\\n\\n // ParseMessage\\n const messages = operator.operand.split(':', 2);\\n let message = messages.length > 1 ? messages[1] : messages[0];\\n const namespace = messages.length > 1 ? messages[0] : 'core';\\n\\n // Fetch languages\\n const exactLanguage = language;\\n const majorLanguage = language.split('-')[0];\\n const languageFallbackList = [undefined, undefined, undefined];\\n options.wiki.filterTiddlers('[all[tiddlers+shadows]!field:cmei18n[]!is[draft]cmei18n-namespace[' + namespace + ']]').forEach(function(tiddler) {\\n const i18n = options.wiki.filterTiddlers('[[' + tiddler + ']get[cmei18n]]')[0];\\n if (i18n.includes(exactLanguage)) languageFallbackList[0] = tiddler;\\n if (i18n.includes(majorLanguage)) languageFallbackList[1] = tiddler;\\n if (i18n.includes('default')) languageFallbackList[2] = tiddler;\\n });\\n\\n for (let index = 0; index \u003C 3; index++) {\\n if (!languageFallbackList[index]) continue;\\n let node = loadTiddler(languageFallbackList[index], options);\\n const subpaths = message.split('.');\\n for (const index_ in subpaths) {\\n node = node[subpaths[index_]];\\n if (!node) break;\\n }\\n if (typeof node === 'string') {\\n cache[message] = node;\\n message = node;\\n break;\\n } else if (Array.isArray(node)) {\\n cache[message] = node.join('\\\\n');\\n message = cache[message];\\n break;\\n } else if (cache[message]) {\\n message = cache[message];\\n break;\\n }\\n }\\n return [message];\\n };\\n})();\\n\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/filters/cmei18n.js\",\"module-type\":\"filteroperator\"},\"$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/ControlPanel\":{\"text\":\"!! \u003C$text text={{{[cmei18n[control-panel.language.title]]}}}/>\\n\\n\u003C$wikify name=\\\"rendered\\\" text={{{[cmei18n[control-panel.language.description]]}}} output=html>\u003C\u003Crendered>>\u003C/$wikify>\\n\\n\u003C$select tiddler=\\\"$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/config.json\\\" index=\\\"language\\\">\\n \u003C$list filter=\\\"[[system]] [all[tiddlers+shadows]!is[draft]!field:cmei18n[]get[cmei18n]split[ ]!is[blank]regexp[\\\\w+-\\\\w+]]\\\">\\n \u003Coption value=\u003C\u003CcurrentTiddler>>>\u003C$view field=\\\"title\\\"/>\u003C/option>\\n \u003C/$list>\\n\u003C/$select>\\n\\n---\\n\\n!! \u003C$text text={{{[cmei18n[control-panel.realtime-hint.title]]}}}/>\\n\\n\u003C$wikify name=\\\"rendered\\\" text={{{[cmei18n[control-panel.realtime-hint.description]]}}} output=html>\u003C\u003Crendered>>\u003C/$wikify>\\n\\n: \u003C$checkbox tiddler=\\\"$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/config.json\\\" index=\\\"realtime-hint\\\" field=\\\"text\\\" checked=\\\"true\\\" unchecked=\\\"false\\\" default=\\\"true\\\">\\n \u003C$reveal type=\\\"match\\\" stateTitle=\\\"$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/config.json\\\" stateIndex=\\\"realtime-hint\\\" text=\\\"true\\\">\u003C$text text={{{[cmei18n[control-panel.realtime-hint.button-on]]}}}/>\u003C/$reveal>\\n \u003C$reveal type=\\\"nomatch\\\" stateTitle=\\\"$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/config.json\\\" stateIndex=\\\"realtime-hint\\\" text=\\\"true\\\">\u003C$text text={{{[cmei18n[control-panel.realtime-hint.button-off]]}}}/>\u003C/$reveal>\\n\u003C/$checkbox>\\n\\n---\\n\\n!! \u003C$text text={{{[cmei18n[control-panel.clickable-links.title]]}}}/>\\n\\n\u003C$wikify name=\\\"rendered\\\" text={{{[cmei18n[control-panel.clickable-links.description]]}}} output=html>\u003C\u003Crendered>>\u003C/$wikify>\\n\\n: \u003C$checkbox tiddler=\\\"$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/config.json\\\" index=\\\"clickable-links\\\" field=\\\"text\\\" checked=\\\"true\\\" unchecked=\\\"false\\\" default=\\\"true\\\">\\n \u003C$reveal type=\\\"match\\\" stateTitle=\\\"$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/config.json\\\" stateIndex=\\\"clickable-links\\\" text=\\\"true\\\">\u003C$text text={{{[cmei18n[control-panel.clickable-links.button-on]]}}}/>\u003C/$reveal>\\n \u003C$reveal type=\\\"nomatch\\\" stateTitle=\\\"$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/config.json\\\" stateIndex=\\\"clickable-links\\\" text=\\\"true\\\">\u003C$text text={{{[cmei18n[control-panel.clickable-links.button-off]]}}}/>\u003C/$reveal>\\n\u003C/$checkbox>\\n\\n---\\n\\n!! \u003C$text text={{{[cmei18n[control-panel.hint-preview.title]]}}}/>\\n\\n\u003C$wikify name=\\\"rendered\\\" text={{{[cmei18n[control-panel.hint-preview.description]]}}} output=html>\u003C\u003Crendered>>\u003C/$wikify>\\n\\n: \u003C$checkbox tiddler=\\\"$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/config.json\\\" index=\\\"hint-preview\\\" field=\\\"text\\\" checked=\\\"true\\\" unchecked=\\\"false\\\" default=\\\"true\\\">\\n \u003C$reveal type=\\\"match\\\" stateTitle=\\\"$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/config.json\\\" stateIndex=\\\"hint-preview\\\" text=\\\"true\\\">\u003C$text text={{{[cmei18n[control-panel.hint-preview.button-on]]}}}/>\u003C/$reveal>\\n \u003C$reveal type=\\\"nomatch\\\" stateTitle=\\\"$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/config.json\\\" stateIndex=\\\"hint-preview\\\" text=\\\"true\\\">\u003C$text text={{{[cmei18n[control-panel.hint-preview.button-off]]}}}/>\u003C/$reveal>\\n\u003C/$checkbox>\\n\",\"title\":\"$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/ControlPanel\",\"tags\":\"$:/tags/ControlPanel/SettingsTab $:/tags/MoreSideBar\",\"caption\":\"CME\"},\"$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/config.json\":{\"text\":\"{\\n \\\"language\\\": \\\"system\\\",\\n \\\"realtime-hint\\\": \\\"true\\\",\\n \\\"clickable-links\\\": \\\"true\\\",\\n \\\"hint-preview\\\": \\\"true\\\"\\n}\\n\",\"title\":\"$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/config.json\",\"type\":\"application/json\"},\"$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/i18n/zh-Hans.json\":{\"text\":\"{\\n \\\"readme\\\": [\\n \\\"如想了解更多,请关注我们的[[GitHub Repo|https://github.com/Gk0Wk/TW5-CodeMirror-Enhanced]]。\\\",\\n \\\"\\\",\\n \\\"为TiddlyWiki的CodeMirror编辑器提供一个灵活而丰富的扩展框架(包括高亮、补全、预览等功能),任何人都可以使用此框架为编辑器编写扩展插件!目前基于此框架实现的功能有:\\\",\\n \\\"\\\",\\n \\\"* TiddlyWiki5(`text/vnd.tiddlywiki`)语法高亮;\\\",\\n \\\"* Wiki链接自动提示\\\",\\n \\\"* Tiddler预览\\\",\\n \\\"* 可点击链接;\\\",\\n \\\"\\\",\\n \\\"更多功能正在开发中,欢迎你的加入!\\\"\\n ],\\n \\\"control-panel\\\": {\\n \\\"language\\\": {\\n \\\"title\\\": \\\"当前插件所使用的语言\\\",\\n \\\"description\\\": [\\n \\\"选择适合你的语言,`system`代表跟随系统偏好。\\\",\\n \\\"如果没有适合你的语言,请在[[Issue|https://github.com/Gk0Wk/TW5-CodeMirror-Enhanced/issues]]中提出,欢迎任何人贡献代码!\\\"\\n ]\\n },\\n \\\"realtime-hint\\\": {\\n \\\"title\\\": \\\"实时代码补全\\\",\\n \\\"description\\\": \\\"无需\u003Ckbd>Ctrl\u003C/kbd>+\u003Ckbd>Space\u003C/kbd>像VSCode一样在输入时实时进行补全提示(现只支持WikiLink)。\\\",\\n \\\"button-on\\\": \\\"实时代码补全已开启\\\",\\n \\\"button-off\\\": \\\"实时代码补全已关闭\\\"\\n },\\n \\\"clickable-links\\\": {\\n \\\"title\\\": \\\"可点击的链接\\\",\\n \\\"description\\\": \\\"WikiLinks和URL是否可以点击。\\\",\\n \\\"button-on\\\": \\\"可点击链接已开启\\\",\\n \\\"button-off\\\": \\\"可点击链接补全已关闭\\\"\\n },\\n \\\"hint-preview\\\": {\\n \\\"title\\\": \\\"补全时预览\\\",\\n \\\"description\\\": \\\"自动补全时,根据所选建议条目,在补全框右侧弹出小的文档/预览框。\\\",\\n \\\"button-on\\\": \\\"补全时预览已开启\\\",\\n \\\"button-off\\\": \\\"补全时预览已关闭\\\"\\n }\\n },\\n \\\"tw-snippet\\\": {\\n \\\"blockquoteSingleline\\\": {\\n \\\"name\\\": \\\"单行块引用\\\",\\n \\\"preview\\\": [\\n \\\"!! 单行块引用\\\",\\n \\\"\\\",\\n \\\"> 引用的文本\\\",\\n \\\"> 另一行引号文本\\\",\\n \\\"\\\",\\n \\\"!! 你也可以像这样嵌套引号\\\",\\n \\\"\\\",\\n \\\"> 一个引文\\\",\\n \\\">> 一个副引文\\\",\\n \\\"> 另一个引文\\\",\\n \\\"\\\",\\n \\\"!! 你也可以将块状引号与其他列表项混合\\\",\\n \\\"\\\",\\n \\\"* 清单一\\\",\\n \\\"** 清单二\\\",\\n \\\"**> 一个引文\\\",\\n \\\"**> 另一个引文\\\",\\n \\\"* 清单三\\\"\\n ]\\n },\\n \\\"blockquote\\\": {\\n \\\"name\\\": \\\"块引用\\\",\\n \\\"preview\\\": [\\\"!! 多行块引用\\\", \\\"\\\", \\\"\u003C\u003C\u003C\\\", \\\"这是一个块引用段落\\\", \\\"\\\", \\\"写了两行中文\\\", \\\"\u003C\u003C\u003C\\\"]\\n },\\n \\\"blockquoteWithCSSClass\\\": {\\n \\\"name\\\": \\\"带CSS类的块引用\\\",\\n \\\"preview\\\": [\\\"!! CSS 类也可以加到引用里\\\", \\\"\\\", \\\"\u003C\u003C\u003C.tc-big-quote\\\", \\\"一个戏剧性的引用\\\", \\\"\u003C\u003C\u003C 一个重要的人\\\"]\\n },\\n \\\"blockquoteCitation\\\": {\\n \\\"name\\\": \\\"带引文来源的块引用\\\",\\n \\\"preview\\\": [\\\"!! 一个引文来源也可以加到引用里\\\", \\\"\\\", \\\"\u003C\u003C\u003C\\\", \\\"计算机就像我们思想的自行车\\\", \\\"\u003C\u003C\u003C 史蒂夫-乔布斯\\\"]\\n },\\n \\\"codeblock\\\": {\\n \\\"name\\\": \\\"代码块\\\",\\n \\\"preview\\\": [\\n \\\"!! 你可以使用三个反斜线\u003Ccode>&#96;&#96;&#96;\u003C/code>来标记代码块\\\",\\n \\\"\\\",\\n \\\"```\\\",\\n \\\"这将是以等宽字体显示的。\\\",\\n \\\"```\\\",\\n \\\"\\\",\\n \\\"为了正确显示,这三个反斜线需要在行的开头,并紧跟一个换行。\\\",\\n \\\"\\\",\\n \\\"请注意,任何前面的段落内容也应该用双倍的换行符来适当终止。因此,下面这个例子是错误的。\\\",\\n \\\"\u003Cpre>\\\",\\n \\\"这是一个普通的段落\\\",\\n \\\"&#96;&#96;&#96;\\\",\\n \\\"这将是以等宽字体显示的。\\\",\\n \\\"&#96;&#96;&#96;\\\",\\n \\\"\u003C/pre>\\\",\\n \\\"\\\",\\n \\\"正确的版本是。\\\",\\n \\\"\u003Cpre>\\\",\\n \\\"这是一个普通的段落\\\",\\n \\\"\\\",\\n \\\"&#96;&#96;&#96;\\\",\\n \\\"这将是以等宽字体显示的。\\\",\\n \\\"&#96;&#96;&#96;\\\",\\n \\\"\u003C/pre>\\\",\\n \\\"\\\",\\n \\\"注意,有些键盘布局将反斜线视为[[死键|https://en.wikipedia.org/wiki/Dead_key]],使其难以输入。\\\",\\n \\\"诀窍是输入三个反斜线,然后是一个空格。或者,一次性输入所有六个回车键,然后是一个空格,然后将光标向后移动三个字符来输入或粘贴内容。\\\"\\n ]\\n },\\n \\\"dash\\\": {\\n \\\"name\\\": \\\"破折号\\\",\\n \\\"preview\\\": [\\\"!! 插入破折号\\\", \\\"\\\", \\\"您可以用 -- 生成一个 n-dash 字符、--- 生成一个 m-dash。\\\", \\\"例如 这是一个例子 — 这个也是\\\"]\\n },\\n \\\"definitions\\\": {\\n \\\"name\\\": \\\"定义清单\\\",\\n \\\"preview\\\": [\\n \\\"!! 插入定义清单\\\",\\n \\\"\\\",\\n \\\"以此语法创建 HTML 定义清单:\\\",\\n \\\"\\\",\\n \\\"```tw5\\\",\\n \\\"; Term being defined\\\",\\n \\\": Definition of that term\\\",\\n \\\"; Another term\\\",\\n \\\": Another definition\\\",\\n \\\"```\\\",\\n \\\"\\\",\\n \\\"显示结果:\\\",\\n \\\"\\\",\\n \\\"```\\\",\\n \\\"Term being defined\\\",\\n \\\" Definition of that term\\\",\\n \\\"Another term\\\",\\n \\\" Another definition\\\",\\n \\\"```\\\",\\n \\\"\\\",\\n \\\"HTML 标记:\\\",\\n \\\"\\\",\\n \\\"```html\\\",\\n \\\"\u003Cdl>\u003Cdt>Term being defined\u003C/dt>\u003Cdd>Definition of that term\u003C/dd>\u003Cdt>Another term\u003C/dt>\u003Cdd>Another definition\u003C/dd>\u003C/dl>\\\",\\n \\\"```\\\"\\n ]\\n },\\n \\\"codeinline\\\": {\\n \\\"name\\\": \\\"内联代码\\\",\\n \\\"preview\\\": [\\n \\\"!! 输入内联代码\\\",\\n \\\"\\\",\\n \\\"\u003Ccode>&#96;反引号&#96;\u003C/code> 用于 `代码`\\\",\\n \\\"\\\",\\n \\\"* 另外,\u003Ccode>&#96;&#96;连续两个反引号则为 &#96;可嵌入&#96; 反引号&#96;&#96;\u003C/code>\\\"\\n ]\\n },\\n \\\"bold\\\": {\\n \\\"name\\\": \\\"粗体\\\",\\n \\\"preview\\\": [\\\"!! 输入粗体\\\", \\\"\\\", \\\"`''粗体''` 显示 ''粗体字''\\\"]\\n },\\n \\\"italic\\\": {\\n \\\"name\\\": \\\"斜体\\\",\\n \\\"preview\\\": [\\\"!! 输入斜体\\\", \\\"\\\", \\\"`//斜体//` 显示 //斜体字//\\\"]\\n },\\n \\\"underline\\\": {\\n \\\"name\\\": \\\"下划线\\\",\\n \\\"preview\\\": [\\\"!! 输入下划线\\\", \\\"\\\", \\\"`__下划线__` 显示 __下划线__\\\"]\\n },\\n \\\"superscript\\\": {\\n \\\"name\\\": \\\"上标\\\",\\n \\\"preview\\\": [\\\"!! 输入上标\\\", \\\"\\\", \\\"`^^上标^^` 显示 ^^上标^^字\\\"]\\n },\\n \\\"subscript\\\": {\\n \\\"name\\\": \\\"下标\\\",\\n \\\"preview\\\": [\\\"!! 输入下标\\\", \\\"\\\", \\\"`,,下标,,` 显示 ,,下标,,字\\\"]\\n },\\n \\\"deleteStrikeThrough\\\": {\\n \\\"name\\\": \\\"删除线\\\",\\n \\\"preview\\\": [\\\"!! 输入删除线\\\", \\\"\\\", \\\"`~~删除线~~` 显示 ~~删除文本~~\\\"]\\n },\\n \\\"image\\\": {\\n \\\"name\\\": \\\"图片\\\",\\n \\\"preview\\\": [\\\"!! 插入图片\\\", \\\"\\\", \\\"[img[$:/favicon.ico]]\\\"]\\n },\\n \\\"center\\\": {\\n \\\"name\\\": \\\"居中\\\",\\n \\\"preview\\\": [\\\"!! 居中元素\\\", \\\"\\\", \\\"\u003Ccenter>就像这样\u003C/center>\\\"]\\n }\\n }\\n}\\n\",\"title\":\"$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/i18n/zh-Hans.json\",\"type\":\"application/json\",\"cmei18n\":\"zh-Hans zh-CN zh\",\"cmei18n-namespace\":\"core\"},\"$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/i18n/en-GB.json\":{\"text\":\"{\\n \\\"readme\\\": [\\n \\\"View more on [[GitHub Repo|https://github.com/Gk0Wk/TW5-CodeMirror-Enhanced]].\\\",\\n \\\"\\\",\\n \\\"CodeMirror editor for TiddlyWiki provides a flexible and rich extension framework (including highlighting, completion, preview and other features), anyone can use this framework to write extension plug-ins for the editor! Currently based on this framework to achieve the following features.\\\",\\n \\\"\\\",\\n \\\"* TiddlyWiki5 (`text/vnd.tiddlywiki`) syntax highlighting.\\\",\\n \\\"* Wiki link auto-tip; * Tiddler preview; * TiddlyWiki5 (`text/vnd.tiddlywiki`)\\\",\\n \\\"* Tiddler preview; * Tiddler preview.\\\",\\n \\\"* Clickable links.\\\",\\n \\\"\\\",\\n \\\"More features are in development, welcome to join!\\\"\\n ],\\n \\\"control-panel\\\": {\\n \\\"language\\\": {\\n \\\"title\\\": \\\"Current language used by the plugin\\\",\\n \\\"description\\\": [\\n \\\"Choose the language that suits you, `system` stands for follow the system preference.\\\",\\n \\\"If there is no language that suits you, please ask in [[Issue|https://github.com/Gk0Wk/TW5-CodeMirror-Enhanced/issues]], anyone is welcome to contribute code!\\\"\\n ]\\n },\\n \\\"realtime-hint\\\": {\\n \\\"title\\\": \\\"Realtime-hint when typing\\\",\\n \\\"description\\\": \\\"Real-time code completion hints like VSCode while typing (currently only ~WikiLink completion is implemented) and no need to activate with \u003Ckbd>Ctrl\u003C/kbd>+\u003Ckbd>Space\u003C/kbd>.\\\",\\n \\\"button-on\\\": \\\"Real-time code completion is enabled\\\",\\n \\\"button-off\\\": \\\"Real-time code completion is disabled\\\"\\n },\\n \\\"clickable-links\\\": {\\n \\\"title\\\": \\\"Clickable links\\\",\\n \\\"description\\\": \\\"Whethere WikiLinks and URLs are clickable.\\\",\\n \\\"button-on\\\": \\\"Clickable links is enabled\\\",\\n \\\"button-off\\\": \\\"Clickable links is disabled\\\"\\n },\\n \\\"hint-preview\\\": {\\n \\\"title\\\": \\\"Hint preview\\\",\\n \\\"description\\\": \\\"When auto-completion is performed, a small document/preview box pops up to the right of the completion box based on the selected suggestion entry.\\\",\\n \\\"button-on\\\": \\\"Hint preview is enabled\\\",\\n \\\"button-off\\\": \\\"Hint preview is disabled\\\"\\n }\\n },\\n \\\"tw-snippet\\\": {\\n \\\"blockquoteSingleline\\\": {\\n \\\"name\\\": \\\"single line blockquote\\\",\\n \\\"preview\\\": [\\n \\\"!! Single-line Block Quotes\\\",\\n \\\"\\\",\\n \\\"> Quoted text\\\",\\n \\\"> Another line of quoted text\\\",\\n \\\"\\\",\\n \\\"!! You can also nest quotes like this:\\\",\\n \\\"\\\",\\n \\\"> A top quote\\\",\\n \\\">> A subquote\\\",\\n \\\"> Another top quote\\\",\\n \\\"\\\",\\n \\\"!! You can also mix block quotes with other list items. For example:\\\",\\n \\\"\\\",\\n \\\"* List One\\\",\\n \\\"** List Two\\\",\\n \\\"**> A quote\\\",\\n \\\"**> Another quote\\\",\\n \\\"* List Three\\\"\\n ]\\n },\\n \\\"blockquote\\\": {\\n \\\"name\\\": \\\"blockquote\\\",\\n \\\"preview\\\": [\\\"!! Multi-line block quotes\\\", \\\"\\\", \\\"\u003C\u003C\u003C\\\", \\\"This is a block quoted paragraph\\\", \\\"\\\", \\\"written in English\\\", \\\"\u003C\u003C\u003C\\\"]\\n },\\n \\\"blockquoteWithCSSClass\\\": {\\n \\\"name\\\": \\\"blockquoteWithCSSClass\\\",\\n \\\"preview\\\": [\\\"!! CSS classes can be added to a block quote\\\", \\\"\\\", \\\"\u003C\u003C\u003C.tc-big-quote\\\", \\\"A dramatic quote\\\", \\\"\u003C\u003C\u003C Somebody Important\\\"]\\n },\\n \\\"blockquoteCitation\\\": {\\n \\\"name\\\": \\\"blockquoteCitation\\\",\\n \\\"preview\\\": [\\\"!! A citation can be added to the quote like this\\\", \\\"\\\", \\\"\u003C\u003C\u003C\\\", \\\"Computers are like a bicycle for our minds\\\", \\\"\u003C\u003C\u003C Steve Jobs\\\"]\\n },\\n \\\"codeblock\\\": {\\n \\\"name\\\": \\\"codeblock\\\",\\n \\\"preview\\\": [\\n \\\"!! You can use triple backticks \u003Ccode>&#96;&#96;&#96;\u003C/code> to mark code blocks\\\",\\n \\\"\\\",\\n \\\"```\\\",\\n \\\"This will be monospaced\\\",\\n \\\"```\\\",\\n \\\"\\\",\\n \\\"To be interpreted correctly, the three backticks need to be at the start of the line and immediately followed by a line-break.\\\",\\n \\\"\\\",\\n \\\"Be aware that any preceding paragraph content should be properly terminated with a double line break, too. So, this example is wrong:\\\",\\n \\\"\\\",\\n \\\"\u003Cpre>\\\",\\n \\\"This is an ordinary paragraph\\\",\\n \\\"&#96;&#96;&#96;\\\",\\n \\\"This will be monospaced\\\",\\n \\\"&#96;&#96;&#96;\\\",\\n \\\"\u003C/pre>\\\",\\n \\\"\\\",\\n \\\"The correct version is:\\\",\\n \\\"\\\",\\n \\\"\u003Cpre>\\\",\\n \\\"This is an ordinary paragraph\\\",\\n \\\"\\\",\\n \\\"&#96;&#96;&#96;\\\",\\n \\\"This will be monospaced\\\",\\n \\\"&#96;&#96;&#96;\\\",\\n \\\"\u003C/pre>\\\",\\n \\\"\\\",\\n \\\"Note that some keyboard layouts treat the backtick as a [[dead key|https://en.wikipedia.org/wiki/Dead_key]], making it hard to type. \\\",\\n \\\"The trick is to type three backticks followed by a space. Alternatively, type all six backticks in one go, then a space, and then move the cursor back three characters to type or paste the content.\\\"\\n ]\\n },\\n \\\"dash\\\": {\\n \\\"name\\\": \\\"dashes\\\",\\n \\\"preview\\\": [\\n \\\"!! Insert a dash line.\\\",\\n \\\"\\\",\\n \\\"You can create an n-dash with a double hyphen -- and an m-dash with a triple hyphen ---. For example this is an example — and so is this \\\"\\n ]\\n },\\n \\\"definitions\\\": {\\n \\\"name\\\": \\\"Definitions\\\",\\n \\\"preview\\\": [\\n \\\"!! Insert a Definitions.\\\",\\n \\\"\\\",\\n \\\"```tw5\\\",\\n \\\"; Term being defined\\\",\\n \\\": Definition of that term\\\",\\n \\\"; Another term\\\",\\n \\\": Another definition\\\",\\n \\\"```\\\",\\n \\\"\\\",\\n \\\"That renders as:\\\",\\n \\\"\\\",\\n \\\"```\\\",\\n \\\"Term being defined\\\",\\n \\\" Definition of that term\\\",\\n \\\"Another term\\\",\\n \\\" Another definition\\\",\\n \\\"```\\\",\\n \\\"\\\",\\n \\\"and the underlying HTML is:\\\",\\n \\\"\\\",\\n \\\"```html\\\",\\n \\\"\u003Cdl>\u003Cdt>Term being defined\u003C/dt>\u003Cdd>Definition of that term\u003C/dd>\u003Cdt>Another term\u003C/dt>\u003Cdd>Another definition\u003C/dd>\u003C/dl>\\\",\\n \\\"```\\\"\\n ]\\n },\\n \\\"codeinline\\\": {\\n \\\"name\\\": \\\"codeinline\\\",\\n \\\"preview\\\": [\\n \\\"!! insert codeinline\\\",\\n \\\"\\\",\\n \\\"\u003Ccode>&#96;backticks&#96;\u003C/code> for `code`\\\",\\n \\\"\\\",\\n \\\"* Alternatively, \u003Ccode>&#96;&#96;double backticks allows &#96;embedded&#96; backticks&#96;&#96;\u003C/code>\\\"\\n ]\\n },\\n \\\"bold\\\": {\\n \\\"name\\\": \\\"bold\\\",\\n \\\"preview\\\": [\\\"!! insert bold\\\", \\\"\\\", \\\"`''bold''` for ''bold text''\\\"]\\n },\\n \\\"italic\\\": {\\n \\\"name\\\": \\\"italic\\\",\\n \\\"preview\\\": [\\\"!! insert italic\\\", \\\"\\\", \\\"`//italic//` for //italic text//\\\"]\\n },\\n \\\"underline\\\": {\\n \\\"name\\\": \\\"underline\\\",\\n \\\"preview\\\": [\\\"!! insert underline\\\", \\\"\\\", \\\"`__underscore__` for __underscored text__\\\"]\\n },\\n \\\"superscript\\\": {\\n \\\"name\\\": \\\"superscript\\\",\\n \\\"preview\\\": [\\\"!! insert superscript\\\", \\\"\\\", \\\"`^^superscript^^` for ^^superscripted^^ text\\\"]\\n },\\n \\\"subscript\\\": {\\n \\\"name\\\": \\\"subscript\\\",\\n \\\"preview\\\": [\\\"!! insert subscript\\\", \\\"\\\", \\\"`,,subscript,,` for ,,subscripted,, text\\\"]\\n },\\n \\\"deleteStrikeThrough\\\": {\\n \\\"name\\\": \\\"strikeThrough\\\",\\n \\\"preview\\\": [\\\"!! insert strikeThrough\\\", \\\"\\\", \\\"`~~strikethrough~~` for ~~strikethrough~~ text\\\"]\\n },\\n \\\"image\\\": {\\n \\\"name\\\": \\\"image\\\",\\n \\\"preview\\\": [\\\"!! Insert a image.\\\", \\\"\\\", \\\"[img[$:/favicon.ico]]\\\"]\\n },\\n \\\"center\\\": {\\n \\\"name\\\": \\\"center\\\",\\n \\\"preview\\\": [\\\"!! Centralize elements.\\\", \\\"\\\", \\\"\u003Ccenter>like this\u003C/center>\\\"]\\n }\\n }\\n}\\n\",\"title\":\"$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced/i18n/en-GB.json\",\"type\":\"application/json\",\"cmei18n\":\"en-GB en default\",\"cmei18n-namespace\":\"core\"}}}","type":"application/json","author":"Gk0Wk","created":"20211110065210780","dependents":"$:/plugins/tiddlywiki/codemirror-autocomplete","description":"TiddlyWiki5 highlighting mode for CodeMirror","email":"nmg_wk@yeah.net","list":"readme ControlPanel LICENSE","modified":"20211110065210780","name":"CodeMirror TW5 Enhanced","plugin-type":"plugin","source":"https://github.com/Gk0Wk/TW5-CodeMirror-Enhanced","title":"$:/plugins/Gk0Wk/TW5-CodeMirror-Enhanced","version":"0.1.1","revision":"0","bag":"default"},
{"text":"{\"tiddlers\":{\"$:/plugins/kookma/shiraz/history\":{\"type\":\"text/vnd.tiddlywiki\",\"text\":\"Full change log: [[https://kookma.github.io/TW-Shiraz/#ChangeLog]]\\n\\n* ''2.7.1'' -- 2022.12.17 -- update to Tiddlywiki 5.2.4, few bug fixes\\n* ''2.6.9'' -- 2022.10.17 -- improved Node Explorer, and task Explorer\\n* ''2.6.1'' -- 2022.09.27 -- new subplug Formatter, better task manager\\n* ''2.5.0'' -- 2022.08.02 -- new data block, updated to Tiddlywiki 5.2.3\\n* ''2.4.4'' -- 2021.09.19 -- added css class for tbl-expand customization\\n* ''2.4.2'' -- 2021.09.10 -- quick table with bunch of column formatting\\n* ''2.3.3'' -- 2021.05.20 -- small bug fixes in switch palette\\n* ''2.3.1'' -- 2021.05.19 -- tbl-linktype template to be used for generating node-explorer\\n* ''2.3.0'' -- 2021.05.10 -- switch palette for dim/dark and light palette selection\\n* ''2.2.2'' -- 2021.04.22 -- several issues fixed for pagination, notebook and image classes\\n* ''2.2.0'' -- 2021.02.26 -- updated to TW 5.1.23 and pagination added to dynamic tables\\n* ''2.1.1'' -- 2020.03.25 -- slider macro with initial status\\n* ''2.1.0'' -- 2020.03.23 -- stable release on TW-5.1.22pre\\n* ''1.0.0'' -- 2018.10.05 -- first public release\\n\"},\"$:/plugins/kookma/shiraz/images/palette-switch\":{\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-image-palette-button tc-image-button\\\"viewBox=\\\"0 0 16 16\\\"height=22pt>\u003Cpath d=\\\"M8 15A7 7 0 1 0 8 1v14zm0 1A8 8 0 1 1 8 0a8 8 0 0 1 0 16z\\\"/>\"},\"$:/plugins/kookma/shiraz/license\":{\"type\":\"text/vnd.tiddlywiki\",\"text\":\"Distributed under an MIT license.\\n\\nCopyright (c) 2018-2022 [[Mohammad Rahmani|https://github.com/kookma]]\\n\\n\u003C\u003C\u003C\\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \\\"Software\\\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\\n\\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\\n\\nTHE SOFTWARE IS PROVIDED \\\"AS IS\\\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\\n\u003C\u003C\u003C\"},\"$:/plugins/kookma/shiraz/macros/alerts\":{\"tags\":\"$:/tags/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define alert(type:primary src width:100% class)\\n\u003Cdiv class=\\\"alert alert-$type$ $class$\\\"style=\\\"width:$width$;\\\">\\n$src$\\n\u003C/div>\\n\\\\end\\n\\\\define alert-leftbar(type:primary src width:100% class)\\n\u003Cdiv class=\\\"alert alert-$type$ bg-transparent leftbar border-$type$ $class$\\\"style=\\\"width:$width$;\\\">\\n$src$\\n\u003C/div>\\n\\\\end\"},\"$:/plugins/kookma/shiraz/macros/badge\":{\"tags\":\"$:/tags/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define badge(type:primary src)\u003Cspan class=\\\"badge badge-$type$\\\">$src$\u003C/span>\\n\\\\define badge-pill(type:primary src)\u003Cspan class=\\\"badge badge-pill badge-$type$\\\">$src$\u003C/span>\"},\"$:/plugins/kookma/shiraz/macros/card\":{\"tags\":\"$:/tags/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define card(header:Empty title:Empty subtitle:Empty text:Empty footer:Empty width:100% class)\\n\u003Cdiv class=\\\"card mb-3 $class$\\\"style=\\\"width:$width$;\\\">\\n\u003C$reveal tag=div type=nomatch text=\u003C\u003C__header__>>default=Empty>\\n \u003Cdiv class=card-header>$header$\u003C/div>\\n\u003C/$reveal>\\n\u003Cdiv class=card-body>\\n \u003C$reveal tag=div type=nomatch text=\u003C\u003C__title__>>default=Empty>\\n \u003Cdiv class=\\\"h5 card-title\\\">$title$\u003C/div>\\n \u003C/$reveal>\\n \u003C$reveal tag=div type=nomatch text=\u003C\u003C__subtitle__>>default=Empty>\\n \u003Cdiv class=\\\"h6 card-subtitle mb-2 text-muted\\\">$subtitle$\u003C/div>\\n \u003C/$reveal>\\n \u003C$reveal tag=div type=nomatch text=\u003C\u003C__text__>>default=Empty>\\n \u003Cdiv class=card-text>\u003C\u003C__text__>>\u003C/div>\\n \u003C/$reveal>\\n\u003C/div>\\n\u003C$reveal tag=div type=nomatch text=\u003C\u003C__footer__>>default=Empty>\\n \u003Cdiv class=\\\"card-footer text-muted\\\">$footer$\u003C/div>\\n\u003C/$reveal>\\n\\n\\\\end\"},\"$:/plugins/kookma/shiraz/macros/csvtables/apps\":{\"tags\":\"$:/tags/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define nomenclature(id:nomenclature)\u003C\u003Ctable-csv id:\\\"$id$\\\"format:\\\"katex-inline transclude pu\\\"class:table-borderless header:no>>\\n\\\\define mathbox(id format delimiter:,)\u003C\u003Ctable-csv id:\\\"$id$\\\"format:\\\"transclude katex $format$\\\"class:\\\"table-borderless table-mathbox\\\"header:no delimiter:\\\"\\\"\\\"$delimiter$\\\"\\\"\\\">>\"},\"$:/plugins/kookma/shiraz/macros/csvtables/formats-basic\":{\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define text()\u003C$text text=\u003C\u003Centry>>/>\\n\\\\define code()\u003Ccode>\u003C\u003Ctext>>\\n\\\\define transclude()\u003C$transclude tiddler=\u003C\u003Centry>>field=title/>\"},\"$:/plugins/kookma/shiraz/macros/csvtables/formats-date\":{\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define date()\u003C$view field=title tiddler={{{[\u003Centry>splitregexp[\\\\D+]!is[blank]join[]]}}}format=date template=YYYY-0MM-0DD/>\\n\\\\define shortdate()\u003C$view field=title tiddler={{{[\u003Centry>splitregexp[\\\\D+]!is[blank]join[]]}}}template=\\\"mmm DDth, YYYY\\\"format=date/>\\n\\\\define longdate()\u003C$view field=title tiddler={{{[\u003Centry>splitregexp[\\\\D+]!is[blank]join[]]}}}template=\\\"DDD, MMM 0DD, YYYY\\\"format=date/>\"},\"$:/plugins/kookma/shiraz/macros/csvtables/formats-math\":{\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define katex()\u003Cspan class=falign>\u003C$latex text=\u003C\u003Centry>>displayMode>\\n\\\\define katex-inline()\u003C$latex text=\u003C\u003Centry>>displayMode=false>\\n\\\\define pu()\u003C$latex text={{{[\u003Centry>addprefix[\\\\pu{]addsuffix[}]]}}}displayMode=false>\\n\\\\define equation()\u003C$latex text={{{[\u003Centry>addprefix[\\\\begin{equation}]addsuffix[\\\\end{equation}]]}}}displayMode>\"},\"$:/plugins/kookma/shiraz/macros/csvtables/formats-misc\":{\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define email()\u003Ca class=tc-tiddlylink-external href=\\\"mailto:$(entry)$\\\"rel=\\\"noopener noreferrer\\\"target=_blank>\u003C\u003Ctext>>\\n\\\\define rate()\\n\u003C$list filter=\\\"[\u003Centry>split[]match[*]]\\\"variable=ignore>\\n\u003Cspan class=shiraz-star>{{||$:/core/images/star-filled}}\u003C/span>\\n\\n\\\\end\"},\"$:/plugins/kookma/shiraz/macros/csvtables/formats-task\":{\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define checkbox()\\n\u003C$list filter=\\\"[\u003Centry>trim[]match[x]]\\\"variable=ignore>\u003Cinput type=checkbox checked disabled>\u003C/$list>\\n\u003C!---->\\n\u003C$list filter=\\\"[\u003Centry>trim[]match[-]]\\\"variable=ignore>\u003Cinput type=checkbox disabled>\\n\\\\end\\n\\\\define todo-action(param)\\n\u003C$let lbr=\\\"\\n\\\">\\n \u003C$vars in={{{[\u003Crow>addsuffix\u003Clbr>]}}}out={{{[\u003Crow>splitregexp\u003Cdelimiter>rest[]join[,]addprefix[$param$,]addsuffix\u003Clbr>]}}}>\\n \u003C$action-setfield $tiddler=\u003C\u003Csrc>>text={{{[\u003Csrc>get[text]search-replace:g:\u003Cin>,\u003Cout>]}}}/>\\n \u003C/$vars>\\n\u003C/$let>\\t\\n\\\\end\\n\\\\define todo()\\n\u003C$list filter=\\\"[\u003Centry>trim[]match[-]]\\\"variable=ignore>\\n\u003C$button actions=\u003C\u003Ctodo-action x>>class=tc-btn-invisible>\u003Cinput type=checkbox>\u003C/$button>\\n\u003C/$list>\\n\u003C!---->\\n\u003C$list filter=\\\"[\u003Centry>trim[]match[x]]\\\"variable=ignore>\\n\u003C$button actions=\u003C\u003Ctodo-action ->>class=tc-btn-invisible>\u003Cinput type=checkbox checked>\u003C/$button>\\n\u003C/$list>\\n\\n\\\\end\"},\"$:/plugins/kookma/shiraz/macros/csvtables/table-csv\":{\"tags\":\"$:/tags/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define table-csv(tiddler delimiter:, sortType:alphanumeric format caption class header:yes stateTiddler id dclass:dblock)\\n\\\\whitespace trim\\n\\\\import $:/plugins/kookma/shiraz/macros/csvtables/table-csv-utility\\n\\\\import [all[tiddlers+shadows]prefix[$:/plugins/kookma/shiraz/macros/csvtables/formats]]\\n\u003C$vars src={{{[\u003C__tiddler__>is[tiddler]then\u003C__tiddler__>else{!!title}]}}}stateTiddler={{{[\u003C__stateTiddler__>!is[blank]then\u003C__stateTiddler__>else[01]]}}}>\u003C$vars sortCol={{{[\u003CtempTableSort>getindex[sortIndex]]}}}sortNegate={{{[\u003CtempTableSort>getindex[negate]]}}}delimiter={{{[\u003C__delimiter__>match[\\\\t]then[°≡°]else\u003C__delimiter__>]}}}dataBlockStartDelimiter={{{[\u003C__id__>is[blank]then[@@.$dclass$]]~[[@.$dclass$.]addsuffix\u003C__id__>]}}}dataBlockEndDelimiter=@@>\\n\\n\u003C$let dblock0={{{[\u003Csrc>get[text]splitregexp\u003CdataBlockStartDelimiter>butfirst[1]]}}}dblock1={{{[\u003Cdblock0>splitregexp\u003CdataBlockEndDelimiter>butlast[1]]}}}dblock={{{[\u003Cdelimiter>!match[°≡°]then\u003Cdblock1>]:else[\u003Cdblock1>search-replace:g:regexp[\\\\t],[°≡°]]}}}>\\n\\n\u003Ctable class=\\\"$class$\\\">\u003C$list filter=\\\"[\u003C__caption__>!is[blank]]\\\"variable=ignorw>\u003Ccaption>$caption$\u003C/caption>\u003C/$list>\u003C$list filter=\\\"[\u003C__header__>match[yes]then[1]else[0]]\\\"variable=header_row>\u003C$let allRows=\\\"[\u003Cdblock>splitregexp[\\\\n]!is[blank]]\\\">\u003C$list filter=\\\"[subfilter\u003CallRows>first\u003Cheader_row>]\\\"variable=row>\u003Ctr>\u003C$list filter=\\\"[\u003Crow>splitregexp\u003Cdelimiter>!is[blank]trim[]]\\\"variable=currentColumn>\u003C\u003Ccolumn-header-template>>\u003C/$list>\u003C/tr>\u003C/$list>\u003C$let sortPos={{{[subfilter\u003CallRows>first\u003Cheader_row>splitregexp\u003Cdelimiter>!is[blank]trim[]allbefore:include\u003CsortCol>count[]]}}}sortType={{{[enlist:raw\u003C__sortType__>nth\u003CsortPos>else[alphanumeric]]}}}>\u003C$list filter=\u003C\u003CmainFilter>>variable=row>\u003Ctr>\u003C$list filter=\\\"[\u003Crow>splitregexp\u003Cdelimiter>!is[blank]trim[]]\\\"variable=entry counter=pos>\u003Ctd>\u003C$macrocall $name={{{[enlist:raw\u003C__format__>nth\u003Cpos>else[text]]}}}/>\\n\\\\end\"},\"$:/plugins/kookma/shiraz/macros/csvtables/table-csv-utility\":{\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define mainFilter()[subfilter\u003CallRows>butfirst\u003Cheader_row>] :sort:$(sortType)$:$(sortNegate)$[split\u003Cdelimiter>!is[blank]trim[]nth\u003CsortPos>]\\n\\\\define tempTableSort()$:/state/tablecsv/$(currentTiddler)$/$(stateTiddler)$\\n\\\\define column-header-template()\\n\u003C$reveal type=nomatch stateTitle=\u003C\u003CtempTableSort>>stateIndex=sortIndex text=\u003C\u003CcurrentColumn>>tag=th>\\n\u003C$button setTitle=\u003C\u003CtempTableSort>>setTo=\u003C\u003CcurrentColumn>>class=\\\"tc-btn-invisible tc-tiddlylink\\\"setIndex=sortIndex>\\n\u003C$action-setfield $tiddler=\u003C\u003CtempTableSort>>$index=hasnegate $value=false/>\\n\u003C$action-setfield $tiddler=\u003C\u003CtempTableSort>>$value=\\\"\\\"$index=negate/>\\n\u003Cspan style=\\\"text-transform: capitalize;\\\">\u003C$text text=\u003C\u003CcurrentColumn>>/>\u003C/span>\\n\u003C/$button>\\n\u003C/$reveal>\\n\u003C$reveal type=match stateTitle=\u003C\u003CtempTableSort>>stateIndex=sortIndex text=\u003C\u003CcurrentColumn>>tag=th>\\n\u003C$list filter=\\\"[\u003CtempTableSort>getindex[hasnegate]match[false]]\\\"variable=ignore>\\n\u003C$button setTitle=\u003C\u003CtempTableSort>>setIndex=hasnegate class=\\\"tbl-sort-svg tc-btn-invisible tc-tiddlylink\\\"setTo>\\n\u003C$action-setfield $tiddler=\u003C\u003CtempTableSort>>$index=negate $value=reverse/>\\n\u003Cspan style=\\\"text-transform: capitalize;\\\">\u003C$text text=\u003C\u003CcurrentColumn>>/>\u003C/span> {{$:/core/images/down-arrow}}\\n\u003C/$button>\\n\u003C/$list>\\n\u003C$list filter=\\\"[\u003CtempTableSort>getindex[hasnegate]match[true]]\\\"variable=ignore>\\n\u003C$button setTitle=\u003C\u003CtempTableSort>>setIndex=hasnegate class=\\\"tbl-sort-svg tc-btn-invisible tc-tiddlylink\\\"setTo=false>\\n\u003C$action-setfield $tiddler=\u003C\u003CtempTableSort>>$value=\\\"\\\"$index=negate/>\\n\u003Cspan style=\\\"text-transform: capitalize;\\\">\u003C$text text=\u003C\u003CcurrentColumn>>/>\u003C/span> {{$:/core/images/up-arrow}}\\n\u003C/$button>\\n\u003C/$list>\\n\\n\\\\end\"},\"$:/plugins/kookma/shiraz/macros/dbadge\":{\"tags\":\"$:/tags/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define dbadge(subject status type:primary)\u003Cdiv class=dbadge>\u003Cspan class=dbadge-subject>$subject$\u003C/span>\u003Cspan class=\\\"dbadge-status dbadge-$type$ \\\">$status$\u003C/span>\"},\"$:/plugins/kookma/shiraz/macros/details\":{\"tags\":\"$:/tags/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define details(label src:source status labelClass srcClass)\\n\u003C$let source={{{[\u003C__src__>get[text]else\u003C__src__>]}}}>\\n\u003Cdetails class=kk-shiraz-details $status$>\\n \u003C$let tv-wikilinks=no>\\n \u003Csummary class=\\\"$labelClass$\\\">$label$\u003C/summary>\\n \u003C/$let>\\n \u003Cdiv class=\\\"$srcClass$\\\">\\n \u003C$transclude tiddler=\u003C\u003Csource>>field=title mode=block/>\\n \u003C/div>\\n\u003C/details>\\n\\n\\\\end\"},\"$:/plugins/kookma/shiraz/macros/dtables/confirm-delete\":{\"tags\":\"$:/tags/Table/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define confirm-delete()\\n\u003C$list filter=\\\"[subfilter\u003CinputFilter>nth[]]\\\"variable=ignore>\\n\u003C$reveal class=tbl-delete-confirm type=match state=\\\"$:/temp/tables/delete-all!!text\\\"text=\u003C\u003CcurrentTable>>tag=tr>\\n\u003Cth colspan=\u003C\u003Cncols>>>\\n\u003C$list filter=\\\"[[$:/temp/tables/delete-all]get[confirm]match[yes]]\\\"emptyMessage=\u003C\u003Cask-for-delete>>variable=ignore>\\n \u003C\u003Cperform-delete>>\\n\u003C/$list>\\n\u003C/th>\\n\u003C/$reveal>\\n\\n\\\\end\\n\\\\define ask-for-delete()\\n\u003C$set filter=\\\"[subfilter\u003CinputFilter>count[]]\\\"name=ntids>\\n Delete all \u003C\u003Cntids>> records?\\n\\t\u003C$button class=tc-btn-invisible>\\n \u003C$action-setfield $tiddler=\\\"$:/temp/tables/delete-all\\\"$field=confirm $value=yes/>\\n {{$:/core/images/delete-button}} yes\\n \u003C/$button> or \\n \u003C$button class=tc-btn-invisible>\\n \u003C$action-deletetiddler $tiddler=\\\"$:/temp/tables/delete-all\\\"/>\\n {{$:/core/images/close-button}} no\\n \u003C/$button>\\n\u003C/$set>\\t\\t\\t\\t\\n\\\\end\\n\\\\define perform-delete()\\n Warning! this action cannot be undone!\\n\\t\u003C$button class=tc-btn-invisible>\\n \u003C$action-deletetiddler $tiddler=\\\"$:/temp/tables/delete-all\\\"/>\\n \u003C$list filter=\u003C\u003CinputFilter>>variable=currentRecord>\\n \u003C$action-deletetiddler $tiddler=\u003C\u003CcurrentRecord>>/>\\n \u003C/$list>\\n\\t\\t {{$:/core/images/delete-button}} delete\\n \u003C/$button> or \\n \u003C$button class=tc-btn-invisible>\\n \u003C$action-deletetiddler $tiddler=\\\"$:/temp/tables/delete-all\\\"/>\\n\\t\\t\\t{{$:/core/images/close-button}} cancel \\n \\n\\\\end\"},\"$:/plugins/kookma/shiraz/macros/dtables/helper\":{\"tags\":\"$:/tags/Table/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define columnFilter()$(columns)$ tbl-delete\\n\\\\define tempTable()$:/state/dynamictables/$(currentTable)$\\n\\\\define tempTableSort()$(tempTable)$/sortby\\n\\\\define tempTagPopup()$(tempTable)$/$(currentRecord)$/$(currentTiddler)$\\n\\\\define tempTableExpand()$(tempTable)$/expand\\n\\\\define tempPathExpand()$(tempTableExpand)$##$(currentRecord)$\\n\\\\define tempTableEdit()$(tempTable)$/edit-view-status\\n\\\\define keepstate()$:/keepstate/dynamictables/$(currentTable)$\\n\\\\define tempTableFooter()$(keepstate)$/footer\\n\\\\define tempTableStyle()$(keepstate)$/style\\n\\\\define tempWarningMsg()$(keepstate)$/warning\\n\\\\define pageStateTiddler()$(keepstate)$/page-number\\n\\\\define entryPerPageStateTiddler()$(keepstate)$/entry-per-page\"},\"$:/plugins/kookma/shiraz/macros/dtables/maths\":{\"tags\":\"$:/tags/Table/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define average(pn:0)\u003C$text text={{{[subfilter\u003CinputFilter>$(getFieldOrIndex)$\u003CcurrentColumn>average[]]}}}/>\\n\\\\define median(pn:0)\u003C$text text={{{[subfilter\u003CinputFilter>$(getFieldOrIndex)$\u003CcurrentColumn>median[]]}}}/>\\n\\\\define count()\u003C$text text={{{[subfilter\u003CinputFilter>$(getFieldOrIndex)$\u003CcurrentColumn>count[]]}}}/>\\n\\\\define sum()\u003C$text text={{{[subfilter\u003CinputFilter>$(getFieldOrIndex)$\u003CcurrentColumn>sum[]]}}}/>\\n\\\\define product()\u003C$text text={{{[subfilter\u003CinputFilter>$(getFieldOrIndex)$\u003CcurrentColumn>product[]]}}}/>\\n\\\\define minall()\u003C$text text={{{[subfilter\u003CinputFilter>$(getFieldOrIndex)$\u003CcurrentColumn>minall[]]}}}/>\\n\\\\define maxall()\u003C$text text={{{[subfilter\u003CinputFilter>$(getFieldOrIndex)$\u003CcurrentColumn>maxall[]]}}}/>\"},\"$:/plugins/kookma/shiraz/macros/dtables/pagination\":{\"tags\":\"$:/tags/Table/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define prev-button()\\n\u003C$list filter=\\\"[\u003Cpage-number>compare:number:lt[2]then[yes]else[no]]\\\"variable=state>\\n\u003C$button disabled=\u003C\u003Cstate>>class=\\\"shiraz-dtable-page-prev tc-btn-invisible\\\">\\n{{$:/core/images/chevron-left}}&nbsp;\u003Cstrong>Prev\u003C/strong>\\n\u003C$action-listops $tiddler=\u003C\u003CpageStateTiddler>>$subfilter=\\\"+[subtract[1]] ~[[1]]\\\"$field=text/>\\n\u003C/$button>\\n\\n\\\\end\\n\\\\define next-button()\\n\u003C$list filter=\\\"[\u003Chigh>compare:number:gteq\u003Ctotal-entries>then[yes]else[no]]\\\"variable=state> \\n\u003C$button disabled=\u003C\u003Cstate>>class=\\\"shiraz-dtable-page-next tc-btn-invisible\\\">\\n\u003Cstrong>Next\u003C/strong>&nbsp;{{$:/core/images/chevron-right}} \\n\u003C$action-listops $tiddler=\u003C\u003CpageStateTiddler>>$subfilter=\\\"+[add[1]] ~[[2]]\\\"$field=text/>\\n\u003C/$button>\\n\\n\\\\end\\n\\\\define limit-entries()\\n\u003C$select tiddler=\u003C\u003CentryPerPageStateTiddler>>actions='\u003C$action-setfield $tiddler=\u003C\u003CpageStateTiddler>>text=1/>'default=25>\\n\u003C$list filter='5 10 15 20 25 30 40 50'variable=num>\\n\u003Coption value=\u003C\u003Cnum>>>Limit \u003C$text text=\u003C\u003Cnum>>/>\u003C/option>\\n\u003C/$list>\\n\u003Coption value=\u003C\u003Ctotal-entries>>>Show all\u003C/option>\\n\\n\\\\end\"},\"$:/plugins/kookma/shiraz/macros/dtables/show-edit-cell\":{\"tags\":\"$:/tags/Table/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define showCell()\\n \u003C$list filter=\\\"[\u003CfieldOrIndex>]-index\\\">\\n \u003C$transclude tiddler=\u003C\u003CcurrentRecord>>field=\u003C\u003CcurrentColumn>>mode=inline/>\\n \u003C/$list>\\n \u003C$list filter=\\\"[\u003CfieldOrIndex>]-field\\\">\\n \u003C$transclude tiddler=\u003C\u003CcurrentRecord>>index=\u003C\u003CcurrentColumn>>mode=inline/>\\n \\n\\\\end\\n\\\\define editCell()\\n \u003C$list filter=\\\"[\u003CfieldOrIndex>]-index\\\">\\n \u003C$edit-text tiddler=\u003C\u003CcurrentRecord>>field=\u003C\u003CcurrentColumn>>tag=input class=shiraz-dtable-textbox/>\\n \u003C/$list>\\n \u003C$list filter=\\\"[\u003CfieldOrIndex>]-field\\\">\\n \u003C$edit-text tiddler=\u003C\u003CcurrentRecord>>index=\u003C\u003CcurrentColumn>>tag=input class=shiraz-dtable-textbox/>\\n \\n\\\\end\\n\\\\define showCell_Locked()\\n \u003Cspan style=font-style:oblique;>\u003C\u003CshowCell>>\\n\\\\end\"},\"$:/plugins/kookma/shiraz/macros/dtables/table-dynamic\":{\"tags\":\"$:/tags/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define table-dynamic(filter fields indexes sortOp:sort caption class footerRows:0 stateTiddler editButton:yes pagination:no emptyMessage:[[filter input is empty]])\\n\\\\import [[$:/tags/Table/Macro]tagging[]]\\n\u003C$vars inputFilter=\\\"[subfilter\u003C__filter__>!has[draft.of]]\\\"sortType=\u003C\u003C__sortOp__>>pagination=\u003C\u003C__pagination__>>> \\n\u003C$set value=\u003C\u003C__stateTiddler__>>emptyValue={{!!title}}name=currentTable>\\n\u003C!---->\\n\u003C$let fieldOrIndex={{{[\u003C__fields__>!is[blank]then[field]else[index]]}}}>\\n\u003C\u003Ccheck_tiddlers_type_for_table_from_indexes isEditable:\\\"$editButton$\\\">>\\n\u003C$set filter=\\\"[\u003CfieldOrIndex>]-index\\\"value=\u003C\u003C__fields__>>emptyValue=\u003C\u003C__indexes__>>name=columns>\\n\u003C!---->\\n\u003C$list filter=\\\"[subfilter\u003CinputFilter>nth[]]\\\"emptyMessage=\u003C\u003C__emptyMessage__>>variable=ignore>\\n\u003C$set name=sortneg tiddler=\u003C\u003CtempTableSort>>index=negate>\\n\u003C!---->\\n\u003C$set filter=\\\"[\u003CtempTableEdit>getindex[mode]match[edit]]\\\"value={{{[subfilter\u003CcolumnFilter>count[]]}}}emptyValue={{{[subfilter\u003CcolumnFilter>count[]subtract[1]]}}}name=ncols>\\n\u003Cdiv class=tbl-container style=max-width:100%;>\\n\u003Ctable class=\u003C\u003C__class__>>style=caption-side:top>\\n\u003C!---->\\n\u003Ccaption style=text-align:left;>\\n\u003C$list filter=\\\"[\u003C__editButton__>match[yes]]\\\"variavle=ignore>\\n\u003Cspan style=padding-right:5px;padding-left:3px;>\u003C\u003Ctoggle-edit-view>>\u003C/span>\u003C/$list>\\n$caption$\u003C/caption>\\n\\n\u003C!---->\\n\u003Cthead>\\n\u003C\u003Cconfirm-delete>>\\n\u003Ctr>\\n\u003C$list filter=\u003C\u003CcolumnFilter>>variable=currentColumn>\\n\u003C$set filter=\\\"[[$:/tags/Table/HeaderTemplate]tagging[]contains:tbl-column-list\u003CcurrentColumn>nth[]get[title]]\\\"value=\u003C\u003CheaderLookup>>emptyValue=\\\"$:/plugins/kookma/shiraz/templates/header/default\\\"name=headerLookup>\\n \u003C$transclude tiddler=\u003C\u003CheaderLookup>>field=text mode=inline/>\\n\u003C/$set>\\n\u003C/$list>\\n\u003C/tr>\\n\u003C/thead>\\n\\n\u003C!---->\\n\u003C$reveal type=gt default=\u003C\u003C__footerRows__>>text=0 tag=tfoot class=shiraz-dtable-footer>\\n\u003Ctr>\u003Ctd colspan=\u003C\u003Cncols>>style=font-weight:bold;background-color:transparent;>Numerical summary\u003C/td>\u003C/tr>\\n\u003C$list filter=\\\"[range[1,$footerRows$]addprefix[footer-]]\\\"variable=footerRow>\\n\u003Ctr>\\n\u003C$list filter=\u003C\u003CcolumnFilter>>variable=currentColumn>\\n\u003C$set filter=\\\"[[$:/tags/Table/FooterTemplate]tagging[]contains:tbl-column-list\u003CcurrentColumn>nth[]get[title]]\\\"value=\u003C\u003CfooterLookup>>emptyValue=\\\"$:/plugins/kookma/shiraz/templates/footer/default\\\"name=footerLookup>\\n\u003C$transclude tiddler=\u003C\u003CfooterLookup>>field=text mode=inline/>\\n\u003C/$set>\\n\u003C/$list>\\n\u003C/tr>\\n\u003C/$list>\\n\u003C/$reveal>\\n\\n\u003C!---->\\n\u003Ctbody>\\n\u003C$let tableBody={{{[\u003CfieldOrIndex>]-index +[then[display_body_fields]else[display_body_indexes]]}}}>\\n\u003C!---->\\n\u003C$vars total-entries={{{[subfilter\u003CinputFilter>count[]]}}}page-number={{{[\u003CpageStateTiddler>get[text]]~1}}}entries-per-page={{{[\u003CentryPerPageStateTiddler>get[text]]~25}}}>\\n\u003C$vars low={{{[\u003Cpage-number>subtract[1]multiply\u003Centries-per-page>]}}}high={{{[\u003Cpage-number>multiply\u003Centries-per-page>]}}}>\\t \\n\u003C$macrocall $name=\u003C\u003CtableBody>>/>\\n\u003C!---->\\n\u003C$reveal type=match default=\u003C\u003Cpagination>>text=yes tag=tr class=shiraz-dtable-page-footer>\\n\u003Ctd colspan=\u003C\u003Cncols>>>\\n\u003C\u003Cprev-button>>\\nDisplaying \u003C$text text={{{[\u003Clow>add[1]]}}}/> through \u003C$text text={{{[\u003Chigh>compare:number:lt\u003Ctotal-entries>then\u003Chigh>else\u003Ctotal-entries>]}}}/> of \u003C\u003Ctotal-entries>> Results | \u003C\u003Climit-entries>>\\n\u003C\u003Cnext-button>>\\n\u003C/td>\\n\u003C/$reveal>\\n\u003C/$vars>\\n\u003C/$vars>\\n\u003C/$let>\\n\u003C/tbody>\\n\u003C/table>\\n\u003C/div>\\n\u003C/$set>\\n\u003C/$set>\\n\u003C/$list>\\n\u003C/$set>\\n\u003C/$let>\\n\u003C/$set>\\n\\n\\\\end\"},\"$:/plugins/kookma/shiraz/macros/dtables/table-utility\":{\"tags\":\"$:/tags/Table/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define tableFilter_fields()$(inputFilter)$+[$(sortneg)$$(sortType)${$(tempTableSort)$##sortIndex}]\\n\\\\define tableFilter_indexes()[enlist\u003Citems>]+[$(sortneg)$$(sortType)$[]]\\n\\\\define getitems()\\n\u003C$set name=Index tiddler=\u003C\u003CtempTableSort>>index=sortIndex>\\n\u003C$list filter=\\\"[subfilter\u003CinputFilter>!is[draft]]\\\">\\n\u003C$text text=[[/>{{{[{!!title}getindex\u003CIndex>addsuffix[°≡°]]}}}\u003C\u003CcurrentTiddler>>\u003C$text text=]]/>\\n\u003C/$list>\\n\\n\\\\end\\n\\\\define display_one_record()\\n\u003C$wikify name=rowStyle text=\\\"\u003C$transclude tiddler=\u003C\u003CtempTableStyle>>index=\u003C\u003CcurrentRecord>>/>\\\"mode=inline>\\n\u003Ctr style=\u003C\u003CrowStyle>>>\\n\u003C$list filter=\u003C\u003CcolumnFilter>>variable=currentColumn>\\n\u003C$set filter=\\\"[[$:/tags/Table/BodyTemplate]tagging[]contains:tbl-column-list\u003CcurrentColumn>nth[]get[title]]\\\"value=\u003C\u003CbodyLookup>>emptyValue=\\\"$:/plugins/kookma/shiraz/templates/body/default\\\"name=bodyLookup>\\n\u003C$transclude tiddler=\u003C\u003CbodyLookup>>field=text mode=inline/>\\n\u003C/$set>\\n\u003C/$list>\\n\u003C/tr>\\n\u003C!---->\\n\u003C$reveal type=match state=\u003C\u003CtempPathExpand>>text=show tag=tr>\\n\u003C\u003Cdisplay-expanded-record>>\\n\u003C/$reveal>\\n\\n\\\\end\\n\\\\define display_body_fields()\\n\u003C$set filter=\\\"[\u003Cpagination>match[yes]]\\\"value=\\\"[subfilter\u003CtableFilter_fields>first\u003Chigh>] -[subfilter\u003CtableFilter_fields>first\u003Clow>]\\\"emptyValue=\\\"[subfilter\u003CtableFilter_fields>]\\\"name=finalFilter>\\n\u003C$list filter=\\\"[subfilter\u003CfinalFilter>]\\\"variable=currentRecord>\\n\u003C\u003Cdisplay_one_record>>\\n\u003C/$list>\\n\\n\\\\end\\n\\\\define display_body_indexes()\\n\u003C$wikify text=\u003C\u003Cgetitems>>name=items> \\n\u003C$set filter=\\\"[\u003Cpagination>match[yes]]\\\"value=\\\"[subfilter\u003CtableFilter_indexes>first\u003Chigh>] -[subfilter\u003CtableFilter_indexes>first\u003Clow>]\\\"emptyValue=\\\"[subfilter\u003CtableFilter_indexes>]\\\"name=finalFilter>\\n\u003C$list filter=\\\"[subfilter\u003CfinalFilter>]\\\"variable=currentItem>\\n\u003C$list filter=\\\"[\u003CcurrentItem>split[°≡°]last[]]\\\"variable=currentRecord>\\n \u003C\u003Cdisplay_one_record>>\\n\u003C/$list>\\n\u003C/$list>\\n\u003C/$set>\\n\\n\\\\end\"},\"$:/plugins/kookma/shiraz/macros/dtables/tbl-expand\":{\"tags\":\"$:/tags/Table/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define display-expanded-record()\\n\u003Ctd colspan=\u003C\u003Cncols>>class=shiraz-dtable-expanded-record>\\n\u003C$tiddler tiddler=\u003C\u003CcurrentRecord>>>\\n\u003C$list filter=\\\"[\u003CtempTableEdit>getindex[mode]match[edit]]\\\"emptyMessage=\\\"\u003C$transclude tiddler=\u003C\u003CcurrentRecord>>field=text mode=block/>\\\"variable=ignore>\\n \u003C$edit-text class=tbl-inpt-edit tiddler=\u003C\u003CcurrentRecord>>field=text tag=textarea/>\\n\u003C/$list>\\n\u003C/$tiddler>\\n\\n\\\\end\"},\"$:/plugins/kookma/shiraz/macros/dtables/toggle-edit-view\":{\"tags\":\"$:/tags/Table/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define toggle-edit-view()\\n\u003C$reveal type=nomatch stateTitle=\u003C\u003CtempTableEdit>>stateIndex=mode text=edit>\\n\u003C$button class=\\\"tc-btn-invisible tc-tiddlylink\\\"setTitle=\u003C\u003CtempTableEdit>>setIndex=mode setTo=edit>{{$:/core/images/edit-button}}\u003C/$button>\\n\u003C/$reveal>\\n\u003C$reveal type=match stateTitle=\u003C\u003CtempTableEdit>>stateIndex=mode text=edit>\\n\u003C$button class=\\\"tc-btn-invisible tc-tiddlylink\\\"setTitle=\u003C\u003CtempTableEdit>>setIndex=mode setTo=view>{{$:/core/images/done-button}}\u003C/$button>\\n\\n\\\\end\"},\"$:/plugins/kookma/shiraz/macros/dtables/warning_message\":{\"tags\":\"$:/tags/Table/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define show_tiddler_types()\\n\u003Cdetails>\\n \u003Csummary>List tiddlers with wrong type\u003C/summary>\\n\\t\u003Cdl>\\n \u003C$list filter=\\\"[subfilter\u003CinputFilter>]\\\">\\n\\t\u003C$list filter=\\\"[{!!title}get[type]match[application/x-tiddler-dictionary]][{!!title}get[type]match[application/json]]\\\"emptyMessage=\\\"\u003Cdt>\u003C$link/>\u003C/dt>\u003Cdd>\u003C$view field=type/>\\\"variable=ignore>\\n\\t\u003C/$list>\\n\\t\u003C/$list>\\n\\t\u003C/dl>\\n\\n\\\\end\\n\\\\define show_warning_message()\\nDynamic editable table from ''indexes'' expects all input tiddlers are of dataTiddler (json or dictionary) types. Using tiddlers of non //json// or //x-tiddler-dictionary// types as input can unintentionally overwrite the data in the text field of those tiddlers.\u003Cbr>\\n\u003Cbr>\\nCheck the tiddler types to find which tiddlers are not of dataTiddler types!\u003Cbr>\\n\u003C\u003Cshow_tiddler_types>>\\n\\\\end\\n\\\\define check_tiddlers_type_for_table_from_indexes(isEditable)\\n \u003C$list filter=\\\"[\u003CfieldOrIndex>]-field\\\"variable=ignore>\\n\\t\u003C$list filter=\\\"[\u003C__isEditable__>match[yes]]\\\"variable=ignore> \\n\\t\u003C$list filter=\\\"[\u003CtempWarningMsg>is[missing]]\\\"variable=ignore>\\n\\t\u003C$list filter=\\\"[subfilter\u003CinputFilter>each[type]get[type]]-application/x-tiddler-dictionary -application/json\\\"variable=ignore>\\n\\t \u003Cdiv style=\\\"color: white;background-color:#ff0033;padding:8px;text-align:center;width:100%;\\\">\\n\\t Danger: Editable dynamic table from idexes with mixed types of tiddlers! &nbsp;\\n\\t \u003C$button class=\\\"tc-btn-invisible tc-tiddlylink\\\"tooltip=\\\"Dismiss alert and continue with the current selection!\\\"style=fill:white;>{{$:/core/images/close-button}}\\n \u003C$action-setfield $tiddler=\u003C\u003CtempWarningMsg>>text=dissmiss/>\\n \u003C/$button>\\n\\t \u003C/div>\\n\\t \u003Cdiv style=\\\"border:1px solid #ff0033;padding:8px;\\\">\\n\\t \u003C\u003Cshow_warning_message>>\\n\\t \u003C/div>\\n \u003C/$list>\\n\\t\u003C/$list>\\n\\t\u003C/$list>\\n\\t\\n\\\\end\"},\"$:/plugins/kookma/shiraz/macros/image-basic\":{\"tags\":\"$:/tags/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define image-basic(img width:30% align:none caption tooltip alt)\\n\u003Cfigure class=\\\"image-basic image-align-$align$\\\"style=\\\"width:$width$;\\\">\\n \u003C$image source=\u003C\u003C__img__>>tooltip=\u003C\u003C__tooltip__>>alt=\u003C\u003C__alt__>>/> \\n \u003Cfigcaption>$caption$\u003C/figcaption>\\n\u003C/figure> \\n\\\\end\"},\"$:/plugins/kookma/shiraz/macros/image-card\":{\"tags\":\"$:/tags/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define image-card(img width:30% align:none title:Empty text:Empty footer:Empty pos:top alt)\\n\\\\import $:/plugins/kookma/shiraz/macros/image-card-utility\\n\u003C$reveal tag=div type=match text=\u003C\u003C__pos__>>default=top>\\n\u003C$macrocall img=\u003C\u003C__img__>>title=\u003C\u003C__title__>>text=\u003C\u003C__text__>>footer=\u003C\u003C__footer__>>width=\u003C\u003C__width__>>align=\u003C\u003C__align__>>alt=\u003C\u003C__alt__>>$name=image-card-top/>\\n\u003C/$reveal>\\n\u003C$reveal tag=div type=nomatch text=\u003C\u003C__pos__>>default=top>\\n\u003C$macrocall img=\u003C\u003C__img__>>title=\u003C\u003C__title__>>text=\u003C\u003C__text__>>footer=\u003C\u003C__footer__>>width=\u003C\u003C__width__>>align=\u003C\u003C__align__>>alt=\u003C\u003C__alt__>>$name=image-card-bottom/>\\n\\n\\\\end\\n\\\\define image-card-top(img width:30% align:none title:Empty text:Empty footer:Empty alt)\\n\u003Cdiv class=\\\"card image-align-$align$\\\"style=\\\"width:$width$;\\\">\\n \u003C$image source=\u003C\u003C__img__>>alt=\u003C\u003C__alt__>>class=card-img-top/>\\n \u003Cdiv class=card-body>\\n \u003C$reveal tag=div type=nomatch text=\u003C\u003C__title__>>default=Empty>\\n \u003Cdiv class=\\\"h5 card-title\\\">$title$\u003C/div>\\n \u003C/$reveal> \\n \u003C$reveal tag=div type=nomatch text=\u003C\u003C__text__>>default=Empty>\\n \u003Cdiv class=card-text>$text$\u003C/div>\\n \u003C/$reveal> \\n \u003C$reveal tag=div type=nomatch text=\u003C\u003C__footer__>>default=Empty>\\n \u003Cp class=card-text>\u003Csmall class=text-muted>$footer$\u003C/small>\u003C/p>\\n \u003C/$reveal>\\n \u003C/div> \\n\\n\\\\end\\n\\\\define image-card-bottom(img width:30% align:none title:Empty text:Empty footer:Empty alt)\\n\u003Cdiv class=\\\"card image-align-$align$\\\"style=\\\"width:$width$;\\\">\\n \u003Cdiv class=card-body>\\n \u003C$reveal tag=div type=nomatch text=\u003C\u003C__title__>>default=Empty>\\n \u003Cdiv class=\\\"h5 card-title\\\">$title$\u003C/div>\\n \u003C/$reveal> \\n \u003C$reveal tag=div type=nomatch text=\u003C\u003C__text__>>default=Empty>\\n \u003Cdiv class=card-text>$text$\u003C/div>\\n \u003C/$reveal> \\n \u003C$reveal tag=div type=nomatch text=\u003C\u003C__footer__>>default=Empty>\\n \u003Cp class=card-text>\u003Csmall class=text-muted>$footer$\u003C/small>\u003C/p>\\n \u003C/$reveal>\\n \u003C/div> \\n \u003C$image source=\u003C\u003C__img__>>alt=\u003C\u003C__alt__>>class=card-img-bottom/>\\n\\n\\\\end\"},\"$:/plugins/kookma/shiraz/macros/image-card-utility\":{\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define image-card-top(img width:30% align:none title:Empty text:Empty footer:Empty alt)\\n\u003Cdiv class=\\\"card image-align-$align$\\\"style=\\\"width:$width$;\\\">\\n \u003C$image source=\u003C\u003C__img__>>alt=\u003C\u003C__alt__>>class=card-img-top/>\\n \u003Cdiv class=card-body>\\n \u003C$reveal tag=div type=nomatch text=\u003C\u003C__title__>>default=Empty>\\n \u003Cdiv class=\\\"h5 card-title\\\">$title$\u003C/div>\\n \u003C/$reveal> \\n \u003C$reveal tag=div type=nomatch text=\u003C\u003C__text__>>default=Empty>\\n \u003Cdiv class=card-text>$text$\u003C/div>\\n \u003C/$reveal> \\n \u003C$reveal tag=div type=nomatch text=\u003C\u003C__footer__>>default=Empty>\\n \u003Cp class=card-text>\u003Csmall class=text-muted>$footer$\u003C/small>\u003C/p>\\n \u003C/$reveal>\\n \u003C/div> \\n\\n\\\\end\\n\\\\define image-card-bottom(img width:30% align:none title:Empty text:Empty footer:Empty alt)\\n\u003Cdiv class=\\\"card image-align-$align$\\\"style=\\\"width:$width$;\\\">\\n \u003Cdiv class=card-body>\\n \u003C$reveal tag=div type=nomatch text=\u003C\u003C__title__>>default=Empty>\\n \u003Cdiv class=\\\"h5 card-title\\\">$title$\u003C/div>\\n \u003C/$reveal> \\n \u003C$reveal tag=div type=nomatch text=\u003C\u003C__text__>>default=Empty>\\n \u003Cdiv class=card-text>$text$\u003C/div>\\n \u003C/$reveal> \\n \u003C$reveal tag=div type=nomatch text=\u003C\u003C__footer__>>default=Empty>\\n \u003Cp class=card-text>\u003Csmall class=text-muted>$footer$\u003C/small>\u003C/p>\\n \u003C/$reveal>\\n \u003C/div> \\n \u003C$image source=\u003C\u003C__img__>>alt=\u003C\u003C__alt__>>class=card-img-bottom/>\\n\\n\\\\end\"},\"$:/plugins/kookma/shiraz/macros/image-overlay\":{\"tags\":\"$:/tags/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define image-overlay(img width:30% align:none caption title text fadein:left alt)\\n\\\\import $:/plugins/kookma/shiraz/macros/image-overlay-utility\\n\u003Cdiv class=\\\"image-overlay-container image-align-$align$\\\"style=\\\"width:$width$;\\\">\\n \u003Ch3 class=image-overlay-title>$caption$\u003C/h3>\\n \u003Cdiv class=image-overlay-content>\\n \u003Cdiv class=image-overlay-content-overlay>\u003C/div>\\n \u003C$image source=\u003C\u003C__img__>>alt=\u003C\u003C__alt__>>class=image-overlay-content-image/>\\n \u003C$set filter=\\\"$fadein$ +[splitbefore[ ]]+[addprefix[image-overlay-fadeIn-]]\\\"name=fdcls>\\n \u003Cdiv class=\u003C\u003C_cls-content-details>>>\\n \u003Ch3 class=image-overlay-content-title>$title$\u003C/h3>\\n \u003Cp class=image-overlay-content-text>$text$\u003C/p>\\n \u003C/div>\\n \u003C/$set>\\n \u003C/div>\\n\\n\\\\end\"},\"$:/plugins/kookma/shiraz/macros/image-overlay-utility\":{\"tags\":\"$:/tags/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define _cls-content-details()image-overlay-content-details $(fdcls)$\"},\"$:/plugins/kookma/shiraz/macros/image-polaroid\":{\"tags\":\"$:/tags/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define image-polaroid(img width:30% align:none caption tooltip alt)\\n\u003Cfigure class=\\\"image-polaroid image-align-$align$\\\"style=\\\"width:$width$;\\\">\\n \u003C$image source=\\\"\\\"\\\"$img$\\\"\\\"\\\"tooltip=\\\"\\\"\\\"$tooltip$\\\"\\\"\\\"/>\\n \u003Cfigcaption class=image-polaroid-caption>$caption$\u003C/figcaption>\\n\u003C/figure> \\n\\\\end\"},\"$:/plugins/kookma/shiraz/macros/image-pretty\":{\"tags\":\"$:/tags/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define image-pretty(img width:30% align:none caption tooltip alt)\\n\u003Cfigure class=\\\"image-pretty image-align-$align$\\\"style=\\\"width:$width$;\\\">\\n \u003C$image source=\u003C\u003C__img__>>tooltip=\u003C\u003C__tooltip__>>alt=\u003C\u003C__alt__>>/> \\n \u003Cfigcaption class=image-pretty-caption>$caption$\u003C/figcaption>\\n\u003C/figure> \\n\\\\end\"},\"$:/plugins/kookma/shiraz/macros/image-slidein\":{\"tags\":\"$:/tags/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define image-slidein(img width:30% align:none caption tooltip slidein:left alt)\\n\u003Cfigure class=\\\"image-slidein mr-cap-$slidein$ image-align-$align$\\\"style=\\\"width:$width$;\\\">\\n \u003C$image source=\u003C\u003C__img__>>tooltip=\u003C\u003C__tooltip__>>alt=\u003C\u003C__alt__>>/>\\n \u003Cfigcaption>$caption$\u003C/figcaption>\\n\u003C/figure> \\n\\\\end\"},\"$:/plugins/kookma/shiraz/macros/list-search\":{\"author\":\"Jeremy Ruston\",\"description\":\"creates few paragraphs of dumy text\",\"tags\":\"$:/tags/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define list-search(filter:[!is[system]] search:'search:title'template:'$:/core/ui/ListItemTemplate'class:my-3 stateTiddler placeholder:keywords)\\n\u003C$set filter=\\\"[[$:/temp/list-search]addsuffix[/$stateTiddler$]addsuffix\u003Cqualify>]\\\"name=state>\\n\u003Cdiv class=\u003C\u003C__class__>>>\\n\u003C$keyboard actions='\u003C$action-deletetiddler $tiddler=\u003C\u003Cstate>>/>'key=escape>\\n\u003C$edit-text tiddler=\u003C\u003Cstate>>type=search tag=input default=''placeholder=\\\"$placeholder$\\\"class=w-100/>\\n\u003C/$keyboard>\\n\u003C/div>\\n\u003C$reveal stateTitle=\u003C\u003Cstate>>stateField=text type=match text=''class=\u003C\u003C__class__>>tag=div>\\n\u003C$list filter=\\\"$filter$\\\"template=\u003C\u003C__template__>>/>\\n\u003C/$reveal>\\n\u003C$reveal stateTitle=\u003C\u003Cstate>>stateField=text type=nomatch text=''class=\u003C\u003C__class__>>tag=div>\\n\u003C$set name=term tiddler=\u003C\u003Cstate>>field=text>\\n\u003C$list filter=\\\"$filter$+[$search$\u003Cterm>]\\\"template=\u003C\u003C__template__>>/>\\n\u003C/$set>\\n\u003C/$reveal>\\n\\n\\\\end\"},\"$:/plugins/kookma/shiraz/macros/multicol\":{\"tags\":\"$:/tags/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define multicol(src ncol class)\\n\u003Cdiv class=\\\"sh-multicol$ncol$ $class$\\\">\\n\\n$src$\\n\u003C/div>\\n\\\\end\"},\"$:/plugins/kookma/shiraz/macros/slider\":{\"description\":\"Slider macro shows (hides) its content.\",\"tags\":\"$:/tags/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define slider(label src labelClass srcClass status:closed)\\n\u003C$let revealState=\\\"\\\"\\\"$:/state/shiraz/slider-macro/$(currentTiddler)$/$label$\\\"\\\"\\\"source={{{[\u003C__src__>get[text]else\u003C__src__>]}}}>\\n\u003Ch3 class=\\\"$labelClass$\\\">\\n \u003C$reveal type=nomatch state=\u003C\u003CrevealState>>default=\\\"$status$\\\"text=open>\\n \u003C$button class=\\\"tc-btn-invisible tc-tiddlylink\\\"set=\u003C\u003CrevealState>>setTo=open>\\n \u003Cspan class=kk-sh-slider>{{||$:/core/images/right-arrow}}\u003C/span>\\n \u003C/$button>\\n \u003C/$reveal>\\n \u003C$reveal type=match state=\u003C\u003CrevealState>>default=\\\"$status$\\\"text=open>\\n \u003C$button class=\\\"tc-btn-invisible tc-tiddlylink\\\"set=\u003C\u003CrevealState>>setTo=closed>\\n \u003Cspan class=kk-sh-slider>{{||$:/core/images/down-arrow}}\u003C/span>\\n \u003C/$button>\\n \u003C/$reveal>\\n \u003C$let tv-wikilinks=no>$label$\u003C/$let>\\n\u003C/h3>\\n\u003C$reveal type=match state=\u003C\u003CrevealState>>text=open default=\\\"$status$\\\"class=\\\"$srcClass$\\\"tag=div>\\n\u003C$transclude tiddler=\u003C\u003Csource>>field=title mode=block/>\\n\u003C/$reveal>\\n\\n\\n\\\\end\"},\"$:/plugins/kookma/shiraz/macros/space\":{\"tags\":\"$:/tags/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define vspace(height:25px)\u003Cp style=\\\"margin-bottom: $height$;\\\">\\n\\\\define hspace(width:25px)\u003Cspan style=\\\"margin-left: $width$;\\\">\"},\"$:/plugins/kookma/shiraz/macros/text-utility\":{\"tags\":\"$:/tags/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define tc(src color:red)\u003Cspan style=\\\"color:$color$;\\\">$src$\u003C/span>\\n\\\\define bc(src color:yellow)\u003Cspan style=\\\"background-color:$color$;\\\">$src$\u003C/span>\\n\\\\define mono(src class)\u003Ccode class=\\\"mono $class$\\\">$src$\u003C/code>\\n\\\\define transform(case src class)\u003Cspan class=\\\"text-$case$ $class$\\\">$src$\u003C/span>\\n\\\\define hl(src color:yellow)\u003Cmark style=\\\"background-color:$color$;\\\"class=kk-sh-highlight>$src$\u003C/mark>\\n\\\\define hls(src color:yellow)\u003Cmark style=\\\"filter: drop-shadow(0 0 0.4rem $color$);\\\"class=kk-sh-highlight>$src$\u003C/mark>\\n\\\\define hlp(src color:yellow)\u003Cmark style=\\\"background-image: linear-gradient(to top, $color$ 50%, transparent 0);\\\"class=kk-sh-highlight-pen>$src$\u003C/mark>\"},\"$:/plugins/kookma/shiraz/readme\":{\"type\":\"text/vnd.tiddlywiki\",\"text\":\"; Shiraz\\nShiraz is a small framework of stylesheets, templates and macros to create stylish contents in Tiddlywiki. Shiraz has customized elements like alerts, cards, panels, images, static tables, dynamic tables, quick table, badges, texts, etc. Shiraz uses some modified CSS classes from [[Bootstrap|https://getbootstrap.com/]] 4.3.1.\\n\\n;Code and demo\\nFor learning plugin features, syntax, tutorial and examples see the plugin demo and code pages\\n\\n* Demo: https://kookma.github.io/TW-Shiraz/\\n* Code: https://github.com/kookma/TW-Shiraz\\n\"},\"$:/plugins/kookma/shiraz/styles/alerts-leftbar\":{\"text\":\".leftbar{border-width:0 !important;border-radius:0 !important;border-left-width:5px !important}\",\"tags\":\"$:/tags/Stylesheet\",\"type\":\"text/css\"},\"$:/plugins/kookma/shiraz/styles/bglowtone-colors\":{\"text\":\".bg-mistyrose{background-color:#ffe4e1}.bg-lemonchiffon{background-color:#fffacd}.bg-lavenderblush{background-color:#fff0f5}.bg-lavender{background-color:#e6e6fa}.bg-honeydew{background-color:#f0fff0}.bg-lightcyan{background-color:#e0ffff}.bg-aliceblue{background-color:#f0f8ff}.bg-cornsilk{background-color:#fff8dc}.bg-gainsboro{background-color:#dcdcdc}.bg-bisque{background-color:#ffe4c4}.bg-snow{background-color:#fffafa}\",\"list\":\"mistyrose lemonchiffon lavenderblush lavender honeydew lightcyan aliceblue cornsilk gainsboro bisque snow\",\"tags\":\"$:/tags/Stylesheet\",\"type\":\"text/css\"},\"$:/plugins/kookma/shiraz/styles/bs/alerts\":{\"text\":\".alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-primary{color:#004085;background-color:#cce5ff;border-color:#b8daff}.alert-primary hr{border-top-color:#9fcdff}.alert-secondary{color:#383d41;background-color:#e2e3e5;border-color:#d6d8db}.alert-secondary hr{border-top-color:#c8cbcf}.alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.alert-success hr{border-top-color:#b1dfbb}.alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.alert-info hr{border-top-color:#abdde5}.alert-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.alert-warning hr{border-top-color:#ffe8a1}.alert-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.alert-danger hr{border-top-color:#f1b0b7}.alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.alert-light hr{border-top-color:#ececf6}.alert-dark{color:#1b1e21;background-color:#d6d8d9;border-color:#c6c8ca}.alert-dark hr{border-top-color:#b9bbbe}\",\"tags\":\"$:/tags/Stylesheet\",\"type\":\"text/css\"},\"$:/plugins/kookma/shiraz/styles/bs/background-colors\":{\"text\":\".bg-primary{background-color:#007bff !important}a.bg-primary:hover,a.bg-primary:focus,button.bg-primary:hover,button.bg-primary:focus{background-color:#0062cc !important}.bg-secondary{background-color:#6c757d !important}a.bg-secondary:hover,a.bg-secondary:focus,button.bg-secondary:hover,button.bg-secondary:focus{background-color:#545b62 !important}.bg-success{background-color:#28a745 !important}a.bg-success:hover,a.bg-success:focus,button.bg-success:hover,button.bg-success:focus{background-color:#1e7e34 !important}.bg-info{background-color:#17a2b8 !important}a.bg-info:hover,a.bg-info:focus,button.bg-info:hover,button.bg-info:focus{background-color:#117a8b !important}.bg-warning{background-color:#ffc107 !important}a.bg-warning:hover,a.bg-warning:focus,button.bg-warning:hover,button.bg-warning:focus{background-color:#d39e00 !important}.bg-danger{background-color:#dc3545 !important}a.bg-danger:hover,a.bg-danger:focus,button.bg-danger:hover,button.bg-danger:focus{background-color:#bd2130 !important}.bg-light{background-color:#f8f9fa !important}a.bg-light:hover,a.bg-light:focus,button.bg-light:hover,button.bg-light:focus{background-color:#dae0e5 !important}.bg-dark{background-color:#343a40 !important}a.bg-dark:hover,a.bg-dark:focus,button.bg-dark:hover,button.bg-dark:focus{background-color:#1d2124 !important}.bg-white{background-color:#fff !important}.bg-transparent{background-color:transparent !important}\",\"tags\":\"$:/tags/Stylesheet\",\"type\":\"text/css\"},\"$:/plugins/kookma/shiraz/styles/bs/badge\":{\"text\":\".badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#007bff}.badge-primary[href]:hover,.badge-primary[href]:focus{color:#fff;text-decoration:none;background-color:#0062cc}.badge-secondary{color:#fff;background-color:#6c757d}.badge-secondary[href]:hover,.badge-secondary[href]:focus{color:#fff;text-decoration:none;background-color:#545b62}.badge-success{color:#fff;background-color:#28a745}.badge-success[href]:hover,.badge-success[href]:focus{color:#fff;text-decoration:none;background-color:#1e7e34}.badge-info{color:#fff;background-color:#17a2b8}.badge-info[href]:hover,.badge-info[href]:focus{color:#fff;text-decoration:none;background-color:#117a8b}.badge-warning{color:#212529;background-color:#ffc107}.badge-warning[href]:hover,.badge-warning[href]:focus{color:#212529;text-decoration:none;background-color:#d39e00}.badge-danger{color:#fff;background-color:#dc3545}.badge-danger[href]:hover,.badge-danger[href]:focus{color:#fff;text-decoration:none;background-color:#bd2130}.badge-light{color:#212529;background-color:#f8f9fa}.badge-light[href]:hover,.badge-light[href]:focus{color:#212529;text-decoration:none;background-color:#dae0e5}.badge-dark{color:#fff;background-color:#343a40}.badge-dark[href]:hover,.badge-dark[href]:focus{color:#fff;text-decoration:none;background-color:#1d2124}\",\"tags\":\"$:/tags/Stylesheet\",\"type\":\"text/css\"},\"$:/plugins/kookma/shiraz/styles/bs/borders\":{\"text\":\".border{border:1px solid #dee2e6 !important}.border-top{border-top:1px solid #dee2e6 !important}.border-right{border-right:1px solid #dee2e6 !important}.border-bottom{border-bottom:1px solid #dee2e6 !important}.border-left{border-left:1px solid #dee2e6 !important}.border-0{border:0 !important}.border-top-0{border-top:0 !important}.border-right-0{border-right:0 !important}.border-bottom-0{border-bottom:0 !important}.border-left-0{border-left:0 !important}.border-primary{border-color:#007bff !important}.border-secondary{border-color:#6c757d !important}.border-success{border-color:#28a745 !important}.border-info{border-color:#17a2b8 !important}.border-warning{border-color:#ffc107 !important}.border-danger{border-color:#dc3545 !important}.border-light{border-color:#f8f9fa !important}.border-dark{border-color:#343a40 !important}.border-white{border-color:#fff !important}.rounded{border-radius:.25rem !important}.rounded-top{border-top-left-radius:.25rem !important;border-top-right-radius:.25rem !important}.rounded-right{border-top-right-radius:.25rem !important;border-bottom-right-radius:.25rem !important}.rounded-bottom{border-bottom-right-radius:.25rem !important;border-bottom-left-radius:.25rem !important}.rounded-left{border-top-left-radius:.25rem !important;border-bottom-left-radius:.25rem !important}.rounded-circle{border-radius:50% !important}.rounded-0{border-radius:0 !important}\",\"tags\":\"$:/tags/Stylesheet\",\"type\":\"text/css\"},\"$:/plugins/kookma/shiraz/styles/bs/btn\":{\"text\":\".btn{display:inline-block;font-weight:400;text-align:center;white-space:nowrap;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}.btn:hover,.btn:focus{text-decoration:none}.btn:focus,.btn.focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,0.25)}.btn.disabled,.btn:disabled{opacity:.65}.btn:not(:disabled):not(.disabled){cursor:pointer}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:hover{color:#fff;background-color:#0069d9;border-color:#0062cc}.btn-primary:focus,.btn-primary.focus{box-shadow:0 0 0 .2rem rgba(0,123,255,0.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#007bff;border-color:#007bff}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:hover{color:#fff;background-color:#5a6268;border-color:#545b62}.btn-secondary:focus,.btn-secondary.focus{box-shadow:0 0 0 .2rem rgba(108,117,125,0.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.btn-success:focus,.btn-success.focus{box-shadow:0 0 0 .2rem rgba(40,167,69,0.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.btn-info{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:hover{color:#fff;background-color:#138496;border-color:#117a8b}.btn-info:focus,.btn-info.focus{box-shadow:0 0 0 .2rem rgba(23,162,184,0.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-warning{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#212529;background-color:#e0a800;border-color:#d39e00}.btn-warning:focus,.btn-warning.focus{box-shadow:0 0 0 .2rem rgba(255,193,7,0.5)}.btn-warning.disabled,.btn-warning:disabled{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#c82333;border-color:#bd2130}.btn-danger:focus,.btn-danger.focus{box-shadow:0 0 0 .2rem rgba(220,53,69,0.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-light{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#212529;background-color:#e2e6ea;border-color:#dae0e5}.btn-light:focus,.btn-light.focus{box-shadow:0 0 0 .2rem rgba(248,249,250,0.5)}.btn-light.disabled,.btn-light:disabled{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-dark{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:hover{color:#fff;background-color:#23272b;border-color:#1d2124}.btn-dark:focus,.btn-dark.focus{box-shadow:0 0 0 .2rem rgba(52,58,64,0.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#343a40;border-color:#343a40}.btn-link{font-weight:400;color:#007bff;background-color:transparent}.btn-link:hover{color:#0056b3;text-decoration:underline;background-color:transparent;border-color:transparent}.btn-link:focus,.btn-link.focus{text-decoration:underline;border-color:transparent;box-shadow:none}.btn-link:disabled,.btn-link.disabled{color:#6c757d;pointer-events:none}.btn-lg{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.btn-sm{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}\",\"tags\":\"$:/tags/Stylesheet\",\"type\":\"text/css\"},\"$:/plugins/kookma/shiraz/styles/bs/card\":{\"text\":\".card{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,0.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group:first-child .list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card>.list-group:last-child .list-group-item:last-child{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-body{-ms-flex:1 1 auto;flex:1 1 auto;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-0.375rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:rgba(0,0,0,0.03);border-bottom:1px solid rgba(0,0,0,0.125)}.card-header:first-child{border-radius:calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0}.card-header+.list-group .list-group-item:first-child{border-top:0}.card-footer{padding:.75rem 1.25rem;background-color:rgba(0,0,0,0.03);border-top:1px solid rgba(0,0,0,0.125)}.card-footer:last-child{border-radius:0 0 calc(0.25rem - 1px) calc(0.25rem - 1px)}.card-header-tabs{margin-right:-0.625rem;margin-bottom:-0.75rem;margin-left:-0.625rem;border-bottom:0}.card-header-pills{margin-right:-0.625rem;margin-left:-0.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem}.card-img{width:100%;border-radius:calc(0.25rem - 1px)}.card-img-top{width:100%;border-top-left-radius:calc(0.25rem - 1px);border-top-right-radius:calc(0.25rem - 1px)}.card-img-bottom{width:100%;border-bottom-right-radius:calc(0.25rem - 1px);border-bottom-left-radius:calc(0.25rem - 1px)}\",\"tags\":\"$:/tags/Stylesheet\",\"type\":\"text/css\"},\"$:/plugins/kookma/shiraz/styles/bs/card-column\":{\"text\":\".card-columns .card{margin-bottom:.75rem}@media(min-width:576px){.card-columns{-webkit-column-count:3;-moz-column-count:3;column-count:3;-webkit-column-gap:1.25rem;-moz-column-gap:1.25rem;column-gap:1.25rem;orphans:1;widows:1}.card-columns .card{display:inline-block;width:100%}}\",\"tags\":\"$:/tags/Stylesheet\",\"type\":\"text/css\"},\"$:/plugins/kookma/shiraz/styles/bs/card-deck\":{\"text\":\".card-deck{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.card-deck .card{margin-bottom:15px}@media(min-width:576px){.card-deck{-ms-flex-flow:row wrap;flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card{display:-ms-flexbox;display:flex;-ms-flex:1 0 0%;flex:1 0 0%;-ms-flex-direction:column;flex-direction:column;margin-right:15px;margin-bottom:0;margin-left:15px}}\",\"tags\":\"$:/tags/Stylesheet\",\"type\":\"text/css\"},\"$:/plugins/kookma/shiraz/styles/bs/card-group\":{\"text\":\".card-group{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.card-group>.card{margin-bottom:15px}@media(min-width:576px){.card-group{-ms-flex-flow:row wrap;flex-flow:row wrap}.card-group>.card{-ms-flex:1 0 0%;flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:first-child .card-img-top,.card-group>.card:first-child .card-header{border-top-right-radius:0}.card-group>.card:first-child .card-img-bottom,.card-group>.card:first-child .card-footer{border-bottom-right-radius:0}.card-group>.card:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:last-child .card-img-top,.card-group>.card:last-child .card-header{border-top-left-radius:0}.card-group>.card:last-child .card-img-bottom,.card-group>.card:last-child .card-footer{border-bottom-left-radius:0}.card-group>.card:only-child{border-radius:.25rem}.card-group>.card:only-child .card-img-top,.card-group>.card:only-child .card-header{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card-group>.card:only-child .card-img-bottom,.card-group>.card:only-child .card-footer{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-group>.card:not(:first-child):not(:last-child):not(:only-child){border-radius:0}.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-img-top,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-img-bottom,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-header,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-footer{border-radius:0}}\",\"tags\":\"$:/tags/Stylesheet\",\"type\":\"text/css\"},\"$:/plugins/kookma/shiraz/styles/bs/clearfix\":{\"text\":\".clearfix::after{display:block;clear:both;content:\\\"\\\"}\",\"tags\":\"$:/tags/Stylesheet\",\"type\":\"text/css\"},\"$:/plugins/kookma/shiraz/styles/bs/float\":{\"text\":\".float-left{float:left}.float-right{float:right}.float-none{float:none}\",\"tags\":\"$:/tags/Stylesheet\",\"type\":\"text/css\"},\"$:/plugins/kookma/shiraz/styles/bs/my-adjustment\":{\"text\":\"a{color:#007bff;text-decoration:none;background-color:transparent;-webkit-text-decoration-skip:objects}\",\"tags\":\"$:/tags/Stylesheet\",\"type\":\"text/css\"},\"$:/plugins/kookma/shiraz/styles/bs/shadow\":{\"text\":\".shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,0.075) !important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,0.15) !important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,0.175) !important}.shadow-none{box-shadow:none !important}\",\"tags\":\"$:/tags/Stylesheet\",\"type\":\"text/css\"},\"$:/plugins/kookma/shiraz/styles/bs/sizing-spacing\":{\"text\":\".w-25{width:25% !important}.w-50{width:50% !important}.w-75{width:75% !important}.w-100{width:100% !important}.w-auto{width:auto !important}.h-25{height:25% !important}.h-50{height:50% !important}.h-75{height:75% !important}.h-100{height:100% !important}.h-auto{height:auto !important}.mw-100{max-width:100% !important}.mh-100{max-height:100% !important}.m-0{margin:0 !important}.mt-0,.my-0{margin-top:0 !important}.mr-0,.mx-0{margin-right:0 !important}.mb-0,.my-0{margin-bottom:0 !important}.ml-0,.mx-0{margin-left:0 !important}.m-1{margin:.25rem !important}.mt-1,.my-1{margin-top:.25rem !important}.mr-1,.mx-1{margin-right:.25rem !important}.mb-1,.my-1{margin-bottom:.25rem !important}.ml-1,.mx-1{margin-left:.25rem !important}.m-2{margin:.5rem !important}.mt-2,.my-2{margin-top:.5rem !important}.mr-2,.mx-2{margin-right:.5rem !important}.mb-2,.my-2{margin-bottom:.5rem !important}.ml-2,.mx-2{margin-left:.5rem !important}.m-3{margin:1rem !important}.mt-3,.my-3{margin-top:1rem !important}.mr-3,.mx-3{margin-right:1rem !important}.mb-3,.my-3{margin-bottom:1rem !important}.ml-3,.mx-3{margin-left:1rem !important}.m-4{margin:1.5rem !important}.mt-4,.my-4{margin-top:1.5rem !important}.mr-4,.mx-4{margin-right:1.5rem !important}.mb-4,.my-4{margin-bottom:1.5rem !important}.ml-4,.mx-4{margin-left:1.5rem !important}.m-5{margin:3rem !important}.mt-5,.my-5{margin-top:3rem !important}.mr-5,.mx-5{margin-right:3rem !important}.mb-5,.my-5{margin-bottom:3rem !important}.ml-5,.mx-5{margin-left:3rem !important}.p-0{padding:0 !important}.pt-0,.py-0{padding-top:0 !important}.pr-0,.px-0{padding-right:0 !important}.pb-0,.py-0{padding-bottom:0 !important}.pl-0,.px-0{padding-left:0 !important}.p-1{padding:.25rem !important}.pt-1,.py-1{padding-top:.25rem !important}.pr-1,.px-1{padding-right:.25rem !important}.pb-1,.py-1{padding-bottom:.25rem !important}.pl-1,.px-1{padding-left:.25rem !important}.p-2{padding:.5rem !important}.pt-2,.py-2{padding-top:.5rem !important}.pr-2,.px-2{padding-right:.5rem !important}.pb-2,.py-2{padding-bottom:.5rem !important}.pl-2,.px-2{padding-left:.5rem !important}.p-3{padding:1rem !important}.pt-3,.py-3{padding-top:1rem !important}.pr-3,.px-3{padding-right:1rem !important}.pb-3,.py-3{padding-bottom:1rem !important}.pl-3,.px-3{padding-left:1rem !important}.p-4{padding:1.5rem !important}.pt-4,.py-4{padding-top:1.5rem !important}.pr-4,.px-4{padding-right:1.5rem !important}.pb-4,.py-4{padding-bottom:1.5rem !important}.pl-4,.px-4{padding-left:1.5rem !important}.p-5{padding:3rem !important}.pt-5,.py-5{padding-top:3rem !important}.pr-5,.px-5{padding-right:3rem !important}.pb-5,.py-5{padding-bottom:3rem !important}.pl-5,.px-5{padding-left:3rem !important}.m-auto{margin:auto !important}.mt-auto,.my-auto{margin-top:auto !important}.mr-auto,.mx-auto{margin-right:auto !important}.mb-auto,.my-auto{margin-bottom:auto !important}.ml-auto,.mx-auto{margin-left:auto !important}\",\"tags\":\"$:/tags/Stylesheet\",\"type\":\"text/css\"},\"$:/plugins/kookma/shiraz/styles/bs/text-alignment\":{\"text\":\".text-justify{text-align:justify !important}.text-nowrap{white-space:nowrap !important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left !important}.text-right{text-align:right !important}.text-center{text-align:center !important}\",\"tags\":\"$:/tags/Stylesheet\",\"type\":\"text/css\"},\"$:/plugins/kookma/shiraz/styles/bs/text-colors\":{\"text\":\".text-white{color:#fff !important}.text-primary{color:#007bff !important}a.text-primary:hover,a.text-primary:focus{color:#0062cc !important}.text-secondary{color:#6c757d !important}a.text-secondary:hover,a.text-secondary:focus{color:#545b62 !important}.text-success{color:#28a745 !important}a.text-success:hover,a.text-success:focus{color:#1e7e34 !important}.text-info{color:#17a2b8 !important}a.text-info:hover,a.text-info:focus{color:#117a8b !important}.text-warning{color:#ffc107 !important}a.text-warning:hover,a.text-warning:focus{color:#d39e00 !important}.text-danger{color:#dc3545 !important}a.text-danger:hover,a.text-danger:focus{color:#bd2130 !important}.text-light{color:#f8f9fa !important}a.text-light:hover,a.text-light:focus{color:#dae0e5 !important}.text-dark{color:#343a40 !important}a.text-dark:hover,a.text-dark:focus{color:#1d2124 !important}.text-body{color:#212529 !important}.text-muted{color:#6c757d !important}.text-black-50{color:rgba(0,0,0,0.5) !important}.text-white-50{color:rgba(255,255,255,0.5) !important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}\",\"tags\":\"$:/tags/Stylesheet\",\"type\":\"text/css\"},\"$:/plugins/kookma/shiraz/styles/bs/text-utility\":{\"text\":\".text-lowercase{text-transform:lowercase !important}.text-uppercase{text-transform:uppercase !important}.text-capitalize{text-transform:capitalize !important}.font-weight-light{font-weight:300 !important}.font-weight-normal{font-weight:400 !important}.font-weight-bold{font-weight:700 !important}.font-italic{font-style:italic !important}.h1,.h2,.h3,.h4,.h5,.h6{margin-bottom:.5rem;font-family:inherit;font-weight:500;line-height:1.2;color:inherit}.h1{font-size:2.5rem}.h2{font-size:2rem}.h3{font-size:1.75rem}.h4{font-size:1.5rem}.h5{font-size:1.25rem}.h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.2}.display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}.hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,0.1)}.small{font-size:80%;font-weight:400}.mark{padding:.2em;background-color:#fcf8e3}\",\"tags\":\"$:/tags/Stylesheet\",\"type\":\"text/css\"},\"$:/plugins/kookma/shiraz/styles/clear-float\":{\"text\":\".tc-tiddler-body:before,.tc-tiddler-body:after{content:\\\"\\\";display:table}.tc-tiddler-body:after{clear:both}.tc-tiddler-body{zoom:1}\",\"tags\":\"$:/tags/Stylesheet\",\"type\":\"text/css\"},\"$:/plugins/kookma/shiraz/styles/colorful-sidebar-tab\":{\"text\":\".tc-sidebar-lists .tc-tab-buttons button.tc-tab-selected{background:0;border:0;border-bottom:solid 1px #737373;font-weight:bold;color:#db4c3f}\",\"tags\":\"$:/tags/Stylesheet\",\"type\":\"text/css\"},\"$:/plugins/kookma/shiraz/styles/csvtable\":{\"text\":\".tc-tiddler-body p.dblock,.tc-tiddler-preview-preview p.dblock{display:none}\",\"tags\":\"$:/tags/Stylesheet\",\"type\":\"text/css\"},\"$:/plugins/kookma/shiraz/styles/csvtable-katex\":{\"text\":\".falign .katex-display>.katex{text-align:left}.ralign .katex-display>.katex{text-align:right}.table-mathbox tr td{vertical-align:baseline}\",\"tags\":\"$:/tags/Stylesheet\",\"type\":\"text/css\"},\"$:/plugins/kookma/shiraz/styles/csvtable-star\":{\"text\":\".shiraz-star svg{width:1.2em;height:1.2em;vertical-align:middle;fill:#ff9529}\",\"tags\":\"$:/tags/Stylesheet\",\"type\":\"text/css\"},\"$:/plugins/kookma/shiraz/styles/dbadge\":{\"text\":\".dbadge{display:inline-block;margin:0}.dbadge>span{color:#fff;font-size:.8em;font-weight:400;line-height:1;padding:.2em .6em;text-align:center;vertical-align:baseline;white-space:nowrap}.dbadge-subject{background-color:#656565;border-bottom-left-radius:.25em;border-top-left-radius:.25em}.dbadge-status{border-bottom-right-radius:.25em;border-top-right-radius:.25em}.dbadge-primary{background-color:#337ab7}.dbadge-success{background-color:#5cb85c}.dbadge-info{background-color:#5bc0de}.dbadge-warning{background-color:#f0ad4e}.dbadge-danger{background-color:#d9534f}\",\"tags\":\"$:/tags/Stylesheet\",\"type\":\"text/css\"},\"$:/plugins/kookma/shiraz/styles/details-slider\":{\"text\":\"details.kk-shiraz-details>summary{padding:2px 6px;font-weight:500;outline:0}details.kk-shiraz-details>div{padding:2px 6px;margin:0}details.kk-shiraz-details summary{cursor:pointer}details.kk-shiraz-details summary>*{display:inline}button .kk-sh-slider svg{width:.8em;height:.8em;vertical-align:middle}\",\"tags\":\"$:/tags/Stylesheet\",\"type\":\"text/css\"},\"$:/plugins/kookma/shiraz/styles/dynamic-tables\":{\"text\":\".shiraz-dtable-textbox{width:100%;padding-left:5px;border:0}.shiraz-dtable-textbox:focus{outline:0;border:1px solid #5778d8;background:transparent}.tbl-inpt-edit{width:100%;background-color:transparent;border:0;color:#000}button.tbl-sort-svg>svg{text-shadow:none;fill:#000;height:10px;padding:0 0 2px 0}th .tc-tiddlylink,th a{text-shadow:none;margin:0;padding:0;color:#000;font-weight:bold}table thead .tbl-delete-confirm>th{color:white;background-color:#f03;padding:8px;margin:0;text-align:center;font-weight:normal}table thead .tbl-delete-confirm>th>button{color:white;fill:white}.shiraz-dtable-page-footer td{margin:0;padding:4px 7px 4px 7px}.shiraz-dtable-page-footer select{padding:0;margin:0;border:0}.shiraz-dtable-page-footer{text-align:center}.shiraz-dtable-page-prev{float:left;margin-right:8px}.shiraz-dtable-page-next{float:right;margin-left:8px}.shiraz-dtable-page-footer button svg{height:.7em}.shiraz-dtable-page-footer button{outline:0;line-height:normal}.shiraz-dtable-page-footer button:disabled{display:none}.shiraz-dtable-col-fixedsize{width:5.5rem;white-space:nowrap}.shiraz-dtable-priority{width:6.5rem;white-space:nowrap}.shiraz-dtable-svg{width:28px;max-width:28px}.shiraz-dtable-title{max-width:15rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\",\"tags\":\"$:/tags/Stylesheet\",\"type\":\"text/css\"},\"$:/plugins/kookma/shiraz/styles/dynamic-tables-var\":{\"tags\":\"$:/tags/Stylesheet\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"/* these are dynamic or variable properties based on the tiddlywiki palette */\\n\\n.shiraz-dtable-page-footer select{\\n\\tbackground-color: \u003C\u003Ccolor table-header-background>>;\\n\\tcolor:\u003C\u003Ccolor foreground>>;\\n}\\n\\n.shiraz-dtable-page-footer > td{\\n\\tbackground-color: \u003C\u003Ccolor table-header-background>>;\\n}\\n\\n/* customize the table footer used for numerical summary*/\\n.shiraz-dtable-footer tr td{\\n\\tbackground-color: \u003C\u003Ccolor table-footer-background>>;\\n\\tborder:none;\\n}\\n\\n/* correct button color to support dark theme */\\n.tbl-container table thead th button{\\n\\tcolor:\u003C\u003Ccolour button-foreground>>\\n}\\n.tbl-container table thead th button svg {\\n\\tfill:\u003C\u003Ccolour button-foreground>>;\\n}\"},\"$:/plugins/kookma/shiraz/styles/highlight\":{\"text\":\"mark.kk-sh-highlight{background-color:unset;border-radius:.4em;padding:0 .25em .1em}mark.kk-sh-highlight-pen{background-color:unset;background-position:top left;background-repeat:no-repeat;background-size:100% auto}\",\"tags\":\"$:/tags/Stylesheet\",\"type\":\"text/css\"},\"$:/plugins/kookma/shiraz/styles/image-alignment\":{\"text\":\".image-align-right{float:right;margin:.5em 0 1.3em 1.4em}.image-align-left{float:left;margin:.5em 1.4em 1.3em 0}.image-align-center{display:block;margin:.5em auto 1.3em}.image-float-none{float:none !important}\",\"tags\":\"$:/tags/Stylesheet\",\"type\":\"text/css\"},\"$:/plugins/kookma/shiraz/styles/image-basic\":{\"text\":\".image-basic{text-align:center;font-style:italic;font-size:smaller;text-indent:0;padding:.5em}\",\"tags\":\"$:/tags/Stylesheet\",\"type\":\"text/css\"},\"$:/plugins/kookma/shiraz/styles/image-overlay\":{\"text\":\".image-overlay-container{width:50%;box-sizing:border-box}@media screen and (max-width:640px){.image-overlay-container{display:block;width:100%}}@media screen and (min-width:900px){.image-overlay-container{width:33.33%}}.image-overlay-container .image-overlay-title{color:#1a1a1a;text-align:center;margin-bottom:10px}.image-overlay-content{position:relative;width:90%;max-width:400px;margin:auto;overflow:hidden}.image-overlay-content .image-overlay-content-overlay{background:rgba(0,0,0,0.7);position:absolute;height:99%;width:100%;left:0;top:0;bottom:0;right:0;opacity:0;-webkit-transition:all .4s ease-in-out 0s;-moz-transition:all .4s ease-in-out 0s;transition:all .4s ease-in-out 0s}.image-overlay-content:hover .image-overlay-content-overlay{opacity:1}.image-overlay-content-image{width:100%}.image-overlay-content-details{position:absolute;text-align:center;padding-left:1em;padding-right:1em;width:100%;top:50%;left:50%;opacity:0;-webkit-transform:translate(-50%,-50%);-moz-transform:translate(-50%,-50%);transform:translate(-50%,-50%);-webkit-transition:all .3s ease-in-out 0s;-moz-transition:all .3s ease-in-out 0s;transition:all .3s ease-in-out 0s}.image-overlay-content:hover .image-overlay-content-details{top:50%;left:50%;opacity:1}.image-overlay-content-details h3{color:#fff;font-weight:500;letter-spacing:.15em;margin-bottom:.5em;text-transform:uppercase}.image-overlay-content-details p{color:#fff;font-size:.8em}.image-overlay-fadeIn-bottom{top:80%}.image-overlay-fadeIn-top{top:20%}.image-overlay-fadeIn-left{left:20%}.image-overlay-fadeIn-right{left:80%}\",\"tags\":\"$:/tags/Stylesheet\",\"type\":\"text/css\"},\"$:/plugins/kookma/shiraz/styles/image-polaroid\":{\"text\":\".image-polaroid{min-width:64px;background-color:#f8f9fa;box-shadow:0 4px 8px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19)}.image-polaroid img{width:100%;padding:10px;height:auto}.image-polaroid .image-polaroid-caption{padding:10px 15px 10px;text-align:center;line-height:1.4em;font-weight:300;font-size:.9em}\",\"tags\":\"$:/tags/Stylesheet\",\"type\":\"text/css\"},\"$:/plugins/kookma/shiraz/styles/image-pretty\":{\"text\":\".image-pretty{min-width:64px;border:1px solid #c8ccd1;background-color:#f8f9fa}.image-pretty:hover{border:1px solid #777}.image-pretty img{padding:2px;width:100%;height:auto}.image-pretty .image-pretty-caption{padding:10px 15px 10px;text-align:center;line-height:1.4em;font-weight:300;font-size:.9em}\",\"tags\":\"$:/tags/Stylesheet\",\"type\":\"text/css\"},\"$:/plugins/kookma/shiraz/styles/image-slidein\":{\"text\":\".image-slidein{display:block;position:relative;overflow:hidden}.image-slidein img{width:100%;height:auto}.image-slidein figcaption{position:absolute;background:rgba(0,0,0,0.75);color:white;padding:10px 20px;opacity:0;-webkit-transition:all .6s ease;-moz-transition:all .6s ease;-o-transition:all .6s ease}.image-slidein:hover figcaption{opacity:1}.image-slidein:before{content:\\\"?\\\";position:absolute;font-weight:800;background:rgba(255,255,255,0.75);text-shadow:0 0 5px white;color:black;width:24px;height:24px;-webkit-border-radius:12px;-moz-border-radius:12px;border-radius:12px;text-align:center;font-size:14px;line-height:24px;-moz-transition:all .6s ease;opacity:.75}.image-slidein:hover:before{opacity:0}.mr-cap-left:before{bottom:10px;left:10px}.mr-cap-left figcaption{bottom:0;left:-30%}.mr-cap-left:hover figcaption{left:0}.mr-cap-right:before{bottom:10px;right:10px}.mr-cap-right figcaption{bottom:0;right:-30%}.mr-cap-right:hover figcaption{right:0}.mr-cap-top:before{top:10px;left:10px}.mr-cap-top figcaption{left:0;top:-30%}.mr-cap-top:hover figcaption{top:0}.mr-cap-bottom:before{bottom:10px;left:10px}.mr-cap-bottom figcaption{left:0;bottom:-30%}.mr-cap-bottom:hover figcaption{bottom:0}\",\"tags\":\"$:/tags/Stylesheet\",\"type\":\"text/css\"},\"$:/plugins/kookma/shiraz/styles/mono\":{\"text\":\".mono{color:unset;background-color:#f7f7f9;border:1px solid #e1e1e8;white-space:pre-wrap;padding:0 3px 2px;border-radius:3px;font-family:\\\"SFMono-Regular\\\",Consolas,\\\"Liberation Mono\\\",Menlo,Courier,monospace}\",\"tags\":\"$:/tags/Stylesheet\",\"type\":\"text/css\"},\"$:/plugins/kookma/shiraz/styles/multicols/column\":{\"text\":\".multicol .tc-tiddler-body{column-width:14em;column-rule:1px solid #ccc}.multicol2 .tc-tiddler-body{column-count:2;column-width:15em}.multicol3 .tc-tiddler-body{column-count:3;column-width:10em}.multicol .tc-tiddler-body>:first-child,.multicol2 .tc-tiddler-body>:first-child,.multicol3 .tc-tiddler-body>:first-child{margin-top:0}.sh-multicol{column-width:14em;column-rule:1px solid #ccc}.sh-multicol2{column-count:2;column-width:15em}.sh-multicol3{column-count:3;column-width:10em}.sh-multicol>:first-child,.sh-multicol2>:first-child,.sh-multicol3>:first-child{margin-top:0}\",\"tags\":\"$:/tags/Stylesheet\",\"type\":\"text/css\"},\"$:/plugins/kookma/shiraz/styles/multicols/flex\":{\"text\":\".flex-row{display:flex;flex-direction:row;flex-wrap:wrap}.flex-col,.flex-col-1,.flex-col-2,.flex-col-3,.flex-col-4{position:relative;width:100%;padding-right:15px;padding-left:15px}@media(min-width:576px){.flex-col{flex:1 1 0;max-width:100%}.flex-col-1{flex:0 0 25%;max-width:25%}.flex-col-2{flex:0 0 50%;max-width:50%}.flex-col-3{flex:0 0 75%;max-width:75%}.flex-col-4{flex:0 0 100%;max-width:100%}}.flex-col>:first-child,.flex-col-1>:first-child,.flex-col-2>:first-child,.flex-col-3>:first-child,.flex-col-4>:first-child{margin-top:0}.flex-align-items-center{align-items:center !important}.flex-justify-content-center{justify-content:center !important}.flex-no-gutters{margin-right:0;margin-left:0}\",\"tags\":\"$:/tags/Stylesheet\",\"type\":\"text/css\"},\"$:/plugins/kookma/shiraz/styles/multicols/flex backup\":{\"text\":\".flex-row{display:flex;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.flex-col-1,.flex-col-2,.flex-col-3{position:relative;width:100%;padding-right:15px;padding-left:15px}.flex-col-1{flex:1 1 0}.flex-col-2{flex:2 1 0}.flex-col-3{flex:3 1 0}.flex-col-1>:first-child,.flex-col-2>:first-child,.flex-col-3>:first-child{margin-top:0}\",\"type\":\"text/css\"},\"$:/plugins/kookma/shiraz/styles/multicols/storyriver\":{\"text\":\".tc-story-river{display:flex;flex-wrap:wrap}.tc-tiddler-frame{max-width:49%;margin-right:1%}\",\"type\":\"text/css\"},\"$:/plugins/kookma/shiraz/styles/notebook\":{\"text\":\"@media print{.notebook .tc-tiddler-body{padding-left:60px;margin-top:25px}.notebook .tc-tiddler-title,.notebook .tc-subtitle,.notebook .tc-tags-wrapper{padding-left:60px}}@media screen{.notebook .tc-tiddler-title,.notebook .tc-subtitle,.notebook .tc-tags-wrapper,.notebook .tc-tiddler-body{padding-left:30px}}@media screen and (max-width:960px){.notebook .tc-tiddler-title,.notebook .tc-subtitle,.notebook .tc-tags-wrapper,.notebook .tc-tiddler-body{padding-left:60px}}.notebook:not([data-tiddler-title^=\\\"Draft of\\\"]):before{content:'';position:absolute;top:0;bottom:0;left:0;width:50px;background:radial-gradient(#575450 6px,transparent 7px) repeat-y;background-size:30px 30px;border-right:3px solid #d44147;z-index:1}.notebook .tc-tiddler-body{position:relative;background:linear-gradient(transparent,transparent 1.95em,#91d1d3 1.95em);background-size:2em 2em;min-height:90px}.notebook .tc-tiddler-body{padding-top:20px;font-family:\\\"Handlee\\\",cursive;font-weight:300;line-height:2em;color:#696969}.notebook .tc-tiddler-body pre,.notebook .tc-tiddler-body code,.notebook .tc-tiddler-body pre code{font-family:\\\"Handlee\\\",cursive;font-weight:300}\",\"tags\":\"$:/tags/Stylesheet\",\"type\":\"text/css\"},\"$:/plugins/kookma/shiraz/styles/sticky-footer\":{\"text\":\".sticky-footer{position:absolute;right:0;bottom:0;left:0;padding:.5rem;background-color:#efefef;text-align:center;margin-top:5px;box-sizing:border-box;width:100%}\",\"tags\":\"$:/tags/Stylesheet\",\"type\":\"text/css\"},\"$:/plugins/kookma/shiraz/styles/tables\":{\"text\":\".table-tight{font-size:.8em}.table-center{margin:0 auto}.table-caption-top caption{caption-side:top;margin-bottom:.2rem}.table-striped-row tr:nth-child(even) td{background-color:#f3f6f6}.table-striped-col tbody tr td:nth-child(odd){background-color:#f3f6f6}.table-borderless,.table-borderless thead td,.table-borderless th,.table-borderless tr,.table-borderless td{border:0}.table-lines thead td,.table-lines th{border-bottom:2px solid #ddd;background-color:unset}.table-lines td{border-bottom:1px solid #ddd;background-color:unset}.table-hover tbody tr:hover{color:#212529;background-color:#e6e6e6}.table-hover-yellow tbody tr:hover{background-color:#ffc}.table-hover-cyan tbody tr:hover{background-color:#e6ffff}.thead-primary thead td,.thead-primary th{background-color:#007bff;color:#fff}.thead-secondary thead td,.thead-secondary th{background-color:#6c757d;color:#fff}.thead-success thead td,.thead-success th{background-color:#28a745;color:#fff}.thead-warning thead td,.thead-warning th{background-color:#ffc107;color:#fff}.thead-danger thead td,.thead-danger th{background-color:#dc3545;color:#fff}.thead-info thead td,.thead-info th{background-color:#17a2b8;color:#fff}.thead-dark thead td,.thead-dark th{background-color:#343a40;color:#fff}.thead-light thead td,.thead-light th{background-color:#f8f9fa;color:#212529}.thead-primary>thead>tr>td svg,.thead-primary>thead>tr>th svg,.thead-secondary>thead>tr>td svg,.thead-secondary>thead>tr>th svg,.thead-success>thead>tr>td svg,.thead-success>thead>tr>th svg,.thead-warning>thead>tr>td svg,.thead-warning>thead>tr>th svg,.thead-danger>thead>tr>td svg,.thead-danger>thead>tr>th svg,.thead-info>thead>tr>td svg,.thead-info>thead>tr>th svg,.thead-dark>thead>tr>td svg,.thead-dark>thead>tr>th svg{fill:#fff;padding:0 0 3px 0}.thead-primary th .tc-tiddlylink,.thead-primary th a,.thead-secondary th .tc-tiddlylink,.thead-primary th a,.thead-success th .tc-tiddlylink,.thead-primary th a,.thead-warning th .tc-tiddlylink,.thead-primary th a,.thead-danger th .tc-tiddlylink,.thead-primary th a,.thead-info th .tc-tiddlylink,.thead-primary th a,.thead-dark th .tc-tiddlylink,.thead-primary th a{color:#fff}\",\"tags\":\"$:/tags/Stylesheet\",\"type\":\"text/css\"},\"$:/plugins/kookma/shiraz/styles/tiddler-title-class\":{\"text\":\".title-primary .tc-title{color:#007bff}.title-secondary .tc-title{color:#6c757d}.title-success .tc-title{color:#28a745}.title-info .tc-title{color:#17a2b8}.title-warning .tc-title{color:#ffc107}.title-danger .tc-title{color:#dc3545}.title-light .tc-title{color:#f8f9fa}.title-dark .tc-title{color:#343a40}.title-white .tc-title{color:#fff}\",\"tags\":\"$:/tags/Stylesheet\",\"type\":\"text/css\"},\"$:/plugins/kookma/shiraz/styles/ui/colorify-buttons\":{\"text\":\".tc-page-controls .tc-image-new-button{fill:#5eb95e}.tc-page-controls .tc-image-options-button{fill:#8058a5}.tc-tiddler-controls .tc-image-edit-button{fill:#f37b1d}.tc-tiddler-controls .tc-image-info-button{fill:#0e90d2}\",\"tags\":\"$:/tags/Stylesheet\",\"type\":\"text/css\"},\"$:/plugins/kookma/shiraz/styles/ui/edit-toolbar-buttons\":{\"text\":\".tc-tiddler-controls .tc-image-delete-button{fill:#ebb}.tc-tiddler-controls .tc-image-cancel-button{fill:#ed9}.tc-tiddler-controls .tc-image-done-button{fill:#beb}\",\"type\":\"text/css\"},\"$:/plugins/kookma/shiraz/styles/ui/view-toolbar-button-visibility\":{\"text\":\".tc-tiddler-frame .tc-titlebar button{opacity:0;transition:opacity .5s ease-in-out}.tc-tiddler-frame:hover .tc-titlebar button{zoom:1;filter:alpha(opacity=100);opacity:1}\",\"type\":\"text/css\"},\"$:/plugins/kookma/shiraz/templates/body/color\":{\"tags\":\"$:/tags/Table/BodyTemplate\",\"tbl-column-list\":\"color\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define showCell()\\n\u003Cstyle>\\n.dt:not(:disabled):dt(.disabled) {cursor: pointer;}\\na.dt.disabled,fieldset:disabled a.dt {pointer-events: none;}\\n\u003C/style>\\n\u003C$link overrideClass=\\\"dt disabled\\\"to=\\\"\\\">\\n\u003C$edit-text tag=input type=color tiddler=\u003C\u003CcurrentRecord>>field=color/>\\n\\n\\\\end\\n\\\\define edit_color()\u003C$edit-text tag=input tiddler=\u003C\u003CcurrentRecord>>field=\u003C\u003CcurrentColumn>>type=color/>\\n\u003C$reveal type=nomatch stateTitle=\u003C\u003CtempTableEdit>>stateIndex=mode text=edit tag=td>\\n\u003C\u003CshowCell>>\\n\u003C/$reveal>\\n\u003C$reveal type=match stateTitle=\u003C\u003CtempTableEdit>>stateIndex=mode text=edit tag=td>\\n\u003C!---->\\n\u003C$list filter=\\\"[\u003CtempTableSort>getindex[sortIndex]match\u003CcurrentColumn>]\\\"emptyMessage=\u003C\u003Cedit_color>>variable=ignore>\\n \u003C\u003CshowCell_Locked>>\\n\u003C/$list>\\n\"},\"$:/plugins/kookma/shiraz/templates/body/date\":{\"tags\":\"$:/tags/Table/BodyTemplate\",\"tbl-column-list\":\"created modified\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003Ctd class=shiraz-dtable-col-fixedsize>\\n\u003C$view tiddler=\u003C\u003CcurrentRecord>>field=\u003C\u003CcurrentColumn>>format=date template=YYYY.0MM.0DD/>\\n\"},\"$:/plugins/kookma/shiraz/templates/body/default\":{\"tags\":\"$:/tags/Table/BodyTemplate\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003C$reveal type=nomatch stateTitle=\u003C\u003CtempTableEdit>>stateIndex=mode text=edit tag=td>\\n\u003C\u003CshowCell>>\\n\u003C/$reveal>\\n\u003C$reveal type=match stateTitle=\u003C\u003CtempTableEdit>>stateIndex=mode text=edit tag=td>\\n\u003C!---->\\n\u003C$list filter=\\\"[\u003CtempTableSort>getindex[sortIndex]match\u003CcurrentColumn>]\\\"emptyMessage=\u003C\u003CeditCell>>variable=ignore>\\n \u003C\u003CshowCell_Locked>>\\n\u003C/$list>\\n\"},\"$:/plugins/kookma/shiraz/templates/body/due-date\":{\"code-body\":\"yes\",\"tags\":\"$:/tags/Table/BodyTemplate\",\"tbl-column-list\":\"due-date due\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define showCell()\\n\u003C$let fmt=[UTC]YYYY.0MM.0DD>\\n\u003C$set tiddler=\u003C\u003CcurrentRecord>>field=\u003C\u003CcurrentColumn>>name=due-date>\\n\u003C$text text={{{[\u003Cdue-date>split[-]split[.]join[]format:date\u003Cfmt>]}}}/>\\n\u003C/$set>\\n\\n\\\\end\\n\\\\define showCell_Locked()\u003Cspan style=font-style:oblique;>\u003C\u003CshowCell>>\\n\\\\define edit_date()\\n\u003C$list filter='[[$:/plugins/kookma/pikaday]!is[missing]]:filter[lookup:no[$:/config/Plugins/Disabled/]match[no]]'emptyMessage='\u003C$edit-text tag=input tiddler=\u003C\u003CcurrentRecord>>field=\u003C\u003CcurrentColumn>>type=date/>'variable=null>\\n \u003C\u003CeditCell>>\\n\\n\\\\end\\n\u003C$reveal type=nomatch stateTitle=\u003C\u003CtempTableEdit>>stateIndex=mode text=edit tag=td class=shiraz-dtable-col-fixedsize>\\n\u003C\u003CshowCell>>\\n\u003C/$reveal>\\n\u003C$reveal type=match stateTitle=\u003C\u003CtempTableEdit>>stateIndex=mode text=edit tag=td>\\n\u003C!---->\\n\u003C$list filter='[\u003CtempTableSort>getindex[sortIndex]match\u003CcurrentColumn>]'emptyMessage=\u003C\u003Cedit_date>>variable=ignore>\\n \u003C\u003CshowCell_Locked>>\\n\u003C/$list>\\n\"},\"$:/plugins/kookma/shiraz/templates/body/email\":{\"code-body\":\"yes\",\"tags\":\"$:/tags/Table/BodyTemplate\",\"tbl-column-list\":\"email\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define display-email-address()\\n\u003C$let href={{{[\u003CcurrentRecord>get\u003CcurrentColumn>addprefix[mailto:]]}}}>\\n\u003Ca class=tc-tiddlylink-external href=\u003C\u003Chref>>rel=\\\"noopener noreferrer\\\"target=_blank>\\n\u003C\u003CshowCell>>\\n\u003C/a>\\n\\n\\\\end\\n\\\\define display-email-address_Locked()\\n\u003C$let href={{{[\u003CcurrentRecord>get\u003CcurrentColumn>addprefix[mailto:]]}}}>\\n\u003Ca class=tc-tiddlylink-external href=\u003C\u003Chref>>rel=\\\"noopener noreferrer\\\"target=_blank>\\n\u003C\u003CshowCell_Locked>>\\n\u003C/a>\\n\\n\\\\end\\n\u003C$reveal type=nomatch stateTitle=\u003C\u003CtempTableEdit>>stateIndex=mode text=edit tag=td>\\n\u003C\u003Cdisplay-email-address>>\\n\u003C/$reveal>\\n\u003C$reveal type=match stateTitle=\u003C\u003CtempTableEdit>>stateIndex=mode text=edit tag=td>\\n\u003C!---->\\n\u003C$list filter=\\\"[\u003CtempTableSort>getindex[sortIndex]match\u003CcurrentColumn>]\\\"emptyMessage=\u003C\u003CeditCell>>variable=ignore>\\n\u003C\u003Cdisplay-email-address_Locked>>\\n\u003C/$list>\\n\"},\"$:/plugins/kookma/shiraz/templates/body/priority\":{\"code-body\":\"yes\",\"tags\":\"$:/tags/Table/BodyTemplate\",\"tbl-column-list\":\"priority\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define circle(color fill)\\n\u003Csvg width=12 height=12>\\n\u003Ccircle cx=6 cy=6 r=5 stroke=\u003C\u003C__color__>>fill=\u003C\u003C__fill__>>stroke-width=1/>\\n\\n\\\\end\\n\\\\define showCell()\\n\u003C$list filter=\\\"[\u003CcurrentRecord>get\u003CcurrentColumn>match[5]]\\\"variable=ignore>\\n\u003C$macrocall $name=circle color=#dc3545 fill=#f8d7da/>&nbsp;very high\\n\u003C/$list>\\n\u003C$list filter=\\\"[\u003CcurrentRecord>get\u003CcurrentColumn>match[4]]\\\"variable=ignore>\\n\u003C$macrocall $name=circle color=#ff8c00 fill=#fff3cd/>&nbsp;high\\n\u003C/$list>\\n\u003C$list filter=\\\"[\u003CcurrentRecord>get\u003CcurrentColumn>match[3]]\\\"variable=ignore>\\n\u003C$macrocall $name=circle color=#17a2b8 fill=#d1ecf1/>&nbsp;normal\\n\u003C/$list>\\n\u003C$list filter=\\\"[\u003CcurrentRecord>get\u003CcurrentColumn>match[2]]\\\"variable=ignore>\\n\u003C$macrocall $name=circle color=#007bff fill=#cce5ff/>&nbsp;low\\n\u003C/$list>\\n\u003C$list filter=\\\"[\u003CcurrentRecord>get\u003CcurrentColumn>match[1]]\\\"variable=ignore>\\n\u003C$macrocall $name=circle color=#6c757d fill=#e2e3e5/>&nbsp;very low\\n\\n\\\\end\\n\\\\define showCell_Locked()\u003Cspan style=font-style:oblique;>\u003C\u003CshowCell>>\\n\\\\define select_priority()\u003C$select tiddler=\u003C\u003CcurrentRecord>>field=\u003C\u003CcurrentColumn>>default=''>\u003Coption value=''>Select...\u003C/option>\u003Coption value=5>very high\u003C/option>\u003Coption value=4>high\u003C/option>\u003Coption value=3>normal\u003C/option>\u003Coption value=2>low\u003C/option>\u003Coption value=1>very low\u003C/option>\u003Coption value=''>no priority\\n\u003C$reveal type=nomatch stateTitle=\u003C\u003CtempTableEdit>>stateIndex=mode text=edit tag=td class=shiraz-dtable-priority>\\n\u003C\u003CshowCell>>\\n\u003C/$reveal>\\n\u003C$reveal type=match stateTitle=\u003C\u003CtempTableEdit>>stateIndex=mode text=edit tag=td>\\n\u003C!---->\\n\u003C$list filter='[\u003CtempTableSort>getindex[sortIndex]match\u003CcurrentColumn>]'emptyMessage=\u003C\u003Cselect_priority>>variable=ignore>\\n \u003C\u003CshowCell_Locked>>\\n\u003C/$list>\\n\u003C$reveal>\\n\\n\"},\"$:/plugins/kookma/shiraz/templates/body/status\":{\"code-body\":\"yes\",\"tags\":\"$:/tags/Table/BodyTemplate\",\"tbl-column-list\":\"status\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define showCell()\u003C$transclude tiddler=\u003C\u003CcurrentRecord>>field=\u003C\u003CcurrentColumn>>mode=inline/>\\n\\\\define showCell_Locked()\u003Cspan style=font-style:oblique;>\u003C\u003CshowCell>>\\n\\\\define select_status()\\n\u003C$select tiddler=\u003C\u003CcurrentRecord>>field=\u003C\u003CcurrentColumn>>default=''>\\n\u003Coption value=''>Select...\u003C/option>\\n\u003C$list filter='open in-work on-hold complete rework closed'variable=status>\u003Coption>\u003C$text text=\u003C\u003Cstatus>>/>\u003C/option>\u003C/$list>\\n\\n\\\\end\\n\u003C$reveal type=nomatch stateTitle=\u003C\u003CtempTableEdit>>stateIndex=mode text=edit tag=td class=shiraz-dtable-col-fixedsize>\\n\u003C\u003CshowCell>>\\n\u003C/$reveal>\\n\u003C$reveal type=match stateTitle=\u003C\u003CtempTableEdit>>stateIndex=mode text=edit tag=td>\\n\u003C!---->\\n\u003C$list filter='[\u003CtempTableSort>getindex[sortIndex]match\u003CcurrentColumn>]'emptyMessage=\u003C\u003Cselect_status>>variable=ignore>\\n \u003C\u003CshowCell_Locked>>\\n\u003C/$list>\\n\"},\"$:/plugins/kookma/shiraz/templates/body/tag-helper\":{\"code-body\":\"yes\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003Cspan data-tag-title={{!!title}}class=tc-tag-list-item>\u003C$set value=\u003C\u003CcurrentRecord>>name=transclusion>\u003C$macrocall $name=tag-pill-body tag={{!!title}}icon={{{[{!!title}]:cascade[[$:/tags/TiddlerIconFilter]tagging[]!is[draft]get[text]]}}}colour={{{[{!!title}]:cascade[[$:/tags/TiddlerColourFilter]tagging[]!is[draft]get[text]]}}}palette={{$:/palette}}element-attributes=\\\"\\\"\\\"popup=\u003C\u003Cqualify \\\"$:/state/popup/tag\\\">> dragFilter='[all[current]tagging[]]' tag='span'\\\"\\\"\\\"element-tag=$button/>\u003C$reveal state=\u003C\u003Cqualify'$:/state/popup/tag'>>type=popup position=below animate=yes class=tc-drop-down>\u003C$let tv-show-missing-links=yes>{{||$:/core/ui/ListItemTemplate}}\u003C/$let>\u003C$list filter='[[$:/tags/TagDropdown]tagging[]!is[draft]]'variable=listItem>\u003C$transclude tiddler=\u003C\u003ClistItem>>/>\u003C/$list>\u003Chr>\u003C$macrocall tag={{!!title}}$name=list-tagged-draggable/>\"},\"$:/plugins/kookma/shiraz/templates/body/tags\":{\"tags\":\"$:/tags/Table/BodyTemplate\",\"tbl-column-list\":\"tags\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003C$reveal type=nomatch stateTitle=\u003C\u003CtempTableEdit>>stateIndex=mode text=edit tag=td>\\n\u003C$list filter=\\\"[\u003CcurrentRecord>tags[]]\\\">\\n{{||$:/plugins/kookma/shiraz/templates/body/tag-helper}}\\n\u003C/$list>\\n\u003C/$reveal>\\n\u003C$reveal type=match stateTitle=\u003C\u003CtempTableEdit>>stateIndex=mode text=edit tag=td>\\n\u003C!---->\\n\u003C$list filter=\\\"[\u003CtempTableSort>getindex[sortIndex]match\u003CcurrentColumn>]\\\"emptyMessage=\u003C\u003CeditCell>>variable=ignore>\\n \u003C\u003CshowCell_Locked>>\\n\u003C/$list>\\n\"},\"$:/plugins/kookma/shiraz/templates/body/tbl-checkbox\":{\"tags\":\"$:/tags/Table/BodyTemplate\",\"tbl-column-list\":\"tbl-checkbox\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define rowStyle()color:\u003C\u003Ccolour foreground>>; background-color:\u003C\u003Ccolour table-header-background>>;\\n\u003Ctd style=width:28px;text-align:center;>\\n\u003C$checkbox tiddler=\u003C\u003CcurrentRecord>>checkactions=\\\"\u003C$action-setfield $tiddler=\u003C\u003CtempTableStyle>>$index=\u003C\u003CcurrentRecord>>$value=\u003C\u003CrowStyle>>/>\u003C$action-setfield $tiddler=\u003C\u003CcurrentRecord>>status=complete/>\\\"uncheckactions=\\\"\u003C$action-setfield $tiddler=\u003C\u003CtempTableStyle>>$index=\u003C\u003CcurrentRecord>>/>\u003C$action-setfield $tiddler=\u003C\u003CcurrentRecord>>status=rework/>\\\"tag=Done/>\\n\"},\"$:/plugins/kookma/shiraz/templates/body/tbl-clone\":{\"tags\":\"$:/tags/Table/BodyTemplate\",\"tbl-column-list\":\"tbl-clone\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define cloneTiddler()\u003C$action-createtiddler $basetitle=\u003C\u003CcurrentRecord>>$template=\u003C\u003CcurrentRecord>>/>\\n\u003C$list filter=\\\"[\u003CtempTableEdit>getindex[mode]match[edit]]\\\"variable=ignore>\\n\u003Ctd style=width:28px;text-align:center;>\\n \u003C$button actions=\u003C\u003CcloneTiddler>>class=tc-btn-invisible>\\n\\t {{$:/core/images/clone-button}}\\n\\t\u003C/$button>\\n\u003C/td>\\n\"},\"$:/plugins/kookma/shiraz/templates/body/tbl-delete\":{\"tags\":\"$:/tags/Table/BodyTemplate\",\"tbl-column-list\":\"tbl-delete\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003C$list filter=\\\"[\u003CtempTableEdit>getindex[mode]match[edit]]\\\"variable=ignore>\\n\u003Ctd style=width:28px;text-align:center;>\\n \u003C$button class=tc-btn-invisible>\\n \u003C$action-sendmessage $param=\u003C\u003CcurrentRecord>>$message=tm-delete-tiddler/>\\n {{$:/core/images/delete-button}}\\n \u003C/$button>\\n\u003C/td>\\n\"},\"$:/plugins/kookma/shiraz/templates/body/tbl-expand\":{\"tags\":\"$:/tags/Table/BodyTemplate\",\"tbl-column-list\":\"tbl-expand\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003C$reveal type=nomatch state=\u003C\u003CtempPathExpand>>text=show tag=td>\\n \u003C$button class=\\\"tc-btn-invisible tc-tiddlylink\\\">\\n \u003C$action-setfield $tiddler=\u003C\u003CtempTableExpand>>$index=\u003C\u003CcurrentRecord>>$value=show/>\\n {{$:/core/images/right-arrow}}\\n \u003C/$button>\\n\u003C/$reveal>\\n\u003C$reveal type=match state=\u003C\u003CtempPathExpand>>text=show tag=td>\\n \u003C$button class=\\\"tc-btn-invisible tc-tiddlylink\\\">\\n \u003C$action-setfield $tiddler=\u003C\u003CtempTableExpand>>$index=\u003C\u003CcurrentRecord>>/>\\n {{$:/core/images/down-arrow}}\\n \u003C/$button>\\n\"},\"$:/plugins/kookma/shiraz/templates/body/tbl-linktype\":{\"tags\":\"$:/tags/Table/BodyTemplate\",\"tbl-column-list\":\"tbl-linktype\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define subtiddler-pattern()(^$(currentTiddler)$\\\\s*/|^$(currentTiddler)$\\\\s*:)\\n\u003Ctd class=shiraz-dtable-col-fixedsize>\\n\u003C$text text={{{[{!!title}links[]match\u003CcurrentRecord>then[link]][{!!title}backlinks[]match\u003CcurrentRecord>then[backlink]][{!!title}tagging[]match\u003CcurrentRecord>then[tagging]][\u003CcurrentRecord>regexp\u003Csubtiddler-pattern>then[subtiddler]]~[\u003CcurrentRecord>search:text{!!title}then[backtransclusion]else[transclusion]]}}}/>\\n\u003C/td>\\n\"},\"$:/plugins/kookma/shiraz/templates/body/title\":{\"code-body\":\"yes\",\"tags\":\"$:/tags/Table/BodyTemplate\",\"tbl-column-list\":\"title\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003Ctd class=shiraz-dtable-title>\\n\u003C$link to=\u003C\u003CcurrentRecord>>>\u003C$text text=\u003C\u003CcurrentRecord>>/>\u003C/$link>\\n\"},\"$:/plugins/kookma/shiraz/templates/body/type\":{\"code-body\":\"yes\",\"tags\":\"$:/tags/Table/BodyTemplate\",\"tbl-column-list\":\"type\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define showCell()\u003C$transclude tiddler=\u003C\u003CcurrentRecord>>field=\u003C\u003CcurrentColumn>>mode=inline/>\\n\u003Ctd>\\n\u003C\u003CshowCell>>\\n\u003C/td>\\n\"},\"$:/plugins/kookma/shiraz/templates/footer/default\":{\"tags\":\"$:/tags/Table/FooterTemplate\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003C$let idx={{{[\u003CcurrentColumn>addsuffix[/]addsuffix\u003CfooterRow>]}}}getFieldOrIndex={{{[\u003CfieldOrIndex>]-index +[then[get]else[getindex]]}}}>\\n\u003C!---->\\n\u003C$reveal type=nomatch stateTitle=\u003C\u003CtempTableEdit>>stateIndex=mode text=edit tag=td>\\n\u003C$transclude tiddler=\u003C\u003CtempTableFooter>>index=\u003C\u003Cidx>>mode=inline/>\\n\u003C/$reveal>\\n\u003C$reveal type=match stateTitle=\u003C\u003CtempTableEdit>>stateIndex=mode text=edit tag=td>\\n\u003C$edit-text tiddler=\u003C\u003CtempTableFooter>>index=\u003C\u003Cidx>>tag=input class=shiraz-dtable-textbox/>\\n\u003C/$reveal>\\n\\n\"},\"$:/plugins/kookma/shiraz/templates/footer/tbl-clone\":{\"tags\":\"$:/tags/Table/FooterTemplate\",\"tbl-column-list\":\"tbl-clone\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003C$list filter=\\\"[\u003CtempTableEdit>getindex[mode]match[edit]]\\\"variable=ignore>\\n\u003Ctd>\u003C/td>\\n\"},\"$:/plugins/kookma/shiraz/templates/footer/tbl-delete\":{\"tags\":\"$:/tags/Table/FooterTemplate\",\"tbl-column-list\":\"tbl-delete\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003C$list filter=\\\"[\u003CtempTableEdit>getindex[mode]match[edit]]\\\"variable=ignore>\\n\u003Ctd>\u003C/td>\\n\"},\"$:/plugins/kookma/shiraz/templates/footer/tbl-expand\":{\"tags\":\"$:/tags/Table/FooterTemplate\",\"tbl-column-list\":\"tbl-expand\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003Ctd style=width:28px;>\"},\"$:/plugins/kookma/shiraz/templates/header/default\":{\"tags\":\"$:/tags/Table/HeaderTemplate\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003C$reveal type=nomatch stateTitle=\u003C\u003CtempTableSort>>stateIndex=sortIndex text=\u003C\u003CcurrentColumn>>tag=th>\\n\u003C$button setTitle=\u003C\u003CtempTableSort>>setTo=\u003C\u003CcurrentColumn>>class=\\\"tc-btn-invisible tc-tiddlylink\\\"setIndex=sortIndex>\\n\u003C$action-setfield $tiddler=\u003C\u003CtempTableSort>>$index=hasnegate $value=false/>\\n\u003C$action-setfield $tiddler=\u003C\u003CtempTableSort>>$value=\\\"\\\"$index=negate/>\\n\u003Cspan style=\\\"text-transform: capitalize;\\\">\u003C$text text=\u003C\u003CcurrentColumn>>/>\u003C/span>\\n\u003C/$button>\\n\u003C/$reveal>\\n\u003C$reveal type=match stateTitle=\u003C\u003CtempTableSort>>stateIndex=sortIndex text=\u003C\u003CcurrentColumn>>tag=th>\\n\u003C$list filter=\\\"[\u003CtempTableSort>getindex[hasnegate]match[false]]\\\"variable=ignore>\\n\u003C$button setTitle=\u003C\u003CtempTableSort>>setIndex=hasnegate class=\\\"tbl-sort-svg tc-btn-invisible tc-tiddlylink\\\"setTo>\\n\u003C$action-setfield $tiddler=\u003C\u003CtempTableSort>>$index=negate $value=!/>\\n\u003Cspan style=\\\"text-transform: capitalize;\\\">\u003C$text text=\u003C\u003CcurrentColumn>>/>\u003C/span> {{$:/core/images/down-arrow}}\\n\u003C/$button>\\n\u003C/$list>\\n\u003C$list filter=\\\"[\u003CtempTableSort>getindex[hasnegate]match[true]]\\\"variable=ignore>\\n\u003C$button setTitle=\u003C\u003CtempTableSort>>setIndex=hasnegate class=\\\"tbl-sort-svg tc-btn-invisible tc-tiddlylink\\\"setTo=false>\\n\u003C$action-setfield $tiddler=\u003C\u003CtempTableSort>>$value=\\\"\\\"$index=negate/>\\n\u003Cspan style=\\\"text-transform: capitalize;\\\">\u003C$text text=\u003C\u003CcurrentColumn>>/>\u003C/span> {{$:/core/images/up-arrow}}\\n\u003C/$button>\\n\u003C/$list>\\n\u003C/$reveal>\\n\"},\"$:/plugins/kookma/shiraz/templates/header/tbl-checkbox\":{\"tags\":\"$:/tags/Table/HeaderTemplate\",\"tbl-column-list\":\"tbl-checkbox\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define rowStyle()color:\u003C\u003Ccolour foreground>>; background-color:\u003C\u003Ccolour table-header-background>>;\\n\\\\define chk-checkactions()\\n\u003C$list filter=\\\"[subfilter\u003CinputFilter>]\\\"variable=currentRecord>\\n\u003C$action-listops $tiddler=\u003C\u003CcurrentRecord>>$tags=+[append[Done]]/>\\n\u003C$action-setfield $tiddler=\u003C\u003CcurrentRecord>>status=complete/>\\n\u003C$action-setfield $tiddler=\u003C\u003CtempTableStyle>>$index=\u003C\u003CcurrentRecord>>$value=\u003C\u003CrowStyle>>/>\\n\\n\\\\end\\n\\\\define chk-uncheckactions()\\n\u003C$list filter=\\\"[subfilter\u003CinputFilter>]\\\"variable=currentRecord>\\n\u003C$action-listops $tiddler=\u003C\u003CcurrentRecord>>$tags=+[remove[Done]]/>\\n\u003C$action-setfield $tiddler=\u003C\u003CcurrentRecord>>status=rework/>\\n\u003C$action-setfield $tiddler=\u003C\u003CtempTableStyle>>$index=\u003C\u003CcurrentRecord>>/>\\n\\n\\\\end\\n\u003Cth class=shiraz-dtable-svg>\\n\u003C$checkbox checkactions=\u003C\u003Cchk-checkactions>>uncheckactions=\u003C\u003Cchk-uncheckactions>>/>\\n\"},\"$:/plugins/kookma/shiraz/templates/header/tbl-clone\":{\"tags\":\"$:/tags/Table/HeaderTemplate\",\"tbl-column-list\":\"tbl-clone\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003C$list filter=\\\"[\u003CtempTableEdit>getindex[mode]match[edit]]\\\"variable=ignore>\\n\u003Cth class=shiraz-dtable-svg>\\n\u003Cspan>\\n\u003C$button class=tc-btn-invisible disabled=yes tooltip=\\\"disabled button\\\"style=cursor:default>\\n{{$:/core/images/clone-button}}\\n\u003C/$button>\\n\u003C/span>\\n\u003C/th>\\n\"},\"$:/plugins/kookma/shiraz/templates/header/tbl-delete\":{\"tags\":\"$:/tags/Table/HeaderTemplate\",\"tbl-column-list\":\"tbl-delete\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003C$list filter=\\\"[\u003CtempTableEdit>getindex[mode]match[edit]]\\\"variable=ignore>\\n\u003Cth class=shiraz-dtable-svg>\\n \u003Cspan>\\n \u003C$button class=tc-btn-invisible>\\n \u003C$action-setfield $tiddler=\\\"$:/temp/tables/delete-all\\\"text=\u003C\u003CcurrentTable>>/>\\n {{$:/core/images/delete-button}}\\n \u003C/$button>\\n \u003C/span>\\n\u003C/th>\\n\"},\"$:/plugins/kookma/shiraz/templates/header/tbl-expand\":{\"tags\":\"$:/tags/Table/HeaderTemplate\",\"tbl-column-list\":\"tbl-expand\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003Cth class=shiraz-dtable-svg>\\n \u003C$list filter=\\\"[\u003CtempTableExpand>indexes[]nth[]]\\\">\\n \u003C$button class=tc-btn-invisible>{{$:/core/images/fold-button}}\\n \u003C$action-setfield $tiddler=\u003C\u003CtempTableExpand>>text=\\\"\\\"/>\\n \u003C/$button>\\n \u003C/$list>\\n\"},\"$:/plugins/kookma/shiraz/templates/header/tbl-linktype\":{\"tags\":\"$:/tags/Table/HeaderTemplate\",\"tbl-column-list\":\"tbl-linktype\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003Cth style=cursor:default;>Linktype\u003C/th>\\n\"},\"$:/plugins/kookma/shiraz/ui/Buttons/SwitchPalette\":{\"caption\":\"{{$:/plugins/kookma/shiraz/images/palette-switch}} {{$:/language/Buttons/Shiraz/Caption}}\",\"dark-palette\":\"$:/palettes/SolarFlare\",\"description\":\"Toggle between light/dark color palette\",\"light-palette\":\"$:/palettes/Vanilla\",\"list-after\":\"\",\"tags\":\"$:/tags/PageControls\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003C$let darkPalette={{$:/plugins/kookma/shiraz/ui/Buttons/SwitchPalette!!dark-palette}}lightPalette={{$:/plugins/kookma/shiraz/ui/Buttons/SwitchPalette!!light-palette}}>\u003C$button tooltip={{$:/language/Buttons/Shiraz/Hint}}aria-label={{$:/language/Buttons/Shiraz/Caption}}class=\u003C\u003Ctv-config-toolbar-class>>>\u003C$list filter=\\\"[\u003Ctv-config-toolbar-icons>match[yes]]\\\">{{$:/plugins/kookma/shiraz/images/palette-switch}}\u003C/$list>\u003C$list filter=\\\"[\u003Ctv-config-toolbar-text>match[yes]]\\\">\u003Cspan class=tc-btn-text>switch palettes\u003C/span>\u003C/$list>\u003C$reveal state=\\\"$:/palette\\\"text=\u003C\u003CdarkPalette>>type=match>\u003C$action-setfield $tiddler=\\\"$:/palette\\\"text=\u003C\u003ClightPalette>>/>\u003C/$reveal>\u003C$reveal state=\\\"$:/palette\\\"text=\u003C\u003CdarkPalette>>type=nomatch>\u003C$action-setfield $tiddler=\\\"$:/palette\\\"text=\u003C\u003CdarkPalette>>>\u003C/$reveal>\\n\u003C/$button>\\n\u003C/$vars>\"},\"$:/plugins/kookma/shiraz/ui/ControlPanel/Settings\":{\"caption\":\"Shiraz\",\"tags\":\"$:/tags/ControlPanel/SettingsTab $:/tags/MoreSideBar\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"These settings let you customise the behaviour of Shiraz plugin.\\n\\n---\\n\\n;Show Shiraz setting in more sidebar\\n:\u003C$checkbox tiddler=\\\"$:/plugins/kookma/shiraz/ui/ControlPanel/Settings\\\" tag=\\\"$:/tags/MoreSideBar\\\"> Show setting in more sidebar\u003C/$checkbox>\\n\\n;Options\\n:\u003C$checkbox tiddler=\\\"$:/plugins/kookma/shiraz/styles/multicols/storyriver\\\" tag=\\\"$:/tags/Stylesheet\\\"> Multicolumn story river\u003C/$checkbox>\\n:\u003C$checkbox tiddler=\\\"$:/plugins/kookma/shiraz/styles/ui/colorify-buttons\\\" tag=\\\"$:/tags/Stylesheet\\\"> Colorful UI buttons\u003C/$checkbox>\\n:\u003C$checkbox tiddler=\\\"$:/plugins/kookma/shiraz/styles/ui/view-toolbar-button-visibility\\\" tag=\\\"$:/tags/Stylesheet\\\"> Hide tiddler's view toolbar and show on mouse hover\u003C/$checkbox>\\n:\u003C$checkbox tiddler=\\\"$:/plugins/kookma/shiraz/styles/ui/edit-toolbar-buttons\\\" tag=\\\"$:/tags/Stylesheet\\\"> Traffic lights for edit toolbar buttons\u003C/$checkbox>\\n:\u003C$checkbox tiddler=\\\"$:/plugins/kookma/shiraz/styles/colorful-sidebar-tab\\\" tag=\\\"$:/tags/Stylesheet\\\"> Colorify sidebar tabs\u003C/$checkbox>\\n\\n;Set dark and light palettes\\n{{$:/plugins/kookma/shiraz/ui/set-dark-light-palette}}\"},\"$:/plugins/kookma/shiraz/ui/set-dark-light-palette\":{\"dark-palette\":\"$:/palettes/SolarFlare\",\"light-palette\":\"$:/palettes/Vanilla\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define switchpaletteTid()$:/plugins/kookma/shiraz/ui/Buttons/SwitchPalette\\n\\\\define selectPelette(title default tiddler field)\\n\u003Clabel class=kk-switch-label>$title$\u003C/label>\\n\u003C$select tiddler=\u003C\u003C__tiddler__>>field=\u003C\u003C__field__>>default=''>\\n\u003C$list filter='[[$:/tags/Palette]tagging[]]'>\\n\u003Coption value={{!!title}}>\\n\u003C$view field=name>\\n \u003C$view field=title/>\\n\u003C/$view>\\n\u003C/option>\\n\u003C/$list>\\n\u003C/$list>\\n\\\\end\\n\u003Cdiv style=margin-left:40px>\\n\\n\u003C$macrocall $name=selectPelette title='Dark palette'filter=\u003C\u003CfilterNight>>default='$:/palettes/SolarizedDark'tiddler=\u003C\u003CswitchpaletteTid>>field=dark-palette/>\u003Cbr>\\n\\n\u003C$macrocall $name=selectPelette title='Light palette'filter=\u003C\u003CfilterDay>>default='$:/palettes/Vanilla'tiddler=\u003C\u003CswitchpaletteTid>>field=light-palette/>\\n\\n\u003Clabel class=kk-switch-label>Reset to default\u003C/label>\\n\u003C$button> {{$:/core/images/erase}}\\n\u003C$action-setfield $tiddler=\u003C\u003CswitchpaletteTid>>$value={{!!dark-palette}}$field=dark-palette/>\\n\u003C$action-setfield $tiddler=\u003C\u003CswitchpaletteTid>>$value={{!!light-palette}}$field=light-palette/>\\t\\n\\t\\n\u003C$action-setfield $tiddler='$:/palette'$value={{!!light-palette}}$field=text/>\\t\\t\\n\u003C/$button>\\n\u003C/div>\u003Cstyle>\\n.kk-switch-label{\\n width:105px;\\n display: inline-block;\\n}\\n\u003C/style>\\t\"},\"$:/plugins/kookma/shiraz/viewtemplates/sticky-footer\":{\"list-after\":\"\",\"tags\":\"$:/tags/ViewTemplate\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003C$list filter=[{!!title}has[sticky-footer]]>\\n\u003Cdiv class=sticky-footer>\\n{{!!sticky-footer}}\\n\u003C/div>\\n\u003C/$list>\\n\"},\"$:/language/Buttons/Shiraz/Hint\":{\"type\":\"text/vnd.tiddlywiki\",\"text\":\"Switch dark/light color palette\"},\"$:/language/Buttons/Shiraz/Caption\":{\"type\":\"text/vnd.tiddlywiki\",\"text\":\"Switch dark/light color palette\"}}}","type":"application/json","author":"Mohammad Rahmani","core-version":">=5.2.2","description":"Extended markups, styles, images, tables, and macros","list":"readme license history","name":"Shiraz","plugin-type":"plugin","source":"https://github.com/kookma/TW-Shiraz","tags":"","title":"$:/plugins/kookma/shiraz","version":"2.7.4"},
{"created":"20200325113952303","text":"{\"tiddlers\":{\"$:/plugins/kookma/trashbin/history\":{\"title\":\"$:/plugins/kookma/trashbin/history\",\"created\":\"20200325121105806\",\"modified\":\"20200410061128665\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"Full change log https://kookma.github.io/TW-Trashbin/#ChangeLog\\n\\n* ''1.2.2'' -- 2020.04.10 -- bug fix in remove draft tiddlers to trashbin\\n* ''1.2.1'' -- 2020.03.30 -- bug fix and doc improvement and UI fade correction\\n* ''1.1.2'' -- 2020.03.28 -- stable release with new features and bug fixes\\n* ''0.1.0'' -- 2019.02.12 -- mature public release\\n\"},\"$:/plugins/kookma/trashbin/images/recycle\":{\"title\":\"$:/plugins/kookma/trashbin/images/recycle\",\"created\":\"20190723043410550\",\"modified\":\"20200325115955820\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003Csvg class=\\\"tc-image-recycle tc-image-button\\\" width=\\\"22pt\\\" height=\\\"22pt\\\" viewBox=\\\"0 0 512 512\\\">\u003Cpath d=\\\"M184.561 261.903c3.232 13.997-12.123 24.635-24.068 17.168l-40.736-25.455-50.867 81.402C55.606 356.273 70.96 384 96.012 384H148c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12H96.115c-75.334 0-121.302-83.048-81.408-146.88l50.822-81.388-40.725-25.448c-12.081-7.547-8.966-25.961 4.879-29.158l110.237-25.45c8.611-1.988 17.201 3.381 19.189 11.99l25.452 110.237zm98.561-182.915l41.289 66.076-40.74 25.457c-12.051 7.528-9 25.953 4.879 29.158l110.237 25.45c8.672 1.999 17.215-3.438 19.189-11.99l25.45-110.237c3.197-13.844-11.99-24.719-24.068-17.168l-40.687 25.424-41.263-66.082c-37.521-60.033-125.209-60.171-162.816 0l-17.963 28.766c-3.51 5.62-1.8 13.021 3.82 16.533l33.919 21.195c5.62 3.512 13.024 1.803 16.536-3.817l17.961-28.743c12.712-20.341 41.973-19.676 54.257-.022zM497.288 301.12l-27.515-44.065c-3.511-5.623-10.916-7.334-16.538-3.821l-33.861 21.159c-5.62 3.512-7.33 10.915-3.818 16.536l27.564 44.112c13.257 21.211-2.057 48.96-27.136 48.96H320V336.02c0-14.213-17.242-21.383-27.313-11.313l-80 79.981c-6.249 6.248-6.249 16.379 0 22.627l80 79.989C302.689 517.308 320 510.3 320 495.989V448h95.88c75.274 0 121.335-82.997 81.408-146.88z\\\"/>\u003C/svg>\"},\"$:/plugins/kookma/trashbin/images/sort-alpha-down\":{\"title\":\"$:/plugins/kookma/trashbin/images/sort-alpha-down\",\"caption\":\"sort-alpha-down\",\"created\":\"20200327153959154\",\"modified\":\"20200327185043770\",\"tags\":\"$:/tags/Image\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003Csvg class=\\\"tc-image-sort-alpha-down tc-image-button\\\" width=\\\"22pt\\\" height=\\\"22pt\\\" viewBox=\\\"0 0 448 512\\\">\u003Cpath d=\\\"M176 352h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.36 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352zm240-64H288a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h56l-61.26 70.45A32 32 0 0 0 272 446.37V464a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-56l61.26-70.45A32 32 0 0 0 432 321.63V304a16 16 0 0 0-16-16zm31.06-85.38l-59.27-160A16 16 0 0 0 372.72 32h-41.44a16 16 0 0 0-15.07 10.62l-59.27 160A16 16 0 0 0 272 224h24.83a16 16 0 0 0 15.23-11.08l4.42-12.92h71l4.41 12.92A16 16 0 0 0 407.16 224H432a16 16 0 0 0 15.06-21.38zM335.61 144L352 96l16.39 48z\\\"/>\u003C/svg>\"},\"$:/plugins/kookma/trashbin/images/sort-alpha-up\":{\"title\":\"$:/plugins/kookma/trashbin/images/sort-alpha-up\",\"caption\":\"sort-alpha-up (Solid)\",\"created\":\"20200327155639132\",\"modified\":\"20200327162316327\",\"tags\":\"$:/tags/Image\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003Csvg class=\\\"tc-image-sort-alpha-up-alt tc-image-button\\\" width=\\\"22pt\\\" height=\\\"22pt\\\" viewBox=\\\"0 0 448 512\\\">\u003Cpath d=\\\"M16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31l-80-96a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160zm272 64h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-56l61.26-70.45A32 32 0 0 0 432 65.63V48a16 16 0 0 0-16-16H288a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h56l-61.26 70.45A32 32 0 0 0 272 190.37V208a16 16 0 0 0 16 16zm159.06 234.62l-59.27-160A16 16 0 0 0 372.72 288h-41.44a16 16 0 0 0-15.07 10.62l-59.27 160A16 16 0 0 0 272 480h24.83a16 16 0 0 0 15.23-11.08l4.42-12.92h71l4.41 12.92A16 16 0 0 0 407.16 480H432a16 16 0 0 0 15.06-21.38zM335.61 400L352 352l16.39 48z\\\"/>\u003C/svg>\"},\"$:/plugins/kookma/trashbin/images/sort-numeric-down\":{\"title\":\"$:/plugins/kookma/trashbin/images/sort-numeric-down\",\"caption\":\"sort-numeric-down\",\"created\":\"20200327153929866\",\"modified\":\"20200327185052283\",\"tags\":\"$:/tags/Image\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003Csvg class=\\\"tc-image-sort-numeric-down tc-image-button\\\" width=\\\"22pt\\\" height=\\\"22pt\\\" viewBox=\\\"0 0 448 512\\\">\u003Cpath d=\\\"M304 96h16v64h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-16V48a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 304 96zm26.15 162.91a79 79 0 0 0-55 54.17c-14.25 51.05 21.21 97.77 68.85 102.53a84.07 84.07 0 0 1-20.85 12.91c-7.57 3.4-10.8 12.47-8.18 20.34l9.9 20c2.87 8.63 12.53 13.49 20.9 9.91 58-24.76 86.25-61.61 86.25-132V336c-.02-51.21-48.4-91.34-101.85-77.09zM352 356a20 20 0 1 1 20-20 20 20 0 0 1-20 20zm-176-4h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.36 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352z\\\"/>\u003C/svg>\"},\"$:/plugins/kookma/trashbin/images/sort-numeric-up\":{\"title\":\"$:/plugins/kookma/trashbin/images/sort-numeric-up\",\"caption\":\"sort-numeric-up (Solid)\",\"created\":\"20200327155701392\",\"modified\":\"20200327162214617\",\"tags\":\"$:/tags/Image\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003Csvg class=\\\"tc-image-sort-numeric-up-alt tc-image-button\\\" width=\\\"22pt\\\" height=\\\"22pt\\\" viewBox=\\\"0 0 448 512\\\">\u003Cpath d=\\\"M107.31 36.69a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31zM400 416h-16V304a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 304 352h16v64h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM330.17 34.91a79 79 0 0 0-55 54.17c-14.27 51.05 21.19 97.77 68.83 102.53a84.07 84.07 0 0 1-20.85 12.91c-7.57 3.4-10.8 12.47-8.18 20.34l9.9 20c2.87 8.63 12.53 13.49 20.9 9.91 58-24.77 86.25-61.61 86.25-132V112c-.02-51.21-48.4-91.34-101.85-77.09zM352 132a20 20 0 1 1 20-20 20 20 0 0 1-20 20z\\\"/>\u003C/svg>\"},\"$:/plugins/kookma/trashbin/images/times.svg\":{\"title\":\"$:/plugins/kookma/trashbin/images/times.svg\",\"created\":\"20190716033811299\",\"modified\":\"20200325115955828\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003Csvg class=\\\"tc-image-times tc-image-button\\\" width=\\\"22pt\\\" height=\\\"22pt\\\" viewBox=\\\"0 0 352 512\\\">\u003Cpath d=\\\"M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z\\\"/>\u003C/svg>\"},\"$:/plugins/kookma/trashbin/images/trash-alt\":{\"title\":\"$:/plugins/kookma/trashbin/images/trash-alt\",\"caption\":\"trash-alt\",\"created\":\"20190710102513532\",\"modified\":\"20200327173632794\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003Csvg class=\\\"tc-image-trash-alt tc-image-button\\\" width=\\\"22pt\\\" height=\\\"22pt\\\" viewBox=\\\"0 0 448 512\\\">\u003Cpath d=\\\"M268 416h24a12 12 0 0 0 12-12V188a12 12 0 0 0-12-12h-24a12 12 0 0 0-12 12v216a12 12 0 0 0 12 12zM432 80h-82.41l-34-56.7A48 48 0 0 0 274.41 0H173.59a48 48 0 0 0-41.16 23.3L98.41 80H16A16 16 0 0 0 0 96v16a16 16 0 0 0 16 16h16v336a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48V128h16a16 16 0 0 0 16-16V96a16 16 0 0 0-16-16zM171.84 50.91A6 6 0 0 1 177 48h94a6 6 0 0 1 5.15 2.91L293.61 80H154.39zM368 464H80V128h288zm-212-48h24a12 12 0 0 0 12-12V188a12 12 0 0 0-12-12h-24a12 12 0 0 0-12 12v216a12 12 0 0 0 12 12z\\\"/>\u003C/svg>\"},\"$:/plugins/kookma/trashbin/license\":{\"title\":\"$:/plugins/kookma/trashbin/license\",\"created\":\"20200325121133911\",\"modified\":\"20200325121209299\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"Distributed under an MIT license.\\n\\nCopyright (c) 2019-2020 [[Mohammad Rahmani|https://github.com/kookma]]\\n\\n\u003C\u003C\u003C\\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \\\"Software\\\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\\n\\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\\n\\nTHE SOFTWARE IS PROVIDED \\\"AS IS\\\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\\n\u003C\u003C\u003C\"},\"$:/plugins/kookma/trashbin/macros/bulk-operation\":{\"title\":\"$:/plugins/kookma/trashbin/macros/bulk-operation\",\"created\":\"20190723115934925\",\"modified\":\"20200327170128541\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define delete-trashed-tiddlers()\\n\u003C$list filter=\\\"[tag[$:/tags/trashbin]search:title[$:/trashbin/]]\\\" variable=\\\"Item\\\">\\n\u003C$action-deletetiddler $tiddler=\u003C\u003CItem>> />\\n\u003C/$list>\\n\\\\end\\n\\n\\\\define trashbin-empty-bin()\\n\u003C$macrocall $name=\\\"trashbin-confirm-delete\\\"\\nbtnLabel=\\\"Empty Trashbin\\\"\\ncountFilter=\\\"[tag[$:/tags/trashbin]search:title[$:/trashbin/]]\\\"\\nactionMacro=\u003C\u003Cdelete-trashed-tiddlers>>\\nstateTiddler=\\\"$:/state/trashbin/emptyTrashBin\\\"\\n/>\\n\\\\end\\n\\n\\\\define restore-all()\\n\u003C$button tooltip=\\\"Restore all\\\" class=\\\"tc-btn-invisible tc-tiddlylink\\\"> {{$:/plugins/kookma/trashbin/images/recycle}}\\n\u003C$list filter=\\\"[tag[$:/tags/trashbin]search:title[$:/trashbin/]sort[]]\\\" variable=\\\"Item\\\">\\n\u003C$macrocall $name=\\\"restore\\\" tiddler=\u003C\u003CItem>> />\\n\u003C/$list>\\n\u003C/$button>\\n\\\\end\"},\"$:/plugins/kookma/trashbin/macros/confirm-empty\":{\"title\":\"$:/plugins/kookma/trashbin/macros/confirm-empty\",\"created\":\"20190723114948285\",\"modified\":\"20200327170306636\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define trashbin-confirm-delete(\\nbtnLabel:\\\"Delete these tiddlers\\\", \\nconfirmMessage:\\\"Are you sure you wish to delete\\\", \\nstateTiddler:\\\"\\\", \\ncountFilter:\\\"\\\", \\nactionMacro:\\\"\\\")\\n\\n\u003C$button class=\\\"tc-btn-invisible tc-tiddlylink\\\" tooltip=\\\"Empty Trashbin\\\" popup=\u003C\u003Cqualify \\\"\\\"\\\"$stateTiddler$\\\"\\\"\\\">> > {{$:/core/images/delete-button}}\\n\u003C/$button>\\n\\n\u003C$reveal state=\u003C\u003Cqualify \\\"\\\"\\\"$stateTiddler$\\\"\\\"\\\">> type=\\\"popup\\\" position=\\\"belowleft\\\" animate=\\\"yes\\\">\\n\u003Cdiv class=\\\"tc-block-dropdown-wrapper\\\">\\n\u003Cdiv class=\\\"tc-block-dropdown tc-edit-type-dropdown\\\">\\n\u003Cdiv class=\\\"tc-dropdown-item-plain\\\">\\n\u003C$set name=\\\"resultCount\\\" value=\\\"\\\"\\\"\u003C$count filter=\u003C\u003C__countFilter__>> />\\\"\\\"\\\">\\n$confirmMessage$ \u003C\u003CresultCount>> tiddler(s)?\\n\u003C/$set>\\n\u003C/div>\\n\u003Cdiv class=\\\"tc-dropdown-item-plain\\\">\\n\u003C$button class=\\\"tc-btn-invisible tc-tiddlylink\\\" tooltip=\\\"Empty archive\\\"\\nactions=\u003C\u003C__actionMacro__>> > \\n{{$:/core/images/delete-button}} Delete all?\\n\u003C/$button>\\n\u003C/div>\\n\u003C/div>\\n\u003C/div>\\n\u003C/$reveal>\\n\\\\end\"},\"$:/plugins/kookma/trashbin/macros/move-to-trashbin\":{\"title\":\"$:/plugins/kookma/trashbin/macros/move-to-trashbin\",\"created\":\"20190710071039480\",\"modified\":\"20200410061108463\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define trashTidName() \u003C\u003Cunusedtitle baseName:\\\"$(trashTiddler)$\\\">>\\n\\n\\\\define move-to-trashbin(tiddler)\\n\u003C$list filter=\\\"[\u003C__tiddler__>has[title]]\\\" variable=ignore> \u003C!-- ignore missing tiddlers -->\\n\u003C$vars trashTiddler={{{ [\u003C__tiddler__>addprefix[$:/trashbin/]] }}}>\\n\u003C$wikify name=\\\"trashTid\\\" text=\u003C\u003CtrashTidName>> >\\n\u003C$list filter=\\\"[\u003C__tiddler__>fields[]]\\\" variable=\\\"fieldName\\\">\\n\u003C$action-setfield \\n $tiddler=\u003C\u003CtrashTid>>\\n $index=\u003C\u003CfieldName>>\\n $value={{{[\u003C__tiddler__>get\u003CfieldName>] }}}\\n/>\\n\u003C/$list>\\n\u003C$action-setfield $tiddler=\u003C\u003CtrashTid>> tags=\\\"$:/tags/trashbin\\\"/>\\n\u003C/$wikify>\\n\u003C$action-sendmessage $message=\\\"tm-close-tiddler\\\" $param=\u003C\u003C__tiddler__>> />\\n\u003C$list filter=\\\"[\u003C__tiddler__>has[draft.of]]\\\" variable=ignore emptyMessage=\\\"\\\"\\\"\u003C$action-deletetiddler $tiddler=\u003C\u003C__tiddler__>> />\\\"\\\"\\\">\\n\u003C$action-deletetiddler $tiddler={{{[\u003C__tiddler__>get[draft.of]]}}} />\u003C!--delete main tiddler-->\\n\u003C$action-deletetiddler $tiddler=\u003C\u003C__tiddler__>> /> \u003C!--delete draft tiddler-->\\n\u003C/$list>\\n\u003C/$vars>\\n\u003C/$list>\\n\\\\end\\n\"},\"$:/plugins/kookma/trashbin/macros/preview-option\":{\"title\":\"$:/plugins/kookma/trashbin/macros/preview-option\",\"created\":\"20200327203154169\",\"modified\":\"20200327205705076\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define viewTemplateTid() $:/plugins/kookma/trashbin/viewtemplate/trash-item\\n\\\\define styleTid() $:/plugins/kookma/trashbin/styles/show-trashed\\n\\n\\\\define preview-option()\\n\u003C$reveal type=\\\"nomatch\\\" stateTitle=\u003C\u003CviewTemplateTid>> stateField=\\\"tags\\\" text=\\\"$:/tags/ViewTemplate\\\" default=\\\"\\\">\\n\u003C$button setTitle=\u003C\u003CviewTemplateTid>> setField=\\\"tags\\\" setTo=\\\"$:/tags/ViewTemplate\\\" class=\\\"tc-btn-invisible\\\" tooltip=\\\"Show trash item preview\\\"> \\n{{$:/core/images/preview-open}}\\n\u003C$action-setfield $tiddler=\u003C\u003CstyleTid>> tags=\\\"$:/tags/Stylesheet\\\"/> \\n\u003C/$button>\\n\u003C/$reveal>\\n\u003C$reveal type=\\\"match\\\" stateTitle=\u003C\u003CviewTemplateTid>> stateField=\\\"tags\\\" text=\\\"$:/tags/ViewTemplate\\\" default=\\\"\\\">\\n\u003C$button setTitle=\u003C\u003CviewTemplateTid>> setField=\\\"tags\\\" setTo=\\\"\\\" class=\\\"tc-btn-invisible\\\" tooltip=\\\"Hide trash item preview\\\"> \\n{{$:/core/images/preview-closed}}\\n\u003C$action-setfield $tiddler=\u003C\u003CstyleTid>> tags=\\\"\\\"/> \\n\u003C/$button>\\n\u003C/$reveal>\\n\\\\end\\n\\n\u003C\u003Cpreview-option>>\"},\"$:/plugins/kookma/trashbin/macros/restore\":{\"title\":\"$:/plugins/kookma/trashbin/macros/restore\",\"created\":\"20190710105439064\",\"modified\":\"20200327170445307\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define open-restoredTid-in-story-river()\\n\u003C$action-listops $tiddler=\\\"$:/StoryList\\\" $field='list' $subfilter=\\\"\\\"\\\"[[$(restoredTid)$]]+[putfirst[]]\\\"\\\"\\\"/>\\n\\\\end\\n\\n\\\\define restoreTid(tiddler)\\n\u003C$list filter=\\\"[\u003C__tiddler__>indexes[]] -title\\\" variable=\\\"fieldName\\\">\\n \u003C$action-setfield \\n $tiddler=\u003C\u003CrestoredTid>> \\n\\t $field=\u003C\u003CfieldName>> \\n\\t $value={{{ [\u003C__tiddler__>getindex\u003CfieldName>] }}} \\n />\\n\u003C/$list>\\n\u003C$action-sendmessage $message=\\\"tm-close-tiddler\\\" $param=\u003C\u003C__tiddler__>> />\\n\u003C$action-deletetiddler $tiddler=\u003C\u003C__tiddler__>> />\\n\u003C$macrocall $name=\\\"open-restoredTid-in-story-river\\\" />\\n\\\\end\\n\\n\\n\\\\define restore(tiddler)\\n\u003C$vars \\n restoredTid={{{ [\u003C__tiddler__>getindex[title]] }}} \\n isExisted= {{{ [\u003C__tiddler__>getindex[title]has[title]] }}} \\n >\\n\u003C$reveal type=\\\"nomatch\\\" text=\u003C\u003CisExisted>> default=\u003C\u003CrestoredTid>> >\\n\u003C$macrocall $name=\\\"restoreTid\\\" tiddler=\u003C\u003C__tiddler__>> />\\n\u003C/$reveal>\\n\\n\u003C$reveal type=\\\"match\\\" text=\u003C\u003CisExisted>> default=\u003C\u003CrestoredTid>> >\\n \u003C$action-sendmessage $message=\\\"tm-notify\\\" \\n $param=\\\"$:/plugins/kookma/trashbin/restore-notification\\\" \\n\\t restoredTiddler=\u003C\u003CrestoredTid>>\\n\\t/>\\n\u003C/$reveal>\\n\\n\u003C/$vars>\\n\\\\end\"},\"$:/plugins/kookma/trashbin/macros/sort\":{\"title\":\"$:/plugins/kookma/trashbin/macros/sort\",\"created\":\"20200327141043944\",\"modified\":\"20200327201042137\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define tempSortTid() $:/keepstate/trashbin/sort\\n\\n\\\\define show-icons()\\n\u003C$vars state-alpha-down=\\\"sortan[title]\\\" state-alpha-up=\\\"!sortan[title]\\\"\\n state-numeric-down=\\\"sort[modified]\\\" state-numeric-up=\\\"!sort[modified]\\\" >\\n\u003C$list filter=\\\"[\u003CtempSortTid>get[text]match\u003Cstate-alpha-down>]\\\">\\n{{$:/plugins/kookma/trashbin/images/sort-alpha-down}}\\n\u003C/$list>\\n\u003C$list filter=\\\"[\u003CtempSortTid>get[text]match\u003Cstate-alpha-up>]\\\">\\n{{$:/plugins/kookma/trashbin/images/sort-alpha-up}}\\n\u003C/$list>\\n\u003C$list filter=\\\"[\u003CtempSortTid>get[text]match\u003Cstate-numeric-down>]\\\">\\n{{$:/plugins/kookma/trashbin/images/sort-numeric-down}}\\n\u003C/$list>\\n\u003C$list filter=\\\"[\u003CtempSortTid>get[text]match\u003Cstate-numeric-up>]\\\">\\n{{$:/plugins/kookma/trashbin/images/sort-numeric-up}}\\n\u003C/$list>\\n\u003C$list filter=\\\"[\u003CtempSortTid>!has[title]]\\\">\\nClick to sort\\n\u003C/$list>\\n\u003C/$vars>\\n\\\\end\\n\\n\\n\\\\define trashbin-cycle(arraySet:\\\"\\\", stateTiddler:\\\"\\\", stateField:\\\"text\\\")\\n\u003C$vars array=\u003C\u003C__arraySet__>> currentItem={{{[\u003C__stateTiddler__>get\u003C__stateField__>]}}} \\n tooltip={{{[\u003CtempSortTid>get[text]]}}} >\\n \u003C$button tooltip=\u003C\u003Ctooltip>> class=\\\"tc-btn-invisible\\\"> \u003C\u003Cshow-icons>>\\n \u003C$set\\n filter='[enlist\u003Carray>after\u003CcurrentItem>]'\\n name=NextItem\\n emptyValue={{{[enlist\u003Carray>first[]]}}}\\n >\\n \u003C$action-setfield\\n $tiddler=\u003C\u003C__stateTiddler__>>\\n $field=\u003C\u003C__stateField__>>\\n $value=\u003C\u003CNextItem>> />\\n \u003C/$set>\\n \u003C/$button>\\n\u003C/$vars>\\t\\n\\\\end\\n\\n\\\\define sort-by()\\n\u003C$macrocall $name=\\\"trashbin-cycle\\\" \\n arraySet=\\\"sortan[title] !sortan[title] sort[modified] !sort[modified]\\\" \\n stateTiddler=\u003C\u003CtempSortTid>> />\\n\\\\end\"},\"$:/plugins/kookma/trashbin/readme\":{\"title\":\"$:/plugins/kookma/trashbin/readme\",\"created\":\"20200325121220142\",\"modified\":\"20200325171839260\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"; Trashbin\\nThe concept behind Trashbin plugin is to have a simple mechanism to move deleted tiddlers to Trashbin and be able to restore them later if required.\\n\\n; Code and demo\\nFor learning plugin features, mechanism, terminology, syntax, tutorial and examples see the plugin demo and code pages\\n\\n* Demo: https://kookma.github.io/TW-Trashbin/\\n* Code: https://github.com/kookma/TW-Trashbin\\n\"},\"$:/plugins/kookma/trashbin/restore-notification\":{\"title\":\"$:/plugins/kookma/trashbin/restore-notification\",\"created\":\"20190711130503628\",\"modified\":\"20200325115955867\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"{{$:/plugins/kookma/trashbin/images/recycle}} \\n\\n''Warning''\u003Cbr>\\nThe target tiddler \u003Cb>\u003C$text text=\u003C\u003CrestoredTiddler>>/>\u003C/b> already exists.\u003Cbr>\\nIt cannot be overwritten!\"},\"$:/plugins/kookma/trashbin/sidebar-tab\":{\"title\":\"$:/plugins/kookma/trashbin/sidebar-tab\",\"caption\":\"Trashbin\",\"created\":\"20190613131234955\",\"modified\":\"20200330082257793\",\"tags\":\"$:/tags/SideBar\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"{{$:/plugins/kookma/trashbin/ui/sidebar}}\"},\"$:/plugins/kookma/trashbin/styles/main.css\":{\"title\":\"$:/plugins/kookma/trashbin/styles/main.css\",\"text\":\"/* trashbin main ui */\\n.kk-trashbin-ui{\\n\\tmin-width:320px; /* controls the minimum width of whole ui */\\n}\\n\\n.kk-trahbin-ui svg{\\n fill:#aaaaaa;\\n}\\n\\n.kk-trahbin-ui .kk-trahbin-ui-controls svg{\\n width:1.2em;\\n height:1.2em;\\t\\n}\\n\\n\\n/* trashbin items list ui */\\n.kk-trashbin-row{\\n\\tdisplay: flex;\\t\\n\\twidth: 95%;\\n\\tflex-wrap: wrap;\\n}\\n\\n\\n.kk-trashbin-row .kk-trashbin-delete,\\n.kk-trashbin-row .kk-trashbin-restore {\\n\\tflex-grow:0; width:20px;\\n\\tmargin-left:5px;\\n}\\n\\n.kk-trashbin-row .kk-trashbin-link{\\n\\tflex-grow:1; \\n\\twidth: calc(100% - 50px); \\n\\tpadding-right: 10px;\\n}\\n\\n.kk-trashbin-row:hover { background-color: #f6f6f6; }\\n\\n/* UI button fade-in*/\\n.kk-trahbin-ui button:hover svg { fill: #000000; }\\n.kk-trahbin-ui .kk-trashbin-ui-btn { opacity:0.5; }\\n.kk-trahbin-ui .kk-trashbin-ui-btn:hover { opacity:1.0; }\",\"created\":\"20190716040116074\",\"modified\":\"20200330103433380\",\"tags\":\"$:/tags/Stylesheet\",\"type\":\"text/css\"},\"$:/plugins/kookma/trashbin/styles/show-trashed\":{\"title\":\"$:/plugins/kookma/trashbin/styles/show-trashed\",\"created\":\"20200327100826751\",\"modified\":\"20200330123344137\",\"tags\":\"$:/tags/Stylesheet\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"[data-tags~=\\\"$:/tags/trashbin\\\"] .tc-tiddler-body,\\n[data-tags~=\\\"$:/tags/trashbin\\\"] .tc-tags-wrapper\\n{\\n display:none;\\n}\\n\"},\"$:/plugins/kookma/trashbin/styles/toolbar-buttons\":{\"title\":\"$:/plugins/kookma/trashbin/styles/toolbar-buttons\",\"text\":\"html body.tc-body .tc-tiddler-controls .tc-image-trash-alt {stroke: white;fill:#660000;}\\nhtml body.tc-body .tc-tiddler-controls .tc-image-recycle {stroke: white;fill:#138808;}\",\"created\":\"20200329162056060\",\"modified\":\"20200406191049638\",\"type\":\"text/css\"},\"$:/plugins/kookma/trashbin/styles/trashed-item\":{\"title\":\"$:/plugins/kookma/trashbin/styles/trashed-item\",\"text\":\"/* set style for trashed tiddlers */\\n[data-tags ~=\\\"$:/tags/trashbin\\\"] { border: 1px solid crimson; }\",\"created\":\"20200329161931981\",\"modified\":\"20200329162224824\",\"tags\":\"$:/tags/Stylesheet\",\"type\":\"text/css\"},\"$:/plugins/kookma/trashbin/templates/body\":{\"title\":\"$:/plugins/kookma/trashbin/templates/body\",\"created\":\"20200329133632160\",\"modified\":\"20200329155701084\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define show-plain() \\n\u003Cdiv class=\\\"tc-tiddler-body\\\">\\n\u003Cpre>\u003C$transclude index=\\\"text\\\" mode=\\\"block\\\"/>\u003C/pre>\\n\u003C/div>\\n\\\\end\\n\\n\\\\define show() \\n\u003Cdiv class=\\\"tc-tiddler-body\\\">\\n\u003C$transclude index=\\\"text\\\" mode=\\\"block\\\"/>\\n\u003C/div>\\n\\\\end\\n\\n\\n\u003C!-- json tiddlers including plugins -->\\n\u003C$list filter=\\\"[\u003CcurrentTiddler>getindex[type]match[application/json]]\\\" variable=ignore>\\n\u003C$list filter=\\\"[\u003CcurrentTiddler>getindex[plugin-type]]\\\" variable=ignore emptyMessage=\u003C\u003Cshow-plain>> >\\n\u003Cdiv class=\\\"tc-binary-warning\\\">\\nThis tiddler contains plugin!\\n\u003C/div>\\n\u003C/$list>\\n\u003C/$list>\\n\u003C!-- text tiddlers including: css, plain, dictionary -->\\n\u003C$list filter=\\\"[\u003CcurrentTiddler>getindex[type]match[application/x-tiddler-dictionary]]\\n[\u003CcurrentTiddler>getindex[type]match[text/plain]]\\n[\u003CcurrentTiddler>getindex[type]match[text/css]]\\\" variable=ignore>\\n\u003C\u003Cshow-plain>>\\n\u003C/$list>\\n\\n\\n\u003C!-- other tiddlers like image, vnd.tiddlywiki -->\\n\u003C$list filter=\\\"[\u003CcurrentTiddler>getindex[type]]\\\" variable=type emptyMessage=\u003C\u003Cshow>> >\\n\u003C$list filter=\\\"[\u003Ctype>match[text/vnd.tiddlywiki]]\\\" variable=ignore>\\n\u003C$transclude index=\\\"text\\\" mode=\\\"block\\\"/>\\n\u003C/$list>\\n\u003C$list filter=\\\"[\u003Ctype>search:title[image]]\\\" variable=ignore>\\n\u003Cdiv class=\\\"tc-binary-warning\\\">\\nThis tiddler contains image data!\\n\u003C/div>\\n\u003C/$list>\\n\u003C/$list>\"},\"$:/plugins/kookma/trashbin/templates/subtitle\":{\"title\":\"$:/plugins/kookma/trashbin/templates/subtitle\",\"text\":\"\u003Cdiv class=\\\"tc-subtitle\\\">\\n\u003C$link to={{##modifier}}>\\n\u003C$view index=\\\"modifier\\\"/>\\n\u003C/$link> \u003C$view index=\\\"modified\\\" format=\\\"date\\\" template={{$:/language/Tiddler/DateFormat}}/>\\n\u003C/div>\",\"created\":\"20200327082525694\",\"modified\":\"20200327083014840\",\"type\":\"text/vnd.tiddlywiki\"},\"$:/plugins/kookma/trashbin/templates/tags\":{\"title\":\"$:/plugins/kookma/trashbin/templates/tags\",\"created\":\"20200327084049139\",\"modified\":\"20200327120921036\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003Cdiv class=\\\"tc-tags-wrapper\\\">\\n\u003C$vars tagsIndex={{{[\u003CcurrentTiddler>getindex[tags]]}}}>\\n\u003C$list filter=\\\"[enlist\u003CtagsIndex>]\\\" template=\\\"$:/core/ui/TagTemplate\\\" storyview=\\\"pop\\\"/>\\n\u003C/$vars>\\n\u003C/div>\"},\"$:/plugins/kookma/trashbin/templates/title\":{\"title\":\"$:/plugins/kookma/trashbin/templates/title\",\"created\":\"20200327085342927\",\"modified\":\"20200327195225059\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define title-styles()\\nfill:$(foregroundColor)$;\\n\\\\end\\n\u003Cdiv class=\\\"tc-tiddler-title\\\">\\n\u003Cdiv class=\\\"tc-titlebar\\\">\\n\u003C$set name=\\\"tv-wikilinks\\\" value={{$:/config/Tiddlers/TitleLinks}}>\\n\u003C$link>\\n\u003C$set name=\\\"foregroundColor\\\" value={{##color}}>\\n\u003Cspan class=\\\"tc-tiddler-title-icon\\\" style=\u003C\u003Ctitle-styles>>>\\n\u003C$transclude tiddler={{##icon}}>\\n\u003C$transclude tiddler={{$:/config/DefaultTiddlerIcon}}/>\\n\u003C/$transclude>\\n\u003C/span>\\n\u003C/$set>\\n\u003C$list filter=\\\"[{##title}removeprefix[$:/]]\\\">\\n\u003Ch2 class=\\\"tc-title\\\" title={{$:/language/SystemTiddler/Tooltip}}>\\n\u003Cspan class=\\\"tc-system-title-prefix\\\">$:/\u003C/span>\u003C$text text=\u003C\u003CcurrentTiddler>>/>\\n\u003C/h2>\\n\u003C/$list>\\n\u003C$list filter=\\\"[{##title}!prefix[$:/]]\\\">\\n\u003Ch2 class=\\\"tc-title\\\">\\n\u003C$view field=\\\"title\\\"/>\\n\u003C/h2>\\n\u003C/$list>\\n\u003C/$link>\\n\u003C/$set>\\n\u003C/div>\u003C/div>\"},\"$:/plugins/kookma/trashbin/ui/sidebar\":{\"title\":\"$:/plugins/kookma/trashbin/ui/sidebar\",\"caption\":\"Trashbin\",\"created\":\"20200330082034854\",\"modified\":\"20200330123325985\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\import $:/plugins/kookma/trashbin/macros/sort\\n\\\\import $:/plugins/kookma/trashbin/macros/restore\\n\\\\import $:/plugins/kookma/trashbin/macros/confirm-empty\\n\\\\import $:/plugins/kookma/trashbin/macros/bulk-operation\\n\\\\import $:/plugins/kookma/trashbin/macros/preview-option\\n\\n\\\\define show-link()\\n\u003C$link to=\u003C\u003CcurrentTiddler>> >\u003C$text text={{{ [\u003CcurrentTiddler>removeprefix[$:/trashbin/]] }}} /> \u003C/$link>&nbsp;\u003Cspan style=\\\"float:right;padding-right:10px;font-size:smaller;\\\" title=\\\"Date Deleted\\\">\u003C$view field=\\\"modified\\\" format=\\\"date\\\" template=\\\"0MM/0DD/YYYY 0hh:0mm AM\\\"/>\u003C/span>\\n\\\\end\\n\\n\\\\define recycle-button()\\n{{||$:/plugins/kookma/trashbin/ui/toolbar-button}}\\n\\\\end\\n\\n\\\\define delete-button()\\n\u003C$button class=\\\"tc-btn-invisible\\\" tooltip=\\\"Delete permanently\\\">\\n{{$:/plugins/kookma/trashbin/images/times.svg}}\\n\u003C$list filter=\\\"[list[$:/StoryList]] +[field:title\u003CcurrentTiddler>>]\\\" variable=ignore>\\n\u003C$action-sendmessage $message=\\\"tm-close-tiddler\\\" $param=\u003C\u003C\u003CcurrentTiddler>> />\\n\u003C/$list>\\n\u003C$action-deletetiddler $tiddler=\u003C\u003CcurrentTiddler>> />\\n\u003C/$button>\\n\\\\end\\n\\n\\\\define trashbin-siderbar-ui()\\n\u003Cdiv class=\\\"kk-trahbin-ui\\\">\\n\\n\u003Cspan class=\\\"kk-trahbin-ui-controls kk-trashbin-ui-btn\\\">\\n\u003C\u003Ctrashbin-empty-bin>> \u003C\u003Crestore-all>> \u003C\u003Csort-by>> \u003C\u003Cpreview-option>>\\n\\n\u003C/span>&nbsp;\\n\u003Cspan style=\\\"font-size:smaller\\\">\\n\u003C$list filter='[tag[$:/tags/trashbin]prefix[$:/trashbin/]limit[1]]' variable=null emptyMessage=\\\"Trash bin is empty\\\">\\n\u003C$count filter='[tag[$:/tags/trashbin]]'/> items in Trashbin\\n\u003C/$list>\\n\u003C/span>\\n\\n\u003C!-- create the trash items list -->\\n\u003C$list filter=\\\"[tag[$:/tags/trashbin]prefix[$:/trashbin/]$(sortType)$]\\\">\\n\u003Cdiv class=\\\"kk-trashbin-row\\\">\\n\\t\u003Cdiv class=\\\"kk-trashbin-link\\\">\u003C\u003Cshow-link>>\u003C/div>\\n\\t\u003Cdiv class=\\\"kk-trashbin-recycle kk-trashbin-ui-btn\\\">\u003C\u003Crecycle-button>>\u003C/div>\\n\\t\u003Cdiv class=\\\"kk-trashbin-delete kk-trashbin-ui-btn\\\">\u003C\u003Cdelete-button>>\u003C/div>\\n\u003C/div>\\n\u003C/$list>\\n\\n\u003C/div>\\n\\\\end\\n\\n\u003C$vars sortType={{{[\u003CtempSortTid>get[text]] ~[[]] }}}>\\n\u003C\u003Ctrashbin-siderbar-ui>>\\n\u003C/$vars>\"},\"$:/plugins/kookma/trashbin/ui/toolbar-button\":{\"title\":\"$:/plugins/kookma/trashbin/ui/toolbar-button\",\"caption\":\"{{$:/plugins/kookma/trashbin/images/trash-alt}}&nbsp;{{$:/language/Buttons/Trashbin/Caption/Move}}\",\"created\":\"20190623140751496\",\"creator\":\"Mohammad\",\"description\":\"\u003C$list filter=\\\"[all[current]tag[$:/tags/trashbin]prefix[$:/trashbin/]]\\\" emptyMessage={{$:/language/Buttons/Trashbin/Hint/Move}}>{{$:/language/Buttons/Trashbin/Hint/Recycle}}\u003C/$list>\",\"list-after\":\"$:/core/ui/Buttons/delete\",\"modified\":\"20200328140420576\",\"modifier\":\"Mohammad\",\"tags\":\"$:/tags/ViewToolbar $:/tags/EditToolbar\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\import $:/plugins/kookma/trashbin/macros/move-to-trashbin\\n\\\\import $:/plugins/kookma/trashbin/macros/restore\\n\\\\whitespace trim\\n\\n\u003C!-- move to trashbin -->\\n\u003C$list filter=\\\"[all[current]!tag[$:/tags/trashbin]!prefix[$:/trashbin/]]\\\">\\n\u003C$button \\n aria-label={{$:/language/Buttons/Trashbin/Caption/Move}}\\n tooltip={{$:/language/Buttons/Trashbin/Hint/Move}} class=\u003C\u003Ctv-config-toolbar-class>> >\\n \u003C$macrocall $name=\\\"move-to-trashbin\\\" tiddler=\u003C\u003CcurrentTiddler>> />\\t\\n \u003C$list filter=\\\"[\u003Ctv-config-toolbar-icons>prefix[yes]]\\\">\\n {{$:/plugins/kookma/trashbin/images/trash-alt}}\\n \u003C/$list>\\n \u003C$list filter=\\\"[\u003Ctv-config-toolbar-text>prefix[yes]]\\\">\\n \u003Cspan class=\\\"tc-btn-text\\\">\\n\\t\\t &nbsp;\u003C$text text={{$:/language/Buttons/Trashbin/Caption/Move}}/>\\n \u003C/span>\\n \u003C/$list>\\n\u003C/$button>\\n\u003C/$list>\\n\\n\u003C!-- recycle from trashbin -->\\n\u003C$list filter=\\\"[all[current]tag[$:/tags/trashbin]prefix[$:/trashbin/]]\\\">\\n\u003C$button\\n aria-label={{$:/language/Buttons/Trashbin/Caption/Recycle}}\\n tooltip={{$:/language/Buttons/Trashbin/Hint/Recycle}} class=\u003C\u003Ctv-config-toolbar-class>> >\\n \u003C$macrocall $name=\\\"restore\\\" tiddler=\u003C\u003CcurrentTiddler>> />\\n \u003C$list filter=\\\"[\u003Ctv-config-toolbar-icons>prefix[yes]]\\\">\\n {{$:/plugins/kookma/trashbin/images/recycle}}\\n \u003C/$list>\\n \u003C$list filter=\\\"[\u003Ctv-config-toolbar-text>prefix[yes]]\\\">\\n \u003Cspan class=\\\"tc-btn-text\\\">&nbsp;\\n \u003C$text text={{$:/language/Buttons/Trashbin/Caption/Recycle}}/>\\n \u003C/span>\\n \u003C/$list>\\n\u003C/$button>\\n\u003C/$list>\"},\"$:/plugins/kookma/trashbin/viewtemplate/trash-item\":{\"title\":\"$:/plugins/kookma/trashbin/viewtemplate/trash-item\",\"created\":\"20200327081227209\",\"modified\":\"20200330123344172\",\"tags\":\"$:/tags/ViewTemplate\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003C$list filter=\\\"[all[current]tag[$:/tags/trashbin]prefix[$:/trashbin/]]\\\">\\n\u003Cdiv class=\\\"tc-tiddler-frame kk-trashbin-viewtrashitem\\\">\\n{{||$:/plugins/kookma/trashbin/templates/title}}\\n{{||$:/plugins/kookma/trashbin/templates/subtitle}}\\n{{||$:/plugins/kookma/trashbin/templates/tags}}\\n{{||$:/plugins/kookma/trashbin/templates/body}}\\n\u003C/div>\\n\u003Cdiv class=\\\"kk-trashbin-viewtrashitem\\\" style=\\\"margin-left:40px;\\\">\\n\u003Ch2>Tiddler fields\u003C/h2>\\n\u003C$list filter=\\\"[\u003CcurrentTiddler>indexes[]] -title -tags -text -created -modified\\\" variable=idx>\\n\u003Clabel style=\\\"display:inline-block;width:15ch;font-weight:bold;\\\">\u003C\u003Cidx>>:\u003C/label> \u003C$transclude index=\u003C\u003Cidx>>/>\u003Cbr/>\\n\u003C/$list>\\n\u003C/div>\\n\\n\u003Cstyle>\\n.kk-trashbin-viewtrashitem {\\n margin-top:15px;\\n }\\n.kk-trashbin-viewtrashitem .tc-tags-wrapper {\\n display:inline;\\n}\\n.kk-trashbin-viewtrashitem .tc-tiddler-body{\\n display:block;\\n}\\n\u003C/style>\"},\"$:/language/Buttons/Trashbin/Caption/Move\":{\"title\":\"$:/language/Buttons/Trashbin/Caption/Move\",\"created\":\"20200325181608623\",\"modified\":\"20200327192039481\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"trashbin\"},\"$:/language/Buttons/Trashbin/Caption/Recycle\":{\"title\":\"$:/language/Buttons/Trashbin/Caption/Recycle\",\"created\":\"20200327192303891\",\"modified\":\"20200327192322259\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"recycle\"},\"$:/language/Buttons/Trashbin/Hint/Move\":{\"title\":\"$:/language/Buttons/Trashbin/Hint/Move\",\"created\":\"20200325181718189\",\"modified\":\"20200327192226676\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"Move this tiddler to Trashbin\"},\"$:/language/Buttons/Trashbin/Hint/Recycle\":{\"title\":\"$:/language/Buttons/Trashbin/Hint/Recycle\",\"created\":\"20200327192150450\",\"modified\":\"20200327194553902\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"Recycle this tiddler from Trashbin\"}}}","type":"application/json","author":"Mohammad Rahmani","core-version":">= 5.1.22","description":"A trashbin mechanism for Tiddlywiki","list":"readme license history","modified":"20220418163633804","name":"Trashbin","plugin-type":"plugin","source":"https://github.com/kookma/TW-Trashbin","tags":"","title":"$:/plugins/kookma/trashbin","version":"1.2.2","revision":"0","bag":"default","stream-type":"default","parent":"New Tiddler 7"},
{"title":"$:/plugins/snowgoon88/edit-comptext","type":"application/json","text":"{\n \"tiddlers\": {\n \"$:/plugins/snowgoon88/edit-comptext/config\": {\n \"title\": \"$:/plugins/snowgoon88/edit-comptext/config\",\n \"type\": \"application/json\",\n \"text\": \"{\\n \\\"configuration\\\": {\\n \\\"caseSensitive\\\" : false,\\n \\\"maxMatch\\\" : 8,\\n \\\"minPatLength\\\" : 2,\\n \\\"triggerKeyCombination\\\" : \\\"^ \\\"\\n },\\n \\\"template\\\": [{\\n \\\"pattern\\\": \\\"[[\\\",\\n \\\"filter\\\": \\\"[all[tiddlers]!is[system]]\\\",\\n \\\"start\\\": \\\"[[\\\",\\n \\\"end\\\": \\\"]]\\\"\\n }\\n ]\\n}\\n\"\n },\n \"$:/plugins/snowgoon88/edit-comptext/edit-comptext.js\": {\n \"title\": \"$:/plugins/snowgoon88/edit-comptext/edit-comptext.js\",\n \"text\": \"/*\\\\\\ntitle: $:/plugins/snowgoon88/edit-comptext/edit-comptext.js\\ntype: application/javascript\\nmodule-type: widget\\n\\nTaken from original Edit-text widget\\nVersion 5.1.13 of TW5\\nAdd link-to-tiddler completion in framed.js and simple.js\\n\\nTODO : CHECK usefull, and particularly save_changes after every input ??\\nTODO : where should popupNode be created in the DOM ?\\nTODO : check that options are valid (numeric ?)\\nvar isNumeric = function(n) {\\n return !isNaN(parseFloat(n)) && isFinite(n);\\n};\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nvar editTextWidgetFactory = require(\\\"$:/core/modules/editor/factory.js\\\").editTextWidgetFactory,\\n\\tFramedCompEngine = require(\\\"$:/plugins/snowgoon88/edit-comptext/framed.js\\\").FramedCompEngine,\\n\\tSimpleCompEngine = require(\\\"$:/plugins/snowgoon88/edit-comptext/simple.js\\\").SimpleCompEngine;\\n\\nexports[\\\"edit-comptext\\\"] = editTextWidgetFactory(FramedCompEngine,SimpleCompEngine);\\n\\n})();\\n\",\n \"type\": \"application/javascript\",\n \"module-type\": \"widget\"\n },\n \"$:/plugins/snowgoon88/edit-comptext/examples\": {\n \"title\": \"$:/plugins/snowgoon88/edit-comptext/examples\",\n \"text\": \"The configuration file [[$:/plugins/snowgoon88/edit-comptext/config]] allow you to use the completion plugin for various usages. Here are some examples...\\n\\n!! Link Completion\\nThe basic and default usage. Completion is triggered by `[[`, the search is among all non-system tiddlers. When selected, the `title` of the tiddler is inserted in the text, surrounded by `[[` and `]]`. This gives the following Completion Template.\\n\\n\\n```\\n{\\n \\\"pattern\\\": \\\"[[\\\",\\n \\\"title\\\": \\\"[all[tiddlers]!is[system]]\\\",\\n \\\"start\\\": \\\"[[\\\",\\n \\\"end\\\": \\\"]]\\\"\\n}\\t \\n```\\n\\n\\n!! Special macro completion\\nI have a 'pnjin' macro that is invoked by `\u003C\u003Cpnjin \\\"TiddlerPNJName\\\">>` where 'TiddlerPNJName is a tiddler that hold data about a PNJ. I use tiddlywiki to organise my Role Playing Games campaigns. So, I want `\u003Cp` to trigger the completion. The search is among all non-system tiddlers tagged `PNJ` and, once selected, the title of the tiddler must be inserted surrouned by `\u003C\u003Cpnjin \\\\\\\"` and `\\\\\\\">>`. So...\\n\\n```\\n{\\n\\t\\\"pattern\\\": \\\"\u003Cp\\\",\\n \\t\\\"title\\\": \\\"[tag[PNJ]!is[system]]\\\",\\n \\t\\\"start\\\": \\\"\u003C\u003Cpnjin \\\\\\\"\\\",\\n \\t\\\"end\\\": \\\"\\\\\\\">>\\\"\\n}\\n```\\n\\n!! Insert some templates or stamp or snippets into text.\\nI frequently use some text pattern and I want to insert them easily. So, I could create several tiddlers, tagged '$:stamp' and in their body are the piece of texte I want to insert. The titles of these tiddlers always start with `$:/config/stamp/` (i.e. $:/config/stamp/macro, $:/config/stamp/list1, $:/config/stamp/list2). I want to trigger the completion by using `\u003C\u003C`, then I only want to chose among the last part of the titles of tiddlers tagged `$:stamp` so I use a mask (`$:/config/stamp/`) to only display the last part of the tiddlers title. When selectected, the `body` of the tiddler is inserted, with no surrounding strings. As a results, the Completion Template is (notice the `body` field):\\n\\n```\\n{\\n \\\"pattern\\\": \\\"\u003C\u003C\\\",\\n \\\"body\\\": \\\"[tag[$:stamp]]\\\",\\n \\\"mask\\\" : \\\"$:/config/stamp/\\\",\\n \\\"start\\\": \\\"\\\",\\n \\\"end\\\": \\\"\\\"\\n}\\n```\\n\\n!! And you ?\\nIf you have funny usages of completion, let me know. If you'd like to do something that is not yet possible, let me know...\\n\\nmail : snowgoon88(AT)gmail(DOT)com\"\n },\n \"$:/plugins/snowgoon88/edit-comptext/framed.js\": {\n \"text\": \"/*\\\\\\ntitle: $:/plugins/snowgoon88/edit-comptext/framed.js\\ntype: application/javascript\\nmodule-type: library\\n\\nTaken from $:/core/modules/editor/engines/framed.js\\nText editor engine based on a simple input or textarea within an iframe. This is done so that the selection is preserved even when clicking away from the textarea\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true,browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nvar HEIGHT_VALUE_TITLE = \\\"$:/config/TextEditor/EditorHeight/Height\\\";\\n\\n// Configuration tiddler\\nvar COMPLETION_OPTIONS = \\\"$:/plugins/snowgoon88/edit-comptext/config\\\";\\nvar Completion = require(\\\"$:/plugins/snowgoon88/edit-comptext/completion.js\\\").Completion;\\n\\t\\nfunction FramedCompEngine(options) {\\n //DEBUG console.log( \\\"==FramedCompEngine::creation\\\" );\\n\\t// Save our options\\n\\toptions = options || {};\\n\\tthis.widget = options.widget;\\n\\tthis.value = options.value;\\n\\tthis.parentNode = options.parentNode;\\n\\tthis.nextSibling = options.nextSibling;\\n\\n\\t// Completion\\n\\t// Load Completion configuration as JSON\\n this._configOptions = $tw.wiki.getTiddlerData( COMPLETION_OPTIONS, {} );\\n\\t\\n\\t// Create our hidden dummy text area for reading styles\\n\\tthis.dummyTextArea = this.widget.document.createElement(\\\"textarea\\\");\\n\\tif(this.widget.editClass) {\\n\\t\\tthis.dummyTextArea.className = this.widget.editClass;\\n\\t}\\n\\tthis.dummyTextArea.setAttribute(\\\"hidden\\\",\\\"true\\\");\\n\\tthis.parentNode.insertBefore(this.dummyTextArea,this.nextSibling);\\n\\tthis.widget.domNodes.push(this.dummyTextArea);\\n\\t// Create dummy popup for reading its styles\\n\\t//this._dummyCompletion = new Completion( this.widget, this.dummyTextArea, this._configOptions);\\n\\t//REMOVEthis._dummyCompletion.setAttribute(\\\"hidden\\\",\\\"true\\\");\\n\\t\\n\\t// Create the iframe\\n\\tthis.iframeNode = this.widget.document.createElement(\\\"iframe\\\");\\n\\tthis.parentNode.insertBefore(this.iframeNode,this.nextSibling);\\n\\tthis.iframeDoc = this.iframeNode.contentWindow.document;\\n\\t// (Firefox requires us to put some empty content in the iframe)\\n\\tthis.iframeDoc.open();\\n\\tthis.iframeDoc.write(\\\"\\\");\\n\\tthis.iframeDoc.close();\\n\\t// Style the iframe\\n\\tthis.iframeNode.className = this.dummyTextArea.className;\\n\\tthis.iframeNode.style.border = \\\"none\\\";\\n\\tthis.iframeNode.style.padding = \\\"0\\\";\\n\\tthis.iframeNode.style.resize = \\\"none\\\";\\n\\tthis.iframeDoc.body.style.margin = \\\"0\\\";\\n\\tthis.iframeDoc.body.style.padding = \\\"0\\\";\\n\\tthis.widget.domNodes.push(this.iframeNode);\\n\\t// Construct the textarea or input node\\n\\tvar tag = this.widget.editTag;\\n\\tif($tw.config.htmlUnsafeElements.indexOf(tag) !== -1) {\\n\\t\\ttag = \\\"input\\\";\\n\\t}\\n\\tthis.domNode = this.iframeDoc.createElement(tag);\\n\\t// Set the text\\n\\tif(this.widget.editTag === \\\"textarea\\\") {\\n\\t\\tthis.domNode.appendChild(this.iframeDoc.createTextNode(this.value));\\n\\t} else {\\n\\t\\tthis.domNode.value = this.value;\\n\\t}\\n\\t// Set the attributes\\n\\tif(this.widget.editType) {\\n\\t\\tthis.domNode.setAttribute(\\\"type\\\",this.widget.editType);\\n\\t}\\n\\tif(this.widget.editPlaceholder) {\\n\\t\\tthis.domNode.setAttribute(\\\"placeholder\\\",this.widget.editPlaceholder);\\n\\t}\\n\\tif(this.widget.editSize) {\\n\\t\\tthis.domNode.setAttribute(\\\"size\\\",this.widget.editSize);\\n\\t}\\n\\tif(this.widget.editRows) {\\n\\t\\tthis.domNode.setAttribute(\\\"rows\\\",this.widget.editRows);\\n\\t}\\n\\t// Copy the styles from the dummy textarea\\n\\tthis.copyStyles();\\n\\t// Add event listeners\\n\\t$tw.utils.addEventListeners(this.domNode,[\\n\\t\\t{name: \\\"input\\\",handlerObject: this,handlerMethod: \\\"handleInputEvent\\\"},\\n\\t\\t{name: \\\"keydown\\\",handlerObject: this.widget,handlerMethod: \\\"handleKeydownEvent\\\"}\\n\\t]);\\n\\t// Insert the element into the DOM\\n\\tthis.iframeDoc.body.appendChild(this.domNode);\\n\\n\\t// add Completion popup\\n this._completion = new Completion( this.widget, this.domNode, this._configOptions, this.dummyTextArea, this.iframeNode.offsetTop, this.iframeNode.offsetLeft );\\n\\t// print iframe offset\\n\\t//DEBUG console.log( \\\" __iframe.offsetLeft: \\\"+this.iframeNode.offsetLeft );\\n //DEBUG console.log( \\\" __iframe.offsetTop: \\\"+this.iframeNode.offsetTop );\\n \\n\\t// Copy all styles from dummyCompletion\\n\\t//$tw.utils.copyStyles(this._dummyCompletion._popNode, this._completion._popNode);\\n\\t// Override the ones that should not be set the same as the dummy textarea\\n\\t//this._completion._popNode.style.display = \\\"block\\\";\\n\\t//this._completion._popNode.style.width = \\\"100%\\\";\\n\\t//this._completion._popNode.style.margin = \\\"0\\\";\\n\\t// In Chrome setting -webkit-text-fill-color overrides the placeholder text colour\\n\\t//this._completion._popNode.style[\\\"-webkit-text-fill-color\\\"] = \\\"currentcolor\\\";\\n \\n}\\n\\n/*\\nCopy styles from the dummy text area to the textarea in the iframe\\n*/\\nFramedCompEngine.prototype.copyStyles = function() {\\n\\t// Copy all styles\\n\\t$tw.utils.copyStyles(this.dummyTextArea,this.domNode);\\n\\t// Override the ones that should not be set the same as the dummy textarea\\n\\tthis.domNode.style.display = \\\"block\\\";\\n\\tthis.domNode.style.width = \\\"100%\\\";\\n\\tthis.domNode.style.margin = \\\"0\\\";\\n\\t// In Chrome setting -webkit-text-fill-color overrides the placeholder text colour\\n\\tthis.domNode.style[\\\"-webkit-text-fill-color\\\"] = \\\"currentcolor\\\";\\n};\\n\\n/*\\nSet the text of the engine if it doesn't currently have focus\\n*/\\nFramedCompEngine.prototype.setText = function(text,type) {\\n\\tif(!this.domNode.isTiddlyWikiFakeDom) {\\n\\t\\tif(this.domNode.ownerDocument.activeElement !== this.domNode) {\\n\\t\\t\\tthis.domNode.value = text;\\n\\t\\t}\\n\\t\\t// Fix the height if needed\\n\\t\\tthis.fixHeight();\\n\\t}\\n};\\n\\n/*\\nGet the text of the engine\\n*/\\nFramedCompEngine.prototype.getText = function() {\\n\\treturn this.domNode.value;\\n};\\n\\n/*\\nFix the height of textarea to fit content\\n*/\\nFramedCompEngine.prototype.fixHeight = function() {\\n\\t// Make sure styles are updated\\n\\tthis.copyStyles();\\n\\t// Adjust height\\n\\tif(this.widget.editTag === \\\"textarea\\\") {\\n\\t\\tif(this.widget.editAutoHeight) {\\n\\t\\t\\tif(this.domNode && !this.domNode.isTiddlyWikiFakeDom) {\\n\\t\\t\\t\\tvar newHeight = $tw.utils.resizeTextAreaToFit(this.domNode,this.widget.editMinHeight);\\n\\t\\t\\t\\tthis.iframeNode.style.height = (newHeight + 14) + \\\"px\\\"; // +14 for the border on the textarea\\n\\t\\t\\t}\\n\\t\\t} else {\\n\\t\\t\\tvar fixedHeight = parseInt(this.widget.wiki.getTiddlerText(HEIGHT_VALUE_TITLE,\\\"400px\\\"),10);\\n\\t\\t\\tfixedHeight = Math.max(fixedHeight,20);\\n\\t\\t\\tthis.domNode.style.height = fixedHeight + \\\"px\\\";\\n\\t\\t\\tthis.iframeNode.style.height = (fixedHeight + 14) + \\\"px\\\";\\n\\t\\t}\\n\\t}\\n};\\n\\n/*\\nFocus the engine node\\n*/\\nFramedCompEngine.prototype.focus = function() {\\n\\tif(this.domNode.focus && this.domNode.select) {\\n\\t\\tthis.domNode.focus();\\n\\t\\tthis.domNode.select();\\n\\t}\\n};\\n\\n/*\\nHandle a dom \\\"input\\\" event which occurs when the text has changed\\n*/\\nFramedCompEngine.prototype.handleInputEvent = function(event) {\\n //DEBUG console.log( \\\"__framed.js::handleInputEvent\\\");\\n\\tthis.widget.saveChanges(this.getText());\\n\\tthis.fixHeight();\\n\\treturn true;\\n};\\n\\n/*\\nCreate a blank structure representing a text operation\\n*/\\nFramedCompEngine.prototype.createTextOperation = function() {\\n\\tvar operation = {\\n\\t\\ttext: this.domNode.value,\\n\\t\\tselStart: this.domNode.selectionStart,\\n\\t\\tselEnd: this.domNode.selectionEnd,\\n\\t\\tcutStart: null,\\n\\t\\tcutEnd: null,\\n\\t\\treplacement: null,\\n\\t\\tnewSelStart: null,\\n\\t\\tnewSelEnd: null\\n\\t};\\n\\toperation.selection = operation.text.substring(operation.selStart,operation.selEnd);\\n\\treturn operation;\\n};\\n\\n/*\\nExecute a text operation\\n*/\\nFramedCompEngine.prototype.executeTextOperation = function(operation) {\\n\\t// Perform the required changes to the text area and the underlying tiddler\\n\\tvar newText = operation.text;\\n\\tif(operation.replacement !== null) {\\n\\t\\tnewText = operation.text.substring(0,operation.cutStart) + operation.replacement + operation.text.substring(operation.cutEnd);\\n\\t\\t// Attempt to use a execCommand to modify the value of the control\\n\\t\\tif(this.iframeDoc.queryCommandSupported(\\\"insertText\\\") && this.iframeDoc.queryCommandSupported(\\\"delete\\\") && !$tw.browser.isFirefox) {\\n\\t\\t\\tthis.domNode.focus();\\n\\t\\t\\tthis.domNode.setSelectionRange(operation.cutStart,operation.cutEnd);\\n\\t\\t\\tif(operation.replacement === \\\"\\\") {\\n\\t\\t\\t\\tthis.iframeDoc.execCommand(\\\"delete\\\",false,\\\"\\\");\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tthis.iframeDoc.execCommand(\\\"insertText\\\",false,operation.replacement);\\n\\t\\t\\t}\\n\\t\\t} else {\\n\\t\\t\\tthis.domNode.value = newText;\\n\\t\\t}\\n\\t\\tthis.domNode.focus();\\n\\t\\tthis.domNode.setSelectionRange(operation.newSelStart,operation.newSelEnd);\\n\\t}\\n\\tthis.domNode.focus();\\n\\treturn newText;\\n};\\n\\nexports.FramedCompEngine = FramedCompEngine;\\n\\n})();\\n\",\n \"type\": \"application/javascript\",\n \"title\": \"$:/plugins/snowgoon88/edit-comptext/framed.js\",\n \"module-type\": \"library\"\n },\n \"$:/plugins/snowgoon88/edit-comptext/simple.js\": {\n \"text\": \"/*\\\\\\ntitle: $:/plugins/snowgoon88/edit-comptext/simple.js\\ntype: application/javascript\\nmodule-type: library\\n\\nTaken from $:/core/modules/editor/engines/simple.js\\nText editor engine based on a simple input or textarea tag\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nvar HEIGHT_VALUE_TITLE = \\\"$:/config/TextEditor/EditorHeight/Height\\\";\\n\\n// Configuration tiddler\\nvar COMPLETION_OPTIONS = \\\"$:/plugins/snowgoon88/edit-comptext/config\\\";\\nvar Completion = require(\\\"$:/plugins/snowgoon88/edit-comptext/completion.js\\\").Completion;\\n\\nfunction SimpleCompEngine(options) {\\n\\t// Save our options\\n\\toptions = options || {};\\n\\tthis.widget = options.widget;\\n\\tthis.value = options.value;\\n\\tthis.parentNode = options.parentNode;\\n\\tthis.nextSibling = options.nextSibling;\\n\\n // Completion\\n\\t// Load Completion configuration as JSON\\n this._configOptions = $tw.wiki.getTiddlerData( COMPLETION_OPTIONS, {} );\\n\\t\\n\\t// Construct the textarea or input node\\n\\tvar tag = this.widget.editTag;\\n\\tif($tw.config.htmlUnsafeElements.indexOf(tag) !== -1) {\\n\\t\\ttag = \\\"input\\\";\\n\\t}\\n\\tthis.domNode = this.widget.document.createElement(tag);\\n\\t// Set the text\\n\\tif(this.widget.editTag === \\\"textarea\\\") {\\n\\t\\tthis.domNode.appendChild(this.widget.document.createTextNode(this.value));\\n\\t} else {\\n\\t\\tthis.domNode.value = this.value;\\n\\t}\\n\\t// Set the attributes\\n\\tif(this.widget.editType) {\\n\\t\\tthis.domNode.setAttribute(\\\"type\\\",this.widget.editType);\\n\\t}\\n\\tif(this.widget.editPlaceholder) {\\n\\t\\tthis.domNode.setAttribute(\\\"placeholder\\\",this.widget.editPlaceholder);\\n\\t}\\n\\tif(this.widget.editSize) {\\n\\t\\tthis.domNode.setAttribute(\\\"size\\\",this.widget.editSize);\\n\\t}\\n\\tif(this.widget.editRows) {\\n\\t\\tthis.domNode.setAttribute(\\\"rows\\\",this.widget.editRows);\\n\\t}\\n\\tif(this.widget.editClass) {\\n\\t\\tthis.domNode.className = this.widget.editClass;\\n\\t}\\n\\t// Add an input event handler\\n\\t$tw.utils.addEventListeners(this.domNode,[\\n\\t\\t{name: \\\"focus\\\", handlerObject: this, handlerMethod: \\\"handleFocusEvent\\\"},\\n\\t\\t{name: \\\"input\\\", handlerObject: this, handlerMethod: \\\"handleInputEvent\\\"}\\n\\t]);\\n\\t// Insert the element into the DOM\\n\\tthis.parentNode.insertBefore(this.domNode,this.nextSibling);\\n\\tthis.widget.domNodes.push(this.domNode);\\n\\n\\t// add Completion popup\\n this._completion = new Completion( this.widget, this.domNode, this._configOptions );\\n}\\n\\n/*\\nSet the text of the engine if it doesn't currently have focus\\n*/\\nSimpleCompEngine.prototype.setText = function(text,type) {\\n\\tif(!this.domNode.isTiddlyWikiFakeDom) {\\n\\t\\tif(this.domNode.ownerDocument.activeElement !== this.domNode) {\\n\\t\\t\\tthis.domNode.value = text;\\n\\t\\t}\\n\\t\\t// Fix the height if needed\\n\\t\\tthis.fixHeight();\\n\\t}\\n};\\n\\n/*\\nGet the text of the engine\\n*/\\nSimpleCompEngine.prototype.getText = function() {\\n\\treturn this.domNode.value;\\n};\\n\\n/*\\nFix the height of textarea to fit content\\n*/\\nSimpleCompEngine.prototype.fixHeight = function() {\\n\\tif(this.widget.editTag === \\\"textarea\\\") {\\n\\t\\tif(this.widget.editAutoHeight) {\\n\\t\\t\\tif(this.domNode && !this.domNode.isTiddlyWikiFakeDom) {\\n\\t\\t\\t\\t$tw.utils.resizeTextAreaToFit(this.domNode,this.widget.editMinHeight);\\n\\t\\t\\t}\\n\\t\\t} else {\\n\\t\\t\\tvar fixedHeight = parseInt(this.widget.wiki.getTiddlerText(HEIGHT_VALUE_TITLE,\\\"400px\\\"),10);\\n\\t\\t\\tfixedHeight = Math.max(fixedHeight,20);\\n\\t\\t\\tthis.domNode.style.height = fixedHeight + \\\"px\\\";\\n\\t\\t}\\n\\t}\\n};\\n\\n/*\\nFocus the engine node\\n*/\\nSimpleCompEngine.prototype.focus = function() {\\n\\tif(this.domNode.focus && this.domNode.select) {\\n\\t\\tthis.domNode.focus();\\n\\t\\tthis.domNode.select();\\n\\t}\\n};\\n\\n/*\\nHandle a dom \\\"input\\\" event which occurs when the text has changed\\n*/\\nSimpleCompEngine.prototype.handleInputEvent = function(event) {\\n\\tconsole.log( \\\"__simple.js::handleInputEvent\\\");\\n\\tthis.widget.saveChanges(this.getText());\\n\\tthis.fixHeight();\\n\\treturn true;\\n};\\n\\n/*\\nHandle a dom \\\"focus\\\" event\\n*/\\nSimpleCompEngine.prototype.handleFocusEvent = function(event) {\\n\\tif(this.widget.editFocusPopup) {\\n\\t\\t$tw.popup.triggerPopup({\\n\\t\\t\\tdomNode: this.domNode,\\n\\t\\t\\ttitle: this.widget.editFocusPopup,\\n\\t\\t\\twiki: this.widget.wiki,\\n\\t\\t\\tforce: true\\n\\t\\t});\\n\\t}\\n\\treturn true;\\n};\\n\\n/*\\nCreate a blank structure representing a text operation\\n*/\\nSimpleCompEngine.prototype.createTextOperation = function() {\\n\\treturn null;\\n};\\n\\n/*\\nExecute a text operation\\n*/\\nSimpleCompEngine.prototype.executeTextOperation = function(operation) {\\n};\\n\\nexports.SimpleCompEngine = SimpleCompEngine;\\n\\n})();\\n\",\n \"type\": \"application/javascript\",\n \"title\": \"$:/plugins/snowgoon88/edit-comptext/simple.js\",\n \"module-type\": \"library\"\n },\n \"$:/plugins/snowgoon88/edit-comptext/cursor-position.js\": {\n \"text\": \"/*\\\\\\nModule that compute the pixel position of the cursor of a text\\nements.\\n\\nTaken from https://github.com/component/textarea-caret-position\\n\\n(as https://github.com/kir/js_cursor_position is not updated any more)\\n\\\\*/\\n// Fonction anonyme executée immediatement\\n( function(){\\n \\n// The properties that we copy into a mirrored div.\\n// Note that some browsers, such as Firefox,\\n// do not concatenate properties, i.e. padding-top, bottom etc. -> padding,\\n// so we have to do every single property specifically.\\nvar properties = [\\n 'direction', // RTL support\\n 'boxSizing',\\n 'width', // on Chrome and IE, exclude the scrollbar, so the mirror div wraps exactly as the textarea does\\n 'height',\\n 'overflowX',\\n 'overflowY', // copy the scrollbar for IE\\n\\n 'borderTopWidth',\\n 'borderRightWidth',\\n 'borderBottomWidth',\\n 'borderLeftWidth',\\n 'borderStyle',\\n\\n 'paddingTop',\\n 'paddingRight',\\n 'paddingBottom',\\n 'paddingLeft',\\n\\n // https://developer.mozilla.org/en-US/docs/Web/CSS/font\\n 'fontStyle',\\n 'fontVariant',\\n 'fontWeight',\\n 'fontStretch',\\n 'fontSize',\\n 'fontSizeAdjust',\\n 'lineHeight',\\n 'fontFamily',\\n\\n 'textAlign',\\n 'textTransform',\\n 'textIndent',\\n 'textDecoration', // might not make a difference, but better be safe\\n\\n 'letterSpacing',\\n 'wordSpacing',\\n\\n 'tabSize',\\n 'MozTabSize'\\n\\n];\\nvar isFirefox = false;\\nif($tw.browser) {\\n isFirefox = window.mozInnerScreenX != null;\\n}\\n\\nfunction getCaretCoordinates(element, position, options) {\\n\\n var debug = options && options.debug || false;\\n if (debug) {\\n var el = document.querySelector('#input-textarea-caret-position-mirror-div');\\n if ( el ) { el.parentNode.removeChild(el); }\\n }\\n\\n // mirrored div\\n var div = document.createElement('div');\\n div.id = 'input-textarea-caret-position-mirror-div';\\n document.body.appendChild(div);\\n\\n var style = div.style;\\n var computed;\\n if($tw.browser) {\\n computed = window.getComputedStyle? getComputedStyle(element) : element.currentStyle; // currentStyle for IE \u003C 9\\n } \\n else {\\n computed = element.currentStyle;\\n }\\n \\n\\n // default textarea styles\\n style.whiteSpace = 'pre-wrap';\\n if (element.nodeName !== 'INPUT')\\n style.wordWrap = 'break-word'; // only for textarea-s\\n\\n // position off-screen\\n style.position = 'absolute'; // required to return coordinates properly\\n if (!debug)\\n style.visibility = 'hidden'; // not 'display: none' because we want rendering\\n\\n // transfer the element's properties to the div\\n properties.forEach(function (prop) {\\n style[prop] = computed[prop];\\n });\\n\\n if (isFirefox) {\\n // Firefox lies about the overflow property for textareas: https://bugzilla.mozilla.org/show_bug.cgi?id=984275\\n if (element.scrollHeight > parseInt(computed.height))\\n style.overflowY = 'scroll';\\n } else {\\n style.overflow = 'hidden'; // for Chrome to not render a scrollbar; IE keeps overflowY = 'scroll'\\n }\\n\\n div.textContent = element.value.substring(0, position);\\n // the second special handling for input type=\\\"text\\\" vs textarea: spaces need to be replaced with non-breaking spaces - http://stackoverflow.com/a/13402035/1269037\\n if (element.nodeName === 'INPUT')\\n div.textContent = div.textContent.replace(/\\\\s/g, \\\"\\\\u00a0\\\");\\n\\n var span = document.createElement('span');\\n // Wrapping must be replicated *exactly*, including when a long word gets\\n // onto the next line, with whitespace at the end of the line before (#7).\\n // The *only* reliable way to do that is to copy the *entire* rest of the\\n // textarea's content into the \u003Cspan> created at the caret position.\\n // for inputs, just '.' would be enough, but why bother?\\n span.textContent = element.value.substring(position) || '.'; // || because a completely empty faux span doesn't render at all\\n div.appendChild(span);\\n\\n var coordinates = {\\n top: span.offsetTop + parseInt(computed['borderTopWidth']),\\n left: span.offsetLeft + parseInt(computed['borderLeftWidth'])\\n };\\n\\n if (debug) {\\n span.style.backgroundColor = '#aaa';\\n } else {\\n document.body.removeChild(div);\\n }\\n\\n return coordinates;\\n}\\n\\n// Exporte as a module of node.js otherwise set as global\\nif (typeof module != \\\"undefined\\\" && typeof module.exports != \\\"undefined\\\") {\\n module.exports = getCaretCoordinates;\\n} else {\\n window.getCaretCoordinates = getCaretCoordinates;\\n}\\n\\n})();\\n\",\n \"type\": \"application/javascript\",\n \"title\": \"$:/plugins/snowgoon88/edit-comptext/cursor-position.js\",\n \"module-type\": \"library\"\n },\n \"$:/plugins/snowgoon88/edit-comptext/completion.js\": {\n \"text\": \"/*\\\\\\ntitle: $:/plugins/snowgoon88/edit-comptext/completion.js\\ntype: application/javascript\\nmodule-type: library\\n\\nTry to make self-contained completion module.\\n\\nTo use this 'module', you need a `widget` with a kind of `editarea` node.\\nI do not know the exacte prerequisites of this editarea node for the module to\\nwork, but mostly one should be able to attach the following `eventHandler` to\\nit:\\n - input\\n - keydown\\n - keypress\\n - keyup\\nThe `widget` is needed because I use:\\n - widget.document\\n - widget.wiki.filterTiddlers(...)\\n\\nFrom the Widget, once you have a proper editarea, you just have to call\\n - var completion = new Completion( theWidget, theEditAreaNode, configObject);\\nwhere `configObject` is expected to have the following fields. if a field is missing, a default value will be given.\\nOne can have many `elements' in the template array.\\n\\n{\\n \\\"configuration\\\": {\\n \\\"caseSensitive\\\" : false,\\n \\\"maxMatch\\\" : 8,\\n \\\"minPatLength\\\" : 2,\\n \\\"triggerKeyCombination\\\" : \\\"^ \\\"\\n },\\n \\\"template\\\": [{\\n \\\"pattern\\\": \\\"[[\\\",\\n \\\"filter\\\": \\\"[all[tiddlers]!is[system]]\\\",\\n \\\"start\\\": \\\"[[\\\",\\n \\\"end\\\": \\\"]]\\\"\\n }\\n ]\\n}\\n\\nTODO : CHECK if needed\\n\\\\*/\\n\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\n// To compute pixel coordinates of cursor\\nvar getCaretCoordinates = require(\\\"$:/plugins/snowgoon88/edit-comptext/cursor-position.js\\\");\\n\\n/** Default Completion Attributes */\\nvar DEFATT = { maxMatch: 5, minPatLength: 2, caseSensitive: false, triggerKeyCombination: \\\"^ \\\" };\\n\\n/** \\n * Struct for generic Completion Templates.\\n * \u003Cul>\\n * \u003Cli>pat : pattern searched for.\u003C/li>\\n * \u003Cli>filter : filter operation used to find the list of completion options\u003C/li>\\n * \u003Cli>mask: replaced by \\\"\\\" when presenting completion options\u003C/li>\\n * \u003C/ul>\\n */\\nvar Template = function( pat, filter, mask, field, start, end ) {\\n this.pat = pat;\\n this.filter = filter;\\n this.mask = \\\"^\\\"+regExpEscape(mask);\\n this.field = field;\\n this.start = start;\\n this.end = end;\\n this.pos = 0;\\n};\\n/**\\n * Struct for storing completion options, as we need to memorise \\n * the titles of the tiddlers when masked and when body must be displayed.\\n */\\nvar OptCompletion = function( title, str ) {\\n this.title = title;\\n this.str = str;\\n};\\n\\nvar keyMatchGenerator = function(combination) {\\n\\tlet singleMatchGenerator = function(character) {\\n\\t\\tif (character === '^') {\\n\\t\\t\\treturn event => event.ctrlKey;\\n\\t\\t}\\n\\t\\telse if (character === '+') {\\n\\t\\t\\treturn event => event.shiftKey;\\n\\t\\t}\\n\\t\\telse if (character === '!') {\\n\\t\\t\\treturn event => event.altKey;\\n\\t\\t}\\n\\t\\telse {\\n\\t\\t\\treturn event => (event.keyCode || event.which) === character.charCodeAt(0);\\n\\t\\t}\\n\\t};\\n\\n\\tlet matchers = [];\\n\\tfor (let i = 0; i \u003C combination.length; i++) {\\n\\t\\tmatchers.push(singleMatchGenerator(combination[i]));\\n\\t}\\n\\n\\treturn event => {\\n\\t\\tfor (let i = 0; i \u003C matchers.length; i++) {\\n\\t\\t\\tif (!matchers[i](event)) {\\n\\t\\t\\t\\treturn false;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\treturn true;\\n\\t};\\n};\\n\\n/**\\n * Widget is needed in creating popupNode.\\n * - widget.document\\n * - widget.wiki.filterTiddlers(...)\\n * - sibling : where to create the popup in the DOM.\\n */\\n\\tvar Completion = function( editWidget, areaNode, param, sibling, offTop, offLeft ) {\\n\\tconsole.log( \\\"==Completion::creation\\\" );\\n\\n // About underlying Widget\\n this._widget = editWidget;\\n\\tthis._areaNode = areaNode;\\n\\tthis._sibling = (typeof sibling !== 'undefined') ? sibling : this._areaNode;\\n\\tthis._offTop = (typeof offTop !== 'undefined') ? offTop : 0;\\n\\tthis._offLeft = (typeof offLeft !== 'undefined') ? offLeft : 0;\\t\\n\\t\\t\\n // Completions attributes\\n /** State */\\n this._state = \\\"VOID\\\";\\n this._template = undefined;\\n /** Best matches */\\n this._bestMatches = []; // An array of OptCompletion\\n this._idxChoice = -1;\\n /** Param */\\n // maximum nb of match displayed\\n this._maxMatch = param.configuration.maxMatch || DEFATT.maxMatch; \\n this._minPatLength = param.configuration.minPatLength || DEFATT.minPatLength;\\n this._caseSensitive= param.configuration.caseSensitive || DEFATT.caseSensitive;\\n this._triggerKeyMatcher = keyMatchGenerator(param.configuration.triggerKeyCombination || DEFATT.triggerKeyCombination);\\n /** Input information */\\n this._lastChar = \\\"\\\";\\n this._hasInput = false;\\n /** List of Completion Templates */\\n this._listTemp = [];\\n \\n // Read templates from Param\\n if( param.template ) {\\n \\tvar idT;\\n \\tfor( idT=0; idT\u003Cparam.template.length; idT++ ) {\\n \\t var temp = param.template[idT];\\n\\t // field 'body' ou 'title' (default)\\n\\t if( temp.body ) {\\t\\t\\n \\t\\tthis._listTemp.push( \\n \\t\\t new Template( temp.pattern, temp.body,\\n\\t\\t\\t\\t temp.mask ? temp.mask : \\\"\\\",\\n\\t\\t\\t\\t \\\"body\\\",\\n \\t\\t\\t\\t temp.start, temp.end )\\n \\t\\t);\\n\\t }\\n\\t else {\\n \\t\\tthis._listTemp.push( \\n \\t\\t new Template( temp.pattern, \\n\\t\\t\\t\\t temp.title ? temp.title : temp.filter,\\n\\t\\t\\t\\t temp.mask ? temp.mask : \\\"\\\",\\n\\t\\t\\t\\t \\\"title\\\",\\n \\t\\t\\t\\t temp.start, temp.end )\\n \\t\\t);\\n\\t }\\n\\t //DEBUG temp = this._listTemp[this._listTemp.length-1];\\n\\t //DEBUG console.log( \\\"__CONF : \\\"+temp.pattern+\\\":\\\"+temp.filter+\\\":\\\"+temp.mask+\\\":\\\"+temp.field+\\\":\\\"+temp.start+\\\":\\\"+temp.end );\\n \\t}\\n }\\n // or defaut template\\n else {\\n \\tthis._listTemp = [\\n \\t new Template( \\\"[[\\\", \\\"[all[tiddlers]!is[system]]\\\", \\n\\t\\t\\t \\\"\\\", \\\"title\\\",\\n\\t\\t\\t \\\"[[\\\", \\\"]]\\\" )\\n \\t];\\n }\\n // Create Popup\\n\\t//this._popNode = createPopup(this._widget, this._areaNode );\\n\\tthis._popNode = createPopup(this._widget, this._sibling );\\t\\n \\n // Listen to the Keyboard\\n $tw.utils.addEventListeners( this._areaNode,[\\n\\t{name: \\\"input\\\", handlerObject: this, handlerMethod: \\\"handleInput\\\"},\\n\\t{name: \\\"keydown\\\", handlerObject: this, handlerMethod: \\\"handleKeydown\\\"},\\n\\t{name: \\\"keypress\\\", handlerObject: this, handlerMethod: \\\"handleKeypress\\\"},\\n \\t{name: \\\"keyup\\\", handlerObject: this, handlerMethod: \\\"handleKeyup\\\"}\\n ]);\\n \\n /** \\n * Find the bestMatches among listChoice with given pattern\\n * @param listChoice : array of String\\n * @change : this._bestMatches => array of OptCompletion\\n */\\n this._findBestMatches = function( listChoice, pattern, nbMax) {\\n\\t// regexp search pattern, case sensitive\\n\\tvar flagSearch = this._caseSensitive ? \\\"\\\" : \\\"i\\\" ;\\n\\tvar regpat = RegExp( regExpEscape(pattern), flagSearch );\\n\\tvar regpat_start = RegExp( \\\"^\\\"+regExpEscape(pattern), flagSearch );\\n\\tvar regMask = RegExp( this._template.mask ? this._template.mask : \\\"\\\",\\\"\\\");\\n\\tvar nbMatch = 0;\\n\\t// nbMax set to _maxMatch if no value given\\n\\tnbMax = nbMax !== undefined ? nbMax : this._maxMatch;\\n\\n\\t//DEBUG console.log( \\\"__FIND masked=\\\"+regMask+\\\" regPat=\\\"+regpat);\\n\\n\\tthis._bestMatches= [];\\n\\tvar otherMatches = [];\\n\\t// We test every possible choice\\n\\tfor( var i=0; i\u003C listChoice.length; i++ ) {\\n\\t // apply mask over potential choice\\n\\t var maskedChoice = listChoice[i].replace( regMask, \\\"\\\");\\n\\t // Test first if pattern is found at START of the maskedChoice\\n\\t // THEN added to BestMatches\\n \\t if( regpat_start.test( maskedChoice )) {\\n\\t\\tif (nbMatch >= nbMax) {\\n\\t\\t this._bestMatches.push( new OptCompletion(\\\"\\\",\\\"...\\\") );\\n\\t\\t return;\\n\\t\\t} else {\\n\\t\\t this._bestMatches.push( new OptCompletion(listChoice[i],maskedChoice) );\\n\\t\\t nbMatch += 1;\\n\\t\\t}\\n\\t }\\n\\t // then if pattern is found WITHIN the maskedChoice\\n\\t // added AFTER the choices that starts with pattern\\n\\t else if( regpat.test( maskedChoice ) ) {\\n\\t\\tif (nbMatch >= nbMax) {\\n\\t\\t // add all otherMatches to _bestMatches\\n\\t\\t this._bestMatches.push( new OptCompletion(\\\"\\\",\\\"\u003Chr>\\\") ) ; //separator\\n\\t\\t this._bestMatches = this._bestMatches.concat( otherMatches );\\n\\t\\t this._bestMatches.push( new OptCompletion(\\\"\\\",\\\"...\\\") );\\n\\t\\t return;\\n\\t\\t} else {\\n\\t\\t otherMatches.push( new OptCompletion(listChoice[i],maskedChoice) );\\n\\t\\t nbMatch += 1;\\n\\t\\t}\\n\\t }\\n\\t}\\n\\t// Here, must add the otherMatches\\n\\tthis._bestMatches.push( new OptCompletion(\\\"\\\",\\\"\u003Chr>\\\") ) ; //separator\\n\\tthis._bestMatches = this._bestMatches.concat( otherMatches );\\n };\\n /**\\n * Change Selected Status of Items\\n */\\n this._next = function (node) {\\n\\tvar count = node.children.length;\\n\\t//DEBUG console.log( \\\"__NEXT: co=\\\"+count+\\\" nbMatch=\\\"+this._bestMatches.length);\\n\\tif( this._bestMatches.length > 0 ) \\n\\t this._goto( node, this._idxChoice \u003C count - 1 ? this._idxChoice + 1 : -1);\\n\\t//DEBUG this._logStatus( \\\"NexT\\\" );\\n };\\n this._previous = function (node) {\\n\\tvar count = node.children.length;\\n\\tvar selected = this._idxChoice > -1;\\n\\t//DEBUG console.log( \\\"__PREV: co=\\\"+count+\\\" nbMatch=\\\"+this._bestMatches.length);\\n\\tif( this._bestMatches.length > 0 ) \\n\\t this._goto( node, selected ? this._idxChoice - 1 : count - 1);\\n\\t//DEBUG this._logStatus( \\\"PreV\\\" );\\n };\\n // Should not be used, highlights specific item without any checks!\\n this._goto = function (node, idx) {\\n\\tvar lis = node.children;\\n\\tvar selected = this._idxChoice > -1;\\n\\tif (selected) {\\n\\t lis[this._idxChoice].setAttribute(\\\"patt-selected\\\", \\\"false\\\");\\n\\t}\\n\\n\\tthis._idxChoice = idx;\\n \\n\\tif (idx > -1 && lis.length > 0) {\\n\\t lis[idx].setAttribute(\\\"patt-selected\\\", \\\"true\\\");\\n\\t}\\n };\\n /**\\n * Abort pattern and undisplay.\\n */\\n this._abortPattern = function (displayNode) {\\n\\tthis._state = \\\"VOID\\\";\\n\\tthis._bestChoices = [];\\n\\tthis._idxChoice = -1;\\n\\tthis._undisplay( displayNode );\\n\\tthis._template = undefined;\\n };\\n /**\\n * Display popupNode at the cursor position in areaNode.\\n */\\n this._display = function( areaNode, popupNode ) {\\n\\tif ( popupNode.style.display == 'none' ) {\\n\\t // Must get coordinate\\n\\t // Cursor coordinates within area + area coordinates + scroll\\n var coord = getCaretCoordinates(areaNode, areaNode.selectionEnd);\\n var styleSize = getComputedStyle(areaNode).getPropertyValue('font-size');\\n var fontSize = parseFloat(styleSize); \\n\\t\\t\\n\\t popupNode.style.left = (this._offLeft+areaNode.offsetLeft-areaNode.scrollLeft+coord.left) + 'px';\\n\\t popupNode.style.top = (this._offTop+areaNode.offsetTop-areaNode.scrollTop+coord.top+fontSize*2) + 'px';\\n\\t popupNode.style.display = 'block';\\n\\t}\\n };\\n /**\\n * Undisplay someNode\\n */\\n this._undisplay = function( displayNode ) {\\n\\tif ( displayNode.style.display != 'none' ) {\\n\\t displayNode.style.display = 'none';\\n\\t}\\n };\\n\\n /**\\n * Used for debug\\n */\\n this._logStatus = function(msg) {\\n\\tconsole.log( \\\"__STATUS: \\\"+this._state+\\\":-\\\"+msg+\\\"- idx=\\\"+this._idxChoice );\\n };\\n\\n};\\n// **************************************************************************\\n// ******************************************************************eventCbk\\n// **************************************************************************\\n/**\\n * Disable the *effects* of ENTER / UP / DOWN / ESC when needed.\\n * Set _hasInput to false.\\n */\\nCompletion.prototype.handleKeydown = function(event) {\\n // key \\n var key = event.keyCode;\\n this._hasInput = false;\\n \\n //DEBUG console.log( \\\"__KEYDOWN (\\\"+key+\\\") hasI=\\\"+this._hasInput);\\n \\n // ENTER while selecting\\n if( (this._state === \\\"PATTERN\\\" || this._state === \\\"SELECT\\\") && key === 13 ) {\\n \\tevent.preventDefault();\\n \\tevent.stopPropagation();\\n }\\n // ESC while selecting\\n if( (this._state === \\\"PATTERN\\\" || this._state === \\\"SELECT\\\") && key === 27 ) {\\n \\tevent.preventDefault();\\n \\tevent.stopPropagation();\\n }\\n // UP/DOWN while a pattern is extracted\\n if( (key===38 || key===40) && \\n\\t(this._state === \\\"PATTERN\\\" || this._state === \\\"SELECT\\\") ) {\\n\\tevent.preventDefault();\\n }\\n};\\n/**\\n * Means that something has been added/deleted => set _hasInput\\n */\\nCompletion.prototype.handleInput = function(event) {\\n this._hasInput = true;\\n //DEBUG console.log( \\\"__INPUT hasI=\\\"+this._hasInput );\\n};\\n\\t\\n/**\\n * Set _lastChar, detects CTRL+SPACE.\\n */\\nCompletion.prototype.handleKeypress = function(event) {\\n var curPos = this._areaNode.selectionStart; // cursor position\\n var val = this._areaNode.value; // text in the area\\n // key \\n var key = event.keyCode || event.which;\\n\\t\\n this._lastChar = String.fromCharCode(key);\\n //DEBUG console.log( \\\"__KEYPRESS (\\\"+key+\\\") hasI=\\\"+this._hasInput+\\\" char=\\\"+this._lastChar );\\n //DEBUG this._logStatus( \\\"KEYPRESS\\\" );\\n \\n // Detect Ctrl+Space\\n if( this._triggerKeyMatcher(event) && this._state === \\\"VOID\\\" ) {\\n\\t//Find a proper Template\\n\\t// first from which we can extract a pattern\\n\\tif( this._template === undefined ) {\\n\\t //DEBUG console.log(\\\"__SPACE : find a Template\\\" );\\n\\t var idT, res;\\n\\t for( idT=0; idT \u003C this._listTemp.length; idT++ ) {\\n\\t\\tres = extractPattern( val, curPos, this._listTemp[idT] );\\n\\t\\t//DEBUG console.log(\\\" t=\\\"+this._listTemp[idT].pat+\\\" res=\\\"+res);\\n\\t\\t// res is not undefined => good template candidate\\n\\t\\tif( res ) {\\n\\t\\t this._template = this._listTemp[idT];\\n\\t\\t this._state = \\\"PATTERN\\\";\\n\\t\\t break;\\n\\t\\t}\\n\\t }\\n\\t}\\n\\telse {\\n\\t //DEBUG console.log(\\\"__SPACE : already a template\\\" );\\n\\t this._state = \\\"PATTERN\\\";\\n\\t}\\n }\\n};\\n/**\\n * ESC -> abort; \\n * Detect [ -> VOID switch to _state=PATTERN\\n * PATTERN || SELECT : ENTER -> insertText\\n * UP/DOWN -> previous/next\\n * pattern.length > _minPatternLength -> display \\n */\\nCompletion.prototype.handleKeyup = function(event) {\\n var curPos = this._areaNode.selectionStart; // cursor position\\n var val = this._areaNode.value; // text in the area\\n // key a\\n var key = event.keyCode;\\n \\n //DEBUG console.log( \\\"__KEYUP (\\\"+key+\\\") hasI=\\\"+this._hasInput );\\n \\n // ESC\\n if( key === 27 ) {\\n\\tthis._abortPattern( this._popNode );\\n\\t//DEBUG this._logStatus( \\\"\\\" );\\n }\\n // Check for every template\\n if( this._hasInput && this._state === \\\"VOID\\\" ) {\\n\\t// check every template's pattern\\n\\tvar idT, template;\\n\\tfor( idT=0; idT \u003C this._listTemp.length; idT++ ) {\\n\\t template = this._listTemp[idT];\\n\\t if( this._lastChar === template.pat[template.pos] ) {\\n\\t\\ttemplate.pos += 1;\\n\\t\\t//DEBUG console.log( \\\"__CHECK : pat=\\\"+template.pat+\\\" pos=\\\"+template.pos );\\n\\t\\t// Pattern totaly matched ?\\n\\t\\tif( template.pos === template.pat.length ) {\\n\\t\\t //DEBUG console.log( \\\"__CHECK => found \\\"+template.pat );\\n\\t\\t this._state = \\\"PATTERN\\\";\\n\\t\\t this._template = template;\\n\\t\\t \\n\\t\\t break; // get out of loop\\n\\t\\t}\\n\\t }\\n\\t else {\\n\\t\\ttemplate.pos = 0;\\n\\t\\t//DEBUG console.log( \\\"__CHECK : pat=\\\"+template.pat+\\\" pos=\\\"+template.pos );\\n\\t }\\n\\t}\\n }\\n // a pattern\\n else if( this._state === \\\"PATTERN\\\" || this._state === \\\"SELECT\\\" ) {\\n\\t// Pattern below cursor : undefined if no pattern\\n\\tvar pattern = extractPattern( val, curPos, this._template );\\n\\tif( key === 13 ) { // ENTER\\n\\t //DEBUG console.log( \\\"KEY : Enter\\\" );\\n \\t // Choice made in the displayNode ?\\n \\t var selected = this._idxChoice > -1 && this._idxChoice !== this._maxMatch;\\n \\t //DEBUG console.log( \\\" > sel=\\\"+selected+\\\" len=\\\"+this._bestChoices.length );\\n \\t if( selected ) {\\n \\t\\t//DEBUG console.log( \\\" > selected\\\" );\\n\\t\\tvar temp = this._bestMatches[this._idxChoice];\\n\\t\\tvar str = temp.str;\\n\\t\\tif( this._template.field === \\\"body\\\" ) {\\n\\t\\t str = $tw.wiki.getTiddlerText( temp.title );\\n\\t\\t}\\n \\t\\tinsertInto( this._areaNode,\\n\\t\\t\\t str,\\n\\t\\t\\t pattern.start, curPos, this._template );\\n\\t\\t// save this new content\\n\\t\\tthis._widget.saveChanges( this._areaNode.value );\\n\\t }\\n\\t // otherwise take the first choice (if exists)\\n\\t else if( this._bestMatches.length > 0 ) {\\n \\t\\t//DEBUG console.log( \\\" > take first one\\\" );\\n\\t\\tvar temp = this._bestMatches[0];\\n\\t\\tvar str = temp.str;\\n\\t\\tif( this._template.field === \\\"body\\\" ) {\\n\\t\\t str = $tw.wiki.getTiddlerText( temp.title );\\n\\t\\t}\\n \\t\\tinsertInto( this._areaNode,\\n\\t\\t\\t str,\\n\\t\\t\\t pattern.start, curPos, this._template );\\n\\t\\t// save this new content\\n\\t\\tthis._widget.saveChanges( this._areaNode.value );\\n\\t }\\n\\t this._abortPattern( this._popNode );\\n\\t\\t//DEBUG this._logStatus( \\\"\\\" );\\n \\t }\\n\\t else if( key === 38 && this._hasInput === false) { // up\\n\\t\\tthis._state = \\\"SELECT\\\";\\n \\t\\tevent.preventDefault();\\n \\t\\tthis._previous( this._popNode );\\n\\t\\t//DEBUG this._logStatus( pattern.text );\\n \\t\\t//event.stopPropagation();\\n \\t }\\n \\t else if( key === 40 && this._hasInput === false) { // down\\n\\t\\tthis._state = \\\"SELECT\\\";\\n \\t\\tevent.preventDefault();\\n \\t\\tthis._next( this._popNode );\\n\\t\\t//DEBUG this._logStatus( pattern.text );\\n \\t\\t//event.stopPropagation();\\n \\t }\\n \\t else if( pattern ) { // pattern changed by keypressed\\n\\t\\tthis._idxChoice = -1;\\n \\t\\t// log\\n\\t\\t//DEBUG this._logStatus( pattern.text );\\n \\t\\t// Popup with choices if pattern at least minPatLength letters long\\n\\t\\tif( pattern.text.length > (this._minPatLength-1) ) {\\n\\t\\t // compute listOptions from templateFilter\\n\\t\\t var allOptions;\\n\\t\\t if( this._template )\\n\\t\\t\\tallOptions = this._widget.wiki.filterTiddlers( this._template.filter );\\n\\t\\t else\\n\\t\\t\\tallOptions = this._widget.wiki.filterTiddlers(\\\"[all[tiddlers]]\\\");\\n\\t\\t this._findBestMatches( allOptions, pattern.text );\\n \\t\\t this._popNode.innerHTML = \\\"\\\";\\n \\t\\t //console.log( \\\"BC \\\"+ this._pattern + \\\" => \\\" + choice );\\n \\t\\t if (this._bestMatches.length > 0) {\\n\\t\\t\\tfor( var i=0; i\u003Cthis._bestMatches.length; i++) {\\n \\t\\t\\t this._popNode.appendChild( \\n\\t\\t\\t\\titemHTML(this._bestMatches[i].str,\\n\\t\\t\\t\\t\\t pattern.text));\\n \\t\\t\\t}\\n\\t\\t\\tthis._display( this._areaNode, this._popNode );\\t\\t\\t\\n \\t\\t }\\n\\t\\t else { // no matches\\n\\t\\t\\tthis._state = \\\"PATTERN\\\";\\n\\t\\t\\tthis._undisplay( this._popNode );\\n\\t\\t }\\n\\t\\t}\\n \\t }\\n\\t else { // no pattern detected\\n\\t\\tthis._abortPattern( this._popNode );\\n\\t }\\n\\t}\\n\\t// to ensure that one MUST add an input (through onInput())\\n\\tthis._hasInput = false;\\n};\\n// **************************************************************************\\n// ******************************************************** private functions\\n// **************************************************************************\\n/**\\n * Create popup element.\\n */\\nvar createPopup = function( widget, node ) {\\n // Insert a special \\\"div\\\" element for poping up\\n // Its 'display' property in 'style' control its visibility\\n var popupNode = widget.document.createElement(\\\"div\\\");\\n popupNode.setAttribute( \\\"style\\\", \\\"display:none; position: absolute;\\\");\\n popupNode.className = \\\"tc-block-dropdown ect-block-dropdown\\\";\\n // Insert the element into the DOM\\n node.parentNode.insertBefore(popupNode,node.nextSibling);\\n //CHECK the domNodes is a attribute of Widget [widget.js]\\n //CHECK this.domNodes.push(popupNode);\\n \\n return popupNode;\\n};\\n/**\\n * Extract Pattern from text at a given position.\\n *\\n * Between previous template.pat (or '[[') and pos\\n * \\n * If no pattern -> undefined\\n */\\nvar extractPattern = function( text, pos, template ) {\\n // Detect previous and next ]]=>STOP or [[=>START\\n var sPat = template.pat ? template.pat : '[[';\\n var pos_prevOpen = text.lastIndexOf( sPat, pos );\\n var ePat = template.end ? template.end : ']]';\\n var pos_prevClosed = text.lastIndexOf( ePat, pos );\\n var pos_nextClosed = text.indexOf( ePat, pos );\\n //DEBUG console.log(\\\"__CALC st=\\\"+sPat+\\\" -> en=\\\"+ePat );\\n //DEBUG console.log(\\\"__CALC po=\\\"+pos_prevOpen+\\\" pc=\\\"+pos_prevClosed+\\\" nc=\\\"+pos_nextClosed+\\\" pos=\\\"+pos);\\n pos_nextClosed = (pos_nextClosed >= 0) ? pos_nextClosed : pos;\\n \\n if( (pos_prevOpen >= 0) && // must be opened\\n\\t((pos_prevOpen > pos_prevClosed ) || // not closed yet\\n\\t (pos_prevClosed === pos))) { // closed at cursor\\n\\t//DEBUG console.log(\\\" pat=\\\"+text.slice( pos_prevOpen+sPat.length, pos) );\\n\\treturn { text: text.slice( pos_prevOpen+sPat.length, pos ),\\n\\t\\t start: pos_prevOpen,\\n\\t\\t end: pos_nextClosed\\n\\t };\\n }\\n};\\n/**\\n * Controls how list items are generated.\\n * Function that takes two parameters :\\n * - text : suggestion text\\n * - input : the users input\\n * Returns : list item. \\n * Generates list items with the users input highlighted via \u003Cmark>.\\n */\\nvar itemHTML = function (text, input ) {\\n // text si input === ''\\n // otherwise, build RegExp that is global (g) and case insensitive (i)\\n // to replace with \u003Cmark>$&\u003C/mark> where \\\"$&\\\" is the matched pattern\\n var html = input === '' ? text : text.replace(RegExp(regExpEscape(input.trim()), \\\"gi\\\"), \\\"\u003Cmark>$&\u003C/mark>\\\");\\n return create(\\\"li\\\", {\\n\\tinnerHTML: html,\\n\\t\\\"patt-selected\\\": \\\"false\\\"\\n });\\n};\\n/**\\n * Insert text into a textarea node, \\n * enclosing in 'template.start..template.end'\\n *\\n * - posBefore : where the 'template.pat+pattern' starts\\n * - posAfter : where the cursor currently is\\n */\\nvar insertInto = function(node, text, posBefore, posAfter, template ) {\\n //DEBUG console.log( \\\"__INSERT : \\\"+template.pattern+\\\":\\\"+template.filter+\\\":\\\"+template.mask+\\\":\\\"+template.field+\\\":\\\"+template.start+\\\":\\\"+template.end );\\n var val = node.value;\\n var sStart = template.start !== undefined ? template.start : '[[';\\n var sEnd = template.end !== undefined ? template.end : ']]';\\n var newVal = val.slice(0, posBefore) + sStart + text + sEnd + val.slice(posAfter);\\n //console.log(\\\"__INSERT s=\\\"+sStart+\\\" e=\\\"+sEnd);\\n //console.log (\\\"__INSERT pb=\\\"+posBefore+\\\" pa=\\\"+posAfter+\\\" txt=\\\"+text);\\n //console.log( \\\"NEW VAL = \\\"+newVal );\\n // WARN : Directly modifie domNode.value.\\n // Not sure it does not short-circuit other update methods of the domNode....\\n // i.e. could use widget.updateEditor(newVal) from edit-comptext widget.\\n // but how to be sure that cursor is well positionned ?\\n node.value = newVal;\\n node.setSelectionRange(posBefore+text.length+sStart.length+sEnd.length, posBefore+text.length+sStart.length+sEnd.length );\\n};\\n/**\\n * Add an '\\\\' in front of -\\\\^$*+?.()|[]{}\\n */\\nvar regExpEscape = function (s) {\\n return s.replace(/[-\\\\\\\\^$*+?.()|[\\\\]{}]/g, \\\"\\\\\\\\$&\\\");\\n};\\n/**\\n * Add an element in the DOM.\\n */\\nvar create = function(tag, o) {\\n var element = document.createElement(tag);\\n \\n for (var i in o) {\\n\\tvar val = o[i];\\n\\t\\n\\tif (i === \\\"inside\\\") {\\n\\t $(val).appendChild(element);\\n\\t}\\n\\telse if (i === \\\"around\\\") {\\n\\t var ref = $(val);\\n\\t ref.parentNode.insertBefore(element, ref);\\n\\t element.appendChild(ref);\\n\\t}\\n\\telse if (i in element) {\\n\\t element[i] = val;\\n\\t}\\n\\telse {\\n\\t element.setAttribute(i, val);\\n\\t}\\n }\\n \\n return element;\\n};\\n\\n\\nexports.Completion = Completion;\\n\\n})();\\n\\n \\n\",\n \"type\": \"application/javascript\",\n \"title\": \"$:/plugins/snowgoon88/edit-comptext/completion.js\",\n \"module-type\": \"library\"\n },\n \"$:/plugins/snowgoon88/edit-comptext/edit-comptext.css\": {\n \"text\": \"\\n\\\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline macrocallblock\\n\\n/* The \\\\rules pragma at the top of the tiddler restricts the WikiText \\n * to just allow macros and transclusion. This avoids mistakenly \\n * triggering unwanted WikiText processing.\\n * \\n * MUST not save as text/css for macro to be processed\\n*/\\n\\n.ect-block-dropdown li {\\n display: block;\\n padding: 4px 14px 4px 14px;\\n text-decoration: none;\\n color: \u003C\u003Ccolour tiddler-link-foreground>>; /*#5778d8;*/ \\n background: transparent;\\n}\\n.ect-block-dropdown li[patt-selected=\\\"true\\\"] {\\n color: \u003C\u003Ccolour tiddler-link-background>>; /*#ffffff; */\\n background-color: \u003C\u003Ccolour tiddler-link-foreground>>; /*#5778d8; */\\n}\\n.ect-block-dropdown li[patt-selected=\\\"true\\\"] mark {\\n background: hsl(86, 100%, 21%);\\n color: inherit;\\n}\\n\\n\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"title\": \"$:/plugins/snowgoon88/edit-comptext/edit-comptext.css\",\n \"tags\": \"[[$:/tags/Stylesheet]]\"\n },\n \"$:/plugins/snowgoon88/edit-comptext/readme\": {\n \"title\": \"$:/plugins/snowgoon88/edit-comptext/readme\",\n \"text\": \"!! What ?\\nThis plugin adds ''completion'' when editing the body of a tiddler.\\n\\n* Enter completion-mode by typing `[[` or `CTRL+SPACE`\\n* A list of tiddlers with a title that matches the pattern between `[[` and cursor appears\\n* `UP/DOWN` keys can select a tiddler, `ENTER` to validate\\n* If there is only one match, `ENTER` selects it.\\n* `NEW` : you can specify you own trigger pattern and the list of possible completions. See [[$:/plugins/snowgoon88/edit-comptext/usage]] for more details.\\n\\n\\n!! To try it or get the latest news\\nSee [[http://snowgoon88.github.io/TW5-extendedit]]\\n\\n!! Install \\n\\nTo add the plugin to your own TiddlyWiki5, just drag this link to the browser window:\\n\\n[[$:/plugins/snowgoon88/edit-comptext]]\\n\\nSometime, a small configuration step is then needed\\n\\nin `$:/ControlPanel -> Advanced -> Editor Type -> text/vnd.tiddlywiki` you must chose `comptext` instead of `text`.\\n\\nReload and « voilà »...\\n\\nThis plugin is quite mature now :o)\\n\\n!! Old version\\n\\n* A version compatible with 5.0.8 to 5.1.11 : [[http://snowgoon88.github.io/TW5-extendedit/index_5.1.11.html]]\\n\\n!! Source code\\nOn github [[https://github.com/snowgoon88/TW5-extendedit]]\\n\\nGet in touch : snowgoon88(AT)gmail(DOT)com\\n\"\n },\n \"$:/plugins/snowgoon88/edit-comptext/usage\": {\n \"title\": \"$:/plugins/snowgoon88/edit-comptext/usage\",\n \"text\": \"''Important'' : be sure that in `$:/ControlPanel -> Advanced -> Editor Type -> text/vnd.tiddlywiki` you have chosen `comptext` instead of `text`.\\n\\nConfiguration of the edit-comptext plugin can be done through the tiddler [[$:/plugins/snowgoon88/edit-comptext/config]]. Use a JSON tiddler (do not forget to set the type to `application/json`. See some examples at [[$:/plugins/snowgoon88/edit-comptext/examples]]\\n\\nIn the `configuration` object you can set :\\n\\n* `caseSensitive`: `true`/`false` (is search case sensitive ?)\\n* `maxMatch` : an `integer` (max number of match displayed)\\n* `minPatLength` : an `integer` (minimal length of a pattern to trigger completion search)\\n* `triggerKeyCombination ` : a `string` representing the key combination that triggers the autocompletion popup. To use modifier keys in your combination, use following conversions : `ctrl` -> `^`, `alt` -> `!`, `shift` -> `+`. Note: ` ` (literally a whitespace) represents the `space` key.\\n\\nIn the `template` array you can specify the various completion templates that will be used. Every template can have the following members.\\n\\n* `pattern` : `string` (pattern that triggers a completion, default \\\"[[\\\" )\\n* `title` or `body`: `string` (the filter operators that gives the list of valid completions, default \\\"[all[tiddlers]!is[system]]\\\"). If you specify `body`, then the body of the tiddler will be inserted on selection.\\n* `start` : `string` (when completion is chosen, start is put before the completion, default \\\"[[\\\")\\n* `end` : `string` (when completion is chosen, end is put after the completion, default \\\"]]\\\")\\n\\n!! Current body of Config Tiddler\\n\\n{{$:/plugins/snowgoon88/edit-comptext/config}}\\n\\n\"\n }\n }\n}","author":"AlainD","bag":"default","core-version":">=5.1.13","created":"20200304200257539","dependents":"","description":"Editor with some on-line completion capabilities","list":"readme usage examples","modified":"20200521150811427","plugin-type":"plugin","revision":"0","source":"https://github.com/snowgoon88/TW5-extendedit","tags":"$:/giffmex/stroll $:/giffmex/blinks","version":"0.8.1"},
{"text":"{\n \"tiddlers\": {\n \"$:/plugins/sq/streams/CHANGELOG\": {\n \"title\": \"$:/plugins/sq/streams/CHANGELOG\",\n \"text\": \"Release notes for the current release:\\n\\n{{$:/plugins/sq/streams/releasenotes}}\\n\\n[[Full changelog|https://saqimtiaz.github.io/streams/#CHANGELOG]] for Streams\\n\"\n },\n \"$:/plugins/sq/streams/Settings/config\": {\n \"title\": \"$:/plugins/sq/streams/Settings/config\",\n \"caption\": \"Configuration\",\n \"text\": \"\\\\define sortBySettingsGroupFilter()\\n[get[settings-group]!is[blank]else[!general]] [get[settings-group-header]!is[blank]else[99]] +[join[]]\\n\\\\end\\n\\n\u003C$edit-text tiddler=\\\"$:/state/sq/streams/settings/search\\\" class=\\\"sq-search-input\\\" default=\\\"\\\" tag=\\\"input\\\" type=\\\"search\\\" placeholder=\\\"search...\\\"/>\\n\\n\u003Cdiv class=\\\"sq-list-group sq-list-group-box-shadow sq-list-stream-settings\\\">\\n\u003C$list filter=\\\"[all[shadows+tiddlers]prefix[$:/config/sq/streams]has[settings-template]] +[search:title,caption,description{$:/state/sq/streams/settings/search}] +[sortsub\u003CsortBySettingsGroupFilter>]\\\">\\n\u003C$list filter={{{[{!!condition}!is[blank]] :else[{!!title}]}}} variable=\\\"list-condition\\\">\\n\u003Cdiv class=\\\"sq-list-group-item\\\">\\n\u003C$transclude tiddler={{!!settings-template}}/>\\n\u003C/div>\\n\u003C/$list>\\n\u003C/$list>\\n\u003C/div>\"\n },\n \"$:/plugins/sq/streams/Settings/shortcuts\": {\n \"title\": \"$:/plugins/sq/streams/Settings/shortcuts\",\n \"caption\": \"Shortcuts\",\n \"text\": \"\\\\import $:/core/ui/ControlPanel/KeyboardShortcuts\\n\\n\u003Ctable>\\n\u003Ctbody>\\n\u003C$list filter=\\\"[all[shadows+tiddlers]prefix[$:/config/ShortcutInfo/streams-]removeprefix[$:/config/ShortcutInfo/]]\\\" variable=\\\"shortcutName\\\">\\n\u003C\u003Cshortcut-item>>\\n\u003C/$list>\\n\u003C/tbody>\\n\u003C/table>\"\n },\n \"$:/plugins/sq/streams/Settings\": {\n \"title\": \"$:/plugins/sq/streams/Settings\",\n \"tags\": \"$:/tags/ControlPanel\",\n \"caption\": \"Streams settings\",\n \"text\": \"\u003C\u003Ctabs \\\"$:/plugins/sq/streams/Settings/config $:/plugins/sq/streams/Settings/shortcuts\\\" \\\"$:/plugins/sq/streams/Settings/config\\\" \\\"$:/state/streams/settings/tabs\\\">>\\n\"\n },\n \"$:/plugins/sq/streams/action-macros\": {\n \"title\": \"$:/plugins/sq/streams/action-macros\",\n \"text\": \"\\\\whitespace trim\\n\\n\\\\define swiped-right-actions()\\n\u003C$list filter=\\\"[{$:/config/sq/streams/swipe-behaviour}match[contextmenu]]\\\" variable=\\\"_NULL\\\">\\n\u003C$action-setfield $tiddler=\u003C\u003Ccontextmenu-state>> $field=\\\"current\\\" $value=\u003C\u003Cdom-data-node-title>>/>\\n\u003C$action-setfield $tiddler=\u003C\u003Ccontextmenu-state>> $field=\\\"position\\\" $value={{$:/config/sq/streams/swipe-contextmenu-position}}/>\\n\u003C$action-popup $coords=\u003C\u003Ctv-popup-coords>> $state=\u003C\u003Ccontextmenu-state>>/>\\n\u003C/$list>\\n\u003C$list filter=\\\"[{$:/config/sq/streams/swipe-behaviour}match[indent]]\\\" variable=\\\"_NULL\\\">\\n\u003C$vars currentTiddler=\u003C\u003Cdom-data-node-title>>>\\n\u003C\u003Cindent-node-actions>>\\n\u003C/$vars>\\n\u003C/$list>\\n\\\\end\\n\\n\\\\define swiped-left-actions()\\n\u003C$list filter=\\\"[{$:/config/sq/streams/swipe-behaviour}match[indent]]\\\" variable=\\\"_NULL\\\">\\n\u003C$vars currentTiddler=\u003C\u003Cdom-data-node-title>>>\\n\u003C\u003Cunindent-node-actions>>\\n\u003C/$vars>\\n\u003C/$list>\\n\\\\end\\n\\n\\n\\\\define oncontext-menu-actions()\\n\u003C$action-setfield $tiddler=\u003C\u003Ccontextmenu-state>> $field=\\\"current\\\" $value=\u003C\u003Cdom-data-node-title>>/>\\n\u003C$action-setfield $tiddler=\u003C\u003Ccontextmenu-state>> $field=\\\"position\\\" $value=\\\"left\\\"/>\\n\u003C$action-popup $coords=\u003C\u003Ctv-popup-coords>> $state=\u003C\u003Ccontextmenu-state>>/>\\n\\\\end\\n\\n\\n\\\\define node-ctrl-btn-actions()\\n\u003C$list filter=\\\"[\u003Cdom-data-btn-role>match[stream-node-visibility]]\\\" variable=\\\"NULL\\\">\\n\u003C$action-setfield $tiddler=\u003C\u003Cdom-data-rowchildren-visibility-state>> text={{{ [\u003Cdom-data-rowchildren-visibility-state>get[text]match[hide]then[show]else[hide]] }}} />\\n\u003C/$list>\\n\u003C$list filter=\\\"[\u003Cdom-data-btn-role>match[stream-node-decorator]]\\\" variable=\\\"NULL\\\">\\n\u003C$action-navigate $to=\u003C\u003Cdom-data-node-title>>/>\\n\u003C/$list>\\n\\\\end\\n\\n\\n\\\\define toggle-row-edit-state()\\n\u003C$action-unselect/>\\n\u003C$list filter=\\\"[\u003Crow-edit-state>get[text]else[]!match\u003Cdom-data-node-title>]\\\" variable=\\\"NULL\\\">\\n\u003C$list filter=\\\"[[$:/status/IsReadOnly]get[text]!is[blank]else[no]!match[yes]]\\\" variable=\\\"NULL\\\">\\n\\t\u003C$action-setfield $tiddler=\u003C\u003Crow-edit-state>> text=\u003C\u003Cdom-data-node-title>> />\\n\u003C!--\\t\u003C$action-setfield $tiddler=\u003C\u003Cdom-data-node-title>> throttle.refresh=\\\"yes\\\"/>-->\\n\u003C/$list>\\n\u003C/$list>\\n\\\\end\\n\\n\\n\\\\define save-edit-node-actions()\\n\u003C!-- handle saving a node being edited -->\\n\u003C!-- XXX draft -->\\n\u003C!--\u003C$action-deletefield $tiddler={{{ [\u003Cdom-data-node-title>!is[blank]else\u003CcurrentTiddler>] }}} $field=\\\"throttle.refresh\\\" />-->\\n\u003C$action-deletetiddler $tiddler=\u003C\u003Crow-edit-state>> />\\n\\\\end\\n\\n\\n\\\\define indent-node-actions()\\n\u003C!-- handle indenting a node -->\\n\u003C$vars previous-node={{{ [{!!parent}get[stream-list]enlist-input[]is[tiddler]before\u003CcurrentTiddler>] }}}>\\n\u003C$list filter=\\\"[\u003Cprevious-node>minlength[1]]\\\" variable=\\\"_NULL\\\">\\n\\t\u003C$action-listops $tiddler=\u003C\u003Cprevious-node>> $field=\\\"stream-list\\\" $subfilter=\\\"+[is[tiddler]] [\u003CcurrentTiddler>]\\\"/>\\n\\t\u003C$action-listops $tiddler={{!!parent}} $field=\\\"stream-list\\\" $subfilter=\\\"+[is[tiddler]] -[\u003CcurrentTiddler>]\\\"/>\\n\\t\u003C$action-setfield $tiddler=\u003C\u003CcurrentTiddler>> parent=\u003C\u003Cprevious-node>> />\\n\u003C/$list>\\n\u003C/$vars>\\n\\\\end\\n\\n\\n\\\\define unindent-node-actions()\\n\u003C!-- handle unindenting a node -->\\n\u003C$vars new-parent={{{ [{!!parent}get[parent]] }}} new-next-node={{{ [{!!parent}get[parent]get[stream-list]enlist-input[]is[tiddler]after{!!parent}] }}}>\\n \u003C$list filter=\\\"[\u003Cnew-parent>minlength[1]]\\\" variable=\\\"_NULL\\\">\\n \u003C$action-listops $tiddler=\u003C\u003Cnew-parent>> $field=\\\"stream-list\\\" $subfilter=\\\"+[is[tiddler]] +[insertbefore:new-next-node\u003CcurrentTiddler>]\\\"/>\\n \u003C$action-listops $tiddler={{!!parent}} $field=\\\"stream-list\\\" $subfilter=\\\"+[is[tiddler]] -[\u003CcurrentTiddler>]\\\"/>\\n \u003C$action-setfield $tiddler=\u003C\u003CcurrentTiddler>> parent=\u003C\u003Cnew-parent>> />\\n \u003C/$list>\\n\u003C/$vars>\\n\\\\end\\n\\n\\n\\\\define demote-node-actions()\\n\u003C!-- move a node below the next node -->\\n\u003C$list filter=\\\"[{!!parent}get[stream-list]enlist-input[]after\u003CcurrentTiddler>]\\\" variable=\\\"next-node\\\">\\n \u003C$action-listops $tiddler={{!!parent}} $field=\\\"stream-list\\\" $subfilter=\\\"+[insertbefore:currentTiddler\u003Cnext-node>]\\\"/>\\n\u003C/$list>\\n\\\\end\\n\\n\\n\\\\define promote-node-actions()\\n\u003C!-- move a node above the previous node -->\\n\u003C$list filter=\\\"[{!!parent}get[stream-list]enlist-input[]before\u003CcurrentTiddler>]\\\" variable=\\\"previous-node\\\">\\n \u003C$action-listops $tiddler={{!!parent}} $field=\\\"stream-list\\\" $subfilter=\\\"+[insertbefore:previous-node\u003CcurrentTiddler>]\\\"/>\\n\u003C/$list>\\n\\\\end\\n\\n\\n\\\\define save-node-actions()\\n\u003C$list filter=\\\"\\\"\\\"[{$:/config/sq/streams/split-at-caret}match[yes]]\\\"\\\"\\\" variable=\\\"_NULL\\\" emptyMessage=\u003C\u003Cadd-node-actions>> >\\n\u003C$list filter=\\\"[\u003CselectionEnd>!is[blank]else[0]!match[0]]\\\" variable=\\\"_NULL\\\">\\n\u003C$list filter=\\\"[\u003CcurrentTiddler>get[text]length[]subtract\u003CselectionEnd>!match[0]]\\\" variable=\\\"_NULL\\\" emptyMessage=\u003C\u003Cadd-node-actions>>>\\n\\t\u003C$macrocall $name=\\\"add-node-actions\\\" startText={{{[\u003CcurrentTiddler>get[text]split[]rest\u003CselectionEnd>join[]trim[]]}}} streamList={{!!stream-list}} />\u003C!--insertPosition=\\\"title\\\"-->\\n\\t\u003C$action-setfield $tiddler=\\\"$:/state/sq/streams/caret-position\\\" text=\\\"0\\\"/>\\n\\t\u003C$action-setfield $tiddler=\u003C\u003CcurrentTiddler>> text={{{[\u003CcurrentTiddler>get[text]split[]first\u003CselectionEnd>join[]]}}} stream-list=\\\"\\\"/>\\n\u003C/$list>\\n\u003C/$list>\\n\u003C$list filter=\\\"[\u003CselectionEnd>!is[blank]else[0]match[0]]\\\" variable=\\\"_NULL\\\">\\n\\t\u003C$list filter=\\\"[\u003CcurrentTiddler>!has[text]]\\\" variable=\\\"_NULL\\\" emptyMessage=\u003C\u003Cadd-node-actions \\\"\\\" \\\"title\\\">> >\\n\\t\\t\u003C$list filter=\\\"\\\"\\\"[{$:/config/sq/streams/exit-on-saving-empty-node}match[yes]]\\\"\\\"\\\" variable=\\\"_NULL\\\" emptyMessage=\u003C\u003Cadd-node-actions>> >\\n\\t\\t\\t\u003C\u003Ccancel-edit-node-actions>>\\n\\t\\t\u003C/$list>\\n\\t\u003C/$list>\\n\u003C/$list>\\n\u003C/$list>\\n\\\\end\\n\\n\\\\define add-new-node-actions()\\n\u003C!-- used by new node button at the bottom of a stream -->\\n\u003C$list filter=\\\"[[$:/status/IsReadOnly]get[text]!is[blank]else[no]!match[yes]]\\\" variable=\\\"NULL\\\">\\n\u003C\u003Cadd-node-actions>>\\n\u003C/$list>\\n\\\\end\\n\\n\\n\\\\define add-node-actions(startText:\\\"\\\",insertPosition:\\\"after\\\",streamList:\\\"\\\")\\n\u003C!-- handle saving a node edit and creating a new subsequent node -->\\n\u003C$set name=\\\"parent\\\" filter=\\\"[\u003CcurrentTiddler>match\u003Cstream-root-title>] ~[{!!parent}] +[first[]]\\\" select=\\\"0\\\">\\n\u003C$wikify name=\\\"new-node\\\" text={{$:/config/sq/streams/new-node-title}}>\\n\u003C$wikify name=\\\"new-node\\\" text={{{[[\u003C\u003Cunusedtitle \\\"\\\"\\\"]addsuffix\u003Cnew-node>addsuffix[\\\"\\\"\\\">>]]}}}>\\n\\t\u003C$action-createtiddler $basetitle=\u003C\u003Cnew-node>> text=\u003C\u003C__startText__>> $template={{$:/config/sq/streams/new-node-tiddler-template}} parent=\u003C\u003Cparent>> stream-type=\\\"default\\\" stream-list=\u003C\u003C__streamList__>>/>\\n\\t\u003C$set name=\\\"parent-nodes\\\" filter=\\\"[\u003Cparent>get[stream-list]]\\\" select=\\\"0\\\">\\n\\t\u003C$set name=\\\"next-node\\\" filter=\\\"[enlist\u003Cparent-nodes>is[tiddler]$insertPosition$\u003CcurrentTiddler>]\\\" select=\\\"0\\\">\\n\\t\u003C$action-listops $tiddler=\u003C\u003Cparent>> $field=\\\"stream-list\\\" $subfilter=\\\"+[is[tiddler]] +[insertbefore:next-node\u003Cnew-node>]\\\"/>\\n\\t\u003C$list filter=\\\"[\u003Cparent>!has[stream-type]]\\\" variable=\\\"_NULL\\\">\\n\\t\\t\u003C$action-setfield $tiddler=\u003C\u003Cparent>> stream-type=\\\"default\\\"/>\\n\\t\u003C/$list>\\n\\t\u003C/$set>\\n\\t\u003C/$set>\\n\\t\u003C$action-setfield $tiddler=\u003C\u003Crow-edit-state>> text=\u003C\u003Cnew-node>>/>\\n\u003C/$wikify>\\n\u003C/$wikify>\\n\u003C/$set>\\n\\\\end\\n\\n\\n\\\\define save-multiple-actions()\\n\u003C!-- handle multiple nodes entered at once -->\\n\u003C$action-confirm $message=\\\"Split into multiple nodes?\\\" $prompt={{$:/config/sq/streams/prompt-split-to-multiple}}>\\n\u003C$list filter=\\\"[{!!text}splitregexp{$:/config/sq/streams/node-split-regexp}rest[]reverse[]]\\\" variable=\\\"fragment\\\">\\n\\t\u003C$action-confirm $message=\\\"Split into multiple nodes?\\\" $prompt=\\\"no\\\">\\n\\t\\t\u003C$macrocall $name=\\\"add-node-actions\\\" startText=\u003C\u003Cfragment>> />\\n\\t\u003C/$action-confirm>\\n\u003C/$list>\\n\u003C$action-setfield $tiddler=\u003C\u003CcurrentTiddler>> text={{{[{!!text}splitregexp{$:/config/sq/streams/node-split-regexp}first[]]}}}/>\\n\u003C\u003Cadd-node-actions>>\\n\u003C/$action-confirm>\\n\\\\end\\n\\n\\n\\\\define cancel-edit-node-actions()\\n\u003C!-- handle cancelling the edit on an empty node -->\\n\u003C$list filter=\\\"[\u003CcurrentTiddler>!has[stream-list]!has[text]]\\\" variable=\\\"_NULL\\\">\\n\\t\u003C$action-listops $tiddler={{{[{!!parent}]}}} $field=\\\"stream-list\\\" $subfilter=\\\"+[is[tiddler]] -[\u003CcurrentTiddler>]\\\"/>\\n\\t\u003C$action-deletetiddler $tiddler=\u003C\u003CcurrentTiddler>> />\\n\u003C/$list>\\n\u003C!--\u003C$action-deletefield $tiddler=\u003C\u003CcurrentTiddler>> $field=\\\"throttle.refresh\\\" />-->\\n\u003C$action-deletetiddler $tiddler=\u003C\u003Crow-edit-state>> />\\n\\\\end\\n\\n\\n\\\\define merge-with-previous-node-actions()\\n\u003C!-- handle backspace on an empty node -->\\n\u003C$list filter=\\\"\\\"\\\"[\u003CcurrentTiddler>!has[text]]\\\"\\\"\\\" variable=\\\"_NULL\\\">\\n\\t\u003C\u003Ccancel-edit-node-actions>>\\n\\t\u003C\u003Cfocus-higher-node-actions>>\\n\u003C/$list>\\n\\n\u003C$list filter=\\\"\\\"\\\"[\u003CcurrentTiddler>has[text]]\\\"\\\"\\\" variable=\\\"_NULL\\\">\\n\u003C$list filter=\\\"[\u003CselectionEnd>match[0]]\\\" variable=\\\"_NULL\\\">\\n\\n\u003C!--\u003C$action-log/>-->\\n\\t\u003C$set name=\\\"parent\\\" value={{!!parent}} select=\\\"0\\\">\\n\\t\u003C$set name=\\\"stream-list\\\" filter=\\\"[\u003Cparent>get[stream-list]]\\\" select=\\\"0\\\">\\n\\t\u003C$list filter=\\\"[enlist\u003Cstream-list>before\u003CcurrentTiddler>]\\\" variable=\\\"previous-node\\\">\\n\\t\\t\u003C$list filter=\\\"[\u003Cprevious-node>!has[stream-list]]\\\" variable=\\\"_NULL\\\">\\n\\t\\t\u003C$action-confirm $message=\\\"Merge with previous node?\\\" $prompt={{$:/config/sq/streams/prompt-merge-with-previous}}>\\n\\t\\t\\t\u003C$action-setfield $tiddler=\\\"$:/state/sq/streams/caret-position\\\" text={{{[\u003Cprevious-node>get[text]length[]]}}}/>\\n\\t\\t\\t\u003C$action-setfield $tiddler=\u003C\u003Cprevious-node>> text={{{[\u003Cprevious-node>get[text]!is[blank]else[]addsuffix{!!text}]}}} stream-list={{!!stream-list}}/>\\n\\t\\t\\t\u003C$action-setfield $tiddler=\u003C\u003Crow-edit-state>> text=\u003C\u003Cprevious-node>>/>\\n\\t\\t\\t\u003C$action-listops $tiddler={{!!parent}} $field=\\\"stream-list\\\" $subfilter=\\\"+[is[tiddler]] -[\u003CcurrentTiddler>]\\\"/>\\t\\t\\t\\n\\t\\t\\t\u003C$action-deletetiddler $tiddler=\u003C\u003CcurrentTiddler>>/>\\n\\t\\t\u003C/$action-confirm>\\t\\n\\t\\t\u003C/$list>\\n\\t\u003C/$list>\\n\\t\u003C/$set>\\n\\t\u003C/$set>\\n\\t\\n\u003C/$list>\\n\u003C/$list>\\n\\n\\\\end\\n\\n\\n\\\\define delete-node-actions()\\n\u003C$action-confirm $message=\\\"Do you wish to delete this tiddler?\\\">\\n\\t\u003C$transclude tiddler=\\\"$:/plugins/sq/streams/delete-hook/actions\\\"/>\\n\\t\u003C$action-deletetiddler $tiddler=\u003C\u003CcurrentTiddler>> />\\n\\t\u003C$list filter=\\\"[\u003Crow-edit-state>get[text]match\u003CcurrentTiddler>]\\\">\\n\\t\\t\u003C\u003Cfocus-higher-node-actions>>\\n\\t\u003C/$list>\\n\u003C/$action-confirm>\\n\\\\end\\n\\n\\n\\\\define rename-node-actions()\\n\u003C$action-withinput message=\\\"Rename this tiddler?\\\" default=\u003C\u003CcurrentTiddler>> actions=\\\"\\\"\\\"\\n\\t\u003C$action-sendmessage $message=\\\"tm-rename-tiddler\\\" from=\u003C\u003CcurrentTiddler>> to=\u003C\u003CuserInput>>/>\\n\\t\u003C$list filter=\\\"[\u003Crow-edit-state>match\u003CcurrentTiddler>]\\\" variable=\\\"_NULL\\\">\\n\\t\\t\u003C$action-setfield $tiddler=\u003C\u003Crow-edit-state>> text=\u003C\u003CuserInput>>/>\\n\\t\u003C/$list>\\n\\\"\\\"\\\"/>\\n\\\\end\\n\\n\\n\\\\define find-last-child()\\n\u003C!-- used by focus-higher-node-actions macro -->\\n\u003C$list filter=\\\"[enlist{!!stream-list}is[tiddler]last[]]\\\" emptyMessage=\\\"\\\"\\\"\u003C$action-setfield $tiddler=\u003C\u003Crow-edit-state>> text=\u003C\u003CcurrentTiddler>>/>\\\"\\\"\\\">\\n\\t\u003C$macrocall $name=\\\"find-last-child\\\"/>\\n\u003C/$list>\\n\\\\end\\n\\n\\n\\\\define focus-higher-node-actions()\\n\u003C!-- handles moving up in the nodes with the keyboard -->\\n\u003C$vars old-parent={{!!parent}} >\\n\u003C$list filter=\\\"[{!!parent}get[stream-list]enlist-input[]is[tiddler]before\u003CcurrentTiddler>]\\\" emptyMessage=\\\"\\\"\\\"\u003C$list filter=\\\"[\u003Cold-parent>!match\u003Cstream-root-title>]\\\">\u003C$action-setfield $tiddler=\u003C\u003Crow-edit-state>> text=\u003C\u003Cold-parent>> />\u003C/$list>\\\"\\\"\\\">\\n\\t\u003C$macrocall $name=\\\"find-last-child\\\"/>\\n\u003C/$list>\\n\u003C/$vars>\\n\\\\end\\n\\n\\n\\\\define find-next-downwards-node()\\n\u003C!-- used by focus-lower-node-actions macro -->\\n\u003C$list filter=\\\"[\u003CcurrentTiddler>has[parent]]\\\" variable=\\\"_NULL\\\">\\n\u003C$set name=\\\"old-parent\\\" value={{!!parent}} select=\\\"0\\\">\\n\u003C$set name=\\\"old-parent-nodes\\\" filter=\\\"[\u003Cold-parent>get[stream-list]]\\\" select=\\\"0\\\">\\n\u003C$list filter=\\\"[enlist\u003Cold-parent-nodes>is[tiddler]after\u003CcurrentTiddler>]\\\" emptyMessage=\\\"\\\"\\\"\u003C$set name=\\\"currentTiddler\\\" value=\u003C\u003Cold-parent>>>\u003C\u003Cfind-next-downwards-node>>\u003C/$set>\\\"\\\"\\\">\\n\\t\u003C$action-setfield $tiddler=\u003C\u003Crow-edit-state>> text=\u003C\u003CcurrentTiddler>>/>\\t\\n\u003C/$list>\\n\u003C/$set>\\n\u003C/$set>\\n\u003C/$list>\\n\\\\end\\n\\n\\n\\\\define focus-lower-node-actions()\\n\u003C!-- handles moving down in the nodes with the keyboard -->\\n\u003C!--if children, get the first child-->\\n\u003C$list filter=\\\"[\u003CcurrentTiddler>get[stream-list]enlist-input[]is[tiddler]first[]]\\\" variable=\\\"next-node\\\">\\n \u003C$action-setfield $tiddler=\u003C\u003Crow-edit-state>> text=\u003C\u003Cnext-node>> />\\n\u003C/$list>\\n\u003C!-- if no children-->\\n\u003C!--- get closest ancestor with next sibling -->\\n\u003C$list filter=\\\"[\u003CcurrentTiddler>!has[stream-list]]\\\" variable=\\\"_NULL\\\">\\n\\t\u003C$set name=\\\"old-active-node\\\" value=\u003C\u003CcurrentTiddler>> >\\n\\t\\t\u003C\u003Cfind-next-downwards-node>>\\n\\t\u003C/$set>\\n\u003C/$list>\\n\\\\end\\n\\n\\n\\\\define node-drag-start-actions()\\n\u003C!-- parameter to draggable widget -->\\n\u003C$action-setfield $tiddler=\u003C\u003Cdrag-title-state>> text=\u003C\u003CcurrentTiddler>>/>\\n\u003C$action-setfield $tiddler=\\\"$:/state/sq/nodes/global-drag-state\\\" text=\\\"yes\\\"/>\\n\u003C$set name=\\\"siblings\\\" filter=\\\"[{!!parent}get[stream-list]]\\\" select=\\\"0\\\">\\n\u003C$list filter=\\\"[enlist\u003Csiblings>after\u003CcurrentTiddler>]\\\" variable=\\\"next-node\\\">\\n\\t\u003C$action-setfield $tiddler=\u003C\u003Cdrag-title-nextsibling-state>> text=\u003C\u003Cnext-node>> />\\n\u003C/$set>\\n\\\\end\\n\\n\\n\\\\define node-drag-end-actions()\\n\u003C!-- parameter to draggable widget -->\\n\u003C$action-deletetiddler $filter=\\\"\\\"\\\"[\u003Cdrag-title-state>][\u003Cdrag-title-nextsibling-state>][[$:/state/sq/nodes/global-drag-state]]\\\"\\\"\\\" />\\n\\\\end\\n\\n\\n\\\\define stream-drop-actions()\\n\u003C!-- handles drag and drop -->\\n\u003C$vars startBrackets=\\\"[[\\\" endBrackets=\\\"]]\\\" parent=\u003C\u003CdropTargetTiddler>> >\\n\u003C$vars actionTiddler={{{[\u003CactionTiddler>trim:suffix\u003CendBrackets>trim:prefix\u003CstartBrackets>]}}}>\\n\u003C!-- if target has no stream-type, assign one -->\\n\u003C$list filter=\\\"[\u003CdropTargetTiddler>!has[stream-type]]\\\">\\n\\t\u003C$action-setfield $tiddler=\u003C\u003CdropTargetTiddler>> stream-type=\\\"default\\\"/>\\n\u003C/$list>\\n\u003C!-- if action tiddler has no stream-type, assign one -->\\n\u003C$list filter=\\\"[\u003CactionTiddler>!has[stream-type]]\\\" variable=\\\"_NULL\\\">\\n\\t\u003C$action-setfield $tiddler=\u003C\u003CactionTiddler>> stream-type=\\\"default\\\" />\\n\u003C/$list>\\n\u003C!-- if we are dropping onto a new parent, then we might need to handle modifier keys -->\\n\u003C$list filter=\\\"[\u003CactionTiddler>get[parent]!match\u003Cparent>] [\u003CactionTiddler>!has[parent]]\\\" variable=\\\"_NULL\\\">\\n\\t\u003C$wikify name=\\\"new-node\\\" text={{$:/config/sq/streams/new-node-title}}>\\n\\t\\t\u003C!-- ctrl modifier key on drop event -->\\n\\t\\t\u003C!-- create a new node with text of dropped node -->\\n\\t\\t\u003C$list filter=\\\"[\u003Cmodifier>match{$:/config/sq/streams/dnd-modifier-copy-node}]\\\" variable=\\\"_NULL\\\">\\n\\t\\t\\t\u003C$action-createtiddler $basetitle=\u003C\u003Cnew-node>> text={{{ [\u003CactionTiddler>get[text]] }}} parent=\u003C\u003Cparent>> stream-type=\\\"default\\\"/>\\n\\t\\t\\t\u003C!-- insert into correct position on new parent -->\\n\\t\\t\\t\u003C$action-listops $tiddler=\u003C\u003CdropTargetTiddler>> $field=\\\"stream-list\\\" $subfilter=\\\"+[insertbefore:currentTiddler\u003Cnew-node>]\\\"/>\\n\\t\\t\u003C/$list>\\n\\t\\t\u003C!-- shift modifier key on drop event -->\\n\\t\\t\u003C$list filter=\\\"[\u003Cmodifier>match{$:/config/sq/streams/dnd-modifier-transclude-node}]\\\" variable=\\\"_NULL\\\">\\n\\t\\t\\t\u003C!-- create new node on target, in correct position, text is a transclusion-->\\n\\t\\t\\t\u003C$action-createtiddler $basetitle=\u003C\u003Cnew-node>> text={{{ [\u003CactionTiddler>addprefix[{{]addsuffix[}}]] }}} parent=\u003C\u003Cparent>> stream-type=\\\"default\\\"/>\\n\\t\\t\\t\u003C!-- insert into correct position on new parent -->\\n\\t\\t\\t\u003C$action-listops $tiddler=\u003C\u003CdropTargetTiddler>> $field=\\\"stream-list\\\" $subfilter=\\\"+[insertbefore:currentTiddler\u003Cnew-node>]\\\"/>\\n\\t\\t\u003C/$list>\\n\\t\u003C/$wikify>\\n\\t\u003C!-- no modifier key on drop event -->\\n\\t\u003C!-- insert in correct position on new parent, and remove from old parent -->\\n\\t\u003C!-- assign new parent -->\\n\\t\u003C$list filter=\\\"[\u003Cmodifier>match[normal]]\\\" variable=\\\"_NULL\\\">\\n\\t\\t\u003C$action-listops $tiddler=\u003C\u003CdropTargetTiddler>> $field=\\\"stream-list\\\" $subfilter=\\\"+[insertbefore:currentTiddler\u003CactionTiddler>]\\\"/>\\n\\t\\t\u003C$set name=\\\"original-parent\\\" filter=\\\"[\u003CactionTiddler>get[parent]]\\\" select=\\\"0\\\">\\n\\t\\t\\t\u003C$action-listops $tiddler=\u003C\u003Coriginal-parent>> $field=\\\"stream-list\\\" $subfilter=\\\"-[title\u003CactionTiddler>]\\\"/>\\n\\t\\t\u003C/$set>\\n\\t\\t\u003C$action-setfield $tiddler=\u003C\u003CactionTiddler>> parent=\u003C\u003Cparent>>/>\\n\\t\u003C/$list>\\n\u003C/$list>\\n\u003C!-- we are dropping on to the same parent, insert in the correct position -->\\n\u003C$list filter=\\\"[\u003CactionTiddler>get[parent]match\u003Cparent>]\\\" variable=\\\"_NULL\\\">\\n\\t\u003C$action-listops $tiddler=\u003C\u003CdropTargetTiddler>> $field=\\\"stream-list\\\" $subfilter=\\\"+[insertbefore:currentTiddler\u003CactionTiddler>]\\\"/>\\n\u003C/$list>\\n\u003C/$vars>\\n\u003C/$vars>\\n\\\\end\"\n },\n \"$:/plugins/sq/streams/icons/node-expand-arrow\": {\n \"title\": \"$:/plugins/sq/streams/icons/node-expand-arrow\",\n \"created\": \"20200526035137040\",\n \"modified\": \"20200526100520031\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\u003Csvg width=\\\"20\\\" height=\\\"20\\\" viewBox=\\\"0 0 20 20\\\">\u003Cpath d=\\\"M13.75 9.56879C14.0833 9.76124 14.0833 10.2424 13.75 10.4348L8.5 13.4659C8.16667 13.6584 7.75 13.4178 7.75 13.0329L7.75 6.97072C7.75 6.58582 8.16667 6.34525 8.5 6.5377L13.75 9.56879Z\\\">\u003C/path>\u003C/svg>\"\n },\n \"$:/config/ShortcutInfo/streams-cancel-edit\": {\n \"title\": \"$:/config/ShortcutInfo/streams-cancel-edit\",\n \"text\": \"Cancel and exit editing\"\n },\n \"$:/config/ShortcutInfo/streams-delete\": {\n \"title\": \"$:/config/ShortcutInfo/streams-delete\",\n \"text\": \"Delete node\"\n },\n \"$:/config/ShortcutInfo/streams-demote\": {\n \"title\": \"$:/config/ShortcutInfo/streams-demote\",\n \"text\": \"Demote node\"\n },\n \"$:/config/ShortcutInfo/streams-focus-higher\": {\n \"title\": \"$:/config/ShortcutInfo/streams-focus-higher\",\n \"text\": \"Move focus to higher node\"\n },\n \"$:/config/ShortcutInfo/streams-focus-lower\": {\n \"title\": \"$:/config/ShortcutInfo/streams-focus-lower\",\n \"text\": \"Move focus to lower node\"\n },\n \"$:/config/ShortcutInfo/streams-indent\": {\n \"title\": \"$:/config/ShortcutInfo/streams-indent\",\n \"text\": \"Indent node\"\n },\n \"$:/config/ShortcutInfo/streams-merge-with-previous\": {\n \"title\": \"$:/config/ShortcutInfo/streams-merge-with-previous\",\n \"text\": \"Merge with previous node, if caret is at start of a node\"\n },\n \"$:/config/ShortcutInfo/streams-promote\": {\n \"title\": \"$:/config/ShortcutInfo/streams-promote\",\n \"text\": \"Promote node\"\n },\n \"$:/config/ShortcutInfo/streams-rename\": {\n \"title\": \"$:/config/ShortcutInfo/streams-rename\",\n \"text\": \"Rename node\"\n },\n \"$:/config/ShortcutInfo/streams-save-and-continue\": {\n \"title\": \"$:/config/ShortcutInfo/streams-save-and-continue\",\n \"text\": \"Save and create next node\"\n },\n \"$:/config/ShortcutInfo/streams-save-and-exit\": {\n \"title\": \"$:/config/ShortcutInfo/streams-save-and-exit\",\n \"text\": \"Save and exit editing\"\n },\n \"$:/config/ShortcutInfo/streams-save-multiple\": {\n \"title\": \"$:/config/ShortcutInfo/streams-save-multiple\",\n \"text\": \"Split and save as multiple nodes\"\n },\n \"$:/config/ShortcutInfo/streams-unindent\": {\n \"title\": \"$:/config/ShortcutInfo/streams-unindent\",\n \"text\": \"Unindent node\"\n },\n \"$:/config/sq/streams/dnd-modifier-copy-node\": {\n \"title\": \"$:/config/sq/streams/dnd-modifier-copy-node\",\n \"description\": \"Modifier key for drag and drop to create a copy of a node.\",\n \"settings-template\": \"$:/plugins/sq/streams/ui/templates/settings/select\",\n \"option-names\": \"ctrl alt shift meta\",\n \"option-values\": \"ctrl alt shift meta\",\n \"caption\": \"Modifier key to copy a node when dragging.\",\n \"text\": \"ctrl\"\n },\n \"$:/config/sq/streams/dnd-modifier-transclude-node\": {\n \"title\": \"$:/config/sq/streams/dnd-modifier-transclude-node\",\n \"description\": \"Modifier key for drag and drop to create a transclusion of a node.\",\n \"settings-template\": \"$:/plugins/sq/streams/ui/templates/settings/select\",\n \"option-names\": \"ctrl alt shift meta\",\n \"option-values\": \"ctrl alt shift meta\",\n \"caption\": \"Modifier key to transclude a node when dragging.\",\n \"text\": \"shift\"\n },\n \"$:/config/sq/streams/editor-engine\": {\n \"title\": \"$:/config/sq/streams/editor-engine\",\n \"description\": \"Editor to use for Streams\",\n \"caption\": \"Editor to use for Streams\",\n \"settings-template\": \"$:/plugins/sq/streams/ui/templates/settings/select\",\n \"option-names\": \"[[Default]] [[CodeMirror]]\",\n \"option-values\": \"text codemirror\",\n \"condition\": \"[[widget]modules[]prefix[$:/plugins/tiddlywiki/codemirror/edit-codemirror.js]]\",\n \"text\": \"text\"\n },\n \"$:/config/sq/streams/enable-breadcrumbs\": {\n \"title\": \"$:/config/sq/streams/enable-breadcrumbs\",\n \"description\": \"Enable breadcrumbs in nodes\",\n \"caption\": \"Show breadcrumbs\",\n \"settings-template\": \"$:/plugins/sq/streams/ui/templates/settings/input-switch\",\n \"text\": \"yes\"\n },\n \"$:/config/sq/streams/enable-edit-toolbar\": {\n \"title\": \"$:/config/sq/streams/enable-edit-toolbar\",\n \"description\": \"Enable toolbar in editor\",\n \"caption\": \"Show toolbar in editor\",\n \"settings-template\": \"$:/plugins/sq/streams/ui/templates/settings/input-switch\",\n \"text\": \"no\"\n },\n \"$:/config/sq/streams/exit-on-saving-empty-node\": {\n \"title\": \"$:/config/sq/streams/exit-on-saving-empty-node\",\n \"description\": \"Enable to exit edit mode on saving an empty node\",\n \"caption\": \"Exit editing on saving an empty node\",\n \"settings-template\": \"$:/plugins/sq/streams/ui/templates/settings/input-switch\",\n \"text\": \"no\"\n },\n \"$:/config/sq/streams/new-node-tiddler-template\": {\n \"title\": \"$:/config/sq/streams/new-node-tiddler-template\",\n \"description\": \"T iddler to use as a template for new nodes\",\n \"caption\": \"Tiddler to use as new node template\",\n \"settings-template\": \"$:/plugins/sq/streams/ui/templates/settings/input\"\n },\n \"$:/config/sq/streams/new-node-title\": {\n \"title\": \"$:/config/sq/streams/new-node-title\",\n \"description\": \"Wikitext that is wikified to generate the title for new nodes\",\n \"caption\": \"Template wikified for node title\",\n \"settings-template\": \"$:/plugins/sq/streams/ui/templates/settings/input\",\n \"text\": \"\u003C\u003Cstream-root-title>>/\u003C\u003Cnow \\\"[UTC]YYYY0MM0DD0hh0mm0ssXXX\\\">>\"\n },\n \"$:/config/sq/streams/node-max-width\": {\n \"title\": \"$:/config/sq/streams/node-max-width\",\n \"description\": \"Maximum displayed width of a Stream node\",\n \"caption\": \"Maximum node width\",\n \"settings-template\": \"$:/plugins/sq/streams/ui/templates/settings/input\",\n \"text\": \"550\"\n },\n \"$:/config/sq/streams/node-split-regexp\": {\n \"title\": \"$:/config/sq/streams/node-split-regexp\",\n \"description\": \"Regular expression that is used to split longform text into multiple tiddlers\",\n \"caption\": \"Regular expression used to split text\",\n \"settings-template\": \"$:/plugins/sq/streams/ui/templates/settings/input\",\n \"text\": \"\\\\n\\\\n\"\n },\n \"$:/config/sq/streams/prompt-merge-with-previous\": {\n \"title\": \"$:/config/sq/streams/prompt-merge-with-previous\",\n \"description\": \"Enable to be prompted before merging a node with the previous node\",\n \"caption\": \"Prompt before merging with previous\",\n \"settings-template\": \"$:/plugins/sq/streams/ui/templates/settings/input-switch\",\n \"text\": \"yes\"\n },\n \"$:/config/sq/streams/prompt-split-to-multiple\": {\n \"title\": \"$:/config/sq/streams/prompt-split-to-multiple\",\n \"description\": \"Enable to be prompted before splitting a node to multiple nodes\",\n \"caption\": \"Prompt before creating multiple nodes\",\n \"settings-template\": \"$:/plugins/sq/streams/ui/templates/settings/input-switch\",\n \"text\": \"yes\"\n },\n \"$:/config/shortcuts/streams-cancel-edit\": {\n \"title\": \"$:/config/shortcuts/streams-cancel-edit\",\n \"created\": \"20200914162547334\",\n \"modified\": \"20200914162547341\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"Escape\"\n },\n \"$:/config/shortcuts/streams-delete\": {\n \"title\": \"$:/config/shortcuts/streams-delete\",\n \"created\": \"20200914163552494\",\n \"modified\": \"20200914163552502\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"ctrl-Delete\"\n },\n \"$:/config/shortcuts/streams-demote\": {\n \"title\": \"$:/config/shortcuts/streams-demote\",\n \"created\": \"20200914163104446\",\n \"modified\": \"20200914163104456\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"alt-Down\"\n },\n \"$:/config/shortcuts/streams-focus-higher\": {\n \"title\": \"$:/config/shortcuts/streams-focus-higher\",\n \"created\": \"20200914163342651\",\n \"modified\": \"20200914163342659\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"ctrl-Up\"\n },\n \"$:/config/shortcuts/streams-focus-lower\": {\n \"title\": \"$:/config/shortcuts/streams-focus-lower\",\n \"created\": \"20200914163347755\",\n \"modified\": \"20200914163347764\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"ctrl-Down\"\n },\n \"$:/config/shortcuts/streams-indent\": {\n \"title\": \"$:/config/shortcuts/streams-indent\",\n \"created\": \"20200914162901728\",\n \"modified\": \"20200914162901735\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"Tab\"\n },\n \"$:/config/shortcuts/streams-merge-with-previous\": {\n \"title\": \"$:/config/shortcuts/streams-merge-with-previous\",\n \"created\": \"20200914164323982\",\n \"modified\": \"20200914164323991\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"Backspace\"\n },\n \"$:/config/shortcuts/streams-promote\": {\n \"title\": \"$:/config/shortcuts/streams-promote\",\n \"created\": \"20200914163110776\",\n \"modified\": \"20200914163110785\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"alt-Up\"\n },\n \"$:/config/shortcuts/streams-rename\": {\n \"title\": \"$:/config/shortcuts/streams-rename\",\n \"created\": \"20200914163600676\",\n \"modified\": \"20200914163600683\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"alt-R\"\n },\n \"$:/config/shortcuts/streams-save-and-continue\": {\n \"title\": \"$:/config/shortcuts/streams-save-and-continue\",\n \"created\": \"20200914164329638\",\n \"modified\": \"20200914164329647\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"Enter\"\n },\n \"$:/config/shortcuts/streams-save-and-exit\": {\n \"title\": \"$:/config/shortcuts/streams-save-and-exit\",\n \"created\": \"20200914163850209\",\n \"modified\": \"20200914163850217\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"ctrl-Enter\"\n },\n \"$:/config/shortcuts/streams-save-multiple\": {\n \"title\": \"$:/config/shortcuts/streams-save-multiple\",\n \"created\": \"20200914163843685\",\n \"modified\": \"20200914163843694\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"alt-Enter\"\n },\n \"$:/config/shortcuts/streams-unindent\": {\n \"title\": \"$:/config/shortcuts/streams-unindent\",\n \"created\": \"20200914162907631\",\n \"modified\": \"20200914162907639\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"shift-Tab\"\n },\n \"$:/config/sq/streams/split-at-caret\": {\n \"title\": \"$:/config/sq/streams/split-at-caret\",\n \"description\": \"Enable to split text at caret position on saving a node\",\n \"caption\": \"Split text at caret position\",\n \"settings-template\": \"$:/plugins/sq/streams/ui/templates/settings/input-switch\",\n \"text\": \"yes\"\n },\n \"$:/config/sq/streams/stream-enable-filter\": {\n \"title\": \"$:/config/sq/streams/stream-enable-filter\",\n \"description\": \"Filter that determines which tiddlers get the add node button at the bottom\",\n \"caption\": \"Filter to enable Streams\",\n \"settings-template\": \"$:/plugins/sq/streams/ui/templates/settings/input\",\n \"text\": \"[!is[shadow]]\"\n },\n \"$:/config/sq/streams/swipe-behaviour\": {\n \"title\": \"$:/config/sq/streams/swipe-behaviour\",\n \"description\": \"Choose whether swipe should show a contextmenu, or be used to indent/unindent nodes.\",\n \"caption\": \"Swipe behaviour\",\n \"settings-template\": \"$:/plugins/sq/streams/ui/templates/settings/select\",\n \"option-names\": \"[[Show ContextMenu]] [[Indent / Un-indent]]\",\n \"option-values\": \"contextmenu indent\",\n \"condition\": \"[[$:/config/sq/streams/swipe-behaviour-animated]!is[missing]]\",\n \"text\": \"contextmenu\"\n },\n \"$:/config/sq/streams/swipe-contextmenu-position\": {\n \"title\": \"$:/config/sq/streams/swipe-contextmenu-position\",\n \"description\": \"Position of context menu shown on swiping.\",\n \"caption\": \"Position of context menu shown on swiping.\",\n \"settings-template\": \"$:/plugins/sq/streams/ui/templates/settings/select\",\n \"settings-group\": \"swipe\",\n \"option-names\": \"[[Right]] [[Left]]\",\n \"option-values\": \"right left\",\n \"condition\": \"[[$:/config/sq/streams/swipe-enabled]get[text]match[yes]]\",\n \"text\": \"right\"\n },\n \"$:/config/sq/streams/swipe-enabled\": {\n \"title\": \"$:/config/sq/streams/swipe-enabled\",\n \"description\": \"Enable swipe to show context menu on touch devices.\",\n \"caption\": \"Enable swipe to show context menu on nodes.\",\n \"settings-template\": \"$:/plugins/sq/streams/ui/templates/settings/input-switch\",\n \"settings-group\": \"swipe\",\n \"settings-group-header\": \"0\",\n \"text\": \"yes\"\n },\n \"$:/config/sq/streams/swipe-threshold\": {\n \"title\": \"$:/config/sq/streams/swipe-threshold\",\n \"description\": \"Distance in pixels that triggers a swipe, defaults to 100\",\n \"caption\": \"Swipe threshold in pixels\",\n \"settings-template\": \"$:/plugins/sq/streams/ui/templates/settings/input\",\n \"settings-group\": \"swipe\",\n \"condition\": \"[[$:/config/sq/streams/swipe-enabled]get[text]match[yes]]\",\n \"text\": \"70\"\n },\n \"$:/plugins/sq/streams/contextmenu/contextmenu-styles\": {\n \"title\": \"$:/plugins/sq/streams/contextmenu/contextmenu-styles\",\n \"text\": \".sq-contextmenu {\\n\\tpadding: 12px 0;\\n\\tbox-shadow: rgba(0, 0, 0, 0.40) 0px 2px 20px;\\n\\tfont-family: \\\"Segoe UI\\\", Roboto, Helvetica, Arial;\\n\\tfont-size: 13px;\\n\\tmargin-top: 4px;\\n\\tmin-width: 100px;\\n\\tmax-width: 240px;\\n\\tleft: -16px;\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tborder-radius: 6px;\\n\\tborder: 1px solid #dce0e2;\\n\\ttransition: opacity 200ms ease 0s, transform 200ms ease 0s;\\n\\tmargin-top: 30px;\\n}\\n\\n.sq-contextmenu-alignright {\\n\\ttransform: translate3d(-100%,0,0);\\n}\\n\\n.sq-contextmenu .tc-menu-list-item {\\n\\tpadding: 0 18px;\\n\\tline-height: 24px;\\n\\twhite-space: nowrap;\\n\\tcolor: #4b5155;\\n\\tcursor: default !important;\\n\\ttext-indent: 0;\\n}\\n\\n.sq-contextmenu-itemwrapper {\\n\\tdisplay: flex;\\n\\tjustify-content: space-between;\\n\\talign-items: center;\\n\\tposition: relative;\\t\\n}\\n\\n.sq-contextmenu-itemtext {\\n\\tdisplay: flex;\\n\\twhite-space: nowrap;\\n\\ttext-overflow: ellipsis;\\n\\tflex-grow: 1;\\n\\toverflow: hidden;\\t\\n}\\n\\n.sq-contextmenu-itemicon {\\n\\tcolor: #b7bcbf;\\n\\tmargin-left: 16px;\\n\\tmin-width: 22px;\\t\\n}\\n\\n.sq-contextmenu-divider {\\n\\tborder-top-width: 1px;\\n\\tborder-top-color: #eceef0;\\n\\tborder-top-style: solid;\\n\\tmargin: 6px 0;\\n}\",\n \"created\": \"20200602120854810\",\n \"modified\": \"20200603055942655\",\n \"tags\": \"$:/tags/Stylesheet\",\n \"type\": \"text/css\"\n },\n \"$:/plugins/sq/streams/contextmenu/contextmenu-template\": {\n \"title\": \"$:/plugins/sq/streams/contextmenu/contextmenu-template\",\n \"created\": \"20200602163018613\",\n \"modified\": \"20200603055942658\",\n \"tags\": \"\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\\\\define menu-item(title,subtitle:\\\"\\\",actions:\\\"\\\")\\n\\t\\t\u003C$button class=\\\"tc-menu-list-item tc-btn-invisible\\\" actions=\u003C\u003C__actions__>> >\\n\\t\\t\\t\u003Cspan class=\\\"sq-contextmenu-itemwrapper\\\">\\n\\t\\t\\t\\t\u003Cspan class=\\\"sq-contextmenu-itemtext\\\">$title$\u003C/span>\\n\\t\\t\\t\\t\u003Cspan class=\\\"sq-contextmenu-itemicon\\\">\u003C$macrocall $name=\\\"displayshortcuts\\\" $output=\\\"text/plain\\\" shortcuts=\\\"$subtitle$\\\" prefix=\\\"\\\" separator=\\\" \\\" suffix=\\\"\\\"/>\u003C/span>\\n\\t\\t\\t\u003C/span>\\n\\t\\t\u003C/$button>\\n\\\\end\\n\\n\\\\define menu-divider() \u003Cdiv class=\\\"sq-contextmenu-divider\\\"/>\\n\\n\u003C$reveal type=\\\"popup\\\" state=\u003C\u003Ccontextmenu-state>> position={{{[\u003Ccontextmenu-state>get[position]]}}} tag=\\\"div\\\">\\n\\t\u003Cdiv class={{{tc-drop-down sq-contextmenu [\u003Ccontextmenu-state>get[position]match[right]then[sq-contextmenu-alignright]else[]] +[join[ ]]}}}>\\n\\t\\t\u003C$macrocall $name=\\\"menu-item\\\" title=\\\"Open\\\" actions=\\\"\\\"\\\"\u003C$action-navigate/>\\\"\\\"\\\"/>\\n\\t\\t\u003C$macrocall $name=\\\"menu-item\\\" title=\\\"Rename\\\" subtitle=\\\"((streams-rename))\\\" actions=\u003C\u003Crename-node-actions>>/>\\n\\t\\t\u003C$macrocall $name=\\\"menu-item\\\" title=\\\"Delete\\\" subtitle=\\\"((streams-delete))\\\" actions=\u003C\u003Cdelete-node-actions>>/>\\n\\t\\t\u003C$list filter=\\\"[all[shadows+tiddlers]tag[$:/tags/streams/contextmenu]]\\\" variable=\\\"listItem\\\">\\n\\t\\t\\t\u003C$macrocall $name=\\\"menu-item\\\"\\n\\t\\t\\t\\ttitle={{{[\u003ClistItem>get[sq-contextmenu-name]]}}} \\n\\t\\t\\t\\tsubtitle={{{[\u003ClistItem>get[key]] [\u003ClistItem>get[sq-contextmenu-subtitle]] +[first[]]}}} \\n\\t\\t\\t\\tactions={{{[\u003ClistItem>get[text]]}}} />\\n\\t\\t\u003C/$list>\\n\\t\\t\u003C\u003Cmenu-divider>>\\n\\t\\t\u003C$macrocall $name=\\\"menu-item\\\" title=\\\"Keyboard Shortcuts (?)\\\" actions=\\\"\\\"\\\"\u003C$action-navigate $to=\\\"$:/plugins/sq/streams/info/keyboard-shortcuts\\\"/>\\\"\\\"\\\"/>\\n\\t\u003C/div>\\n\u003C/$reveal>\"\n },\n \"$:/plugins/sq/streams/codemirror-tweak\": {\n \"title\": \"$:/plugins/sq/streams/codemirror-tweak\",\n \"text\": \"/*\\\\\\n\\ntitle: $:/plugins/sq/streams/codemirror-tweak\\ntype: application/javascript\\nmodule-type: startup\\n\\n\\\\*/\\n\\nexports.platforms = [\\\"browser\\\"];\\nexports.synchronous = true;\\n\\nexports.startup = function() {\\n\\n\\tif($tw.wiki.getTiddler(\\\"$:/plugins/tiddlywiki/codemirror\\\") && ($tw.wiki.getTiddlerText(\\\"$:/config/Plugins/Disabled/$:/plugins/tiddlywiki/codemirror\\\",\\\"no\\\") === \\\"no\\\")) {\\n\\t\\tvar CMEngine = require(\\\"$:/plugins/tiddlywiki/codemirror/engine.js\\\").CodeMirrorEngine;\\n\\t\\tCMEngine.prototype.focus = function() {\\n\\t\\t\\tthis.cm.focus();\\n\\t\\t\\tvar caretPosition = this.widget.getAttribute(\\\"caretPosition\\\",\\\"end\\\");\\t\\n\\t\\t\\tvar index = (caretPosition === \\\"end\\\") ? this.cm.getValue().length : parseInt(caretPosition);\\n\\t\\t\\tthis.cm.doc.setSelection(this.cm.doc.posFromIndex(index));\\n\\t\\t}\\n\\t}\\n\\n}\",\n \"type\": \"application/javascript\",\n \"module-type\": \"startup\"\n },\n \"$:/plugins/sq/streams/draggable-tweaks.js\": {\n \"title\": \"$:/plugins/sq/streams/draggable-tweaks.js\",\n \"text\": \"/*\\\\\\ntitle: $:/plugins/sq/streams/draggable-tweaks.js\\ntype: application/javascript\\nmodule-type: widget-subclass\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nexports.baseClass = \\\"draggable\\\";\\n\\nexports.constructor = function(parseTreeNode,options) {\\n\\tthis.initialise(parseTreeNode,options);\\n};\\n\\nexports.prototype = {};\\n\\nexports.prototype.render = function(parent,nextSibling) {\\n\\t// Call the base class handleChangeEvent function\\n\\tObject.getPrototypeOf(Object.getPrototypeOf(this)).render.call(this,parent,nextSibling);\\n\\tvar self = this;\\n\\t$tw.utils.each(this.attributes,function(v,a) {\\n\\t\\tif(a.substring(0,10) === \\\"data-node-\\\") {\\n\\t\\t\\ttry {\\n\\t\\t\\t\\tself.domNodes[0].setAttributeNS(null,a,v);\\n\\t\\t\\t} catch(e){\\n\\t\\t\\t\\t\\n\\t\\t\\t}\\n\\t\\t}\\n\\t});\\n};\\n\\n})();\",\n \"type\": \"application/javascript\",\n \"module-type\": \"widget-subclass\"\n },\n \"$:/plugins/sq/streams/droppable-tweaks.js\": {\n \"title\": \"$:/plugins/sq/streams/droppable-tweaks.js\",\n \"text\": \"/*\\\\\\ntitle: $:/plugins/sq/streams/droppable-tweaks.js\\ntype: application/javascript\\nmodule-type: widget-subclass\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nexports.baseClass = \\\"droppable\\\";\\n\\nexports.constructor = function(parseTreeNode,options) {\\n\\tthis.initialise(parseTreeNode,options);\\n};\\n\\nexports.prototype = {};\\n\\nexports.prototype.render = function(parent,nextSibling) {\\n\\t// Call the base class handleChangeEvent function\\n\\tObject.getPrototypeOf(Object.getPrototypeOf(this)).render.call(this,parent,nextSibling);\\n\\tvar self = this;\\n\\t$tw.utils.each(this.attributes,function(v,a) {\\n\\t\\tif(a.substring(0,10) === \\\"data-node-\\\") {\\n\\t\\t\\ttry {\\n\\t\\t\\t\\tself.domNode.setAttributeNS(null,a,v);\\n\\t\\t\\t} catch(e){\\n\\t\\t\\t\\t\\n\\t\\t\\t}\\n\\t\\t}\\n\\t});\\n};\\n\\n})();\",\n \"type\": \"application/javascript\",\n \"module-type\": \"widget-subclass\"\n },\n \"$:/plugins/sq/streams/framed-engine-tweak\": {\n \"title\": \"$:/plugins/sq/streams/framed-engine-tweak\",\n \"text\": \"/*\\\\\\n\\ntitle: $:/plugins/sq/streams/framed-engine-tweak\\ntype: application/javascript\\nmodule-type: startup\\n\\n\\\\*/\\n\\nvar FramedEngine = require(\\\"$:/core/modules/editor/engines/framed.js\\\").FramedEngine;\\n\\nFramedEngine.prototype.focus = function() {\\n\\tif(this.domNode.focus && this.domNode.select) {\\n\\t\\tthis.domNode.focus();\\n\\t\\tif(this.widget.getAttribute(\\\"select\\\")===\\\"false\\\") {\\n\\t\\t\\tvar caretPosition = this.widget.getAttribute(\\\"caretPosition\\\",\\\"end\\\");\\n\\t\\t\\tcaretPosition = (caretPosition === \\\"end\\\") ? this.domNode.value.length : parseInt(caretPosition);\\n\\t\\t\\tthis.domNode.setSelectionRange(caretPosition,caretPosition);\\n\\t\\t} else {\\n\\t\\t\\tthis.domNode.select();\\n\\t\\t}\\n\\t}\\n\\t/*\\n\\tif(!this.setupDblClick) {\\n\\t\\tthis.domNode.addEventListener(\\\"dblclick\\\",this.propagateDblClick.bind(this));\\n\\t\\tthis.setupDblClick = true;\\n\\t}\\n\\t*/\\n}\\n\\n/*\\nFramedEngine.prototype.propagateDblClick = function(event) {\\n\\tif(this.widget.wiki.getTiddlerText(\\\"$:/config/sq/streams/dblclick-editor-to-exit\\\") === \\\"yes\\\") {\\n\\t\\tvar newEvent = this.widget.document.createEventObject ? this.widget.document.createEventObject() : this.widget.document.createEvent(\\\"Events\\\");\\n\\t\\tif(newEvent.initEvent) {\\n\\t\\t\\tnewEvent.initEvent(\\\"dblclick\\\", true, true);\\n\\t\\t}\\n\\t\\tnewEvent.keyCode = event.keyCode;\\n\\t\\tnewEvent.which = event.which;\\n\\t\\tnewEvent.metaKey = event.metaKey;\\n\\t\\tnewEvent.ctrlKey = event.ctrlKey;\\n\\t\\tnewEvent.altKey = event.altKey;\\n\\t\\tnewEvent.shiftKey = event.shiftKey;\\n\\t\\treturn !this.widget.parentDomNode.dispatchEvent(newEvent);\\n\\t}\\n\\treturn false;\\n}\\n*/\",\n \"type\": \"application/javascript\",\n \"module-type\": \"startup\"\n },\n \"$:/plugins/sq/streams/simple-engine-tweak\": {\n \"title\": \"$:/plugins/sq/streams/simple-engine-tweak\",\n \"text\": \"/*\\\\\\n\\ntitle: $:/plugins/sq/streams/simple-engine-tweak\\ntype: application/javascript\\nmodule-type: startup\\n\\n\\\\*/\\n\\nvar SimpleEngine = require(\\\"$:/core/modules/editor/engines/simple.js\\\").SimpleEngine;\\n\\nSimpleEngine.prototype.focus = function() {\\n\\tif(this.domNode.focus && this.domNode.select) {\\n\\t\\tthis.domNode.focus();\\n\\t\\tif(this.widget.getAttribute(\\\"select\\\")===\\\"false\\\") {\\n\\t\\t\\tvar caretPosition = this.widget.getAttribute(\\\"caretPosition\\\",\\\"end\\\");\\n\\t\\t\\tcaretPosition = (caretPosition === \\\"end\\\") ? this.domNode.value.length : parseInt(caretPosition);\\n\\t\\t\\tthis.domNode.setSelectionRange(caretPosition,caretPosition);\\n\\t\\t} else {\\n\\t\\t\\tthis.domNode.select();\\n\\t\\t}\\n\\t}\\n}\",\n \"type\": \"application/javascript\",\n \"module-type\": \"startup\"\n },\n \"$:/plugins/sq/streams/delete-hook/actions\": {\n \"title\": \"$:/plugins/sq/streams/delete-hook/actions\",\n \"created\": \"20200527200401408\",\n \"modified\": \"20200527234136578\",\n \"tags\": \"$:/tags/deleteTiddlerAction\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\\\\define delete-children()\\n\\t\u003C$list filter=\\\"[enlist{!!stream-list}]\\\">\\n\\t\\t\u003C\u003Cdelete-children>>\\n\\t\u003C/$list>\\n\\t\u003C\u003C$action-deletetiddler $filter=\\\"[enlist{!!stream-list}]\\\"/>\\n\\\\end\\n\\n\u003C$list filter=\\\"[\u003CcurrentTiddler>has[stream-type]]\\\">\\n\\t\u003C$list filter=\\\"[\u003CcurrentTiddler>has[parent]]\\\">\\n\\t\\t\u003C$action-listops $tiddler={{!!parent}} $field=\\\"stream-list\\\" $subfilter=\\\"-[\u003CcurrentTiddler>]\\\" />\\n\\t\u003C/$list>\\n\\t\u003C$list variable=\\\"count\\\" filter=\\\"[enlist{!!stream-list}count[]!match[0]]\\\">\\n\\t\\t\u003C$action-confirm $message=\\\"Do you wish to delete all tiddlers descended from this tiddler?\\\">\\n\\t\\t\\t\u003C\u003Cdelete-children>>\\n\\t\\t\u003C/$action-confirm>\\n\\t\u003C/$list>\\n\u003C/$list>\"\n },\n \"$:/plugins/sq/streams/delete-hook/hook\": {\n \"title\": \"$:/plugins/sq/streams/delete-hook/hook\",\n \"text\": \"/*\\\\\\ntitle: $:/plugins/sq/streams/delete-hook/hook\\ntype: application/javascript\\nmodule-type: startup\\n\\n\\\\*/\\n\\n$tw.hooks.addHook(\\\"th-deleting-tiddler\\\",function(tiddler) {\\n\\tif(tiddler.fields[\\\"draft.of\\\"]) {\\n\\t\\treturn;\\n\\t}\\n\\t\\n\\t$tw.rootWidget.invokeActionsByTag(\\\"$:/tags/deleteTiddlerAction\\\",null,{currentTiddler : tiddler.fields.title});\\n});\",\n \"type\": \"application/javascript\",\n \"module-type\": \"startup\"\n },\n \"$:/plugins/sq/streams/filters/get-stream-nodes.js\": {\n \"title\": \"$:/plugins/sq/streams/filters/get-stream-nodes.js\",\n \"text\": \"/*\\\\\\ntitle: $:/plugins/sq/streams/filters/get-stream-nodes.js\\ntype: application/javascript\\nmodule-type: filteroperator\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\n/*\\nExport our filter function\\n*/\\nexports[\\\"get-stream-nodes\\\"] = function(source,operator,options) {\\n\\tvar results = [],\\n suffixes = (operator.suffixes || []),\\n\\t\\tmatchTitles = (suffixes[0] || []).indexOf(\\\"matchtitles\\\") !== -1;\\n\\n\\tsource(function(tiddler,title) {\\n\\t\\t\\n\\t\\tvar processNode = function(node,nodeTitle) {\\n\\t\\t\\tif(node && node.fields[\\\"stream-list\\\"] && node.fields[\\\"stream-type\\\"]) {\\n\\t\\t\\t\\tresults.push(nodeTitle);\\n\\t\\t\\t\\tvar streamList = $tw.utils.parseStringArray(node.fields[\\\"stream-list\\\"]);\\n\\t\\t\\t\\t$tw.utils.each(streamList,function(streamListNodeTitle) {\\n\\t\\t\\t\\t\\tvar streamListNode = options.wiki.getTiddler(streamListNodeTitle);\\n\\t\\t\\t\\t\\tif(streamListNode) {\\n\\t\\t\\t\\t\\t\\tprocessNode(streamListNode,streamListNodeTitle);\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t});\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tresults.push(nodeTitle);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\tif(tiddler) {\\n\\t\\t\\tprocessNode(tiddler,title);\\n\\t\\t}\\n\\t});\\n\\treturn results;\\n};\\n\\n})();\\n\",\n \"type\": \"application/javascript\",\n \"module-type\": \"filteroperator\"\n },\n \"$:/plugins/sq/streams/filters/get-stream-root.js\": {\n \"title\": \"$:/plugins/sq/streams/filters/get-stream-root.js\",\n \"text\": \"/*\\\\\\ntitle: $:/plugins/sq/streams/filters/get-stream-root.js\\ntype: application/javascript\\nmodule-type: filteroperator\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\n/*\\nExport our filter function\\n\\n//\\t[[xyz]get-stream-root[]]\\n//\\t[[xyz]get-stream-root:matchtitles[]]\\n//\\t[[xyz]get-stream-root:includeall,matchtitles[]]\\n\\n*/\\nexports[\\\"get-stream-root\\\"] = function(source,operator,options) {\\n\\tvar results = [],\\n suffixes = (operator.suffixes || []),\\n\\t\\tincludeAll = (suffixes[0] || []).indexOf(\\\"includeall\\\") !== -1,\\n\\t\\tmatchTitles = (suffixes[0] || []).indexOf(\\\"matchtitles\\\") !== -1;\\n\\n\\tsource(function(tiddler,title) {\\n\\t\\tvar ancestors = [];\\n\\t\\tif(tiddler && tiddler.fields[\\\"parent\\\"] && tiddler.fields[\\\"stream-type\\\"]) {\\n\\t\\t\\tvar parentTiddler = tiddler;\\n\\t\\t\\twhile(parentTiddler) {\\n\\t\\t\\t\\t\\tif(tiddler.fields.title.startsWith(parentTiddler.fields[\\\"title\\\"].split(\\\"/\\\")[0]) || !matchTitles ) {\\n\\t\\t\\t\\t\\t\\tancestors.unshift(parentTiddler.fields.title);\\n\\t\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\tif(parentTiddler.fields.parent) {\\t\\n\\t\\t\\t\\t\\tparentTiddler = options.wiki.getTiddler(parentTiddler.fields.parent);\\n\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t} else {\\n\\t\\t\\tancestors.unshift(title);\\n\\t\\t}\\n\\t\\tif(!includeAll) {\\n\\t\\t\\tancestors.splice(1);\\n\\t\\t}\\n\\t\\t$tw.utils.pushTop(results,ancestors);\\n\\t});\\n\\treturn results;\\n};\\n\\n})();\\n\\n\",\n \"type\": \"application/javascript\",\n \"module-type\": \"filteroperator\"\n },\n \"$:/plugins/sq/streams/info/keyboard-shortcuts\": {\n \"title\": \"$:/plugins/sq/streams/info/keyboard-shortcuts\",\n \"text\": \"!! Streams keyboard shortcuts\\n\\n\u003Ctable>\\n\u003Ctbody>\\n\u003C$list filter=\\\"[all[shadows+tiddlers]prefix[$:/config/ShortcutInfo/streams-]]\\\">\\n\u003Ctr>\\n\u003Ctd>{{!!text}}\u003C/td>\\n\u003Ctd>\u003C$macrocall $name=\\\"displayshortcuts\\\" $output=\\\"text/plain\\\" shortcuts={{{[\u003CcurrentTiddler>removeprefix[$:/config/ShortcutInfo/]addprefix[((]addsuffix[))]]}}} prefix=\\\"\\\" separator=\\\" \\\" suffix=\\\"\\\"/>\u003C/td>\\n\u003C/tr>\\n\u003C/$list>\\n\u003C/tbody>\\n\u003C/table>\\n\\nShortcuts can be customized in the [[Control Panel|$:/core/ui/ControlPanel/KeyboardShortcuts]]\\n\\n''Drag and drop''\\n\\n* hold \u003Ckbd>control\u003C/kbd> key to drag and drop and create a copy of the node in another stream tiddler\\n* hold \u003Ckbd>shift\u003C/kbd> key to drag and drop and create a node that transcludes the contents of this node, in another stream tiddler\\n\\n''for the moment it is a design decision to disallow copying/transcluding the node inside the same root (story) tiddler''\\n\\n//Note that it is a known limitation that copying a node or transcluding it does not apply to the children of the node. This is on the [[list of things to implement|Roadmap]].//\"\n },\n \"$:/plugins/sq/streams/keyboard-shortcuts/cancel-edit-node\": {\n \"title\": \"$:/plugins/sq/streams/keyboard-shortcuts/cancel-edit-node\",\n \"tags\": \"$:/tags/streams/keyboard-shortcuts\",\n \"key\": \"((streams-cancel-edit))\",\n \"text\": \"\u003C\u003Ccancel-edit-node-actions>>\"\n },\n \"$:/plugins/sq/streams/keyboard-shortcuts/delete-node\": {\n \"title\": \"$:/plugins/sq/streams/keyboard-shortcuts/delete-node\",\n \"tags\": \"$:/tags/streams/keyboard-shortcuts\",\n \"key\": \"((streams-delete))\",\n \"text\": \"\u003C\u003Cdelete-node-actions>>\"\n },\n \"$:/plugins/sq/streams/keyboard-shortcuts/demote-node\": {\n \"title\": \"$:/plugins/sq/streams/keyboard-shortcuts/demote-node\",\n \"tags\": \"$:/tags/streams/keyboard-shortcuts\",\n \"key\": \"((streams-demote))\",\n \"text\": \"\u003C\u003Cdemote-node-actions>>\"\n },\n \"$:/plugins/sq/streams/keyboard-shortcuts/focus-higher-node\": {\n \"title\": \"$:/plugins/sq/streams/keyboard-shortcuts/focus-higher-node\",\n \"tags\": \"$:/tags/streams/keyboard-shortcuts\",\n \"key\": \"((streams-focus-higher))\",\n \"text\": \"\u003C\u003Cfocus-higher-node-actions>>\"\n },\n \"$:/plugins/sq/streams/keyboard-shortcuts/focus-lower-node\": {\n \"title\": \"$:/plugins/sq/streams/keyboard-shortcuts/focus-lower-node\",\n \"tags\": \"$:/tags/streams/keyboard-shortcuts\",\n \"key\": \"((streams-focus-lower))\",\n \"text\": \"\u003C\u003Cfocus-lower-node-actions>>\"\n },\n \"$:/plugins/sq/streams/keyboard-shortcuts/indent-node\": {\n \"title\": \"$:/plugins/sq/streams/keyboard-shortcuts/indent-node\",\n \"tags\": \"$:/tags/streams/keyboard-shortcuts $:/tags/streams/contextmenu\",\n \"key\": \"((streams-indent))\",\n \"sq-contextmenu-name\": \"Indent\",\n \"sq-contextmenu-subtitle\": \"\",\n \"text\": \"\u003C\u003Cindent-node-actions>>\"\n },\n \"$:/plugins/sq/streams/keyboard-shortcuts/merge-with-previous\": {\n \"title\": \"$:/plugins/sq/streams/keyboard-shortcuts/merge-with-previous\",\n \"tags\": \"$:/tags/streams/keyboard-shortcuts\",\n \"key\": \"((streams-merge-with-previous))\",\n \"prevent-default\": \"no\",\n \"text\": \"\u003C\u003Cmerge-with-previous-node-actions>>\"\n },\n \"$:/plugins/sq/streams/keyboard-shortcuts/promote-node\": {\n \"title\": \"$:/plugins/sq/streams/keyboard-shortcuts/promote-node\",\n \"tags\": \"$:/tags/streams/keyboard-shortcuts\",\n \"key\": \"((streams-promote))\",\n \"text\": \"\u003C\u003Cpromote-node-actions>>\"\n },\n \"$:/plugins/sq/streams/keyboard-shortcuts/rename-node\": {\n \"title\": \"$:/plugins/sq/streams/keyboard-shortcuts/rename-node\",\n \"tags\": \"$:/tags/streams/keyboard-shortcuts\",\n \"key\": \"((streams-rename))\",\n \"text\": \"\u003C\u003Crename-node-actions>>\"\n },\n \"$:/plugins/sq/streams/keyboard-shortcuts/save-and-continue\": {\n \"title\": \"$:/plugins/sq/streams/keyboard-shortcuts/save-and-continue\",\n \"tags\": \"$:/tags/streams/keyboard-shortcuts\",\n \"key\": \"((streams-save-and-continue))\",\n \"text\": \"\u003C\u003Csave-node-actions>>\"\n },\n \"$:/plugins/sq/streams/keyboard-shortcuts/save-and-exit\": {\n \"title\": \"$:/plugins/sq/streams/keyboard-shortcuts/save-and-exit\",\n \"tags\": \"$:/tags/streams/keyboard-shortcuts\",\n \"key\": \"((streams-save-and-exit))\",\n \"text\": \"\u003C\u003Csave-edit-node-actions>>\"\n },\n \"$:/plugins/sq/streams/keyboard-shortcuts/save-multiple\": {\n \"title\": \"$:/plugins/sq/streams/keyboard-shortcuts/save-multiple\",\n \"tags\": \"$:/tags/streams/keyboard-shortcuts\",\n \"key\": \"((streams-save-multiple))\",\n \"text\": \"\u003C\u003Csave-multiple-actions>>\"\n },\n \"$:/plugins/sq/streams/keyboard-shortcuts/unindent-node\": {\n \"title\": \"$:/plugins/sq/streams/keyboard-shortcuts/unindent-node\",\n \"tags\": \"$:/tags/streams/keyboard-shortcuts $:/tags/streams/contextmenu\",\n \"key\": \"((streams-unindent))\",\n \"sq-contextmenu-name\": \"Un-indent\",\n \"sq-contextmenu-subtitle\": \"\",\n \"text\": \"\u003C\u003Cunindent-node-actions>>\"\n },\n \"$:/plugins/sq/streams/icons/new-node-btn\": {\n \"title\": \"$:/plugins/sq/streams/icons/new-node-btn\",\n \"created\": \"20200528160920973\",\n \"modified\": \"20200528164140128\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\u003Csvg width=\\\"20\\\" height=\\\"20\\\" viewBox=\\\"0 0 20 20\\\">\\n\u003Cstyle>\\n .line{\\n stroke:#868c90;\\n }\\n\u003C/style>\\n \u003Ccircle cx=\\\"10.5\\\" cy=\\\"10.5\\\" r=\\\"9\\\" class=\\\"circle\\\" fill=\\\"#fff\\\" >\u003C/circle>\\n \u003Cline x1=\\\"6\\\" y1=\\\"10.5\\\" x2=\\\"15\\\" y2=\\\"10.5\\\" class=\\\"line\\\">\u003C/line>\\n \u003Cline x1=\\\"10.5\\\" y1=\\\"6\\\" x2=\\\"10.5\\\" y2=\\\"15\\\" class=\\\"line\\\">\u003C/line>\\n\u003C/svg>\"\n },\n \"$:/plugins/sq/streams/refresh-hook.js\": {\n \"title\": \"$:/plugins/sq/streams/refresh-hook.js\",\n \"text\": \"/*\\\\\\n\\ntitle: $:/plugins/sq/streams/refresh-hook.js\\ntype: application/javascript\\nmodule-type: startup\\n\\\\*/\\n\\n$tw.hooks.addHook(\\\"th-page-refreshed\\\",function handleEvent() {\\n\\t$tw.wiki.deleteTiddler(\\\"$:/state/sq/streams/caret-position\\\");\\n});\\n\\n\",\n \"type\": \"application/javascript\",\n \"module-type\": \"startup\"\n },\n \"$:/plugins/sq/streams/releasenotes\": {\n \"title\": \"$:/plugins/sq/streams/releasenotes\",\n \"text\": \"\u003Ch3 id=\\\"1222-2021-07-21\\\">\u003Ca href=\\\"https://github.com/saqimtiaz/streams/compare/v1.2.21...v1.2.22\\\">1.2.22\u003C/a> (2021-07-21)\u003C/h3>\\n\u003Ch3 id=\\\"bug-fixes\\\">Bug Fixes\u003C/h3>\\n\u003Cul>\\n\u003Cli>\u003Cstrong>hooks:\u003C/strong> allow buttons added to the bottom of a stream root by plugins using the tag $:/tags/streams/root-buttons to be displayed (\u003Ca href=\\\"https://github.com/saqimtiaz/streams/commit/ffce905fbf396983235354e26b3531b2b69a84c3\\\">ffce905\u003C/a>), closes \u003Ca href=\\\"https://github.com/saqimtiaz/streams/issues/30\\\">#30\u003C/a>\u003C/li>\\n\u003C/ul>\\n\",\n \"type\": \"text/vnd.tiddlywiki\"\n },\n \"$:/config/flibbles/relink/fields/parent\": {\n \"title\": \"$:/config/flibbles/relink/fields/parent\",\n \"created\": \"20200530105147302\",\n \"modified\": \"20200530105155682\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"title\"\n },\n \"$:/config/flibbles/relink/fields/stream-list\": {\n \"title\": \"$:/config/flibbles/relink/fields/stream-list\",\n \"created\": \"20200530105147302\",\n \"modified\": \"20200530105155682\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"list\"\n },\n \"$:/plugins/sq/streams/styles\": {\n \"title\": \"$:/plugins/sq/streams/styles\",\n \"created\": \"20170922203553093\",\n \"modified\": \"20170927050808722\",\n \"tags\": \"[[$:/tags/Stylesheet]]\",\n \"text\": \".stream-root {\\n\\tmargin-left: -2.5em;\\n}\\n\\n@media only screen and (max-width: 600px) {\\n\\t.stream-root {\\n\\t\\tmargin-left: -1em;\\n\\t}\\n}\\n\\n.stream-row {\\n display: flex;\\n flex: 0 0 auto;\\n\\tuser-select: none;\\n}\\n\\n.stream-row-children {\\n\\tdisplay:flex;\\n\\tflex: 0 0 auto;\\n\\tflex-direction: column;\\n\\t/*padding-left: 0.5em;*/\\n\\tborder-left: 1px solid \u003C\u003Ccolor message-border>>;\\n\\tmargin-left: 30px;\\n}\\n\\n.stream-row-nochildren + .stream-row-children {\\n\\tborder-left: none;\\n}\\n\\n\\n.stream-node-disabled,\\n.stream-node-disabled + div.stream-row-children{\\n\\tbackground-color: \u003C\u003Ccolor tiddler-editor-border>>;\\n}\\n\\n.stream-node-disabled + div.stream-row-children + div.stream-node-disabled,\\n.stream-node-disabled + div.stream-row-children + div.stream-node-disabled + div.stream-row-children,\\n.stream-node-disabled.stream-row-nochildren + div.stream-row-children,\\n.stream-node-disabled.stream-row-nochildren + div.stream-row-children > div.stream-node-disabled {\\n\\tbackground-color: transparent;\\n}\\n\\n/* hide last droppable in a list when the last row is disabled */\\n.stream-node-disabled + div.stream-row-children + div.stream-droppable.tc-droppable.stream-droppable-terminal{\\n\\tdisplay: none;\\n\\t/*visibility: hidden;*/\\n}\\n\\n.stream-node-disabled + div.stream-row-children + .stream-node-disabled + div.stream-row-children + div.stream-droppable.tc-droppable.stream-droppable-terminal{\\n\\tdisplay: block;\\n}\\n\\n\\n/*\\n.stream-node-disabled.stream-row-nochildren + div.stream-row-children {\\n\\tvisibility: hidden;\\n}\\n\\n.stream-node-disabled.stream-row-nochildren + div.stream-row-children + div + div {\\n\\tvisibility: visible;\\n}\\n*/\\n\\n\\n.stream-droppable.tc-droppable.tc-dragover > .tc-droppable-placeholder,\\n.stream-droppable.tc-droppable.tc-dragover > div > .tc-droppable-placeholder {\\n\\tmargin-left: 29px;\\n\\tline-height: 5px;\\n\\theight: 5px;\\n\\tborder: 2px solid \u003C\u003Ccolor dropzone-background>>;\\n\\tbackground-color: \u003C\u003Ccolor dropzone-background>>;\\n}\\n\\n/*\\n.stream-droppable-terminal.tc-drag-over .stream-droppable-spacer {\\n\\theight: 0;\\n}\\n*/\\n\\n.stream-droppable-spacer {\\n\\theight: 0.3em;\\n}\\n\\n\u003C$vars currentTiddler={{{[prefix[$:/state/sq-context-popup]]}}}>\\n[data-node-title=\\\"{{!!current}}\\\"],\\n[data-node-title=\\\"{{!!current}}\\\"] + div{\\n\\tbackground: \u003C\u003Ccolor notification-background>>;\\n\\tcolor: \u003C\u003Ccolor message-foreground>>;\\n}\\n\u003C/$vars>\\n\\n.stream-node-control {\\n\\tdisplay: flex;\\n flex: 0 0 45px;\\n padding-top: 4px;\\n padding-left: 4px;\\n}\\n\\n.stream-node-control .stream-node-collapser,\\n.stream-node-control .stream-node-handle {\\n display: flex;\\n height: 13px;\\n width: 13px;\\n margin-top: 4px;\\n border-radius: 50%;\\n justify-content: center;\\n align-items: center;\\n}\\n\\n.stream-node-control.stream-node-control-addnew .stream-node-handle {\\n\\twidth: 20px;\\n\\theight: 20px;\\n\\tmargin-top: 0;\\n}\\n\\n.stream-node-control.stream-node-control-addnew .stream-node-collapser {\\n\\twidth: 16px;\\n}\\n\\n.stream-node-control.stream-node-control-addnew div.tc-btn-invisible svg {\\n\\topacity: 0.8;\\n}\\n\\n\\n.stream-node-control.stream-node-control-addnew div.tc-btn-invisible svg circle {\\n\\tfill: \u003C\u003Ccolor tiddler-controls-foreground>>;\\n\\topacity: 0.6;\\n}\\n\\n.stream-node-control.stream-node-control-addnew div.tc-btn-invisible svg line.line {\\n\\tstroke: \u003C\u003Ccolor foreground>>;\\n\\topacity: 1;\\n}\\n\\n.stream-node-control.stream-node-control-addnew div.tc-btn-invisible:hover svg circle {\\n\\tfill: \u003C\u003Ccolor tiddler-controls-foreground-hover>>;\\n}\\n\\n.stream-node-control .stream-node-collapser {\\n\\theight: 13px;\\n\\twidth: 20px;\\n\\topacity:0;\\n}\\n\\n.stream-row-nochildren .stream-node-collapser {\\n\\tvisibility: hidden;\\n}\\n\\n.stream-row:hover .stream-node-collapser,\\n.stream-row-children-collapsed.stream-row:hover .stream-node-collapser {\\n\\topacity: 0.4;\\n}\\n\\n.stream-row:hover .stream-node-collapser:hover,\\n.stream-row-children-collapsed.stream-row:hover .stream-node-collapser:hover {\\n\\topacity: 0.9;\\n}\\n\\n.stream-row-children-collapsed .stream-node-control .stream-node-collapser {\\n\\topacity: 0.4;\\n}\\n\\n.stream-node-collapser.tc-btn-invisible,\\n.stream-node-collapser.tc-btn-invisible:focus {\\n\\toutline: none;\\n}\\n\\n.stream-node-collapser svg {\\n\\ttransform: rotateZ(90deg);\\n\\ttransition: transform 200ms ease-in-out 0s;\\n}\\n\\n.stream-row-children-collapsed .stream-node-collapser svg {\\n\\ttransform: rotateZ(0deg);\\n}\\n\\n/*\\n.stream-node-control .stream-node-handle-wrapper .stream-node-handle {\\n\\twidth: 13px;\\n\\theight: 13px;\\n\\tdisplay: flex;\\n\\talign-items : center;\\n\\tjustify-content: center;\\n}\\n*/\\n\\n.stream-node-control .stream-node-handle .stream-node-handle-inner {\\n border-radius: 50%;\\n width: 6px;\\n height: 6px;\\n background-color: \u003C\u003Ccolor foreground>>;\\n\\topacity: 0.3;\\n}\\n\\n.stream-node-control .sq-contextmenu-container {\\n\\tdisplay: flex;\\n}\\n\\n/*\\n.stream-row:hover .stream-node-control .stream-node-handle-wrapper .stream-node-handle-inner {\\n\\topacity: 0.7;\\n}\\n*/\\n\\n.stream-row:hover .stream-node-control .stream-node-handle:hover .stream-node-handle-inner {\\n\\topacity: 1;\\n} \\n\\n\u003C$vars currentTiddler={{{[prefix[$:/state/sq-context-popup]]}}}>\\n[data-node-title=\\\"{{!!current}}\\\"] .stream-node-handle .stream-node-handle-inner {\\n border: 5px solid #5778d8;\\n opacity: 1;\\n}\\n\u003C/$vars>\\n\\n\\n.stream-node-block {\\n overflow-wrap: break-word;\\n\\tmax-width: {{$:/config/sq/streams/node-max-width}}px;\\n min-height: calc(1.5em + 8px);\\n box-sizing: border-box;\\n margin-top: -1px;\\n min-width: 100px;\\n width: 100%;\\n line-height: 1.5em;\\n cursor: text;\\n padding-top: 4px;\\n padding-bottom: 4px;\\n\\tuser-select: text;\\n\\t/*white-space: pre-wrap;*/\\n}\\n\\n.stream-node-block textarea {\\n\\twidth: 100%;\\n\\toutline-color: \u003C\u003Ccolor tiddler-editor-border>>;\\n\\tborder: 1px solid \u003C\u003Ccolor tiddler-editor-border>>;\\n\\n\\tresize: none;\\n}\\n\\n.stream-node-block textarea.streams-editor {\\n\\tline-height:1.5em;\\n\\tmargin-bottom: 0.6em;\\n}\\n\\n.stream-node-block > h1:first-child,\\n.stream-node-block > h2:first-child,\\n.stream-node-block > h3:first-child,\\n.stream-node-block > h4:first-child,\\n.stream-node-block > h5:first-child,\\n.stream-node-block > h6:first-child,\\n.stream-node-block p:first-child {\\n\\tmargin-top:0;\\n}\\n\\n.stream-node-block > h1:last-child,\\n.stream-node-block > h2:last-child,\\n.stream-node-block > h3:last-child,\\n.stream-node-block > h4:last-child,\\n.stream-node-block > h5:last-child,\\n.stream-node-block > h6:last-child,\\n.stream-node-block p:last-child {\\n\\tmargin-bottom:0;\\n}\\n\\nspan.sq-breadcrumbs-fragment {\\n white-space: nowrap;\\n overflow: hidden;\\n display: inline-block;\\n text-overflow: ellipsis;\\n max-width: calc({{$:/config/sq/streams/node-max-width}}px - 50px);\\n}\\n\\nspan.sq-breadcrumbs-fragment a.tc-tiddlylink {\\n\\tcolor: \u003C\u003Ccolor foreground>>;\\n}\\n\\n/*** framed engine styles ***/\\n\\n.tc-tiddler-frame .stream-node-block input.tc-edit-texteditor,\\n.tc-tiddler-frame .stream-node-block textarea.tc-edit-texteditor,\\n.tc-tiddler-frame .stream-node-block iframe.tc-edit-texteditor {\\n\\tbackground: \u003C\u003Ccolor background>> !important;\\n\\tmargin-top:0;\\n\\tmargin-bottom: -1.6em;\\n}\\n\\n\u003C$reveal state=\\\"$:/config/sq/streams/enable-edit-toolbar\\\" type=\\\"nomatch\\\" text=\\\"yes\\\">\\n.stream-node-block .tc-editor-toolbar {\\n\\tdisplay: none;\\n}\\n\u003C/$reveal>\\n\\n\u003C$reveal state=\\\"$:/state/sq/streams/global-drag-state\\\" type=\\\"match\\\" text=\\\"yes\\\">\\n\\n/** active drag css **/\\n\\n\u003C/$reveal>\\n\\n\u003C$reveal state=\\\"$:/state/sq/streams/global-drag-state\\\" type=\\\"nomatch\\\" text=\\\"yes\\\">\\n\\n/**no active drag css **/\\n\\n\u003C/$reveal>\"\n },\n \"$:/plugins/sq/streams/breadcrumbs-view-template\": {\n \"title\": \"$:/plugins/sq/streams/breadcrumbs-view-template\",\n \"created\": \"20200529205858594\",\n \"list-before\": \"$:/core/ui/ViewTemplate/body\",\n \"modified\": \"20200530055142652\",\n \"tags\": \"$:/tags/ViewTemplate\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\\\\whitespace trim\\n\\\\define stream-show-breadcrumbs()\\n\u003C$list filter=\\\"[\u003CcurrentTiddler>has[stream-type]]\\\">\\n\\t\u003C$list filter=\\\"[\u003CcurrentTiddler>has[parent]]\\\">\\n\\t\\t\u003C$set name=\\\"currentTiddler\\\" filter=\\\"[{!!parent}]\\\" select=\\\"0\\\">\\n\\t\\t\\t\u003C\u003Cstream-show-breadcrumbs>>\\n\\t\\t\u003C/$set>\\n\\t\u003C/$list>\\t\\n\\t\u003C$list filter=\\\"[\u003CcurrentTiddler>!match\u003CstoryTiddler>]\\\">\\n\\t\\t\u003C$wikify name=\\\"display-title\\\" text={{{ [\u003CcurrentTiddler>!is[binary]get[text]!is[blank]] ~[{!!title}] }}}>\\n\\t\\t\\t\u003Cspan class=\\\"sq-breadcrumbs-fragment\\\">\\n\\t\\t\\t\u003C$link to=\u003C\u003CcurrentTiddler>>>\\n\\t\\t\\t\\t\u003C$text text={{{ [\u003Cdisplay-title>split[]first[50]join[]] }}}/>\\n\\t\\t\\t\u003C/$link>>\\n\\t\\t\\t\u003C/span>\\n\\t\\t\u003C/$wikify>\\n\\t\u003C/$list>\\n\u003C/$list>\\n\\\\end\\n\u003C$list filter=\\\"[{$:/config/sq/streams/enable-breadcrumbs}match[yes]]\\\" variable=\\\"_NULL\\\">\\n\u003C\u003Cstream-show-breadcrumbs>>\\n\u003C/$list>\\n\\n\"\n },\n \"$:/plugins/sq/streams/editor-template\": {\n \"title\": \"$:/plugins/sq/streams/editor-template\",\n \"created\": \"20200601145424630\",\n \"modified\": \"20200602053704598\",\n \"tags\": \"\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\\\\define config-visibility-title()\\n$:/config/EditorToolbarButtons/Visibility/$(currentTiddler)$\\n\\\\end\\n\u003C$streams-edit tag=\\\"textarea\\\" autoHeight=\\\"yes\\\" minHeight=\\\"1em\\\" focus=\\\"yes\\\" select=\\\"false\\\" class=\\\"streams-editor tc-edit-texteditor tc-edit-texteditor-body\\\" caretPosition={{{[{$:/state/sq/streams/caret-position}!is[blank]else[end]]}}}>\u003C$set name=\\\"targetTiddler\\\"value=\u003C\u003CcurrentTiddler>>>\u003C$list filter=\\\"[all[shadows+tiddlers]tag[$:/tags/EditorToolbar]!has[draft.of]]\\\">\u003C$reveal type=\\\"nomatch\\\" state=\u003C\u003Cconfig-visibility-title>> text=\\\"hide\\\" class=\\\"tc-text-editor-toolbar-item-wrapper\\\">\u003C$transclude tiddler=\\\"$:/core/ui/EditTemplate/body/toolbar/button\\\"\\nmode=\\\"inline\\\"/>\u003C/$reveal>\u003C/$list>\u003C/$set>\u003C/$streams-edit>\"\n },\n \"$:/plugins/sq/streams/nodes-list-template\": {\n \"title\": \"$:/plugins/sq/streams/nodes-list-template\",\n \"created\": \"20171022203553093\",\n \"modified\": \"20171122050808722\",\n \"text\": \"\\\\import [[$:/plugins/sq/streams/action-macros]] [all[shadows+tiddlers]tag[$:/tags/streams/actionmacros]] [all[shadows+tiddlers]tag[$:/tags/streams/user-actionmacros]]\\n\\\\whitespace trim\\n\\n\u003C$vars stream-root-title=\u003C\u003CcurrentTiddler>>\\n\\tcontextmenu-state=\u003C\u003Cqualify \\\"$:/state/sq-context-popup\\\">>\\n\\trow-edit-state=\u003C\u003Cqualify \\\"$:/state/sq/streams/current-edit-tiddler\\\">>\\n\\tdrag-title-state=\u003C\u003Cqualify \\\"$:/state/sq/streams/current-drag-title\\\">>\\n\\tdrag-title-nextsibling-state=\u003C\u003Cqualify \\\"$:/state/sq/streams/current-drag-nextsibling\\\">> \\n>\\n\\t\u003C$eventcatcher\\n\\t\\tevents=\\\"click\\\"\\n\\t\\tselector=\\\".stream-node-ctrl-btn\\\"\\n\\t\\tactions-click=\u003C\u003Cnode-ctrl-btn-actions>>\\n\\t\\ttag=\\\"div\\\"\\n\\t>\\n\\t\u003C$eventcatcher\\n\\t\\tevents=\\\"dblclick swiped-right swiped-left\\\"\\n\\t\\ttag=\\\"div\\\"\\n\\t\\tselector=\\\".stream-row\\\"\\n\\t\\tactions-dblclick=\u003C\u003Ctoggle-row-edit-state>>\\n\\t\\tactions-swiped-right=\u003C\u003Cswiped-right-actions>>\\n\\t\\tactions-swiped-left=\u003C\u003Cswiped-left-actions>>\\n\\t>\\n\\t\u003C$eventcatcher\\n\\t\\ttag=\\\"div\\\"\\n\\t\\tevents=\\\"contextmenu\\\"\\n\\t\\tselector=\\\".sq-contextmenu-container\\\"\\n\\t\\tactions-contextmenu=\u003C\u003Concontext-menu-actions>>\\n\\t>\\n\\t\u003C$swiper\\n\\t\\ttag=\\\"div\\\"\\n\\t\\tenable={{$:/config/sq/streams/swipe-enabled}}\\n\\t\\tswipethreshold={{$:/config/sq/streams/swipe-threshold}}\\n\\t>\\n\\t\u003Cdiv class={{{ stream-root [{$:/state/sq/nodes/global-drag-state}match[yes]then[stream-dragactive]] [\u003CcurrentTiddler>!has[stream-list]then[stream-newlist]] +[join[ ]] }}}>\\n\\t\\t{{||$:/plugins/sq/streams/templates/stream-root-template}}\\n\\t\\t\u003C$list filter=\\\"[all[current]match\u003Cstream-root-title>]\\\" variable=\\\"_NULL\\\">\\n\\t\\t\\t\u003C!-- if we are the root, add a button to add more nodes-->\\n\\t\\t\\t\u003Cdiv class=\\\"stream-row\\\">\\n\\t\\t\\t\\t\u003Cdiv class=\\\"stream-node-control stream-node-control-addnew\\\">\\n\\t\\t\\t\\t\\t\u003Cdiv class=\\\"stream-node-collapser\\\">\\n\\t\\t\\t\\t\\t\u003C/div>\\n\\t\\t\\t\\t\\t\u003Cdiv class=\\\"stream-node-handle\\\">\\n\\t\\t\\t\\t\\t\\t\u003C$button tag=\\\"div\\\" class=\\\"tc-btn-invisible\\\" tooltip=\\\"add node\\\" actions=\u003C\u003Cadd-new-node-actions>> >\\n\\t\\t\\t\\t\\t\\t\\t{{$:/plugins/sq/streams/icons/new-node-btn}}\\n\\t\\t\\t\\t\\t\\t\u003C/$button>\\n\\t\\t\\t\\t\\t\u003C/div>\\n\\t\\t\\t\\t\\t\u003C$list filter=\\\"[all[shadows+tiddlers]tag[$:/tags/streams/root-buttons]]\\\" variable=\\\"btnTiddler\\\">\\n\\t\\t\\t\\t\\t\\t\u003Cdiv class=\\\"stream-node-handle\\\">\\n\\t\\t\\t\\t\\t\\t\\t\u003C$transclude tiddler=\u003C\u003CbtnTiddler>>/>\\n\\t\\t\\t\\t\\t\\t\u003C/div>\\n\\t\\t\\t\\t\\t\u003C/$list>\\n\\t\\t\\t\\t\u003C/div>\\n\\t\\t\\t\\t\u003Cdiv class=\\\"stream-node-block\\\">\\n\\t\\t\\t\\t\\t\u003C!--consider moving last child dropzone in here, though thats for children too-->\\n\\t\\t\\t\\t\u003C/div>\\n\\t\\t\\t\u003C/div>\\t\\t\\t\\t\\n\\t\\t\\t\u003C$set name=\\\"currentTiddler\\\" filter={{{[\u003Ccontextmenu-state>get[current]]}}}>\\n\\t\\t\\t\\t{{||$:/plugins/sq/streams/contextmenu/contextmenu-template}}\\n\\t\\t\\t\u003C/$set>\\n\\t\\t\u003C/$list>\\t\\n\\t\u003C/div>\\n\\t\u003C/$swiper>\\n\\t\u003C/$eventcatcher>\\n\\t\u003C/$eventcatcher>\\n\\t\u003C/$eventcatcher>\\n\u003C/$vars>\\n\"\n },\n \"$:/plugins/sq/streams/templates/stream-root-template\": {\n \"title\": \"$:/plugins/sq/streams/templates/stream-root-template\",\n \"text\": \"\\\\whitespace trim\\n\u003C$vars dropTargetTiddler=\u003C\u003CcurrentTiddler>> >\\n\\t\u003C$list filter=\\\"[list[!!stream-list]!is[missing]]\\\">\\n\\t\\t\u003C$set name=\\\"enable-dnd\\\" filter=\\\"[\u003Cenable-dnd>match[no]] ~[\u003Cdrag-title-state>get[text]match\u003CcurrentTiddler>then[no]]\\\" select=\\\"0\\\">\\n\\t\\t\\t{{||$:/plugins/sq/streams/templates/stream-row-template}}\\n\\t\\t\u003C/$set>\\n\\t\u003C/$list>\\n\\t\u003C$tiddler tiddler=\\\"\\\">\\n\\t\\t\u003C!-- to drop after the last child of any list level-->\\n\\t\\t\u003C$droppable\\n\\t\\t\\tactions=\u003C\u003Cstream-drop-actions>>\\n\\t\\t\\ttag=\\\"div\\\"\\n\\t\\t\\tenable=\u003C\u003Cenable-dnd>>\\n\\t\\t\\tclass=\\\"stream-droppable stream-droppable-terminal\\\"\\n\\t\\t\\tdisabledClass=\\\"stream-node-disabled\\\"\\n\\t\\t>\\n\\t\\t\\t\u003Cdiv class=\\\"tc-droppable-placeholder\\\">\\n\\t\\t\\t&nbsp;\\n\\t\\t\\t\u003C/div>\u003C!-- idea only want below div with height when its a child with no more children-->\\n\\t\\t\\t\u003C$list filter=\\\"[\u003CcurrentTiddler>!has[stream-list]]\\\" variable=\\\"_NULL\\\">\u003Cdiv class=\\\"stream-droppable-spacer\\\"/>\u003C/$list>\\n\\t\\t\u003C/$droppable>\\n\\t\u003C/$tiddler>\\n\u003C/$vars>\"\n },\n \"$:/plugins/sq/streams/templates/stream-row-body\": {\n \"title\": \"$:/plugins/sq/streams/templates/stream-row-body\",\n \"text\": \"\u003C$transclude mode=\\\"block\\\"/>\"\n },\n \"$:/plugins/sq/streams/templates/stream-row-template\": {\n \"title\": \"$:/plugins/sq/streams/templates/stream-row-template\",\n \"text\": \"\\\\whitespace trim\\n\u003C$qualify\\n\\tname=\\\"row-children-visibility-state\\\"\\n\\ttitle={{{ [[$:/state/sq/streams/visibility/]addsuffix\u003CcurrentTiddler>] }}}\\n>\\n\u003C$droppable \\n\\tactions=\u003C\u003Cstream-drop-actions>>\\n\\ttag=\\\"div\\\"\\n\\tclass={{{ stream-droppable [list[!!stream-list]is[tiddler]then[]else[stream-row-nochildren]] +[join[ ]]}}}\\n\\tenable={{{[\u003Cdrag-title-nextsibling-state>get[text]match\u003CcurrentTiddler>then[no]] ~[\u003Cenable-dnd>]}}}\\n\\tdisabledClass=\\\"stream-node-disabled\\\"\\n\\tdata-node-title=\u003C\u003CcurrentTiddler>>\\n>\\n\\t\u003Cdiv class=\\\"tc-droppable-placeholder\\\"/>\\n\\t\u003Cdiv class={{{ stream-row [\u003Crow-children-visibility-state>get[text]match[hide]then[stream-row-children-collapsed]] +[join[ ]]}}}\\n\\t\\tdata-node-title=\u003C\u003CcurrentTiddler>>\\n\\t\\tdata-node-tags={{!!tags}}\\n\\t>\\n\\t\\t\u003C$draggable\\n\\t\\t\\ttag=\\\"div\\\"\\n\\t\\t\\ttiddler=\u003C\u003CcurrentTiddler>>\\n\\t\\t\\tstartactions=\u003C\u003Cnode-drag-start-actions>>\\n\\t\\t\\tendactions=\u003C\u003Cnode-drag-end-actions>>\\n\\t\\t\\tclass=\\\"stream-node-control sq-contextmenu-container\\\"\\n\\t\\t\\tdata-node-title=\u003C\u003CcurrentTiddler>>\\n\\t\\t>\\n\\t\\t\\t\u003Cbutton type=\\\"button\\\" class=\\\"tc-btn-invisible stream-node-ctrl-btn stream-node-collapser\\\" data-btn-role=\\\"stream-node-visibility\\\" data-rowchildren-visibility-state=\u003C\u003Crow-children-visibility-state>>>\\n\\t\\t\\t\\t{{$:/plugins/sq/streams/icons/node-expand-arrow}}\\n\\t\\t\\t\u003C/button>\\n\\t\\t\\t\u003Cdiv class=\\\"stream-node-handle tc-btn-invisible stream-node-ctrl-btn\\\" data-btn-role=\\\"stream-node-decorator\\\" data-node-title=\u003C\u003CcurrentTiddler>>>\\n\\t\\t\\t\\t\\t\u003Cdiv class=\\\"stream-node-handle-inner\\\"/>\\n\\t\\t\\t\u003C/div>\\n\\t\\t\u003C/$draggable>\\n\\t\\t\u003Cdiv class=\\\"stream-node-block\\\">\\n\\t\\t\\t\u003C$list filter=\\\"[\u003Crow-edit-state>get[text]!is[blank]else[]match\u003CcurrentTiddler>]\\\" variable=\\\"NULL\\\" emptyMessage=\\\"\\\"\\\"{{||$:/plugins/sq/streams/templates/stream-row-body}}\\\"\\\"\\\">\\n\\t\\t\\t\\t\u003C$keyboard-plus shortcutTag=\\\"$:/tags/streams/keyboard-shortcuts\\\">\\n\\t\\t\\t\\t\\t{{||$:/plugins/sq/streams/editor-template}}\\n\\t\\t\\t\\t\u003C/$keyboard-plus>\\t\\t\\t\\n\\t\\t\\t\u003C/$list>\\n\\t\\t\u003C/div>\\n\\t\u003C/div>\\n\u003C/$droppable>\\n\u003C$reveal\\n\\ttag=\\\"div\\\"\\n\\ttype=\\\"nomatch\\\"\\n\\tstateTitle=\u003C\u003Crow-children-visibility-state>>\\n\\ttext=\\\"hide\\\"\\n\\tclass=\\\"stream-row-children\\\"\\n>\\n\\t\\t{{||$:/plugins/sq/streams/templates/stream-root-template}}\\n\u003C/$reveal>\\n\u003C/$qualify>\"\n },\n \"$:/plugins/sq/streams/stream-view-template\": {\n \"title\": \"$:/plugins/sq/streams/stream-view-template\",\n \"created\": \"20170922203553093\",\n \"modified\": \"20170929050808722\",\n \"tags\": \"[[$:/tags/ViewTemplate]]\",\n \"list-after\": \"$:/core/ui/ViewTemplate/body\",\n \"text\": \"\u003C$list filter=\\\"\\\"\\\"[\u003Cfolded-state>get[text]!is[blank]else[show]!match[hide]]\\\"\\\"\\\" variable=\\\"_NULL\\\">\\n\u003C$list filter=\\\"\\\"\\\"[all[current]subfilter{$:/config/sq/streams/stream-enable-filter}]\\\"\\\"\\\">\\n{{||$:/plugins/sq/streams/nodes-list-template}}\\n\u003C/$list>\\n\u003C/$list>\"\n },\n \"$:/plugins/sq/streams/sq-ui-styles\": {\n \"title\": \"$:/plugins/sq/streams/sq-ui-styles\",\n \"tags\": \"[[$:/tags/Stylesheet]]\",\n \"text\": \"/** checkbox switches start **/\\n/** https://www.w3schools.com/howto/howto_css_switch.asp **/\\n/* The switch - the box around the slider */\\nlabel.squi-form-switch {\\n\\tposition: relative;\\n\\tdisplay: inline-block;\\n\\twidth: 36px;\\n\\theight: 12px;\\n}\\n\\n/* Hide default HTML checkbox */\\nlabel.squi-form-switch input {\\n\\topacity: 0;\\n\\twidth: 0;\\n\\theight: 0;\\n}\\n\\n/* The slider */\\nlabel.squi-form-switch span {\\n\\tposition: absolute;\\n\\tcursor: pointer;\\n\\ttop: 0;\\n\\tleft: 0;\\n\\tright: 0;\\n\\tbottom: 0;\\n\\tbackground-color: \u003C\u003Ccolor tiddler-controls-foreground>>;\\n\\t-webkit-transition: .2s;\\n\\ttransition: .2s;\\n}\\n\\nlabel.squi-form-switch span:before {\\n\\tposition: absolute;\\n\\tcontent: \\\"\\\";\\n\\theight: 20px;\\n\\twidth: 20px;\\n\\tleft: -1px;\\n\\ttop: -4px;\\n\\tbottom: 4px;\\n\\tbackground-color: \u003C\u003Ccolor background>>;\\n\\t-webkit-transition: .2s;\\n\\ttransition: .2s;\\n\\tbox-shadow: 0 1px 3px 0 rgba(0,0,0,0.7);\\n}\\n\\nlabel.squi-form-switch input:checked + span {\\n\\tbackground-color: rgba(26,115,232,0.5);\\n}\\n\\nlabel.squi-form-switch input:checked + span:before {\\n\\tbackground-color: rgb(26,115,232);\\n\\topacity: 1;\\n}\\n\\nlabel.squi-form-switch input:focus + span {\\n\\tbox-shadow: 0 0 1px #2196F3;\\n}\\n\\nlabel.squi-form-switch input:checked + span:before {\\n\\t-webkit-transform: translateX(17px);\\n\\t-ms-transform: translateX(17px);\\n\\ttransform: translateX(17px);\\n}\\n\\nlabel.squi-form-switch span {\\n\\tborder-radius: 12px;\\n}\\n\\nlabel.squi-form-switch span:before {\\n\\tborder-radius: 50%;\\n}\\n\\ndiv.squi-form-label {\\n\\t\\n}\\n\\n/*** checkbox switches end ***/\\n\\n/** form select elements **/\\n.squi-form-select {\\n\\tappearance: none;\\n\\tbackground: url(\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='12' fill='%235F6368'%3E%3Cpath d='M0 0h24L12 12z'/%3E%3C/svg%3E\\\") calc(100% - 8px) center no-repeat;\\n\\tbackground-color: rgb(241,243,244);\\n\\tbackground-size: 10px;\\n\\tborder: none;\\n\\tborder-radius: 4px;\\n\\tcolor: rgb(32,33,36);\\n\\tcursor: pointer;\\n\\tmax-width: 100%;\\n\\toutline: none;\\n\\tpadding: 6px 21px 6px 8px;\\n/*\\twidth: 200px;*/\\n}\\n\\ninput.squi-form-input {\\n\\tborder: 1px solid \u003C\u003Ccolor tiddler-controls-foreground>>;\\n\\tborder-radius: 3px;\\n\\tbackground-color: rgb(241,243,244);\\n\\tpadding: 6px;\\n}\\n\\ninput.squi-form-input:focus {\\n\\toutline-color: #ccc;\\n}\\n\\n\\n.sq-list-group {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tpadding-left: 0;\\n\\tmargin-bottom: 0;\\n\\tbox-sizing: border-box;\\n}\\n\\n.sq-list-group-box-shadow {\\n\\tbox-shadow:1px 1px 5px rgba(0, 0, 0, 0.3);\\t\\n\\tborder-bottom-left-radius: .25rem;\\n\\tborder-bottom-right-radius: .25rem;\\n\\tborder-top-left-radius: .25rem;\\n\\tborder-top-right-radius: .25rem;\\t\\t\\n}\\n\\t\\n.sq-list-group-item\\t{\\n\\tposition: relative;\\n\\tdisplay: block;\\n\\tpadding: 0.75rem 1.25rem;\\n\\tbackground-color: \u003C\u003Ccolor background>>;\\n\\tborder: 1px solid rgba(0,0,0,.125);\\n\\twidth: 100%;\\n\\tcolor: #495057;\\n\\ttext-align:\\tinherit;\\t\\n\\tdisplay: flex;\\n\\tflex-direction: row;\\n\\tjustify-content: space-between!important;\\n\\talign-items: center!important;\\n\\tword-spacing: 0.1em;\\n}\\n\\n\\n.sq-list-group-item+.sq-list-group-item {\\n\\tborder-top-width: 0;\\n}\\n\\n.sq-list-group-item:first-child {\\n\\tborder-top-left-radius: .25rem;\\n\\tborder-top-right-radius: .25rem;\\n}\\n\\n.sq-list-group-item:last-child {\\n\\tborder-bottom-left-radius: .25rem;\\n\\tborder-bottom-right-radius: .25rem;\\n}\\n\\n.sq-list-stream-settings {\\n\\tfont-size: 90%;\\n}\\n\\ninput.sq-search-input {\\n display: block;\\n width: 100%;\\n height: calc(1.5em + .75rem + 2px);\\n padding: .375rem .75rem;\\n font-size: 0.8rem;\\n font-weight: 400;\\n line-height: 1.5;\\n color: #495057;\\n background-color: \u003C\u003Ccolor background>>;\\n background-clip: padding-box;\\n border: 1px solid #ced4da;\\n border-radius: .25rem;\\n transition: border-color .15s ease-in-out,box-shadow .15s ease-in-out;\\n margin-bottom: 0.75em;\\n}\\n\\ninput.sq-search-input:focus {\\ncolor: #495057;\\n background-color: \u003C\u003Ccolor background>>;\\n border-color: #80bdff;\\n outline: 0;\\n box-shadow: 0 0 0 0.2rem rgba(0,123,255,.25);\\n}\\n\"\n },\n \"$:/plugins/sq/streams/ui/templates/settings/input-switch\": {\n \"title\": \"$:/plugins/sq/streams/ui/templates/settings/input-switch\",\n \"text\": \"\u003Clabel class=\\\"squi-form-label\\\">\u003C$link tooltip={{!!description}}>{{!!caption}}\u003C/$link>\u003C/label>\u003C$checkbox field=\\\"text\\\" checked=\\\"yes\\\" unchecked=\\\"no\\\" class=\\\"squi-form-switch\\\"/>\"\n },\n \"$:/plugins/sq/streams/ui/templates/settings/input\": {\n \"title\": \"$:/plugins/sq/streams/ui/templates/settings/input\",\n \"text\": \"\u003Clabel class=\\\"squi-form-label\\\">\u003C$link tooltip={{!!description}}>{{!!caption}}\u003C/$link>\u003C/label>\\n\u003C$edit-text tag=\\\"input\\\" class=\\\"squi-form-input\\\"/>\"\n },\n \"$:/plugins/sq/streams/ui/templates/settings/select\": {\n \"title\": \"$:/plugins/sq/streams/ui/templates/settings/select\",\n \"text\": \"\u003Clabel class=\\\"squi-form-label\\\">\u003C$link tooltip={{!!description}}>{{!!caption}}\u003C/$link>\u003C/label>\\n\u003C$vars cnt={{{[enlist{!!option-names}count[]]}}}>\\n\u003C$select class=\\\"squi-form-select\\\">\\n\u003C$list filter=\\\"[range\u003Ccnt>]\\\" variable=\\\"index\\\">\\n\u003Coption value={{{[enlist{!!option-values}nth\u003Cindex>]}}}>\u003C$text text={{{[enlist{!!option-names}nth\u003Cindex>]}}}/>\u003C/option>\\n\u003C/$list>\\n\u003C/$select>\\n\u003C/$vars>\"\n },\n \"$:/plugins/sq/lib/swipeevents.js\": {\n \"title\": \"$:/plugins/sq/lib/swipeevents.js\",\n \"text\": \"/*\\\\\\ntitle: $:/plugins/sq/lib/swipeevents.js\\ntype: application/javascript\\nmodule-type: library\\nBased on https://github.com/john-doherty/swiped-events\\nhttps://github.com/umanghome/swipe-listener\\nhttps://github.com/scriptex/touchsweep/blob/master/src/touchsweep.js\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nexports.platforms = [\\\"browser\\\"];\\n\\nfunction SwipeEventsFactory(element,options) {\\n\\n\\tif(typeof window.CustomEvent !== 'function') {\\n\\t\\t\\n\\t\\twindow.CustomEvent = function (event, params) {\\n\\t\\t\\tparams = params || { bubbles: false, cancelable: false, detail: undefined };\\n\\t\\t\\tvar evt = document.createEvent('CustomEvent');\\n\\t\\t\\tevt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\\n\\t\\t\\treturn evt;\\n\\t\\t};\\n\\t\\twindow.CustomEvent.prototype = window.Event.prototype;\\n\\t}\\n\\t\\n\\tif(!element) {\\n\\t\\treturn;\\n\\t}\\n\\telement.addEventListener(\\\"touchstart\\\", handleTouchStart, false);\\n\\telement.addEventListener(\\\"touchmove\\\", handleTouchMove, false);\\n\\telement.addEventListener(\\\"touchend\\\", handleTouchEnd, false);\\n\\t\\n\\toptions = options || {};\\n\\t\\n\\tvar xDown = null,\\n\\t\\tyDown = null,\\n\\t\\txDiff = null,\\n\\t\\tyDiff = null,\\n\\t\\ttimeDown = null,\\n\\t\\tstartEl = null,\\n\\t\\tdefaults = {\\n\\t\\t\\t\\\"swipe-threshold\\\": 20,\\n\\t\\t\\t\\\"swipe-timeout\\\": 500\\n\\t\\t};\\n\\t\\t\\n\\t$tw.utils.extend(defaults,options);\\t\\n\\n\\t/**\\n\\t * Fires swiped event if swipe detected on touchend\\n\\t * @param {object} e - browser event object\\n\\t * @returns {void}\\n\\t */\\n\\tfunction handleTouchEnd(e) {\\n\\n\\t\\t// if the user released on a different target, cancel!\\n\\t\\tif (startEl !== e.target) return;\\n\\n\\t\\tvar swipeThreshold = parseInt(getNearestAttribute(startEl, 'data-swipe-threshold', defaults[\\\"swipe-threshold\\\"]), 10); // default 20px\\n\\t\\tvar swipeTimeout = parseInt(getNearestAttribute(startEl, 'data-swipe-timeout', defaults[\\\"swipe-timeout\\\"]), 10);\\t // default 500ms\\n\\t\\tvar timeDiff = Date.now() - timeDown;\\n\\t\\tvar eventType = '';\\n\\t\\tvar changedTouches = e.changedTouches || e.touches || [];\\n\\n\\t\\tif (Math.abs(xDiff) > Math.abs(yDiff)) { // most significant\\n\\t\\t\\tif (Math.abs(xDiff) > swipeThreshold && timeDiff \u003C swipeTimeout) {\\n\\t\\t\\t\\tif (xDiff > 0) {\\n\\t\\t\\t\\t\\teventType = 'swiped-left';\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\telse {\\n\\t\\t\\t\\t\\teventType = 'swiped-right';\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\telse if (Math.abs(yDiff) > swipeThreshold && timeDiff \u003C swipeTimeout) {\\n\\t\\t\\tif (yDiff > 0) {\\n\\t\\t\\t\\teventType = 'swiped-up';\\n\\t\\t\\t}\\n\\t\\t\\telse {\\n\\t\\t\\t\\teventType = 'swiped-down';\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\tif (eventType !== '') {\\n\\n\\t\\t\\tvar eventData = {\\n\\t\\t\\t\\tdir: eventType.replace(/swiped-/, ''),\\n\\t\\t\\t\\txStart: parseInt(xDown, 10),\\n\\t\\t\\t\\txEnd: parseInt((changedTouches[0] || {}).clientX || -1, 10),\\n\\t\\t\\t\\tyStart: parseInt(yDown, 10),\\n\\t\\t\\t\\tyEnd: parseInt((changedTouches[0] || {}).clientY || -1, 10)\\n\\t\\t\\t};\\n\\n\\t\\t\\t// fire `swiped` event event on the element that started the swipe\\n\\t\\t\\tstartEl.dispatchEvent(new CustomEvent('swiped', { bubbles: true, cancelable: true, detail: eventData }));\\n\\n\\t\\t\\t// fire `swiped-dir` event on the element that started the swipe\\n\\t\\t\\tstartEl.dispatchEvent(new CustomEvent(eventType, { bubbles: true, cancelable: true, detail: eventData }));\\n\\t\\t}\\n\\n\\t\\t// reset values\\n\\t\\txDown = null;\\n\\t\\tyDown = null;\\n\\t\\ttimeDown = null;\\n\\t}\\n\\n\\t/**\\n\\t * Records current location on touchstart event\\n\\t * @param {object} e - browser event object\\n\\t * @returns {void}\\n\\t */\\n\\tfunction handleTouchStart(e) {\\n\\n\\t\\t// if the element has data-swipe-ignore=\\\"true\\\" we stop listening for swipe events\\n\\t\\tif (e.target.getAttribute('data-swipe-ignore') === 'true') return;\\n\\n\\t\\tstartEl = e.target;\\n\\n\\t\\ttimeDown = Date.now();\\n\\t\\txDown = e.touches[0].clientX;\\n\\t\\tyDown = e.touches[0].clientY;\\n\\t\\txDiff = 0;\\n\\t\\tyDiff = 0;\\n\\t}\\n\\n\\t/**\\n\\t * Records location diff in px on touchmove event\\n\\t * @param {object} e - browser event object\\n\\t * @returns {void}\\n\\t */\\n\\tfunction handleTouchMove(e) {\\n\\n\\t\\tif (!xDown || !yDown) return;\\n\\n\\t\\tvar xUp = e.touches[0].clientX;\\n\\t\\tvar yUp = e.touches[0].clientY;\\n\\n\\t\\txDiff = xDown - xUp;\\n\\t\\tyDiff = yDown - yUp;\\n\\t}\\n\\n\\t/**\\n\\t * Gets attribute off HTML element or nearest parent\\n\\t * @param {object} el - HTML element to retrieve attribute from\\n\\t * @param {string} attributeName - name of the attribute\\n\\t * @param {any} defaultValue - default value to return if no match found\\n\\t * @returns {any} attribute value or defaultValue\\n\\t */\\n\\tfunction getNearestAttribute(el, attributeName, defaultValue) {\\n\\n\\t\\t// walk up the dom tree looking for data-action and data-trigger\\n\\t\\twhile (el && el !== document.documentElement) {\\n\\n\\t\\t\\tvar attributeValue = el.getAttribute(attributeName);\\n\\n\\t\\t\\tif (attributeValue) {\\n\\t\\t\\t\\treturn attributeValue;\\n\\t\\t\\t}\\n\\n\\t\\t\\tel = el.parentNode;\\n\\t\\t}\\n\\n\\t\\treturn defaultValue;\\n\\t}\\n};\\n\\nexports.SwipeEvents = SwipeEventsFactory;\\n\\n})();\",\n \"type\": \"application/javascript\",\n \"module-type\": \"library\",\n \"Based on https\": \"//github.com/john-doherty/swiped-events\",\n \"https\": \"//github.com/scriptex/touchsweep/blob/master/src/touchsweep.js\"\n },\n \"$:/plugins/sq/streams/action-unselect.js\": {\n \"title\": \"$:/plugins/sq/streams/action-unselect.js\",\n \"text\": \"/*\\\\\\n\\ntitle: $:/plugins/sq/streams/action-unselect.js\\ntype: application/javascript\\nmodule-type: widget\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nvar Widget = require(\\\"$:/core/modules/widgets/widget.js\\\").widget;\\n\\nvar UnselectWidget = function(parseTreeNode,options) {\\n\\tthis.initialise(parseTreeNode,options);\\n};\\n\\n/*\\nInherit from the base widget class\\n*/\\nUnselectWidget.prototype = new Widget();\\n\\n/*\\nRender this widget into the DOM\\n*/\\nUnselectWidget.prototype.render = function(parent,nextSibling) {\\n\\tthis.computeAttributes();\\n\\tthis.execute();\\n\\tthis.parentDomNode = parent;\\n\\tthis.renderChildren(parent,nextSibling);\\n};\\n\\n/*\\nCompute the internal state of the widget\\n*/\\nUnselectWidget.prototype.execute = function() {\\n\\tthis.makeChildWidgets();\\n};\\n\\n/*\\nRefresh the widget by ensuring our attributes are up to date\\n*/\\nUnselectWidget.prototype.refresh = function(changedTiddlers) {\\n\\treturn this.refreshChildren(changedTiddlers);\\n};\\n\\n/*\\nInvoke the action associated with this widget\\n*/\\nUnselectWidget.prototype.invokeAction = function(triggeringWidget,event) {\\n\\tif (window.getSelection) {\\n\\t\\twindow.getSelection().removeAllRanges();\\n\\t} else if (document.selection) {\\n\\t\\tdocument.selection.empty();\\n\\t}\\n\\treturn true;\\n};\\n\\nUnselectWidget.prototype.allowActionPropagation = function() {\\n\\treturn false;\\n};\\n\\nexports[\\\"action-unselect\\\"] = UnselectWidget;\\n\\n})();\",\n \"type\": \"application/javascript\",\n \"module-type\": \"widget\"\n },\n \"$:/plugins/sq/streams/action-withinput.js\": {\n \"title\": \"$:/plugins/sq/streams/action-withinput.js\",\n \"text\": \"/*\\\\\\n\\ntitle: $:/plugins/sq/streams/action-withinput.js\\ntype: application/javascript\\nmodule-type: widget\\n\\nPrompt user for input before executing actions contained inside the widget.\\nThe string entered by the user is available in the variable userInput in the actions contained in the widget.\\n\\nPrompt user for confirmation before executing actions contained inside the widget.\\nIf the user cancels, the actions are not executed.\\n\\nExample:\\n\u003C$button>go\\n\u003C$action-withinput message=\\\"What is your name?\\\" actions=\\\"\\\"\\\"\u003C$action-setfield $tiddler=\\\"name\\\" $value=\u003C\u003CuserInput>>/>\\\"\\\"\\\" />\\n\u003C/$button>\\n\\nParameters:\\nmessage : message to display\\ndefault: default value, defaults to an empty string\\n\\n\\n\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nvar Widget = require(\\\"$:/core/modules/widgets/widget.js\\\").widget;\\n\\nvar WithInputWidget = function(parseTreeNode,options) {\\n\\tthis.initialise(parseTreeNode,options);\\n};\\n\\n/*\\nInherit from the base widget class\\n*/\\nWithInputWidget.prototype = new Widget();\\n\\n/*\\nRender this widget into the DOM\\n*/\\nWithInputWidget.prototype.render = function(parent,nextSibling) {\\n\\tthis.computeAttributes();\\n\\tthis.execute();\\n\\tthis.parentDomNode = parent;\\n\\tthis.renderChildren(parent,nextSibling);\\n};\\n\\n/*\\nCompute the internal state of the widget\\n*/\\nWithInputWidget.prototype.execute = function() {\\n\\tthis.message = this.getAttribute(\\\"message\\\");\\n\\tthis.defaultValue = this.getAttribute(\\\"default\\\",\\\"\\\");\\n\\tthis.actions = this.getAttribute(\\\"actions\\\");\\n\\tthis.makeChildWidgets();\\n};\\n\\n/*\\nRefresh the widget by ensuring our attributes are up to date\\n*/\\nWithInputWidget.prototype.refresh = function(changedTiddlers) {\\n\\tvar changedAttributes = this.computeAttributes();\\n\\tif(changedAttributes[\\\"message\\\"] || changedAttributes[\\\"default\\\"] || changedAttributes[\\\"actions\\\"]) {\\n\\t\\tthis.refreshSelf();\\n\\t\\treturn true;\\n\\t}\\n\\treturn this.refreshChildren(changedTiddlers);\\n};\\n\\n/*\\nInvoke the action associated with this widget\\n*/\\nWithInputWidget.prototype.invokeAction = function(triggeringWidget,event) {\\n\\tif(this.message && this.actions) {\\n\\t\\tvar userData = prompt(this.message,this.defaultValue);\\n\\t\\tif(userData != null) {\\n\\t\\t\\tthis.setVariable(\\\"userInput\\\",userData);\\n\\t\\t\\tthis.invokeActionString(this.actions,this,event);\\n\\t\\t\\treturn true;\\n\\t\\t}\\n\\t}\\n};\\n\\nWithInputWidget.prototype.allowActionPropagation = function() {\\n\\treturn false;\\n};\\n\\nexports[\\\"action-withinput\\\"] = WithInputWidget;\\n\\n})();\",\n \"type\": \"application/javascript\",\n \"module-type\": \"widget\"\n },\n \"$:/plugins/sq/streams/widgets/keyboard-plus.js\": {\n \"title\": \"$:/plugins/sq/streams/widgets/keyboard-plus.js\",\n \"text\": \"/*\\\\\\ntitle: $:/plugins/sq/streams/widgets/keyboard-plus.js\\ntype: application/javascript\\nmodule-type: widget\\n\\\\*/\\n(function(){\\n\\t\\nvar Widget = require(\\\"$:/core/modules/widgets/widget.js\\\").widget;\\n\\nvar KeyboardWidget = function(parseTreeNode,options) {\\n\\tthis.initialise(parseTreeNode,options);\\n};\\n\\n/*\\nInherit from the base widget class\\n*/\\nKeyboardWidget.prototype = new Widget();\\n\\n/*\\nRender this widget into the DOM\\n*/\\nKeyboardWidget.prototype.render = function(parent,nextSibling) {\\n\\tvar self = this;\\n\\t// Remember parent\\n\\tthis.parentDomNode = parent;\\n\\t// Compute attributes and execute state\\n\\tthis.computeAttributes();\\n\\tthis.execute();\\n\\tvar tag = this.parseTreeNode.isBlock ? \\\"div\\\" : \\\"span\\\";\\n\\tif(this.tag && $tw.config.htmlUnsafeElements.indexOf(this.tag) === -1) {\\n\\t\\ttag = this.tag;\\n\\t}\\n\\t// Create element\\n\\tvar domNode = this.document.createElement(tag);\\n\\t// Assign classes\\n\\tvar classes = (this[\\\"class\\\"] || \\\"\\\").split(\\\" \\\");\\n\\tclasses.push(\\\"tc-keyboard\\\");\\n\\tdomNode.className = classes.join(\\\" \\\");\\n\\t\\n\\t\\n\\t// Add a keyboard event handler\\n\\tdomNode.addEventListener(\\\"keydown\\\",function (event) {\\n\\t\\t\\t// CM triggers two events\\n\\t\\t\\t// second event has:\\n\\t\\t\\t//\\t\\tdefaultPrevented : true\\n\\t\\t\\t//\\t\\tdetail: 0\\n\\t\\t\\t// \\t\\teventPhase 3 (instead of 2)\\n\\t\\t\\t// \\t\\tisComposing : false\\n\\t\\t\\tif(!event.defaultPrevented) {\\n\\t\\t\\t\\tvar key, action, preventDefault;\\n\\t\\t\\t\\tfor(var i=0; i\u003Cself.shortcutTiddlers.length; i++) {\\n\\t\\t\\t\\t\\tif(self.shortcutParsedList[i] !== undefined && $tw.keyboardManager.checkKeyDescriptors(event,self.shortcutParsedList[i])) {\\n\\t\\t\\t\\t\\t\\tkey = self.shortcutParsedList[i];\\n\\t\\t\\t\\t\\t\\taction = self.shortcutActionList[i];\\n\\t\\t\\t\\t\\t\\tpreventDefault = self.shortcutPreventDefaultList[i];\\n\\t\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tif(key !== undefined) {\\n\\t\\t\\t\\t\\tif(preventDefault) {\\n\\t\\t\\t\\t\\t\\tevent.preventDefault();\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\tObject.defineProperty(event,\\\"sqHandled\\\",{value:true});\\n\\t\\t\\t\\t\\t//event.sqHandled = true;\\n\\t\\t\\t\\t\\tevent.stopPropagation();\\n\\t\\t\\t\\t\\t//event.stopImmediatePropagation();\\n\\t\\t\\t\\t\\tself.invokeActionString(action,self,event);\\n\\t\\t\\t\\t\\treturn true;\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\treturn false;\\n\\t\\t}\\n\\t},false);\\n\\t\\n\\t// Insert element\\n\\tparent.insertBefore(domNode,nextSibling);\\n\\tthis.renderChildren(domNode,null);\\n\\tthis.domNodes.push(domNode);\\t\\n}\\t\\n\\t\\nKeyboardWidget.prototype.execute = function() {\\n\\tvar self = this;\\n\\t// Get attributes\\n\\tthis.tag = this.getAttribute(\\\"tag\\\",\\\"\\\");\\n\\tthis[\\\"class\\\"] = this.getAttribute(\\\"class\\\",\\\"\\\");\\n\\tthis.shortcutTiddlerTag = this.getAttribute(\\\"shortcutTag\\\");\\n\\t//var keyInfoArray = [];\\n\\t\\n\\tthis.shortcutTiddlers = this.wiki.getTiddlersWithTag(this.shortcutTiddlerTag);\\n\\tthis.shortcutKeysList = [];\\n\\tthis.shortcutActionList = [];\\n\\tthis.shortcutParsedList = [];\\n\\tthis.shortcutPreventDefaultList = [];\\n\\t\\n\\tfor(var i=0; i\u003Cthis.shortcutTiddlers.length; i++) {\\n\\t\\tvar title = this.shortcutTiddlers[i],\\n\\t\\t\\ttiddlerFields = this.wiki.getTiddler(title).fields;\\n\\t\\tthis.shortcutKeysList[i] = tiddlerFields.key !== undefined ? tiddlerFields.key : undefined;\\n\\t\\tthis.shortcutActionList[i] = tiddlerFields.text;\\n\\t\\tthis.shortcutPreventDefaultList[i] = tiddlerFields[\\\"prevent-default\\\"] && tiddlerFields[\\\"prevent-default\\\"] === \\\"no\\\" ? false : true;\\n\\t\\tthis.shortcutParsedList[i] = this.shortcutKeysList[i] !== undefined ? $tw.keyboardManager.parseKeyDescriptors(this.shortcutKeysList[i]) : undefined;\\n\\t}\\n\\t\\n\\t// Make child widgets\\n\\tthis.makeChildWidgets();\\n};\\n\\n/*\\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\\n*/\\nKeyboardWidget.prototype.refresh = function(changedTiddlers) {\\n\\t\\n\\tvar newList = this.wiki.getTiddlersWithTag(this.shortcutTiddlerTag)\\n\\tvar hasChanged = $tw.utils.hopArray(changedTiddlers,this.shortcutTiddlers) ? true :\\n\\t\\t($tw.utils.hopArray(changedTiddlers,newList) ? true :\\n\\t\\t($tw.keyboardManager.detectNewShortcuts(changedTiddlers))\\n\\t);\\n\\t// Re-cache shortcuts if something changed\\n\\tif(hasChanged) {\\n\\t//\\tthis.updateShortcutLists(newList);\\n\\t\\tthis.refreshSelf();\\n\\t\\treturn true;\\n\\t}\\n\\t\\n\\tvar changedAttributes = this.computeAttributes();\\n\\tif(changedAttributes[\\\"class\\\"] || changedAttributes.tag) {\\n\\t\\tthis.refreshSelf();\\n\\t\\treturn true;\\n\\t}\\n\\n\\treturn this.refreshChildren(changedTiddlers);\\n};\\n\\n\\nKeyboardWidget.prototype.invokeActionString = function(actions,triggeringWidget,event,variables) {\\n\\tif(!variables) {\\n\\t\\tvariables = {};\\n\\t}\\n\\t\\n\\tvar activeElement = document.activeElement;\\n\\tvar selection;\\n\\tif(activeElement && activeElement.tagName === \\\"IFRAME\\\") {\\n\\t\\tvar idoc = activeElement.contentDocument || activeElement.contentWindow.document;\\n\\t\\tactiveElement = idoc.activeElement;\\n\\t\\tselection = idoc.getSelection();\\n\\t} else {\\n\\t\\tselection = window.getSelection();\\n\\t}\\n\\n\\tif(window.CodeMirror && document.activeElement.closest(\\\".CodeMirror\\\")) {\\n\\t\\tvar cm = document.activeElement.closest(\\\".CodeMirror\\\").CodeMirror;\\n\\t\\tvar cursor = cm.getCursor(\\\"start\\\");\\n\\t\\tvar startRange = cm.getRange({\\\"line\\\":0,\\\"ch\\\":0},{\\\"line\\\":cursor.line,\\\"ch\\\":cursor.ch});\\n\\t\\tvar selectionStart = startRange.length;\\n\\t\\tvar selection = cm.getSelection();\\n\\t\\tvar selectionEnd = selectionStart + selection.length;\\n\\t\\t\\n\\t\\tvariables[\\\"selectionStart\\\"] = startRange.length.toString();\\n\\t\\tvariables[\\\"selectionEnd\\\"] = (selectionStart + selection.length).toString();\\n\\t\\tvariables[\\\"selection\\\"] = cm.getSelection().toString();\\n\\t} else if(activeElement && selection && ((activeElement.tagName === \\\"INPUT\\\" && activeElement.type === \\\"TEXT\\\") || activeElement.tagName === \\\"TEXTAREA\\\")) {\\n\\t\\tvariables[\\\"selectionStart\\\"] = activeElement.selectionStart.toString();\\n\\t\\tvariables[\\\"selectionEnd\\\"] = activeElement.selectionEnd.toString();\\n\\t\\tvariables[\\\"selection\\\"] = selection.toString();\\n\\t}\\n\\n\\t//this.selection_original_invokeActionString(actions,triggeringWidget,event,variables);\\n\\tObject.getPrototypeOf(Object.getPrototypeOf(this)).invokeActionString.call(this,actions,triggeringWidget,event,variables);\\n}\\n\\nexports[\\\"keyboard-plus\\\"] = KeyboardWidget;\\n\\n})();\\t\",\n \"type\": \"application/javascript\",\n \"module-type\": \"widget\"\n },\n \"$:/plugins/sq/streams/streams-edit\": {\n \"title\": \"$:/plugins/sq/streams/streams-edit\",\n \"text\": \"/*\\\\\\n\\ntitle: $:/plugins/sq/streams/streams-edit\\ntype: application/javascript\\nmodule-type: widget-subclass\\n\\n\\\\*/\\n\\nexports.baseClass = \\\"edit\\\";\\nexports.name = \\\"streams-edit\\\";\\n\\nexports.constructor = function(parseTreeNode,options) {\\n\\tthis.initialise(parseTreeNode,options);\\n}\\nexports.prototype = {};\\n\\nexports.prototype.getEditorType = function() {\\n\\tvar tiddler = this.wiki.getTiddler(this.editTitle);\\n\\tvar type = tiddler.fields.type || \\\"text/vnd.tiddlywiki\\\";\\n\\tvar editorType;\\n\\tif(type === \\\"text/vnd.tiddlywiki\\\") {\\n\\t\\teditorType = this.wiki.getTiddlerText(\\\"$:/config/sq/streams/editor-engine\\\");\\n\\t\\tif((!$tw.wiki.getTiddler(\\\"$:/plugins/tiddlywiki/codemirror\\\") || $tw.wiki.getTiddlerText(\\\"$:/config/Plugins/Disabled/$:/plugins/tiddlywiki/codemirror\\\",\\\"no\\\") === \\\"yes\\\" || !$tw.modules.titles[\\\"$:/plugins/tiddlywiki/codemirror/edit-codemirror.js\\\"]) && (editorType === \\\"codemirror\\\") ) {\\n\\t\\t\\teditorType = \\\"text\\\";\\n\\t\\t}\\n\\t\\treturn editorType;\\n\\t}\\n\\teditorType = this.wiki.getTiddlerText(EDITOR_MAPPING_PREFIX + type);\\n\\tif(!editorType) {\\n\\t\\tvar typeInfo = $tw.config.contentTypeInfo[type];\\n\\t\\tif(typeInfo && typeInfo.encoding === \\\"base64\\\") {\\n\\t\\t\\teditorType = \\\"binary\\\";\\n\\t\\t} else {\\n\\t\\t\\teditorType = \\\"text\\\";\\n\\t\\t}\\n\\t}\\n\\treturn editorType;\\n};\",\n \"type\": \"application/javascript\",\n \"module-type\": \"widget-subclass\"\n },\n \"$:/plugins/sq/streams/widgets/swiper.js\": {\n \"title\": \"$:/plugins/sq/streams/widgets/swiper.js\",\n \"text\": \"/*\\\\\\ntitle: $:/plugins/sq/streams/widgets/swiper.js\\ntype: application/javascript\\nmodule-type: widget\\n\\nSwipe event handler widget\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nvar Widget = require(\\\"$:/core/modules/widgets/widget.js\\\").widget;\\n//var SwipeListener = require(\\\"$:/sq/lib/swipe-listener\\\");\\nvar SwipeEvents = require(\\\"$:/plugins/sq/lib/swipeevents.js\\\").SwipeEvents;\\n\\nvar SwipeWidget = function(parseTreeNode,options) {\\n\\tthis.initialise(parseTreeNode,options);\\n};\\n\\n/*\\nInherit from the base widget class\\n*/\\nSwipeWidget.prototype = new Widget();\\n\\n/*\\nRender this widget into the DOM\\n*/\\nSwipeWidget.prototype.render = function(parent,nextSibling) {\\n\\tvar self = this;\\n\\t// Remember parent\\n\\tthis.parentDomNode = parent;\\n\\t// Compute attributes and execute state\\n\\tthis.computeAttributes();\\n\\tthis.execute();\\n\\t// Create element\\n\\tvar tag = this.parseTreeNode.isBlock ? \\\"div\\\" : \\\"span\\\";\\n\\tif(this.swipeTag && $tw.config.htmlUnsafeElements.indexOf(this.swipeTag) === -1) {\\n\\t\\ttag = this.swipeTag;\\n\\t}\\t\\n\\tvar domNode = this.document.createElement(tag);\\n\\tif(this.swipeEnable) {\\n\\t\\tSwipeEvents(domNode,{\\\"swipe-threshold\\\": this.swipeThreshold});\\n\\t}\\n\\tparent.insertBefore(domNode,nextSibling);\\n\\tthis.renderChildren(domNode,null);\\n\\tthis.domNodes.push(domNode);\\n}\\n\\n/*\\nCompute the internal state of the widget\\n*/\\nSwipeWidget.prototype.execute = function() {\\n\\tvar self = this;\\n\\tthis.swipeThreshold = parseInt(this.getAttribute(\\\"swipethreshold\\\",\\\"100\\\"));\\n\\tthis.swipeEnable = this.getAttribute(\\\"enable\\\",\\\"yes\\\") === \\\"yes\\\";\\n\\tthis.swipeTag = this.getAttribute(\\\"tag\\\");\\n\\tthis.makeChildWidgets();\\n};\\n\\n/*\\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\\n*/\\nSwipeWidget.prototype.refresh = function(changedTiddlers) {\\n\\tvar changedAttributes = this.computeAttributes();\\n\\tif($tw.utils.count(changedAttributes) > 0) {\\n\\t\\tthis.refreshSelf();\\n\\t\\treturn true;\\n\\t} else {\\n\\t\\treturn this.refreshChildren(changedTiddlers);\\n\\t}\\n};\\n\\nexports.swiper = SwipeWidget;\\n\\n})();\",\n \"type\": \"application/javascript\",\n \"module-type\": \"widget\"\n }\n }\n}","version":"1.2.22","type":"application/json","title":"$:/plugins/sq/streams","source":"https://saqimtiaz.github.io/streams/","revision":"0","plugin-type":"plugin","plugin-priority":"1","name":"Streams","list":"Settings CHANGELOG","description":"Rapid data entry with a keyboard driven workflow. Divide content into smaller tiddlers as you write.","dependents":"","core-version":">=5.1.23","bag":"default","author":"Saq Imtiaz"},
{"text":"{\n \"tiddlers\": {\n \"$:/plugins/sq/streams-as-editor/single-tiddler-streams.js\": {\n \"title\": \"$:/plugins/sq/streams-as-editor/single-tiddler-streams.js\",\n \"text\": \"/*\\\\\\n\\ntitle: $:/plugins/sq/streams-as-editor/single-tiddler-streams.js\\ntype: application/javascript\\nmodule-type: widget\\n\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nvar Widget = require(\\\"$:/core/modules/widgets/widget.js\\\").widget;\\n\\nvar UUID = (function() {\\n var self = {};\\n var lut = []; for (var i=0; i\u003C256; i++) { lut[i] = (i\u003C16?'0':'')+(i).toString(16); }\\n self.generate = function() {\\n\\tvar d0 = Math.random()*0xffffffff|0;\\n\\tvar d1 = Math.random()*0xffffffff|0;\\n\\tvar d2 = Math.random()*0xffffffff|0;\\n\\tvar d3 = Math.random()*0xffffffff|0;\\n\\treturn lut[d0&0xff]+lut[d0>>8&0xff]+lut[d0>>16&0xff]+lut[d0>>24&0xff]+'-'+\\n\\t lut[d1&0xff]+lut[d1>>8&0xff]+'-'+lut[d1>>16&0x0f|0x40]+lut[d1>>24&0xff]+'-'+\\n\\t lut[d2&0x3f|0x80]+lut[d2>>8&0xff]+'-'+lut[d2>>16&0xff]+lut[d2>>24&0xff]+\\n\\t lut[d3&0xff]+lut[d3>>8&0xff]+lut[d3>>16&0xff]+lut[d3>>24&0xff];\\n }\\n return self;\\n})();\\n\\nvar SingleTiddlerStreamsWidget = function(parseTreeNode,options) {\\n\\tthis.initialise(parseTreeNode,options);\\n};\\n\\n/*\\nInherit from the base widget class\\n*/\\nSingleTiddlerStreamsWidget.prototype = new Widget();\\n\\n/*\\nRender this widget into the DOM\\n*/\\nSingleTiddlerStreamsWidget.prototype.render = function(parent,nextSibling) {\\n\\tthis.computeAttributes();\\n\\tthis.execute();\\n\\tthis.parentDomNode = parent;\\n\\t//this.renderChildren(parent,nextSibling);\\n\\n\\t\\n};\\n\\nSingleTiddlerStreamsWidget.prototype.invokeAction = function(triggeringWidget,event) {\\n\\tvar sourceTiddler = this.wiki.getTiddler(this.tiddlerTitle);\\n\\tif(!sourceTiddler) {\\n\\t\\treturn;\\n\\t}\\n\\tvar sourceText = \\\"\\\\n\\\\\\\\rules only list \\\\n\\\\n\\\" + this.wiki.getTiddlerText(this.tiddlerTitle);\\n\\tvar wikifyParser = this.wiki.parseText(\\\"text/vnd.tiddlywiki\\\",sourceText, {\\n\\t\\tparseAsInline : false\\n\\t});\\n\\tconsole.log(wikifyParser);\\n\\t\\n\\tvar tree = wikifyParser.tree;\\n\\tif(tree.length == 0 || tree[0].tag !== \\\"ul\\\" || tree.length !== 1) {\\n\\t\\treturn;\\n\\t}\\n\\tvar list = tree[0];\\n\\t\\n\\tthis.nodes = [];\\n\\tvar parentTiddlerFields = {\\n\\t\\ttitle: this.tiddlerTitle\\n\\t}\\n\\tthis.nodes.push(parentTiddlerFields);\\n\\tthis.processList(list,parentTiddlerFields);\\n\\tconsole.log(1);\\n\\t\\n\\tthis.createNodeTiddlers();\\n\\treturn true;\\n};\\n\\nSingleTiddlerStreamsWidget.prototype.createNodeTiddlers = function() {\\n\\tfor(var i=0; i\u003Cthis.nodes.length; i++) {\\n\\t\\tvar tiddler = this.wiki.getTiddler(this.nodes[i].title);\\n\\t\\tvar newTiddler = new $tw.Tiddler(tiddler,this.nodes[i]);\\n\\t\\tthis.wiki.addTiddler(newTiddler);\\n\\t}\\n};\\n\\n// process UL tag\\nSingleTiddlerStreamsWidget.prototype.processList = function(list,parentTiddler) {\\t\\t\\n\\tvar childNodes = [];\\n\\t\\t\\n\\tfor(var i=0; i\u003Clist.children.length; i++) {\\n\\n\\t\\tvar tiddler = {\\n\\t\\t\\t\\\"title\\\": \\\"$:/streams/temp/\\\" + this.tiddlerTitle + \\\"/\\\" + UUID.generate(),\\n\\t\\t\\t\\\"parent\\\": parentTiddler.title,\\n\\t\\t\\t\\\"text\\\": list.children[i].children[0].text,\\n\\t\\t\\t\\\"stream-type\\\" : \\\"default\\\"\\n\\t\\t};\\t\\t\\n\\t\\t\\n\\t\\tvar subList = list.children[i].children[1];\\n\\t\\tif(subList && subList.tag === \\\"ul\\\") {\\n\\t\\t\\tthis.processList(subList,tiddler);\\n\\t\\t}\\n\\t\\t\\n\\t\\tchildNodes.push(tiddler.title);\\n\\t\\tthis.nodes.push(tiddler);\\n\\t\\t// add tiddler to wiki\\n\\t}\\n\\tparentTiddler[\\\"stream-list\\\"] = $tw.utils.stringifyList(childNodes);\\n\\t//save child nodes to stream-list in parent\\n}\\n\\n\\nSingleTiddlerStreamsWidget.prototype.execute = function() {\\n\\tthis.tiddlerTitle = this.getAttribute(\\\"$tiddler\\\",this.getVariable(\\\"currentTiddler\\\"));\\n//\\tthis.makeChildWidgets();\\n};\\n\\n\\nSingleTiddlerStreamsWidget.prototype.refresh = function(changedTiddlers) {\\n\\tvar changedAttributes = this.computeAttributes();\\n\\tif(changedAttributes[\\\"tiddler\\\"] || changedTiddlers[this.tiddlerTitle]) {\\n\\t\\tthis.refreshSelf();\\n\\t\\treturn true;\\n\\t}\\n\\treturn this.refreshChildren(changedTiddlers);\\n};\\n\\nexports[\\\"action-editwithstreams\\\"] = SingleTiddlerStreamsWidget;\\n\\n})();\",\n \"type\": \"application/javascript\",\n \"module-type\": \"widget\"\n },\n \"$:/plugins/sq/streams-as-editor/stream-to-wikilist-filter.js\": {\n \"title\": \"$:/plugins/sq/streams-as-editor/stream-to-wikilist-filter.js\",\n \"text\": \"/*\\\\\\ntitle: $:/plugins/sq/streams-as-editor/stream-to-wikilist-filter.js\\ntype: application/javascript\\nmodule-type: filteroperator\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\n/*\\nExport our filter function\\n*/\\nexports[\\\"stream-to-wikilist\\\"] = function(source,operator,options) {\\n\\tvar results = [];\\n\\tsource(function(tiddler,title) {\\n\\t\\tif(tiddler && tiddler.fields[\\\"stream-list\\\"]) {\\t\\t\\t\\n\\t\\t\\tvar wikilist = \\\"\\\";\\n\\t\\t\\t\\n\\t\\t\\tfunction processNode(node,prefix) {\\t\\t\\t\\t\\n\\t\\t\\t\\tvar streamList = $tw.utils.parseStringArray(node.getFieldString(\\\"stream-list\\\"));\\n\\t\\t\\t\\tfor(var i=0; i\u003CstreamList.length; i++) {\\n\\t\\t\\t\\t\\tvar n = $tw.wiki.getTiddler(streamList[i]);\\n\\t\\t\\t\\t\\tvar line = prefix + \\\" \\\" + $tw.wiki.getTiddlerText(streamList[i],\\\"\\\") + \\\"\\\\n\\\";\\n\\t\\t\\t\\t\\twikilist += line;\\n\\t\\t\\t\\t\\tif(n && n.fields[\\\"stream-list\\\"] != undefined) {\\n\\t\\t\\t\\t\\t\\tprocessNode(n,prefix + \\\"*\\\");\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t\\t\\n\\t\\t\\tprocessNode(tiddler,\\\"*\\\");\\n\\t\\t\\tresults.push(wikilist);\\n\\t\\t}\\n\\t});\\n\\treturn results;\\n};\\n\\n})();\",\n \"type\": \"application/javascript\",\n \"module-type\": \"filteroperator\"\n },\n \"$:/plugins/sq/streams-as-editor/viewtemplate\": {\n \"title\": \"$:/plugins/sq/streams-as-editor/viewtemplate\",\n \"created\": \"20200816211512617\",\n \"modified\": \"20200817155923474\",\n \"tags\": \"$:/tags/ViewTemplate\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\\\\define delete-children()\\n\\t\u003C$list filter=\\\"[enlist{!!stream-list}]\\\">\\n\\t\\t\u003C\u003Cdelete-children>>\\n\\t\u003C/$list>\\n\\t\u003C$action-deletetiddler $filter=\\\"[enlist{!!stream-list}]\\\"/>\\n\\\\end\\n\\n\u003C$list filter=\\\"\\\"\\\"[\u003Cfolded-state>get[text]!is[blank]else[show]!match[hide]]\\\"\\\"\\\" variable=\\\"_NULL\\\">\\n\u003C$list filter=\\\"[\u003CcurrentTiddler>get[stream-type]!is[blank]else[default]match[singletiddler]]\\\" variable=\\\"_NULL\\\">\\n\u003C$list filter=\\\"[\u003CcurrentTiddler>get[stream-status]!is[blank]else[default]!match[active]]\\\" variable=\\\"_NULL\\\">\\n\u003C$button> edit with Streams\\n\u003C$action-editwithstreams $tiddler=\u003C\u003CcurrentTiddler>>/>\\n\u003C$action-setfield $tiddler=\u003C\u003CcurrentTiddler>> hide-body=\\\"yes\\\" stream-status=\\\"active\\\"/>\\n\u003C/$button>\\n\u003C/$list>\\n\\n\u003C$list filter=\\\"[\u003CcurrentTiddler>get[stream-status]match[active]]\\\" variable=\\\"_NULL\\\">\\n{{||$:/plugins/sq/streams/nodes-list-template}}\\n\u003C$button> save\\n\u003C$action-setfield $tiddler=\u003C\u003CcurrentTiddler>> text={{{[\u003CcurrentTiddler>stream-to-wikilist[]]}}} />\\n\u003C\u003Cdelete-children>>\\n\u003C$action-deletefield $tiddler=\u003C\u003CcurrentTiddler>> hide-body=\\\"no\\\" stream-list=\\\"\\\" stream-status=\\\"\\\"/>\\n\u003C/$button>\\n\u003C/$list>\\n\u003C/$list>\\n\u003C/$list>\"\n }\n }\n}","version":"0.0.01","type":"application/json","title":"$:/plugins/sq/streams-as-editor","source":"","revision":"0","plugin-type":"plugin","list":"","description":"Streams Editor for Lists","dependents":"","core-version":">=5.1.22","bag":"default","author":"Saq Imtiaz"},
{"text":"{\n \"tiddlers\": {\n \"$:/config/SearchResults/Default\": {\n \"title\": \"$:/config/SearchResults/Default\",\n \"created\": \"20200820180447855\",\n \"modified\": \"20200820180500121\",\n \"tags\": \"\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"$:/plugins/sq/streams-search/StreamSearchResults\"\n },\n \"$:/plugins/sq/streams-search/stream-root-filter.js\": {\n \"title\": \"$:/plugins/sq/streams-search/stream-root-filter.js\",\n \"text\": \"/*\\\\\\ntitle: $:/plugins/sq/streams-search/stream-root-filter.js\\ntype: application/javascript\\nmodule-type: filteroperator\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\n/*\\nExport our filter function\\n*/\\nexports[\\\"stream-root\\\"] = function(source,operator,options) {\\n\\tvar results = [];\\n\\tsource(function(tiddler,title) {\\n\\t\\tif(tiddler && tiddler.fields[\\\"parent\\\"] && tiddler.fields[\\\"stream-type\\\"]) {\\t\\t\\t\\n\\n\\t\\t\\tvar parentTiddler = tiddler;\\n\\t\\t\\t\\n\\t\\t\\twhile(parentTiddler && parentTiddler.fields.parent) {\\n\\t\\t\\t\\tparentTiddler = options.wiki.getTiddler(parentTiddler.fields.parent);\\n\\t\\t\\t}\\n\\t\\t\\tif(parentTiddler && parentTiddler.fields && tiddler.fields.title.startsWith(parentTiddler.fields[\\\"title\\\"])) {\\n\\t\\t\\t\\t$tw.utils.pushTop(results,parentTiddler.fields.title);\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tresults.push(title);\\n\\t\\t\\t}\\n\\t\\t\\t\\n\\t\\t} else {\\n\\t\\t\\tresults.push(title);\\n\\t\\t}\\n\\t});\\n\\treturn results;\\n};\\n\\n})();\",\n \"type\": \"application/javascript\",\n \"module-type\": \"filteroperator\"\n },\n \"$:/plugins/sq/streams-search/StreamSearchResults\": {\n \"title\": \"$:/plugins/sq/streams-search/StreamSearchResults\",\n \"caption\": \"Streams\",\n \"created\": \"20200818210522653\",\n \"modified\": \"20200818212724254\",\n \"tags\": \"$:/tags/SearchResults\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\\\\define searchResultList()\\n//\u003Csmall>{{$:/language/Search/Matches/Title}}\u003C/small>//\\n\\n\u003C$list filter=\\\"[!is[system]search:title{$(searchTiddler)$}sort[title]stream-root[]limit[250]]\\\">\\n\u003Cspan class={{{[\u003CcurrentTiddler>addsuffix[-primaryList]] -[\u003CsearchListState>get[text]] +[then[]else[tc-list-item-selected]] }}}>\\n\u003C$transclude tiddler=\\\"$:/core/ui/ListItemTemplate\\\"/>\\n\u003C/span>\\n\u003C/$list>\\n\\n//\u003Csmall>{{$:/language/Search/Matches/All}}\u003C/small>//\\n\\n\u003C$list filter=\\\"[!is[system]search{$(searchTiddler)$}sort[title]stream-root[]limit[250]]\\\">\\n\u003Cspan class={{{[\u003CcurrentTiddler>addsuffix[-secondaryList]] -[\u003CsearchListState>get[text]] +[then[]else[tc-list-item-selected]] }}}>\\n\u003C$transclude tiddler=\\\"$:/core/ui/ListItemTemplate\\\"/>\\n\u003C/span>\\n\u003C/$list>\\n\\n\\\\end\\n\u003C\u003CsearchResultList>>\"\n }\n }\n}","version":"0.0.02","type":"application/json","title":"$:/plugins/sq/streams-search","source":"","revision":"0","plugin-type":"plugin","list":"","description":"Streams addon: Search","dependents":"","core-version":">=5.1.22","bag":"default","author":"Saq Imtiaz"},
{"created":"20190412065559089","text":"{\n \"tiddlers\": {\n \"$:/plugins/tgrosinger/tw5-checklist/checkbox-wikirule.js\": {\n \"text\": \"/*\\\\\\ntitle: $:/plugins/tgrosinger/tw5-checklist/checkbox-wikirule.js\\ntype: application/javascript\\nmodule-type: wikirule\\n\\\\*/\\n\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nexports.name = \\\"checkbox\\\";\\nexports.types = {inline: true};\\n\\nexports.init = function(parser) {\\n\\tthis.parser = parser;\\n\\n\\t// Match on [ ], [x], and [X], to the end of the line\\n\\tthis.matchRegExp = /^\\\\[([ xX])\\\\] .*$/mg;\\n};\\n\\n/*\\nRetrieve the configuration state of the clear all button\\n*/\\n\\nexports.shouldShowClearAll = function() {\\n var configWidgetTitle = \\\"$:/plugins/tgrosinger/tw5-checklist/Configuration\\\";\\n var configWidgetFields = $tw.wiki.getTiddler(configWidgetTitle).fields;\\n\\n var showClearAll = configWidgetFields[\\\"show-clearall\\\"] || \\\"true\\\";\\n return (showClearAll === \\\"true\\\");\\n}\\n\\n/*\\nCreate list items\\n*/\\n\\nexports.parse = function() {\\n var listItems = [];\\n var listStartPos = this.parser.pos;\\n var match = this.match;\\n\\n // Start the list with a \\\"New List Item\\\" placeholder\\n listItems.push({\\n type: \\\"element\\\",\\n tag: \\\"li\\\",\\n children: [\\n {\\n type: \\\"element\\\",\\n tag: \\\"span\\\",\\n attributes: {\\n class: {type: \\\"string\\\", value: \\\"checklist-newitem-icon\\\"},\\n for: {type: \\\"string\\\", value: \\\"checklist-new\\\"}\\n }\\n },\\n {\\n type: \\\"element\\\",\\n tag: \\\"input\\\",\\n attributes: {\\n class: {type: \\\"string\\\", value: \\\"checklist-newitem\\\"},\\n id: {type: \\\"string\\\", value: \\\"checklist-new\\\"},\\n placeholder: {type: \\\"string\\\", value: \\\"New list item (WikiText)\\\"}\\n // impossible? add an aria-label \\\"Write a new todo item\\\"\\n // attribute aria-label seems to be missing in $:/core/modules/widgets/edit.js \\n }\\n },\\n // label for the input field\\n {\\n type: \\\"element\\\",\\n tag: \\\"label\\\",\\n attributes: {\\n class: {type: \\\"string\\\", value: \\\"checklist-vh\\\"},\\n for: {type: \\\"string\\\", value: \\\"checklist-new\\\"}\\n },\\n children: [\\n {type: \\\"text\\\", text: \\\"Write a new item for the list.\\\"}\\n ]\\n },\\n // (pseudo) button to add the new item to the list\\n {\\n type: \\\"element\\\",\\n tag: \\\"button\\\",\\n attributes: {\\n class: {type: \\\"string\\\", value: \\\"tc-btn-invisible tc-btn-mini checklist-add\\\"},\\n title: {type: \\\"string\\\", value: \\\"add to list\\\"}\\n },\\n children: [\\n {\\n type: \\\"element\\\",\\n tag: \\\"span\\\",\\n attributes: {\\n class: {type: \\\"string\\\", value: \\\"checklist-vh\\\"}\\n },\\n children: [\\n {type: \\\"text\\\", text: \\\"add list item\\\"}\\n ]\\n }\\n ]\\n }\\n // end of button\\n ]\\n });\\n\\n // Create items in a loop\\n do {\\n var startPos = this.parser.pos;\\n this.parser.pos = this.matchRegExp.lastIndex;\\n var parseResults = this.parser.wiki.parseText(\\n \\\"text/vnd.tiddlywiki\\\",\\n this.parser.source.substring(startPos + 4, this.parser.pos),\\n {parseAsInline: true});\\n\\n // Use the listitem body as a label for the checkbox to get better accessibility\\n var itembody = {\\n type: \\\"element\\\",\\n tag: \\\"label\\\",\\n attributes: {\\n for: {type: \\\"string\\\", value: match.index}\\n },\\n children: parseResults.tree\\n };\\n\\n var checkbox = {\\n type: \\\"element\\\",\\n tag: \\\"input\\\",\\n attributes: {\\n type: {type: \\\"string\\\", value: \\\"checkbox\\\"},\\n pos: {type: \\\"string\\\", value: match.index},\\n id: {type: \\\"string\\\", value: match.index}\\n }\\n };\\n if (match[1] === \\\"x\\\" || match[1] === \\\"X\\\") {\\n checkbox.attributes.checked = {type: \\\"boolean\\\", value: true};\\n }\\n\\n // Make a button to delete the item\\n var removelabel = {\\n type: \\\"element\\\",\\n tag: \\\"span\\\",\\n attributes: {\\n class: {type: \\\"string\\\", value: \\\"checklist-vh\\\"}\\n },\\n children: [\\n {type: \\\"text\\\", text: \\\"delete list item\\\"}\\n ]\\n };\\n\\n var removebutton = {\\n type: \\\"element\\\",\\n tag: \\\"button\\\",\\n attributes: {\\n class: {type: \\\"string\\\", value: \\\"tc-btn-invisible tc-btn-mini checklist-remove\\\"},\\n title: {type: \\\"string\\\", value: \\\"delete\\\"}\\n },\\n children: [\\n removelabel\\n ]\\n };\\n\\n // add the item to the list\\n listItems.push({\\n type: \\\"element\\\",\\n tag: \\\"li\\\",\\n children: [\\n checkbox,\\n removebutton,\\n itembody\\n ]\\n });\\n\\n match = this.matchRegExp.exec(this.parser.source);\\n } while (match != null && match.index == 1 + this.parser.pos);\\n\\n if (this.shouldShowClearAll()) {\\n // show the clear-all button\\n var clearallbutton = {\\n type: \\\"element\\\",\\n tag: \\\"button\\\",\\n attributes: {\\n class: {type: \\\"string\\\", value: \\\"checklist-clearall\\\"}\\n },\\n children: [\\n {\\n type: \\\"element\\\",\\n tag: \\\"span\\\",\\n attributes: {\\n class: {type: \\\"string\\\", value: \\\"checklist-clearall-label\\\"}\\n },\\n children: [\\n {type: \\\"text\\\", text: \\\"Clear all\\\"}\\n ]\\n }\\n ]\\n };\\n\\n listItems.push({\\n type: \\\"element\\\",\\n tag: \\\"li\\\",\\n children: [\\n clearallbutton\\n ]\\n });\\n }\\n\\n return [{\\n type: \\\"checklist\\\",\\n attributes: {\\n listStartPos: {type: \\\"string\\\", value: listStartPos},\\n listStopPos: {type: \\\"string\\\", value: this.parser.pos}\\n },\\n children: listItems\\n }];\\n};\\n\\n})();\\n\",\n \"title\": \"$:/plugins/tgrosinger/tw5-checklist/checkbox-wikirule.js\",\n \"type\": \"application/javascript\",\n \"module-type\": \"wikirule\"\n },\n \"$:/plugins/tgrosinger/tw5-checklist/checklist.js\": {\n \"text\": \"/*\\\\\\ntitle: $:/plugins/tgrosinger/tw5-checklist/checklist.js\\ntype: application/javascript\\nmodule-type: widget\\n\\\\*/\\n\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nvar Widget = require(\\\"$:/core/modules/widgets/widget.js\\\").widget;\\n\\nvar CheckListWidget = function(parseTreeNode,options) {\\n this.initialise(parseTreeNode,options);\\n};\\n\\n/*\\nInherit from the base widget class\\n*/\\nCheckListWidget.prototype = new Widget();\\n\\n/*\\nRender this widget into the DOM\\n*/\\nCheckListWidget.prototype.render = function(parent,nextSibling) {\\n this.tiddlerTitle = this.getVariable(\\\"currentTiddler\\\");\\n this.startPos = parseInt(this.parseTreeNode.attributes.listStartPos.value);\\n this.stopPos = parseInt(this.parseTreeNode.attributes.listStopPos.value);\\n\\n this.parentDomNode = parent;\\n this.nextSibling = nextSibling;\\n this.computeAttributes();\\n this.execute();\\n};\\n\\n/*\\nRetrieve the configuration state indicating if items should be re-arranged\\n*/\\nCheckListWidget.prototype.shouldMoveChecked = function() {\\n var configWidgetTitle = \\\"$:/plugins/tgrosinger/tw5-checklist/Configuration\\\";\\n var configWidgetFields = $tw.wiki.getTiddler(configWidgetTitle).fields;\\n\\n var moveChecked = configWidgetFields[\\\"move-checked\\\"] || \\\"true\\\";\\n return (moveChecked === \\\"true\\\");\\n}\\n\\n/*\\nRetrieve the configuration state indicating if items should be re-sorted\\n*/\\nCheckListWidget.prototype.shouldSort= function() {\\n var configWidgetTitle = \\\"$:/plugins/tgrosinger/tw5-checklist/Configuration\\\";\\n var configWidgetFields = $tw.wiki.getTiddler(configWidgetTitle).fields;\\n\\n var sort = configWidgetFields[\\\"sort-alphabetically\\\"] || \\\"true\\\";\\n return (sort === \\\"true\\\");\\n}\\n\\n\\n\\n/*\\nCompute the internal state of the widget\\n*/\\nCheckListWidget.prototype.execute = function() {\\n var domNode = this.document.createElement(\\\"ul\\\");\\n domNode.className = \\\"checklist\\\";\\n\\n this.makeChildWidgets();\\n this.renderChildren(domNode);\\n\\n /* add event listeners */\\n $tw.utils.each(domNode.childNodes, function(childNode) {\\n if (childNode.childNodes[0].className === \\\"checklist-clearall\\\") {\\n // ClearAllChecks, do not use checkbox listener\\n $tw.utils.addEventListeners(childNode.childNodes[0],\\n [{name: \\\"click\\\", handlerObject: this,\\n handlerMethod: \\\"handleClearChecksEvent\\\"}]);\\n } else if (childNode.childNodes[1].className === \\\"checklist-newitem\\\") {\\n // NewListItem, do not use checkbox listener\\n $tw.utils.addEventListeners(childNode.childNodes[1], [\\n {name: \\\"blur\\\", handlerObject: this, handlerMethod: \\\"handleBlurNewItemEvent\\\"},\\n {name: \\\"keyup\\\", handlerObject: this, handlerMethod: \\\"handleBlurNewItemEvent\\\"}\\n ]);\\n // If this is a normal checklist item …\\n } else {\\n if (childNode.childNodes[0].checked) {\\n $tw.utils.addEventListeners(childNode,\\n [{name: \\\"change\\\", handlerObject: this, handlerMethod: \\\"handleUncheckEvent\\\"}]);\\n } else {\\n $tw.utils.addEventListeners(childNode,\\n [{name: \\\"change\\\", handlerObject: this, handlerMethod: \\\"handleCheckEvent\\\"}]);\\n }\\n $tw.utils.addEventListeners(childNode.childNodes[1], [\\n {name: \\\"click\\\", handlerObject: this, handlerMethod: \\\"handleRemoveEvent\\\"}\\n ]);\\n }\\n }.bind(this));\\n\\n this.parentDomNode.insertBefore(domNode, this.nextSibling);\\n};\\n\\n// When the user clicks the clear-all button, remove all checks\\nCheckListWidget.prototype.handleClearChecksEvent = function(event) {\\n var domItem = event.target.parentNode;\\n var domList = domItem.parentNode;\\n\\n var tiddlerBody = $tw.wiki.getTiddler(this.tiddlerTitle).fields.text;\\n var bodyList = tiddlerBody.substring(this.startPos, this.stopPos).split(\\\"\\\\n\\\");\\n var bodyLen = bodyList.length;\\n\\n for (var i = 0; i \u003C bodyLen; i++) {\\n bodyList[i] = bodyList[i].replace(\\\"[x]\\\", \\\"[ ]\\\");\\n bodyList[i] = bodyList[i].replace(\\\"[X]\\\", \\\"[ ]\\\");\\n }\\n\\n // Save the updated body\\n var newBody = tiddlerBody.substring(0, this.startPos) +\\n bodyList.join(\\\"\\\\n\\\") +\\n tiddlerBody.substring(this.stopPos);\\n $tw.wiki.setText(this.tiddlerTitle, \\\"text\\\", null, newBody);\\n};\\n\\nCheckListWidget.prototype.reorderList = function(event, bodyList) {\\n var domItem = event.target.parentNode;\\n var domList = domItem.parentNode;\\n \\n var tiddlerBody = $tw.wiki.getTiddler(this.tiddlerTitle).fields.text;\\n\\n // Rearrange items (if configured to do so)\\n var shouldMove = this.shouldMoveChecked();\\n\\n // Sort items (if configured to do so)\\n var shouldSort = this.shouldSort();\\n\\n // These are all combinations\\n if (shouldMove) {\\n // Find the index of the first checked item\\n if (shouldSort){\\n // sort by items subject, grouping checked and unchecked\\n bodyList.sort(function (a, b) { return a.toLowerCase().localeCompare(b.toLowerCase()); });\\n }else{\\n // Order only by 3 first chars, so we have order by grouping check and unchecked \\n bodyList.sort(function (a, b) { return a.substring(0, 3).toLowerCase().localeCompare(b.substring(0, 3).toLowerCase()); });\\n }\\n }else if(shouldSort){\\n // sort by items subject\\n bodyList.sort(function (a, b) { return a.substring(3).toLowerCase().localeCompare(b.substring(3).toLowerCase()); });\\n }\\n \\n // Save the updated body\\n var newBody = tiddlerBody.substring(0, this.startPos) +\\n bodyList.join(\\\"\\\\n\\\") +\\n tiddlerBody.substring(this.stopPos);\\n $tw.wiki.setText(this.tiddlerTitle, \\\"text\\\", null, newBody);\\n\\n}\\n\\n// On blur or enter, save the new list item\\nCheckListWidget.prototype.handleBlurNewItemEvent = function(event) {\\n if (event.type == \\\"keyup\\\" && event.keyCode != 13) {\\n // This function receives both blur and keyup events.\\n // Only run on blur or enter key\\n return;\\n }\\n\\n if (event.target.value.trim() === \\\"\\\") {\\n // Don't save an empty list item\\n return;\\n }\\n\\n var checklist = event.target.parentNode.parentNode;\\n var firstItem = checklist.childNodes[1];\\n var pos = firstItem.childNodes[0].attributes.pos.nodeValue;\\n\\n var newItem = \\\"[ ] \\\" + event.target.value.trim() + \\\"\\\\n\\\";\\n event.target.value = \\\"\\\";\\n\\n var tiddlerBody = $tw.wiki.getTiddler(this.tiddlerTitle).fields.text;\\n tiddlerBody = tiddlerBody.substring(0, pos) + newItem + tiddlerBody.substring(pos);\\n var bodyList = tiddlerBody.substring(this.startPos, this.stopPos + newItem.length).split(\\\"\\\\n\\\");\\n this.reorderList(event, bodyList) \\n};\\n\\n\\n\\nCheckListWidget.prototype.handleChecksEvents = function(event, oldCheckState, newCheckState) {\\n var domItem = event.target.parentNode;\\n var domList = domItem.parentNode;\\n var itemIndex = [].indexOf.call(domList.childNodes, domItem) - 1;\\n \\n var tiddlerBody = $tw.wiki.getTiddler(this.tiddlerTitle).fields.text;\\n var bodyList = tiddlerBody.substring(this.startPos, this.stopPos).split(\\\"\\\\n\\\");\\n\\n // Update the tiddler data\\n bodyList[itemIndex] = bodyList[itemIndex].replace(oldCheckState, newCheckState);\\n this.reorderList(event, bodyList) \\n\\n}\\n\\nCheckListWidget.prototype.handleCheckEvent = function(event) {\\n this.handleChecksEvents(event, \\\"[ ]\\\", \\\"[x]\\\");\\n};\\n\\nCheckListWidget.prototype.handleUncheckEvent = function(event) {\\n this.handleChecksEvents(event, \\\"[x]\\\", \\\"[ ]\\\");\\n};\\n\\nCheckListWidget.prototype.handleRemoveEvent = function (event) {\\n var domItem = event.target.parentNode;\\n var domList = domItem.parentNode;\\n var itemIndex = [].indexOf.call(domList.childNodes, domItem) - 1;\\n\\n var tiddlerBody = $tw.wiki.getTiddler(this.tiddlerTitle).fields.text;\\n var bodyList = tiddlerBody.substring(this.startPos, this.stopPos).split(\\\"\\\\n\\\");\\n\\n // Update the tiddler data\\n bodyList.splice(itemIndex, 1);\\n var newBody = tiddlerBody.substring(0, this.startPos) +\\n bodyList.join(\\\"\\\\n\\\") +\\n tiddlerBody.substring(this.stopPos);\\n $tw.wiki.setText(this.tiddlerTitle, \\\"text\\\", null, newBody);\\n};\\n\\n/*\\nSelectively refreshes the widget if needed.\\nReturns true if the widget or any of its children needed re-rendering\\n*/\\nCheckListWidget.prototype.refresh = function(changedTiddlers) {\\n var changedAttributes = this.computeAttributes();\\n // Refresh if an attribute has changed, or the type associated with\\n // the target tiddler has changed\\n if(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index ||\\n (changedTiddlers[this.editTitle] && this.getEditorType() !== this.editorType)) {\\n this.refreshSelf();\\n return true;\\n } else {\\n return this.refreshChildren(changedTiddlers);\\n }\\n};\\n\\nexports.checklist = CheckListWidget;\\n\\n})();\\n\",\n \"title\": \"$:/plugins/tgrosinger/tw5-checklist/checklist.js\",\n \"type\": \"application/javascript\",\n \"module-type\": \"widget\"\n },\n \"$:/plugins/tgrosinger/tw5-checklist/Configuration\": {\n \"title\": \"$:/plugins/tgrosinger/tw5-checklist/Configuration\",\n \"move-checked\": \"true\",\n \"strike-checked\": \"true\",\n \"show-clearall\": \"true\",\n \"sort-alphabetically\": \"false\",\n \"text\": \"Please see the [[homepage|https://grosinger.net/tw5-checklist/]] for more information on the options.\\n\\nSave and reload the wiki to activate changes.\\n\\n\u003Ctable>\\n \u003Ctr>\\n \u003Cth align=\\\"left\\\">Rearrange checked items:\u003C/th>\\n \u003Ctd>\\n \u003C$checkbox field=\\\"move-checked\\\" tiddler=\\\"$:/plugins/tgrosinger/tw5-checklist/Configuration\\\"\\n checked=\\\"true\\\" unchecked=\\\"false\\\" default=\\\"true\\\">\u003C/$checkbox>\\n \u003C/td>\\n \u003C/tr>\\n \u003Ctr>\\n \u003Cth align=\\\"left\\\" class=\\\"rerendering-required\\\">Strike checked items: \u003C/th>\\n \u003Ctd>\\n \u003C$checkbox field=\\\"strike-checked\\\" tiddler=\\\"$:/plugins/tgrosinger/tw5-checklist/Configuration\\\"\\n checked=\\\"true\\\" unchecked=\\\"false\\\" default=\\\"true\\\">\u003C/$checkbox>\\n \u003C/td>\\n \u003C/tr>\\n \u003Ctr>\\n \u003Cth align=\\\"left\\\" class=\\\"rerendering-required\\\">Sort list alphabetically: \u003C/th>\\n \u003Ctd>\\n \u003C$checkbox field=\\\"sort-alphabetically\\\" tiddler=\\\"$:/plugins/tgrosinger/tw5-checklist/Configuration\\\"\\n checked=\\\"true\\\" unchecked=\\\"false\\\" default=\\\"false\\\">\u003C/$checkbox>\\n \u003C/td>\\n \u003C/tr>\\n \u003Ctr>\\n \u003Cth align=\\\"left\\\" class=\\\"rerendering-required\\\">Show Clear-All: \u003C/th>\\n \u003Ctd>\\n \u003C$checkbox field=\\\"show-clearall\\\" tiddler=\\\"$:/plugins/tgrosinger/tw5-checklist/Configuration\\\"\\n checked=\\\"true\\\" unchecked=\\\"false\\\" default=\\\"true\\\">\u003C/$checkbox>\\n \u003C/td>\\n \u003C/tr>\\n\u003C/table>\\n\\n&#42; make a change in a list to see the effect (check/uncheck or add/delete an item).\\n\\n\u003Cstyle>\\n.rerendering-required:after {\\n content: ' *';\\n color: #e32;\\n}\\n\u003C/style>\\n\"\n },\n \"$:/plugins/tgrosinger/tw5-checklist/license\": {\n \"title\": \"$:/plugins/tgrosinger/tw5-checklist/license\",\n \"text\": \"The MIT License (MIT)\\n\\nCopyright (c) 2015 Tony Grosinger\\n\\nPermission is hereby granted, free of charge, to any person obtaining a copy\\nof this software and associated documentation files (the \\\"Software\\\"), to deal\\nin the Software without restriction, including without limitation the rights\\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\\ncopies of the Software, and to permit persons to whom the Software is\\nfurnished to do so, subject to the following conditions:\\n\\nThe above copyright notice and this permission notice shall be included in all\\ncopies or substantial portions of the Software.\\n\\nTHE SOFTWARE IS PROVIDED \\\"AS IS\\\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\\nSOFTWARE.\\n\\n\"\n },\n \"$:/plugins/tgrosinger/tw5-checklist/readme\": {\n \"title\": \"$:/plugins/tgrosinger/tw5-checklist/readme\",\n \"text\": \"This plugin provides a simple checklist which does not create a new tiddler for\\neach task. Features include:\\n\\n[x] Check and uncheck items\\n[x] Simple, no configuration necessary\\n[x] Easily editable, and easy to read in edit view\\n[x] Add new list items without using edit mode\\n[x] Move completed items to bottom of list\\n\\n[[Source code|https://github.com/tgrosinger/tw5-checklist]]\\n\"\n },\n \"$:/plugins/tgrosinger/tw5-checklist/stylesheet\": {\n \"title\": \"$:/plugins/tgrosinger/tw5-checklist/stylesheet\",\n \"tags\": \"$:/tags/Stylesheet\",\n \"text\": \"ul.checklist {\\n list-style: none;\\n margin: 0;\\n padding: 0;\\n}\\n\\nul.checklist > li {\\n position: relative;\\n width: calc(100% - 1em);\\n}\\n\\n\\n/* input form */\\n\\n.checklist-newitem-icon::before {\\n content: \\\"&#x270e;\\\";\\n}\\n\\ninput.checklist-newitem {\\n margin-left: 1em;\\n margin-bottom: 0.75em;\\n padding: 2px;\\n border: none;\\n border-bottom: solid 2px \u003C\u003Ccolour sidebar-tab-background>>;\\n transition: border 0.3s;\\n width: calc(100% - 2em - 20px);\\n}\\n\\ninput:focus.checklist-newitem {\\n border-bottom: solid 2px \u003C\u003Ccolour notification-border>>;\\n}\\n\\n\\n/* placeholder text */\\n\\n::-webkit-input-placeholder { \\n color: #444;\\n font-style: italic;\\n}\\n::-moz-placeholder { \\n color: #444;\\n font-style: italic;\\n}\\n:-ms-input-placeholder { \\n color: #444;\\n font-style: italic;\\n}\\n:-moz-placeholder { \\n color: #444;\\n font-style: italic;\\n}\\n::placeholder {\\n color: #444;\\n font-style: italic;\\n}\\n\\n\\n/* list items content */\\n\\n.checklist li input[type=\\\"checkbox\\\"] {\\n vertical-align: top;\\n margin-top: 4px;\\n}\\n\\n.checklist label {\\n display: inline-block;\\n position: relative;\\n margin-left: -1em;\\n padding-left: 0.4em;\\n left: 1.4em;\\n width: calc(100% - 2em - 20px);\\n}\\n\\n.checklist > li:hover label, \\n.checklist input[type=\\\"checkbox\\\"]:hover + button + label, \\n.checklist input[type=\\\"checkbox\\\"]:focus + button + label {\\n background-color: \u003C\u003Ccolour sidebar-tab-background>>;\\n}\\n\\ninput:checked + .checklist-remove + label {\\n opacity: 0.5;\\n}\\n\\n.checklist li input + .checklist-remove:hover + label,\\n.checklist li input + .checklist-remove:focus + label {\\n background-color: rgba(255,0,0,0.25);\\n opacity: 0.8;\\n border-radius: 5px;\\n}\\n\\n/* strike checked items only if set in user configuration */\\n\u003C$list filter=\\\"[[$:/plugins/tgrosinger/tw5-checklist/Configuration]field:strike-checked[true]]\\\">\\ninput:checked + .checklist-remove + label {\\n text-decoration: line-through;\\n}\\n\u003C/$list>\\n\\n\\n/* buttons */\\n\\nbutton.checklist-add {\\n position: relative;\\n left: 0.75em;\\n width: 18px;\\n height: 18px;\\n border-radius: 5px;\\nbackground-image: url('data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2211%22%20height%3D%2211%22%3E%0A%3Crect%20width%3D%221%22%20height%3D%227%22%20x%3D%225%22%20y%3D%222%22%20fill%3D%22%239B9B9B%22%2F%3E%0A%3Crect%20width%3D%227%22%20height%3D%221%22%20x%3D%222%22%20y%3D%225%22%20fill%3D%22%239B9B9B%22%2F%3E%0A%3C%2Fsvg%3E');\\n background-size: 100%;\\n}\\n\\nbutton.checklist-add:hover, button.checklist-add:focus {\\n background-color: \u003C\u003Ccolour sidebar-tab-background>>;\\n}\\n\\nbutton.checklist-remove {\\n display: block;\\n position: absolute;\\n top: 2px;\\n right: -6px;\\n width: 18px;\\n height: 18px;\\n border-radius: 5px;\\n color: \u003C\u003Ccolour sidebar-muted-foreground>>;\\nbackground-image: url('data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2211%22%20height%3D%2211%22%3E%0A%3Crect%20width%3D%225%22%20height%3D%221%22%20x%3D%223%22%20y%3D%225%22%20fill%3D%22%23444%22%2F%3E%0A%3C%2Fsvg%3E');\\n background-size: 100%;\\n/* background-color: \u003C\u003Ccolour sidebar-tab-background-selected>>; */\\n border: 1px solid \u003C\u003Ccolour sidebar-tab-background>>;\\n}\\n\\nul.checklist > li:hover button.checklist-remove {\\n color: \u003C\u003Ccolour sidebar-muted-foreground-hover>>;\\n}\\n\\nbutton.checklist-remove:hover,\\nbutton.checklist-remove:focus {\\n color: \u003C\u003Ccolour dirty-indicator>>;\\n background-color: \u003C\u003Ccolour sidebar-tab-background>>;\\n}\\n\\nbutton.checklist-clearall {\\n margin-top: 0.75em;\\n}\\n\\nbutton.checklist-clearall::before {\\n content: \\\"↻ \\\";\\n}\\n\\n\\n/* visualliy hidden, accessible for screen reader */\\n\\n.checklist-vh {\\n position: absolute !important;\\n clip: rect(1px, 1px, 1px, 1px);\\n padding:0 !important;\\n border:0 !important;\\n height: 1px !important;\\n width: 1px !important;\\n overflow: hidden;\\n}\\n\"\n },\n \"$:/plugins/tgrosinger/tw5-checklist/Usage\": {\n \"title\": \"$:/plugins/tgrosinger/tw5-checklist/Usage\",\n \"text\": \"! Creating a New Checklist\\n\\nThis plugin provides a wikitext rule for use in normal wikitext tiddlers. A\\nchecklist is defined as two brackets with either a \u003Ckbd>space\u003C/kbd> or an\\n\u003Ckbd>x\u003C/kbd> between them.\\n\\n```\\n! My Shopping List\\n\\n[ ] Milk\\n[ ] Eggs\\n[x] Bread\\n\\n```\\n\\n!! Multiple Checklists\\n\\nThere is no need to declare an instance of a checklist, and you can place\\nchecklist items throughout a tiddler. Each set of consecutive (single new-line\\ndelimited) checklist items will be displayed as a single checklist.\\n\\n```\\n! My first list\\n\\n[ ] Item 1\\n[x] Item 2\\n\\n! My second list\\n\\n[x] Item 3\\n[x] Item 4\\n\\n```\\n\\n!! List Item Formatting\\n\\nList items support any inline formatting rules. This means you can create links,\\nbold, or anything else found on the\\n[[Formatting in WikiText|http://tiddlywiki.com/static/Formatting%2520in%2520WikiText.html]] guide.\\n\\n! Configuration\\n\\nPlease see [[the configuration|$:/plugins/tgrosinger/tw5-checklist/Configuration]]\\npage to learn about and adjust configuration options.\\n\"\n }\n }\n}","type":"application/json","author":"Tony Grosinger","core-version":">=5.0.9","creator":"","dependents":"","description":"Checklist Plugin","list":"readme Usage Configuration","modified":"20220418151840363","modifier":"","plugin-type":"plugin","source":"https://github.com/tgrosinger/tw5-checklist","title":"$:/plugins/tgrosinger/tw5-checklist","version":"0.0.15","revision":"0","bag":"default"},
{"title":"$:/plugins/tiddlywiki/codemirror","name":"CodeMirror","description":"CodeMirror editor","list":"readme usage keyboard license","version":"5.2.3","plugin-type":"plugin","dependents":"","type":"application/json","text":"{\"tiddlers\":{\"$:/config/EditorTypeMappings/application/javascript\":{\"title\":\"$:/config/EditorTypeMappings/application/javascript\",\"text\":\"codemirror\"},\"$:/config/EditorTypeMappings/application/json\":{\"title\":\"$:/config/EditorTypeMappings/application/json\",\"text\":\"codemirror\"},\"$:/config/EditorTypeMappings/application/x-tiddler-dictionary\":{\"title\":\"$:/config/EditorTypeMappings/application/x-tiddler-dictionary\",\"text\":\"codemirror\"},\"$:/config/EditorTypeMappings/text/css\":{\"title\":\"$:/config/EditorTypeMappings/text/css\",\"text\":\"codemirror\"},\"$:/config/EditorTypeMappings/text/html\":{\"title\":\"$:/config/EditorTypeMappings/text/html\",\"text\":\"codemirror\"},\"$:/config/EditorTypeMappings/text/plain\":{\"title\":\"$:/config/EditorTypeMappings/text/plain\",\"text\":\"codemirror\"},\"$:/config/EditorTypeMappings/text/vnd.tiddlywiki\":{\"title\":\"$:/config/EditorTypeMappings/text/vnd.tiddlywiki\",\"text\":\"codemirror\"},\"$:/config/EditorTypeMappings/text/x-markdown\":{\"title\":\"$:/config/EditorTypeMappings/text/x-markdown\",\"text\":\"codemirror\"},\"$:/config/EditorTypeMappings/text/x-tiddlywiki\":{\"title\":\"$:/config/EditorTypeMappings/text/x-tiddlywiki\",\"text\":\"codemirror\"},\"$:/config/codemirror/cursorBlinkRate\":{\"title\":\"$:/config/codemirror/cursorBlinkRate\",\"type\":\"integer\",\"text\":\"530\"},\"$:/config/codemirror/extraKeysTW\":{\"title\":\"$:/config/codemirror/extraKeysTW\",\"extend\":\"extraKeys\",\"type\":\"json\",\"text\":\"{\\n\\t\\\"Ctrl-Esc\\\": \\\"singleSelection\\\",\\n\\t\\\"Esc\\\": \\\"\\\",\\n\\t\\\"Ctrl-S\\\": \\\"\\\",\\n\\t\\\"Ctrl-U\\\": \\\"\\\",\\n\\t\\\"Ctrl-T\\\": \\\"\\\",\\n\\t\\\"Alt-T\\\": \\\"transposeChars\\\",\\n\\t\\\"Alt-U\\\": \\\"undoSelection\\\",\\n\\t\\\"Shift-Alt-U\\\": \\\"redoSelection\\\",\\n\\t\\\"Cmd-U\\\": \\\"\\\",\\n\\t\\\"Tab\\\": \\\"indentAuto()\\\",\\n\\t\\\"Enter\\\": \\\"newLineAndIndent()\\\"\\n}\\n\"},\"$:/config/codemirror/indentUnit\":{\"title\":\"$:/config/codemirror/indentUnit\",\"type\":\"integer\",\"text\":\"2\"},\"$:/config/codemirror/indentWithTabs\":{\"title\":\"$:/config/codemirror/indentWithTabs\",\"type\":\"bool\",\"text\":\"true\"},\"$:/config/codemirror/inputStyle\":{\"title\":\"$:/config/codemirror/inputStyle\",\"type\":\"string\",\"text\":\"textarea\"},\"$:/config/codemirror/keyMap\":{\"title\":\"$:/config/codemirror/keyMap\",\"type\":\"string\",\"text\":\"default\"},\"$:/config/codemirror/lineNumbers\":{\"title\":\"$:/config/codemirror/lineNumbers\",\"type\":\"bool\",\"text\":\"false\"},\"$:/config/codemirror/lineWrapping\":{\"title\":\"$:/config/codemirror/lineWrapping\",\"type\":\"bool\",\"text\":\"true\"},\"$:/config/codemirror/showCursorWhenSelecting\":{\"title\":\"$:/config/codemirror/showCursorWhenSelecting\",\"type\":\"bool\",\"text\":\"true\"},\"$:/config/codemirror/smartIndent\":{\"title\":\"$:/config/codemirror/smartIndent\",\"type\":\"bool\",\"text\":\"true\"},\"$:/config/codemirror/styleActiveLine\":{\"title\":\"$:/config/codemirror/styleActiveLine\",\"type\":\"bool\",\"text\":\"false\"},\"$:/config/codemirror/tabSize\":{\"title\":\"$:/config/codemirror/tabSize\",\"type\":\"integer\",\"text\":\"2\"},\"$:/config/codemirror/theme\":{\"title\":\"$:/config/codemirror/theme\",\"type\":\"string\",\"text\":\"tiddlywiki\"},\"$:/language/codemirror/homeUrl\":{\"title\":\"$:/language/codemirror/homeUrl\",\"text\":\"http://codemirror.net\"},\"$:/language/codemirror/addOnUrl\":{\"title\":\"$:/language/codemirror/addOnUrl\",\"text\":\"http://codemirror.net/doc/manual.html#addons\"},\"$:/language/codemirror/configUrl\":{\"title\":\"$:/language/codemirror/configUrl\",\"text\":\"http://codemirror.net/doc/manual.html#config\"},\"$:/language/codemirror/controlPanel/hint\":{\"title\":\"$:/language/codemirror/controlPanel/hint\",\"text\":\"These settings let you customise the behaviour of [[CodeMirror|$:/plugins/tiddlywiki/codemirror]].\"},\"$:/language/codemirror/controlPanel/keyboard\":{\"title\":\"$:/language/codemirror/controlPanel/keyboard\",\"text\":\"Keyboard shortcuts\"},\"$:/language/codemirror/controlPanel/usage\":{\"title\":\"$:/language/codemirror/controlPanel/usage\",\"text\":\"Usage information\"},\"$:/language/codemirror/cursorBlinkRate/hint\":{\"title\":\"$:/language/codemirror/cursorBlinkRate/hint\",\"text\":\"Cursor blink rate\"},\"$:/language/codemirror/editorFont/hint\":{\"title\":\"$:/language/codemirror/editorFont/hint\",\"text\":\"Editor font family\"},\"$:/language/codemirror/editorFont/info\":{\"title\":\"$:/language/codemirror/editorFont/info\",\"text\":\"Set the font family for the ~CodeMirror text-editor\"},\"$:/language/codemirror/indentUnit/hint\":{\"title\":\"$:/language/codemirror/indentUnit/hint\",\"text\":\"How many spaces a block should be indented\"},\"$:/language/codemirror/indentWithTabs/hint\":{\"title\":\"$:/language/codemirror/indentWithTabs/hint\",\"text\":\"Enable indenting with tabs\"},\"$:/language/codemirror/indentWithTabs/info\":{\"title\":\"$:/language/codemirror/indentWithTabs/info\",\"text\":\"Whether, when indenting, the first N*`tabSize` spaces should be replaced by N tabs.\"},\"$:/language/codemirror/keyMap/hint\":{\"title\":\"$:/language/codemirror/keyMap/hint\",\"text\":\"~CodeMirror keymap\"},\"$:/language/codemirror/keyMap/info\":{\"title\":\"$:/language/codemirror/keyMap/info\",\"text\":\"~The Keyboard KeyMap used within the ~CodeMirror text-editor\"},\"$:/language/codemirror/lineNumbers/hint\":{\"title\":\"$:/language/codemirror/lineNumbers/hint\",\"text\":\"Enable line numbers\"},\"$:/language/codemirror/lineNumbers/info\":{\"title\":\"$:/language/codemirror/lineNumbers/info\",\"text\":\"Whether to show line numbers to the left of the editor.\"},\"$:/language/codemirror/lineWrapping/hint\":{\"title\":\"$:/language/codemirror/lineWrapping/hint\",\"text\":\"Enable line wrapping\"},\"$:/language/codemirror/lineWrapping/info\":{\"title\":\"$:/language/codemirror/lineWrapping/info\",\"text\":\"Whether CodeMirror should scroll or wrap for long lines. Defaults to `false` (scroll).\"},\"$:/language/codemirror/showCursorWhenSelecting/hint\":{\"title\":\"$:/language/codemirror/showCursorWhenSelecting/hint\",\"text\":\"Show cursor, when selecting\"},\"$:/language/codemirror/showCursorWhenSelecting/info\":{\"title\":\"$:/language/codemirror/showCursorWhenSelecting/info\",\"text\":\"Whether the cursor should be drawn when a selection is active.\"},\"$:/language/codemirror/smartIndent/hint\":{\"title\":\"$:/language/codemirror/smartIndent/hint\",\"text\":\"Enable smart indent\"},\"$:/language/codemirror/smartIndent/info\":{\"title\":\"$:/language/codemirror/smartIndent/info\",\"text\":\"Whether to use the context-sensitive indentation that the mode provides (or just indent the same as the line before). Defaults to `true`.\"},\"$:/language/codemirror/styleActiveLine/hint\":{\"title\":\"$:/language/codemirror/styleActiveLine/hint\",\"text\":\"Highlight active line\"},\"$:/language/codemirror/styleActiveLine/info\":{\"title\":\"$:/language/codemirror/styleActiveLine/info\",\"text\":\"Whether or not to highlight the active text-editor line\"},\"$:/language/codemirror/tabSize/hint\":{\"title\":\"$:/language/codemirror/tabSize/hint\",\"text\":\"Width of a tab character\"},\"$:/language/codemirror/theme/hint\":{\"title\":\"$:/language/codemirror/theme/hint\",\"text\":\"Select a theme\"},\"$:/language/codemirror/theme/info\":{\"title\":\"$:/language/codemirror/theme/info\",\"text\":\"Choose between ~CodeMirror themes\"},\"$:/plugins/tiddlywiki/codemirror/edit-codemirror.js\":{\"title\":\"$:/plugins/tiddlywiki/codemirror/edit-codemirror.js\",\"text\":\"/*\\\\\\ntitle: $:/plugins/tiddlywiki/codemirror/edit-codemirror.js\\ntype: application/javascript\\nmodule-type: widget\\n\\nEdit-codemirror widget\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nvar editTextWidgetFactory = require(\\\"$:/core/modules/editor/factory.js\\\").editTextWidgetFactory,\\n\\tCodeMirrorEngine = require(\\\"$:/plugins/tiddlywiki/codemirror/engine.js\\\").CodeMirrorEngine;\\n\\nexports[\\\"edit-codemirror\\\"] = editTextWidgetFactory(CodeMirrorEngine,CodeMirrorEngine);\\n\\n})();\\n\",\"type\":\"application/javascript\",\"module-type\":\"widget\"},\"$:/plugins/tiddlywiki/codemirror/engine.js\":{\"title\":\"$:/plugins/tiddlywiki/codemirror/engine.js\",\"text\":\"/*\\\\\\ntitle: $:/plugins/tiddlywiki/codemirror/engine.js\\ntype: application/javascript\\nmodule-type: library\\n\\nText editor engine based on a CodeMirror instance\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nvar CODEMIRROR_OPTIONS = \\\"$:/config/CodeMirror\\\",\\nHEIGHT_VALUE_TITLE = \\\"$:/config/TextEditor/EditorHeight/Height\\\",\\nCONFIG_FILTER = \\\"[all[shadows+tiddlers]prefix[$:/config/codemirror/]]\\\"\\n\\t\\n// Install CodeMirror\\nif($tw.browser && !window.CodeMirror) {\\n\\n\\tvar modules = $tw.modules.types[\\\"codemirror\\\"];\\n\\tvar req = Object.getOwnPropertyNames(modules);\\n\\n\\twindow.CodeMirror = require(\\\"$:/plugins/tiddlywiki/codemirror/lib/codemirror.js\\\");\\n\\t// Install required CodeMirror plugins\\n\\tif(req) {\\n\\t\\tif($tw.utils.isArray(req)) {\\n\\t\\t\\tfor(var index=0; index\u003Creq.length; index++) {\\n\\t\\t\\t\\trequire(req[index]);\\n\\t\\t\\t}\\n\\t\\t} else {\\n\\t\\t\\trequire(req);\\n\\t\\t}\\n\\t}\\n}\\n\\nfunction getCmConfig() {\\n\\tvar type,\\n\\t\\ttest,\\n\\t\\tvalue,\\n\\t\\telement,\\n\\t\\textend,\\n\\t\\ttiddler,\\n\\t\\tconfig = {},\\n\\t\\tconfigTiddlers = $tw.wiki.filterTiddlers(CONFIG_FILTER);\\n\\n\\tif ($tw.utils.isArray(configTiddlers)) {\\n\\t\\tfor (var i=0; i\u003CconfigTiddlers.length; i++) {\\n\\t\\t\\ttiddler = $tw.wiki.getTiddler(configTiddlers[i]);\\n\\t\\t\\t\\tif (tiddler) {\\n\\t\\t\\t\\telement = configTiddlers[i].replace(/\\\\$:\\\\/config\\\\/codemirror\\\\//ig,\\\"\\\");\\n\\t\\t\\t\\t\\ttype = (tiddler.fields.type) ? tiddler.fields.type.trim().toLocaleLowerCase() : \\\"string\\\";\\n\\t\\t\\t\\tswitch (type) {\\n\\t\\t\\t\\t\\tcase \\\"bool\\\":\\n\\t\\t\\t\\t\\ttest = tiddler.fields.text.trim().toLowerCase();\\n\\t\\t\\t\\t\\tvalue = (test === \\\"true\\\") ? true : false;\\n\\t\\t\\t\\t\\tconfig[element] = value;\\n\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\t\\tcase \\\"string\\\":\\n\\t\\t\\t\\t\\tvalue = tiddler.fields.text.trim();\\n\\t\\t\\t\\t\\tconfig[element] = value;\\n\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\t\\tcase \\\"integer\\\":\\n\\t\\t\\t\\t\\tvalue = parseInt(tiddler.fields.text.trim(), 10);\\n\\t\\t\\t\\t\\tconfig[element] = value;\\n\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\t\\tcase \\\"json\\\":\\n\\t\\t\\t\\t\\tvalue = JSON.parse(tiddler.fields.text.trim());\\n\\t\\t\\t\\t\\t\\textend = (tiddler.fields.extend) ? tiddler.fields.extend : element;\\n\\n\\t\\t\\t\\t\\tif (config[extend]) {\\n\\t\\t\\t\\t\\t\\t$tw.utils.extend(config[extend], value);\\n\\t\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\t\\tconfig[extend] = value;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\treturn config;\\n}\\n\\nfunction CodeMirrorEngine(options) {\\n\\n\\t// Save our options\\n\\tvar self = this;\\n\\toptions = options || {};\\n\\tthis.widget = options.widget;\\n\\tthis.value = options.value;\\n\\tthis.parentNode = options.parentNode;\\n\\tthis.nextSibling = options.nextSibling;\\n\\t// Create the wrapper DIV\\n\\tthis.domNode = this.widget.document.createElement(\\\"div\\\");\\n\\tif(this.widget.editClass) {\\n\\t\\tthis.domNode.className = this.widget.editClass;\\n\\t}\\n\\tthis.domNode.style.display = \\\"inline-block\\\";\\n\\tthis.parentNode.insertBefore(this.domNode,this.nextSibling);\\n\\tthis.widget.domNodes.push(this.domNode);\\n\\t\\n\\t// Set all cm-plugin defaults\\n\\t// Get the configuration options for the CodeMirror object\\n\\tvar config = getCmConfig();\\n\\n\\tconfig.mode = options.type;\\n\\tconfig.value = options.value;\\n\\tif(this.widget.editTabIndex) {\\n\\t\\tconfig[\\\"tabindex\\\"] = this.widget.editTabIndex;\\n\\t}\\n\\tconfig.editWidget = this.widget;\\n\\t// Create the CodeMirror instance\\n\\tthis.cm = window.CodeMirror(function(cmDomNode) {\\n\\t\\t// Note that this is a synchronous callback that is called before the constructor returns\\n\\t\\tif(!self.widget.document.isTiddlyWikiFakeDom) {\\n\\t\\t\\tself.domNode.appendChild(cmDomNode);\\n\\t\\t}\\n\\t},config);\\n\\n\\t// Set up a change event handler\\n\\tthis.cm.on(\\\"change\\\",function() {\\n\\t\\tself.widget.saveChanges(self.getText());\\n\\t\\tif(self.widget.editInputActions) {\\n\\t\\t\\tself.widget.invokeActionString(self.widget.editInputActions,this,event,{actionValue: this.getText()});\\n\\t\\t}\\n\\t});\\n\\t\\n\\tthis.cm.on(\\\"drop\\\",function(cm,event) {\\n\\t\\tif(!self.widget.isFileDropEnabled) {\\n\\t\\t\\tevent.stopPropagation(); // Otherwise TW's dropzone widget sees the drop event\\n\\t\\t}\\n\\t\\t// Detect if Chrome has added a pseudo File object to the dataTransfer\\n\\t\\tif(!$tw.utils.dragEventContainsFiles(event) && event.dataTransfer.files.length) {\\n\\t\\t\\t//Make codemirror ignore the event as we will handle the drop ourselves\\n\\t\\t\\tevent.codemirrorIgnore = true;\\n\\t\\t\\tevent.preventDefault();\\n\\n\\t\\t\\t// from https://github.com/codemirror/CodeMirror/blob/master/src/measurement/position_measurement.js#L673\\n\\t\\t\\tfunction posFromMouse(cm, e, liberal, forRect) {\\n\\t\\t\\t\\tlet display = cm.display\\n\\t\\t\\t\\tif (!liberal && e_target(e).getAttribute(\\\"cm-not-content\\\") == \\\"true\\\") return null\\n\\n\\t\\t\\t\\tlet x, y, space = display.lineSpace.getBoundingClientRect()\\n\\t\\t\\t\\t// Fails unpredictably on IE[67] when mouse is dragged around quickly.\\n\\t\\t\\t\\ttry { x = e.clientX - space.left; y = e.clientY - space.top }\\n\\t\\t\\t\\tcatch (e) { return null }\\n\\t\\t\\t\\tlet coords = cm.coordsChar(cm, x, y), line\\n\\t\\t\\t\\tif (forRect && coords.xRel > 0 && (line = cm.getLine(cm.doc, coords.line).text).length == coords.ch) {\\n\\t\\t\\t\\t\\tlet colDiff = window.CodeMirror.countColumn(line, line.length, cm.options.tabSize) - line.length\\n\\t\\t\\t\\t\\tcoords = window.CodeMirror.Pos(coords.line, Math.max(0, Math.round((x - paddingH(cm.display).left) / charWidth(cm.display)) - colDiff))\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\treturn coords\\n\\t\\t\\t}\\n\\n\\t\\t\\tvar pos = posFromMouse(cm,event,true);\\n\\t\\t\\tif(!pos || cm.isReadOnly()) {\\n\\t\\t\\t\\treturn;\\n\\t\\t\\t}\\n\\t\\t\\t// Don't do a replace if the drop happened inside of the selected text.\\n\\t\\t\\tif (cm.state.draggingText && cm.doc.sel.contains(pos) > -1) {\\n\\t\\t\\t\\tcm.state.draggingText(event);\\n\\t\\t\\t\\t// Ensure the editor is re-focused\\n\\t\\t\\t\\tsetTimeout(() => cm.display.input.focus(), 20);\\n\\t\\t\\t\\treturn;\\n\\t\\t\\t}\\n\\t\\t\\ttry {\\n\\t\\t\\t\\tvar text = event.dataTransfer.getData(\\\"Text\\\");\\n\\t\\t\\t\\tif (text) {\\n\\t\\t\\t\\t\\tvar selected;\\n\\t\\t\\t\\t\\tif (cm.state.draggingText && !cm.state.draggingText.copy) {\\n\\t\\t\\t\\t\\t\\tselected = cm.listSelections();\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\tcm.setCursor(cm.coordsChar({left:event.pageX,top:event.pageY}));\\n\\t\\t\\t\\t\\tif (selected) {\\n\\t\\t\\t\\t\\t \\tfor (var i = 0; i \u003C selected.length; ++i) {\\n\\t\\t\\t\\t\\t\\t\\treplaceRange(cm.doc, \\\"\\\", selected[i].anchor, selected[i].head, \\\"drag\\\");\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\tcm.replaceSelection(text, \\\"around\\\", \\\"paste\\\");\\n\\t\\t\\t\\t\\tcm.display.input.focus();\\n\\t\\t\\t }\\n\\t\\t\\t}\\n\\t\\t\\tcatch(e){}\\n\\t\\t}\\n\\t\\treturn false;\\n\\t});\\n\\tthis.cm.on(\\\"keydown\\\",function(cm,event) {\\n\\t\\treturn self.widget.handleKeydownEvent.call(self.widget,event);\\n\\t});\\n\\tthis.cm.on(\\\"focus\\\",function(cm,event) {\\n\\t\\tif(self.widget.editCancelPopups) {\\n\\t\\t\\t$tw.popup.cancel(0);\\t\\n\\t\\t}\\n\\t});\\n\\t// Add drag and drop event listeners if fileDrop is enabled\\n\\tif(this.widget.isFileDropEnabled) {\\n\\t\\t// If the drag event contains Files, prevent the default CodeMirror handling\\n\\t\\tthis.cm.on(\\\"dragenter\\\",function(cm,event) {\\n\\t\\t\\tif($tw.utils.dragEventContainsFiles(event)) {\\n\\t\\t\\t\\tevent.preventDefault();\\n\\t\\t\\t}\\n\\t\\t\\treturn true;\\n\\t\\t});\\n\\t\\tthis.cm.on(\\\"dragleave\\\",function(cm,event) {\\n\\t\\t\\tevent.preventDefault();\\n\\t\\t});\\n\\t\\tthis.cm.on(\\\"dragover\\\",function(cm,event) {\\n\\t\\t\\tif($tw.utils.dragEventContainsFiles(event)) {\\n\\t\\t\\t\\tevent.preventDefault();\\n\\t\\t\\t}\\n\\t\\t});\\n\\t\\tthis.cm.on(\\\"drop\\\",function(cm,event) {\\n\\t\\t\\tif($tw.utils.dragEventContainsFiles(event)) {\\n\\t\\t\\t\\tevent.preventDefault();\\n\\t\\t\\t}\\n\\t\\t});\\n\\t\\tthis.cm.on(\\\"paste\\\",function(cm,event) {\\n\\t\\t\\tself.widget.handlePasteEvent.call(self.widget,event);\\n\\t\\t});\\n\\t}\\n}\\n\\n/*\\nSet the text of the engine if it doesn't currently have focus\\n*/\\nCodeMirrorEngine.prototype.setText = function(text,type) {\\n\\tvar self = this;\\n\\tself.cm.setOption(\\\"mode\\\",type);\\n\\tif(!this.cm.hasFocus()) {\\n\\t\\tthis.updateDomNodeText(text);\\n\\t}\\n};\\n\\n/*\\nUpdate the DomNode with the new text\\n*/\\nCodeMirrorEngine.prototype.updateDomNodeText = function(text) {\\n\\tthis.cm.setValue(text);\\n};\\n\\n/*\\nGet the text of the engine\\n*/\\nCodeMirrorEngine.prototype.getText = function() {\\n\\treturn this.cm.getValue();\\n};\\n\\n/*\\nFix the height of textarea to fit content\\n*/\\nCodeMirrorEngine.prototype.fixHeight = function() {\\n\\tif(this.widget.editAutoHeight) {\\n\\t\\t// Resize to fit\\n\\t\\tthis.cm.setSize(null,null);\\n\\t} else {\\n\\t\\tvar fixedHeight = parseInt(this.widget.wiki.getTiddlerText(HEIGHT_VALUE_TITLE,\\\"400px\\\"),10);\\n\\t\\tfixedHeight = Math.max(fixedHeight,20);\\n\\t\\tthis.cm.setSize(null,fixedHeight);\\n\\t}\\n};\\n\\n/*\\nFocus the engine node\\n*/\\nCodeMirrorEngine.prototype.focus = function() {\\n\\tthis.cm.focus();\\n}\\n\\n/*\\nCreate a blank structure representing a text operation\\n*/\\nCodeMirrorEngine.prototype.createTextOperation = function() {\\n\\tvar selections = this.cm.listSelections();\\n\\tif(selections.length > 0) {\\n\\t\\tvar anchorPos = this.cm.indexFromPos(selections[0].anchor),\\n\\t\\theadPos = this.cm.indexFromPos(selections[0].head);\\n\\t}\\n\\tvar operation = {\\n\\t\\ttext: this.cm.getValue(),\\n\\t\\tselStart: Math.min(anchorPos,headPos),\\n\\t\\tselEnd: Math.max(anchorPos,headPos),\\n\\t\\tcutStart: null,\\n\\t\\tcutEnd: null,\\n\\t\\treplacement: null,\\n\\t\\tnewSelStart: null,\\n\\t\\tnewSelEnd: null\\n\\t};\\n\\toperation.selection = operation.text.substring(operation.selStart,operation.selEnd);\\n\\treturn operation;\\n};\\n\\n/*\\nExecute a text operation\\n*/\\nCodeMirrorEngine.prototype.executeTextOperation = function(operation) {\\n\\t// Perform the required changes to the text area and the underlying tiddler\\n\\tvar newText = operation.text;\\n\\tif(operation.replacement !== null) {\\n\\t\\tthis.cm.replaceRange(operation.replacement,this.cm.posFromIndex(operation.cutStart),this.cm.posFromIndex(operation.cutEnd));\\n\\t\\tthis.cm.setSelection(this.cm.posFromIndex(operation.newSelStart),this.cm.posFromIndex(operation.newSelEnd));\\n\\t\\tnewText = operation.text.substring(0,operation.cutStart) + operation.replacement + operation.text.substring(operation.cutEnd);\\n\\t}\\n\\tthis.cm.focus();\\n\\treturn newText;\\n};\\n\\nexports.CodeMirrorEngine = $tw.browser ? CodeMirrorEngine : require(\\\"$:/core/modules/editor/engines/simple.js\\\").SimpleEngine;\\n\\n})();\\n\",\"type\":\"application/javascript\",\"module-type\":\"library\"},\"$:/plugins/tiddlywiki/codemirror/lib/codemirror.js\":{\"text\":\"!function(e,t){\\\"object\\\"==typeof exports&&\\\"undefined\\\"!=typeof module?module.exports=t():\\\"function\\\"==typeof define&&define.amd?define(t):(e=e||self).CodeMirror=t()}(this,function(){\\\"use strict\\\";var e=navigator.userAgent,t=navigator.platform,d=/gecko\\\\/\\\\d/i.test(e),n=/MSIE \\\\d/.test(e),r=/Trident\\\\/(?:[7-9]|\\\\d{2,})\\\\..*rv:(\\\\d+)/.exec(e),i=/Edge\\\\/(\\\\d+)/.exec(e),w=n||r||i,v=w&&(n?document.documentMode||6:+(i||r)[1]),f=!i&&/WebKit\\\\//.test(e),r=f&&/Qt\\\\/\\\\d+\\\\.\\\\d+/.test(e),o=!i&&/Chrome\\\\//.test(e),p=/Opera\\\\//.test(e),c=/Apple Computer/.test(navigator.vendor),l=/Mac OS X 1\\\\d\\\\D([8-9]|\\\\d\\\\d)\\\\D/.test(e),u=/PhantomJS/.test(e),s=!i&&/AppleWebKit/.test(e)&&/Mobile\\\\/\\\\w+/.test(e),a=/Android/.test(e),h=s||a||/webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(e),g=s||/Mac/.test(t),m=/\\\\bCrOS\\\\b/.test(e),y=/win/i.test(t),e=p&&e.match(/Version\\\\/(\\\\d*\\\\.\\\\d*)/);(e=e&&Number(e[1]))&&15\u003C=e&&(f=!(p=!1));var b=g&&(r||p&&(null==e||e\u003C12.11)),x=d||w&&9\u003C=v;function C(e){return new RegExp(\\\"(^|\\\\\\\\s)\\\"+e+\\\"(?:$|\\\\\\\\s)\\\\\\\\s*\\\")}var S,L=function(e,t){var n=e.className,r=C(t).exec(n);r&&(t=n.slice(r.index+r[0].length),e.className=n.slice(0,r.index)+(t?r[1]+t:\\\"\\\"))};function k(e){for(var t=e.childNodes.length;0\u003Ct;--t)e.removeChild(e.firstChild);return e}function T(e,t){return k(e).appendChild(t)}function M(e,t,n,r){var i=document.createElement(e);if(n&&(i.className=n),r&&(i.style.cssText=r),\\\"string\\\"==typeof t)i.appendChild(document.createTextNode(t));else if(t)for(var o=0;o\u003Ct.length;++o)i.appendChild(t[o]);return i}function N(e,t,n,r){r=M(e,t,n,r);return r.setAttribute(\\\"role\\\",\\\"presentation\\\"),r}function A(e,t){if(3==t.nodeType&&(t=t.parentNode),e.contains)return e.contains(t);do{if(11==t.nodeType&&(t=t.host),t==e)return!0}while(t=t.parentNode)}function O(){var t;try{t=document.activeElement}catch(e){t=document.body||null}for(;t&&t.shadowRoot&&t.shadowRoot.activeElement;)t=t.shadowRoot.activeElement;return t}function D(e,t){var n=e.className;C(t).test(n)||(e.className+=(n?\\\" \\\":\\\"\\\")+t)}function W(e,t){for(var n=e.split(\\\" \\\"),r=0;r\u003Cn.length;r++)n[r]&&!C(n[r]).test(t)&&(t+=\\\" \\\"+n[r]);return t}S=document.createRange?function(e,t,n,r){var i=document.createRange();return i.setEnd(r||e,n),i.setStart(e,t),i}:function(e,t,n){var r=document.body.createTextRange();try{r.moveToElementText(e.parentNode)}catch(e){return r}return r.collapse(!0),r.moveEnd(\\\"character\\\",n),r.moveStart(\\\"character\\\",t),r};var H=function(e){e.select()};function F(e){var t=Array.prototype.slice.call(arguments,1);return function(){return e.apply(null,t)}}function E(e,t,n){for(var r in t=t||{},e)!e.hasOwnProperty(r)||!1===n&&t.hasOwnProperty(r)||(t[r]=e[r]);return t}function P(e,t,n,r,i){null==t&&-1==(t=e.search(/[^\\\\s\\\\u00a0]/))&&(t=e.length);for(var o=r||0,l=i||0;;){var s=e.indexOf(\\\"\\\\t\\\",o);if(s\u003C0||t\u003C=s)return l+(t-o);l+=s-o,l+=n-l%n,o=s+1}}s?H=function(e){e.selectionStart=0,e.selectionEnd=e.value.length}:w&&(H=function(e){try{e.select()}catch(e){}});var I=function(){this.id=null,this.f=null,this.time=0,this.handler=F(this.onTimeout,this)};function R(e,t){for(var n=0;n\u003Ce.length;++n)if(e[n]==t)return n;return-1}I.prototype.onTimeout=function(e){e.id=0,e.time\u003C=+new Date?e.f():setTimeout(e.handler,e.time-+new Date)},I.prototype.set=function(e,t){this.f=t;t=+new Date+e;(!this.id||t\u003Cthis.time)&&(clearTimeout(this.id),this.id=setTimeout(this.handler,e),this.time=t)};var z=50,B={toString:function(){return\\\"CodeMirror.Pass\\\"}},G={scroll:!1},U={origin:\\\"*mouse\\\"},V={origin:\\\"+move\\\"};function K(e,t,n){for(var r=0,i=0;;){var o=e.indexOf(\\\"\\\\t\\\",r);-1==o&&(o=e.length);var l=o-r;if(o==e.length||t\u003C=i+l)return r+Math.min(l,t-i);if(i+=o-r,r=o+1,t\u003C=(i+=n-i%n))return r}}var j=[\\\"\\\"];function X(e){for(;j.length\u003C=e;)j.push(Y(j)+\\\" \\\");return j[e]}function Y(e){return e[e.length-1]}function _(e,t){for(var n=[],r=0;r\u003Ce.length;r++)n[r]=t(e[r],r);return n}function $(){}function q(e,t){e=Object.create?Object.create(e):($.prototype=e,new $);return t&&E(t,e),e}var Z=/[\\\\u00df\\\\u0587\\\\u0590-\\\\u05f4\\\\u0600-\\\\u06ff\\\\u3040-\\\\u309f\\\\u30a0-\\\\u30ff\\\\u3400-\\\\u4db5\\\\u4e00-\\\\u9fcc\\\\uac00-\\\\ud7af]/;function Q(e){return/\\\\w/.test(e)||\\\"€\\\"\u003Ce&&(e.toUpperCase()!=e.toLowerCase()||Z.test(e))}function J(e,t){return t?!!(-1\u003Ct.source.indexOf(\\\"\\\\\\\\w\\\")&&Q(e))||t.test(e):Q(e)}function ee(e){for(var t in e)if(e.hasOwnProperty(t)&&e[t])return;return 1}var te=/[\\\\u0300-\\\\u036f\\\\u0483-\\\\u0489\\\\u0591-\\\\u05bd\\\\u05bf\\\\u05c1\\\\u05c2\\\\u05c4\\\\u05c5\\\\u05c7\\\\u0610-\\\\u061a\\\\u064b-\\\\u065e\\\\u0670\\\\u06d6-\\\\u06dc\\\\u06de-\\\\u06e4\\\\u06e7\\\\u06e8\\\\u06ea-\\\\u06ed\\\\u0711\\\\u0730-\\\\u074a\\\\u07a6-\\\\u07b0\\\\u07eb-\\\\u07f3\\\\u0816-\\\\u0819\\\\u081b-\\\\u0823\\\\u0825-\\\\u0827\\\\u0829-\\\\u082d\\\\u0900-\\\\u0902\\\\u093c\\\\u0941-\\\\u0948\\\\u094d\\\\u0951-\\\\u0955\\\\u0962\\\\u0963\\\\u0981\\\\u09bc\\\\u09be\\\\u09c1-\\\\u09c4\\\\u09cd\\\\u09d7\\\\u09e2\\\\u09e3\\\\u0a01\\\\u0a02\\\\u0a3c\\\\u0a41\\\\u0a42\\\\u0a47\\\\u0a48\\\\u0a4b-\\\\u0a4d\\\\u0a51\\\\u0a70\\\\u0a71\\\\u0a75\\\\u0a81\\\\u0a82\\\\u0abc\\\\u0ac1-\\\\u0ac5\\\\u0ac7\\\\u0ac8\\\\u0acd\\\\u0ae2\\\\u0ae3\\\\u0b01\\\\u0b3c\\\\u0b3e\\\\u0b3f\\\\u0b41-\\\\u0b44\\\\u0b4d\\\\u0b56\\\\u0b57\\\\u0b62\\\\u0b63\\\\u0b82\\\\u0bbe\\\\u0bc0\\\\u0bcd\\\\u0bd7\\\\u0c3e-\\\\u0c40\\\\u0c46-\\\\u0c48\\\\u0c4a-\\\\u0c4d\\\\u0c55\\\\u0c56\\\\u0c62\\\\u0c63\\\\u0cbc\\\\u0cbf\\\\u0cc2\\\\u0cc6\\\\u0ccc\\\\u0ccd\\\\u0cd5\\\\u0cd6\\\\u0ce2\\\\u0ce3\\\\u0d3e\\\\u0d41-\\\\u0d44\\\\u0d4d\\\\u0d57\\\\u0d62\\\\u0d63\\\\u0dca\\\\u0dcf\\\\u0dd2-\\\\u0dd4\\\\u0dd6\\\\u0ddf\\\\u0e31\\\\u0e34-\\\\u0e3a\\\\u0e47-\\\\u0e4e\\\\u0eb1\\\\u0eb4-\\\\u0eb9\\\\u0ebb\\\\u0ebc\\\\u0ec8-\\\\u0ecd\\\\u0f18\\\\u0f19\\\\u0f35\\\\u0f37\\\\u0f39\\\\u0f71-\\\\u0f7e\\\\u0f80-\\\\u0f84\\\\u0f86\\\\u0f87\\\\u0f90-\\\\u0f97\\\\u0f99-\\\\u0fbc\\\\u0fc6\\\\u102d-\\\\u1030\\\\u1032-\\\\u1037\\\\u1039\\\\u103a\\\\u103d\\\\u103e\\\\u1058\\\\u1059\\\\u105e-\\\\u1060\\\\u1071-\\\\u1074\\\\u1082\\\\u1085\\\\u1086\\\\u108d\\\\u109d\\\\u135f\\\\u1712-\\\\u1714\\\\u1732-\\\\u1734\\\\u1752\\\\u1753\\\\u1772\\\\u1773\\\\u17b7-\\\\u17bd\\\\u17c6\\\\u17c9-\\\\u17d3\\\\u17dd\\\\u180b-\\\\u180d\\\\u18a9\\\\u1920-\\\\u1922\\\\u1927\\\\u1928\\\\u1932\\\\u1939-\\\\u193b\\\\u1a17\\\\u1a18\\\\u1a56\\\\u1a58-\\\\u1a5e\\\\u1a60\\\\u1a62\\\\u1a65-\\\\u1a6c\\\\u1a73-\\\\u1a7c\\\\u1a7f\\\\u1b00-\\\\u1b03\\\\u1b34\\\\u1b36-\\\\u1b3a\\\\u1b3c\\\\u1b42\\\\u1b6b-\\\\u1b73\\\\u1b80\\\\u1b81\\\\u1ba2-\\\\u1ba5\\\\u1ba8\\\\u1ba9\\\\u1c2c-\\\\u1c33\\\\u1c36\\\\u1c37\\\\u1cd0-\\\\u1cd2\\\\u1cd4-\\\\u1ce0\\\\u1ce2-\\\\u1ce8\\\\u1ced\\\\u1dc0-\\\\u1de6\\\\u1dfd-\\\\u1dff\\\\u200c\\\\u200d\\\\u20d0-\\\\u20f0\\\\u2cef-\\\\u2cf1\\\\u2de0-\\\\u2dff\\\\u302a-\\\\u302f\\\\u3099\\\\u309a\\\\ua66f-\\\\ua672\\\\ua67c\\\\ua67d\\\\ua6f0\\\\ua6f1\\\\ua802\\\\ua806\\\\ua80b\\\\ua825\\\\ua826\\\\ua8c4\\\\ua8e0-\\\\ua8f1\\\\ua926-\\\\ua92d\\\\ua947-\\\\ua951\\\\ua980-\\\\ua982\\\\ua9b3\\\\ua9b6-\\\\ua9b9\\\\ua9bc\\\\uaa29-\\\\uaa2e\\\\uaa31\\\\uaa32\\\\uaa35\\\\uaa36\\\\uaa43\\\\uaa4c\\\\uaab0\\\\uaab2-\\\\uaab4\\\\uaab7\\\\uaab8\\\\uaabe\\\\uaabf\\\\uaac1\\\\uabe5\\\\uabe8\\\\uabed\\\\udc00-\\\\udfff\\\\ufb1e\\\\ufe00-\\\\ufe0f\\\\ufe20-\\\\ufe26\\\\uff9e\\\\uff9f]/;function ne(e){return 768\u003C=e.charCodeAt(0)&&te.test(e)}function re(e,t,n){for(;(n\u003C0?0\u003Ct:t\u003Ce.length)&&ne(e.charAt(t));)t+=n;return t}function ie(e,t,n){for(var r=n\u003Ct?-1:1;;){if(t==n)return t;var i=(t+n)/2,i=r\u003C0?Math.ceil(i):Math.floor(i);if(i==t)return e(i)?t:n;e(i)?n=i:t=i+r}}var oe=null;function le(e,t,n){var r;oe=null;for(var i=0;i\u003Ce.length;++i){var o=e[i];if(o.from\u003Ct&&o.to>t)return i;o.to==t&&(o.from!=o.to&&\\\"before\\\"==n?r=i:oe=i),o.from==t&&(o.from!=o.to&&\\\"before\\\"!=n?r=i:oe=i)}return null!=r?r:oe}var se,ae,ue,ce,he,de,fe,pe=(se=\\\"bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN\\\",ae=\\\"nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111\\\",ue=/[\\\\u0590-\\\\u05f4\\\\u0600-\\\\u06ff\\\\u0700-\\\\u08ac]/,ce=/[stwN]/,he=/[LRr]/,de=/[Lb1n]/,fe=/[1n]/,function(e,t){var n=\\\"ltr\\\"==t?\\\"L\\\":\\\"R\\\";if(0==e.length||\\\"ltr\\\"==t&&!ue.test(e))return!1;for(var r,i=e.length,o=[],l=0;l\u003Ci;++l)o.push((r=e.charCodeAt(l))\u003C=247?se.charAt(r):1424\u003C=r&&r\u003C=1524?\\\"R\\\":1536\u003C=r&&r\u003C=1785?ae.charAt(r-1536):1774\u003C=r&&r\u003C=2220?\\\"r\\\":8192\u003C=r&&r\u003C=8203?\\\"w\\\":8204==r?\\\"b\\\":\\\"L\\\");for(var s=0,a=n;s\u003Ci;++s){var u=o[s];\\\"m\\\"==u?o[s]=a:a=u}for(var c=0,h=n;c\u003Ci;++c){var d=o[c];\\\"1\\\"==d&&\\\"r\\\"==h?o[c]=\\\"n\\\":he.test(d)&&\\\"r\\\"==(h=d)&&(o[c]=\\\"R\\\")}for(var f=1,p=o[0];f\u003Ci-1;++f){var g=o[f];\\\"+\\\"==g&&\\\"1\\\"==p&&\\\"1\\\"==o[f+1]?o[f]=\\\"1\\\":\\\",\\\"!=g||p!=o[f+1]||\\\"1\\\"!=p&&\\\"n\\\"!=p||(o[f]=p),p=g}for(var m=0;m\u003Ci;++m){var v=o[m];if(\\\",\\\"==v)o[m]=\\\"N\\\";else if(\\\"%\\\"==v){for(var y=void 0,y=m+1;y\u003Ci&&\\\"%\\\"==o[y];++y);for(var b=m&&\\\"!\\\"==o[m-1]||y\u003Ci&&\\\"1\\\"==o[y]?\\\"1\\\":\\\"N\\\",w=m;w\u003Cy;++w)o[w]=b;m=y-1}}for(var x=0,C=n;x\u003Ci;++x){var S=o[x];\\\"L\\\"==C&&\\\"1\\\"==S?o[x]=\\\"L\\\":he.test(S)&&(C=S)}for(var L=0;L\u003Ci;++L)if(ce.test(o[L])){for(var k=void 0,k=L+1;k\u003Ci&&ce.test(o[k]);++k);for(var T=\\\"L\\\"==(L?o[L-1]:n),M=T==(\\\"L\\\"==(k\u003Ci?o[k]:n))?T?\\\"L\\\":\\\"R\\\":n,N=L;N\u003Ck;++N)o[N]=M;L=k-1}for(var A,O=[],D=0;D\u003Ci;)if(de.test(o[D])){var W=D;for(++D;D\u003Ci&&de.test(o[D]);++D);O.push(new ge(0,W,D))}else{var H=D,F=O.length,E=\\\"rtl\\\"==t?1:0;for(++D;D\u003Ci&&\\\"L\\\"!=o[D];++D);for(var P=H;P\u003CD;)if(fe.test(o[P])){H\u003CP&&(O.splice(F,0,new ge(1,H,P)),F+=E);var I=P;for(++P;P\u003CD&&fe.test(o[P]);++P);O.splice(F,0,new ge(2,I,P)),F+=E,H=P}else++P;H\u003CD&&O.splice(F,0,new ge(1,H,D))}return\\\"ltr\\\"==t&&(1==O[0].level&&(A=e.match(/^\\\\s+/))&&(O[0].from=A[0].length,O.unshift(new ge(0,0,A[0].length))),1==Y(O).level&&(A=e.match(/\\\\s+$/))&&(Y(O).to-=A[0].length,O.push(new ge(0,i-A[0].length,i)))),\\\"rtl\\\"==t?O.reverse():O});function ge(e,t,n){this.level=e,this.from=t,this.to=n}function me(e,t){var n=e.order;return null==n&&(n=e.order=pe(e.text,t)),n}var ve=[],ye=function(e,t,n){e.addEventListener?e.addEventListener(t,n,!1):e.attachEvent?e.attachEvent(\\\"on\\\"+t,n):(e=e._handlers||(e._handlers={}))[t]=(e[t]||ve).concat(n)};function be(e,t){return e._handlers&&e._handlers[t]||ve}function we(e,t,n){var r;e.removeEventListener?e.removeEventListener(t,n,!1):e.detachEvent?e.detachEvent(\\\"on\\\"+t,n):!(e=(r=e._handlers)&&r[t])||-1\u003C(n=R(e,n))&&(r[t]=e.slice(0,n).concat(e.slice(n+1)))}function xe(e,t){var n=be(e,t);if(n.length)for(var r=Array.prototype.slice.call(arguments,2),i=0;i\u003Cn.length;++i)n[i].apply(null,r)}function Ce(e,t,n){return\\\"string\\\"==typeof t&&(t={type:t,preventDefault:function(){this.defaultPrevented=!0}}),xe(e,n||t.type,e,t),Ne(t)||t.codemirrorIgnore}function Se(e){var t=e._handlers&&e._handlers.cursorActivity;if(t)for(var n=e.curOp.cursorActivityHandlers||(e.curOp.cursorActivityHandlers=[]),r=0;r\u003Ct.length;++r)-1==R(n,t[r])&&n.push(t[r])}function Le(e,t){return 0\u003Cbe(e,t).length}function ke(e){e.prototype.on=function(e,t){ye(this,e,t)},e.prototype.off=function(e,t){we(this,e,t)}}function Te(e){e.preventDefault?e.preventDefault():e.returnValue=!1}function Me(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0}function Ne(e){return null!=e.defaultPrevented?e.defaultPrevented:0==e.returnValue}function Ae(e){Te(e),Me(e)}function Oe(e){return e.target||e.srcElement}function De(e){var t=e.which;return null==t&&(1&e.button?t=1:2&e.button?t=3:4&e.button&&(t=2)),g&&e.ctrlKey&&1==t&&(t=3),t}var We,He,Fe=function(){if(w&&v\u003C9)return!1;var e=M(\\\"div\\\");return\\\"draggable\\\"in e||\\\"dragDrop\\\"in e}();var Ee=3!=\\\"\\\\n\\\\nb\\\".split(/\\\\n/).length?function(e){for(var t=0,n=[],r=e.length;t\u003C=r;){var i=e.indexOf(\\\"\\\\n\\\",t);-1==i&&(i=e.length);var o=e.slice(t,\\\"\\\\r\\\"==e.charAt(i-1)?i-1:i),l=o.indexOf(\\\"\\\\r\\\");-1!=l?(n.push(o.slice(0,l)),t+=l+1):(n.push(o),t=i+1)}return n}:function(e){return e.split(/\\\\r\\\\n?|\\\\n/)},Pe=window.getSelection?function(e){try{return e.selectionStart!=e.selectionEnd}catch(e){return!1}}:function(e){var t;try{t=e.ownerDocument.selection.createRange()}catch(e){}return!(!t||t.parentElement()!=e)&&0!=t.compareEndPoints(\\\"StartToEnd\\\",t)},Ie=\\\"oncopy\\\"in(r=M(\\\"div\\\"))||(r.setAttribute(\\\"oncopy\\\",\\\"return;\\\"),\\\"function\\\"==typeof r.oncopy),Re=null;var ze={},Be={};function Ge(e){if(\\\"string\\\"==typeof e&&Be.hasOwnProperty(e))e=Be[e];else if(e&&\\\"string\\\"==typeof e.name&&Be.hasOwnProperty(e.name)){var t=Be[e.name];\\\"string\\\"==typeof t&&(t={name:t}),(e=q(t,e)).name=t.name}else{if(\\\"string\\\"==typeof e&&/^[\\\\w\\\\-]+\\\\/[\\\\w\\\\-]+\\\\+xml$/.test(e))return Ge(\\\"application/xml\\\");if(\\\"string\\\"==typeof e&&/^[\\\\w\\\\-]+\\\\/[\\\\w\\\\-]+\\\\+json$/.test(e))return Ge(\\\"application/json\\\")}return\\\"string\\\"==typeof e?{name:e}:e||{name:\\\"null\\\"}}function Ue(e,t){t=Ge(t);var n=ze[t.name];if(!n)return Ue(e,\\\"text/plain\\\");var r=n(e,t);if(Ve.hasOwnProperty(t.name)){var i,o=Ve[t.name];for(i in o)o.hasOwnProperty(i)&&(r.hasOwnProperty(i)&&(r[\\\"_\\\"+i]=r[i]),r[i]=o[i])}if(r.name=t.name,t.helperType&&(r.helperType=t.helperType),t.modeProps)for(var l in t.modeProps)r[l]=t.modeProps[l];return r}var Ve={};function Ke(e,t){E(t,Ve.hasOwnProperty(e)?Ve[e]:Ve[e]={})}function je(e,t){if(!0===t)return t;if(e.copyState)return e.copyState(t);var n,r={};for(n in t){var i=t[n];i instanceof Array&&(i=i.concat([])),r[n]=i}return r}function Xe(e,t){for(var n;e.innerMode&&(n=e.innerMode(t))&&n.mode!=e;)t=n.state,e=n.mode;return n||{mode:e,state:t}}function Ye(e,t,n){return!e.startState||e.startState(t,n)}var _e=function(e,t,n){this.pos=this.start=0,this.string=e,this.tabSize=t||8,this.lastColumnPos=this.lastColumnValue=0,this.lineStart=0,this.lineOracle=n};function $e(e,t){if((t-=e.first)\u003C0||t>=e.size)throw new Error(\\\"There is no line \\\"+(t+e.first)+\\\" in the document.\\\");for(var n=e;!n.lines;)for(var r=0;;++r){var i=n.children[r],o=i.chunkSize();if(t\u003Co){n=i;break}t-=o}return n.lines[t]}function qe(e,t,n){var r=[],i=t.line;return e.iter(t.line,n.line+1,function(e){e=e.text;i==n.line&&(e=e.slice(0,n.ch)),i==t.line&&(e=e.slice(t.ch)),r.push(e),++i}),r}function Ze(e,t,n){var r=[];return e.iter(t,n,function(e){r.push(e.text)}),r}function Qe(e,t){var n=t-e.height;if(n)for(var r=e;r;r=r.parent)r.height+=n}function Je(e){if(null==e.parent)return null;for(var t=e.parent,n=R(t.lines,e),r=t.parent;r;r=(t=r).parent)for(var i=0;r.children[i]!=t;++i)n+=r.children[i].chunkSize();return n+t.first}function et(e,t){var n=e.first;e:do{for(var r=0;r\u003Ce.children.length;++r){var i=e.children[r],o=i.height;if(t\u003Co){e=i;continue e}t-=o,n+=i.chunkSize()}return n}while(!e.lines);for(var l=0;l\u003Ce.lines.length;++l){var s=e.lines[l].height;if(t\u003Cs)break;t-=s}return n+l}function tt(e,t){return t>=e.first&&t\u003Ce.first+e.size}function nt(e,t){return String(e.lineNumberFormatter(t+e.firstLineNumber))}function rt(e,t,n){if(void 0===n&&(n=null),!(this instanceof rt))return new rt(e,t,n);this.line=e,this.ch=t,this.sticky=n}function it(e,t){return e.line-t.line||e.ch-t.ch}function ot(e,t){return e.sticky==t.sticky&&0==it(e,t)}function lt(e){return rt(e.line,e.ch)}function st(e,t){return it(e,t)\u003C0?t:e}function at(e,t){return it(e,t)\u003C0?e:t}function ut(e,t){return Math.max(e.first,Math.min(t,e.first+e.size-1))}function ct(e,t){if(t.line\u003Ce.first)return rt(e.first,0);var n=e.first+e.size-1;return t.line>n?rt(n,$e(e,n).text.length):(e=$e(e,(n=t).line).text.length,null==(t=n.ch)||e\u003Ct?rt(n.line,e):t\u003C0?rt(n.line,0):n)}function ht(e,t){for(var n=[],r=0;r\u003Ct.length;r++)n[r]=ct(e,t[r]);return n}_e.prototype.eol=function(){return this.pos>=this.string.length},_e.prototype.sol=function(){return this.pos==this.lineStart},_e.prototype.peek=function(){return this.string.charAt(this.pos)||void 0},_e.prototype.next=function(){if(this.pos\u003Cthis.string.length)return this.string.charAt(this.pos++)},_e.prototype.eat=function(e){var t=this.string.charAt(this.pos),e=\\\"string\\\"==typeof e?t==e:t&&(e.test?e.test(t):e(t));if(e)return++this.pos,t},_e.prototype.eatWhile=function(e){for(var t=this.pos;this.eat(e););return this.pos>t},_e.prototype.eatSpace=function(){for(var e=this.pos;/[\\\\s\\\\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>e},_e.prototype.skipToEnd=function(){this.pos=this.string.length},_e.prototype.skipTo=function(e){e=this.string.indexOf(e,this.pos);if(-1\u003Ce)return this.pos=e,!0},_e.prototype.backUp=function(e){this.pos-=e},_e.prototype.column=function(){return this.lastColumnPos\u003Cthis.start&&(this.lastColumnValue=P(this.string,this.start,this.tabSize,this.lastColumnPos,this.lastColumnValue),this.lastColumnPos=this.start),this.lastColumnValue-(this.lineStart?P(this.string,this.lineStart,this.tabSize):0)},_e.prototype.indentation=function(){return P(this.string,null,this.tabSize)-(this.lineStart?P(this.string,this.lineStart,this.tabSize):0)},_e.prototype.match=function(e,t,n){if(\\\"string\\\"!=typeof e){var r=this.string.slice(this.pos).match(e);return r&&0\u003Cr.index?null:(r&&!1!==t&&(this.pos+=r[0].length),r)}r=function(e){return n?e.toLowerCase():e};if(r(this.string.substr(this.pos,e.length))==r(e))return!1!==t&&(this.pos+=e.length),!0},_e.prototype.current=function(){return this.string.slice(this.start,this.pos)},_e.prototype.hideFirstChars=function(e,t){this.lineStart+=e;try{return t()}finally{this.lineStart-=e}},_e.prototype.lookAhead=function(e){var t=this.lineOracle;return t&&t.lookAhead(e)},_e.prototype.baseToken=function(){var e=this.lineOracle;return e&&e.baseToken(this.pos)};var dt=function(e,t){this.state=e,this.lookAhead=t},ft=function(e,t,n,r){this.state=t,this.doc=e,this.line=n,this.maxLookAhead=r||0,this.baseTokens=null,this.baseTokenPos=1};function pt(t,n,r,e){var a=[t.state.modeGen],i={};St(t,n.text,t.doc.mode,r,function(e,t){return a.push(e,t)},i,e);for(var u=r.state,o=0;o\u003Ct.state.overlays.length;++o)!function(e){r.baseTokens=a;var o=t.state.overlays[e],l=1,s=0;r.state=!0,St(t,n.text,o.mode,r,function(e,t){for(var n=l;s\u003Ce;){var r=a[l];e\u003Cr&&a.splice(l,1,e,a[l+1],r),l+=2,s=Math.min(e,r)}if(t)if(o.opaque)a.splice(n,l-n,e,\\\"overlay \\\"+t),l=n+2;else for(;n\u003Cl;n+=2){var i=a[n+1];a[n+1]=(i?i+\\\" \\\":\\\"\\\")+\\\"overlay \\\"+t}},i),r.state=u,r.baseTokens=null,r.baseTokenPos=1}(o);return{styles:a,classes:i.bgClass||i.textClass?i:null}}function gt(e,t,n){var r,i,o;return t.styles&&t.styles[0]==e.state.modeGen||(r=mt(e,Je(t)),i=t.text.length>e.options.maxHighlightLength&&je(e.doc.mode,r.state),o=pt(e,t,r),i&&(r.state=i),t.stateAfter=r.save(!i),t.styles=o.styles,o.classes?t.styleClasses=o.classes:t.styleClasses&&(t.styleClasses=null),n===e.doc.highlightFrontier&&(e.doc.modeFrontier=Math.max(e.doc.modeFrontier,++e.doc.highlightFrontier))),t.styles}function mt(n,r,e){var t=n.doc,i=n.display;if(!t.mode.startState)return new ft(t,!0,r);var o=function(e,t,n){for(var r,i,o=e.doc,l=n?-1:t-(e.doc.mode.innerMode?1e3:100),s=t;l\u003Cs;--s){if(s\u003C=o.first)return o.first;var a=$e(o,s-1),u=a.stateAfter;if(u&&(!n||s+(u instanceof dt?u.lookAhead:0)\u003C=o.modeFrontier))return s;a=P(a.text,null,e.options.tabSize);(null==i||a\u003Cr)&&(i=s-1,r=a)}return i}(n,r,e),l=o>t.first&&$e(t,o-1).stateAfter,s=l?ft.fromSaved(t,l,o):new ft(t,Ye(t.mode),o);return t.iter(o,r,function(e){vt(n,e.text,s);var t=s.line;e.stateAfter=t==r-1||t%5==0||t>=i.viewFrom&&t\u003Ci.viewTo?s.save():null,s.nextLine()}),e&&(t.modeFrontier=s.line),s}function vt(e,t,n,r){var i=e.doc.mode,o=new _e(t,e.options.tabSize,n);for(o.start=o.pos=r||0,\\\"\\\"==t&&yt(i,n.state);!o.eol();)bt(i,o,n.state),o.start=o.pos}function yt(e,t){if(e.blankLine)return e.blankLine(t);if(e.innerMode){t=Xe(e,t);return t.mode.blankLine?t.mode.blankLine(t.state):void 0}}function bt(e,t,n,r){for(var i=0;i\u003C10;i++){r&&(r[0]=Xe(e,n).mode);var o=e.token(t,n);if(t.pos>t.start)return o}throw new Error(\\\"Mode \\\"+e.name+\\\" failed to advance stream.\\\")}ft.prototype.lookAhead=function(e){var t=this.doc.getLine(this.line+e);return null!=t&&e>this.maxLookAhead&&(this.maxLookAhead=e),t},ft.prototype.baseToken=function(e){if(!this.baseTokens)return null;for(;this.baseTokens[this.baseTokenPos]\u003C=e;)this.baseTokenPos+=2;var t=this.baseTokens[this.baseTokenPos+1];return{type:t&&t.replace(/( |^)overlay .*/,\\\"\\\"),size:this.baseTokens[this.baseTokenPos]-e}},ft.prototype.nextLine=function(){this.line++,0\u003Cthis.maxLookAhead&&this.maxLookAhead--},ft.fromSaved=function(e,t,n){return t instanceof dt?new ft(e,je(e.mode,t.state),n,t.lookAhead):new ft(e,je(e.mode,t),n)},ft.prototype.save=function(e){e=!1!==e?je(this.doc.mode,this.state):this.state;return 0\u003Cthis.maxLookAhead?new dt(e,this.maxLookAhead):e};var wt=function(e,t,n){this.start=e.start,this.end=e.pos,this.string=e.current(),this.type=t||null,this.state=n};function xt(e,t,n,r){var i,o,l=e.doc,s=l.mode,a=$e(l,(t=ct(l,t)).line),u=mt(e,t.line,n),c=new _e(a.text,e.options.tabSize,u);for(r&&(o=[]);(r||c.pos\u003Ct.ch)&&!c.eol();)c.start=c.pos,i=bt(s,c,u.state),r&&o.push(new wt(c,i,je(l.mode,u.state)));return r?o:new wt(c,i,u.state)}function Ct(e,t){if(e)for(;;){var n=e.match(/(?:^|\\\\s+)line-(background-)?(\\\\S+)/);if(!n)break;e=e.slice(0,n.index)+e.slice(n.index+n[0].length);var r=n[1]?\\\"bgClass\\\":\\\"textClass\\\";null==t[r]?t[r]=n[2]:new RegExp(\\\"(?:^|\\\\\\\\s)\\\"+n[2]+\\\"(?:$|\\\\\\\\s)\\\").test(t[r])||(t[r]+=\\\" \\\"+n[2])}return e}function St(e,t,n,r,i,o,l){var s=n.flattenSpans;null==s&&(s=e.options.flattenSpans);var a=0,u=null,c=new _e(t,e.options.tabSize,r),h=e.options.addModeClass&&[null];for(\\\"\\\"==t&&Ct(yt(n,r.state),o);!c.eol();){var d,f=c.pos>e.options.maxHighlightLength?(s=!1,l&&vt(e,t,r,c.pos),c.pos=t.length,null):Ct(bt(n,c,r.state,h),o);if(!h||(d=h[0].name)&&(f=\\\"m-\\\"+(f?d+\\\" \\\"+f:d)),!s||u!=f){for(;a\u003Cc.start;)i(a=Math.min(c.start,a+5e3),u);u=f}c.start=c.pos}for(;a\u003Cc.pos;){var p=Math.min(c.pos,a+5e3);i(p,u),a=p}}var Lt=!1,kt=!1;function Tt(e,t,n){this.marker=e,this.from=t,this.to=n}function Mt(e,t){if(e)for(var n=0;n\u003Ce.length;++n){var r=e[n];if(r.marker==t)return r}}function Nt(e,t){if(t.full)return null;var n=tt(e,t.from.line)&&$e(e,t.from.line).markedSpans,r=tt(e,t.to.line)&&$e(e,t.to.line).markedSpans;if(!n&&!r)return null;var i=t.from.ch,o=t.to.ch,e=0==it(t.from,t.to),l=function(e,t,n){var r;if(e)for(var i=0;i\u003Ce.length;++i){var o,l=e[i],s=l.marker;!(null==l.from||(s.inclusiveLeft?l.from\u003C=t:l.from\u003Ct))&&(l.from!=t||\\\"bookmark\\\"!=s.type||n&&l.marker.insertLeft)||(o=null==l.to||(s.inclusiveRight?l.to>=t:l.to>t),(r=r||[]).push(new Tt(s,l.from,o?null:l.to)))}return r}(n,i,e),s=function(e,t,n){var r;if(e)for(var i=0;i\u003Ce.length;++i){var o,l=e[i],s=l.marker;!(null==l.to||(s.inclusiveRight?l.to>=t:l.to>t))&&(l.from!=t||\\\"bookmark\\\"!=s.type||n&&!l.marker.insertLeft)||(o=null==l.from||(s.inclusiveLeft?l.from\u003C=t:l.from\u003Ct),(r=r||[]).push(new Tt(s,o?null:l.from-t,null==l.to?null:l.to-t)))}return r}(r,o,e),a=1==t.text.length,u=Y(t.text).length+(a?i:0);if(l)for(var c=0;c\u003Cl.length;++c){var h,d=l[c];null==d.to&&((h=Mt(s,d.marker))?a&&(d.to=null==h.to?null:h.to+u):d.to=i)}if(s)for(var f=0;f\u003Cs.length;++f){var p=s[f];null!=p.to&&(p.to+=u),null==p.from?Mt(l,p.marker)||(p.from=u,a&&(l=l||[]).push(p)):(p.from+=u,a&&(l=l||[]).push(p))}l=l&&At(l),s&&s!=l&&(s=At(s));var g=[l];if(!a){var m,v=t.text.length-2;if(0\u003Cv&&l)for(var y=0;y\u003Cl.length;++y)null==l[y].to&&(m=m||[]).push(new Tt(l[y].marker,null,null));for(var b=0;b\u003Cv;++b)g.push(m);g.push(s)}return g}function At(e){for(var t=0;t\u003Ce.length;++t){var n=e[t];null!=n.from&&n.from==n.to&&!1!==n.marker.clearWhenEmpty&&e.splice(t--,1)}return e.length?e:null}function Ot(e){var t=e.markedSpans;if(t){for(var n=0;n\u003Ct.length;++n)t[n].marker.detachLine(e);e.markedSpans=null}}function Dt(e,t){if(t){for(var n=0;n\u003Ct.length;++n)t[n].marker.attachLine(e);e.markedSpans=t}}function Wt(e){return e.inclusiveLeft?-1:0}function Ht(e){return e.inclusiveRight?1:0}function Ft(e,t){var n=e.lines.length-t.lines.length;if(0!=n)return n;var r=e.find(),i=t.find(),n=it(r.from,i.from)||Wt(e)-Wt(t);if(n)return-n;i=it(r.to,i.to)||Ht(e)-Ht(t);return i||t.id-e.id}function Et(e,t){var n,r=kt&&e.markedSpans;if(r)for(var i,o=0;o\u003Cr.length;++o)(i=r[o]).marker.collapsed&&null==(t?i.from:i.to)&&(!n||Ft(n,i.marker)\u003C0)&&(n=i.marker);return n}function Pt(e){return Et(e,!0)}function It(e){return Et(e,!1)}function Rt(e,t,n,r,i){var t=$e(e,t),o=kt&&t.markedSpans;if(o)for(var l=0;l\u003Co.length;++l){var s=o[l];if(s.marker.collapsed){var a=s.marker.find(0),u=it(a.from,n)||Wt(s.marker)-Wt(i),c=it(a.to,r)||Ht(s.marker)-Ht(i);if(!(0\u003C=u&&c\u003C=0||u\u003C=0&&0\u003C=c)&&(u\u003C=0&&(s.marker.inclusiveRight&&i.inclusiveLeft?0\u003C=it(a.to,n):0\u003Cit(a.to,n))||0\u003C=u&&(s.marker.inclusiveRight&&i.inclusiveLeft?it(a.from,r)\u003C=0:it(a.from,r)\u003C0)))return 1}}}function zt(e){for(var t;t=Pt(e);)e=t.find(-1,!0).line;return e}function Bt(e,t){var n=$e(e,t),e=zt(n);return n==e?t:Je(e)}function Gt(e,t){if(t>e.lastLine())return t;var n,r=$e(e,t);if(!Ut(e,r))return t;for(;n=It(r);)r=n.find(1,!0).line;return Je(r)+1}function Ut(e,t){var n=kt&&t.markedSpans;if(n)for(var r,i=0;i\u003Cn.length;++i)if((r=n[i]).marker.collapsed){if(null==r.from)return!0;if(!r.marker.widgetNode&&0==r.from&&r.marker.inclusiveLeft&&function e(t,n,r){if(null==r.to){var i=r.marker.find(1,!0);return e(t,i.line,Mt(i.line.markedSpans,r.marker))}if(r.marker.inclusiveRight&&r.to==n.text.length)return!0;for(var o=void 0,l=0;l\u003Cn.markedSpans.length;++l)if((o=n.markedSpans[l]).marker.collapsed&&!o.marker.widgetNode&&o.from==r.to&&(null==o.to||o.to!=r.from)&&(o.marker.inclusiveLeft||r.marker.inclusiveRight)&&e(t,n,o))return!0}(e,t,r))return!0}}function Vt(e){for(var t=0,n=(e=zt(e)).parent,r=0;r\u003Cn.lines.length;++r){var i=n.lines[r];if(i==e)break;t+=i.height}for(var o=n.parent;o;o=(n=o).parent)for(var l=0;l\u003Co.children.length;++l){var s=o.children[l];if(s==n)break;t+=s.height}return t}function Kt(e){if(0==e.height)return 0;for(var t,n=e.text.length,r=e;t=Pt(r);){var i=t.find(0,!0),r=i.from.line;n+=i.from.ch-i.to.ch}for(r=e;t=It(r);){var o=t.find(0,!0);n-=r.text.length-o.from.ch,n+=(r=o.to.line).text.length-o.to.ch}return n}function jt(e){var n=e.display,e=e.doc;n.maxLine=$e(e,e.first),n.maxLineLength=Kt(n.maxLine),n.maxLineChanged=!0,e.iter(function(e){var t=Kt(e);t>n.maxLineLength&&(n.maxLineLength=t,n.maxLine=e)})}var Xt=function(e,t,n){this.text=e,Dt(this,t),this.height=n?n(this):1};Xt.prototype.lineNo=function(){return Je(this)},ke(Xt);var Yt={},_t={};function $t(e,t){if(!e||/^\\\\s*$/.test(e))return null;t=t.addModeClass?_t:Yt;return t[e]||(t[e]=e.replace(/\\\\S+/g,\\\"cm-$&\\\"))}function qt(e,t){var n=N(\\\"span\\\",null,null,f?\\\"padding-right: .1px\\\":null),r={pre:N(\\\"pre\\\",[n],\\\"CodeMirror-line\\\"),content:n,col:0,pos:0,cm:e,trailingSpace:!1,splitSpaces:e.getOption(\\\"lineWrapping\\\")};t.measure={};for(var i=0;i\u003C=(t.rest?t.rest.length:0);i++){var o=i?t.rest[i-1]:t.line,l=void 0;r.pos=0,r.addToken=Qt,function(e){if(null!=He)return He;var t=T(e,document.createTextNode(\\\"AخA\\\")),n=S(t,0,1).getBoundingClientRect(),t=S(t,1,2).getBoundingClientRect();return k(e),n&&n.left!=n.right&&(He=t.right-n.right\u003C3)}(e.display.measure)&&(l=me(o,e.doc.direction))&&(r.addToken=function(h,d){return function(e,t,n,r,i,o,l){n=n?n+\\\" cm-force-border\\\":\\\"cm-force-border\\\";for(var s=e.pos,a=s+t.length;;){for(var u=void 0,c=0;c\u003Cd.length&&!((u=d[c]).to>s&&u.from\u003C=s);c++);if(u.to>=a)return h(e,t,n,r,i,o,l);h(e,t.slice(0,u.to-s),n,r,null,o,l),r=null,t=t.slice(u.to-s),s=u.to}}}(r.addToken,l)),r.map=[],function(e,t,n){var r=e.markedSpans,i=e.text,o=0;if(!r){for(var l=1;l\u003Cn.length;l+=2)t.addToken(t,i.slice(o,o=n[l]),$t(n[l+1],t.cm.options));return}for(var s,a,u,c,h,d,f,p=i.length,g=0,m=1,v=\\\"\\\",y=0;;){if(y==g){u=c=h=a=\\\"\\\",d=f=null,y=1/0;for(var b=[],w=void 0,x=0;x\u003Cr.length;++x){var C=r[x],S=C.marker;if(\\\"bookmark\\\"==S.type&&C.from==g&&S.widgetNode)b.push(S);else if(C.from\u003C=g&&(null==C.to||C.to>g||S.collapsed&&C.to==g&&C.from==g)){if(null!=C.to&&C.to!=g&&y>C.to&&(y=C.to,c=\\\"\\\"),S.className&&(u+=\\\" \\\"+S.className),S.css&&(a=(a?a+\\\";\\\":\\\"\\\")+S.css),S.startStyle&&C.from==g&&(h+=\\\" \\\"+S.startStyle),S.endStyle&&C.to==y&&(w=w||[]).push(S.endStyle,C.to),S.title&&((f=f||{}).title=S.title),S.attributes)for(var L in S.attributes)(f=f||{})[L]=S.attributes[L];S.collapsed&&(!d||Ft(d.marker,S)\u003C0)&&(d=C)}else C.from>g&&y>C.from&&(y=C.from)}if(w)for(var k=0;k\u003Cw.length;k+=2)w[k+1]==y&&(c+=\\\" \\\"+w[k]);if(!d||d.from==g)for(var T=0;T\u003Cb.length;++T)Jt(t,0,b[T]);if(d&&(d.from||0)==g){if(Jt(t,(null==d.to?p+1:d.to)-g,d.marker,null==d.from),null==d.to)return;d.to==g&&(d=!1)}}if(p\u003C=g)break;for(var M=Math.min(p,y);;){if(v){var N,A=g+v.length;if(d||(N=M\u003CA?v.slice(0,M-g):v,t.addToken(t,N,s?s+u:u,h,g+N.length==y?c:\\\"\\\",a,f)),M\u003C=A){v=v.slice(M-g),g=M;break}g=A,h=\\\"\\\"}v=i.slice(o,o=n[m++]),s=$t(n[m++],t.cm.options)}}}(o,r,gt(e,o,t!=e.display.externalMeasured&&Je(o))),o.styleClasses&&(o.styleClasses.bgClass&&(r.bgClass=W(o.styleClasses.bgClass,r.bgClass||\\\"\\\")),o.styleClasses.textClass&&(r.textClass=W(o.styleClasses.textClass,r.textClass||\\\"\\\"))),0==r.map.length&&r.map.push(0,0,r.content.appendChild(function(e){null==We&&(t=M(\\\"span\\\",\\\"\\\"),T(e,M(\\\"span\\\",[t,document.createTextNode(\\\"x\\\")])),0!=e.firstChild.offsetHeight&&(We=t.offsetWidth\u003C=1&&2\u003Ct.offsetHeight&&!(w&&v\u003C8)));var t=We?M(\\\"span\\\",\\\"\\\"):M(\\\"span\\\",\\\" \\\",null,\\\"display: inline-block; width: 1px; margin-right: -1px\\\");return t.setAttribute(\\\"cm-text\\\",\\\"\\\"),t}(e.display.measure))),0==i?(t.measure.map=r.map,t.measure.cache={}):((t.measure.maps||(t.measure.maps=[])).push(r.map),(t.measure.caches||(t.measure.caches=[])).push({}))}return f&&(n=r.content.lastChild,(/\\\\bcm-tab\\\\b/.test(n.className)||n.querySelector&&n.querySelector(\\\".cm-tab\\\"))&&(r.content.className=\\\"cm-tab-wrap-hack\\\")),xe(e,\\\"renderLine\\\",e,t.line,r.pre),r.pre.className&&(r.textClass=W(r.pre.className,r.textClass||\\\"\\\")),r}function Zt(e){var t=M(\\\"span\\\",\\\"•\\\",\\\"cm-invalidchar\\\");return t.title=\\\"\\\\\\\\u\\\"+e.charCodeAt(0).toString(16),t.setAttribute(\\\"aria-label\\\",t.title),t}function Qt(e,t,n,r,i,o,l){if(t){var s,a=e.splitSpaces?function(e,t){if(1\u003Ce.length&&!/ /.test(e))return e;for(var n=t,r=\\\"\\\",i=0;i\u003Ce.length;i++){var o=e.charAt(i);\\\" \\\"!=o||!n||i!=e.length-1&&32!=e.charCodeAt(i+1)||(o=\\\" \\\"),r+=o,n=\\\" \\\"==o}return r}(t,e.trailingSpace):t,u=e.cm.state.specialChars,c=!1;if(u.test(t)){s=document.createDocumentFragment();for(var h=0;;){u.lastIndex=h;var d=u.exec(t),f=d?d.index-h:t.length-h;if(f&&(p=document.createTextNode(a.slice(h,h+f)),w&&v\u003C9?s.appendChild(M(\\\"span\\\",[p])):s.appendChild(p),e.map.push(e.pos,e.pos+f,p),e.col+=f,e.pos+=f),!d)break;h+=1+f;var p=void 0;\\\"\\\\t\\\"==d[0]?(f=(f=e.cm.options.tabSize)-e.col%f,(p=s.appendChild(M(\\\"span\\\",X(f),\\\"cm-tab\\\"))).setAttribute(\\\"role\\\",\\\"presentation\\\"),p.setAttribute(\\\"cm-text\\\",\\\"\\\\t\\\"),e.col+=f):(\\\"\\\\r\\\"==d[0]||\\\"\\\\n\\\"==d[0]?(p=s.appendChild(M(\\\"span\\\",\\\"\\\\r\\\"==d[0]?\\\"␍\\\":\\\"␤\\\",\\\"cm-invalidchar\\\"))).setAttribute(\\\"cm-text\\\",d[0]):((p=e.cm.options.specialCharPlaceholder(d[0])).setAttribute(\\\"cm-text\\\",d[0]),w&&v\u003C9?s.appendChild(M(\\\"span\\\",[p])):s.appendChild(p)),e.col+=1),e.map.push(e.pos,e.pos+1,p),e.pos++}}else e.col+=t.length,s=document.createTextNode(a),e.map.push(e.pos,e.pos+t.length,s),w&&v\u003C9&&(c=!0),e.pos+=t.length;if(e.trailingSpace=32==a.charCodeAt(t.length-1),n||r||i||c||o||l){n=n||\\\"\\\";r&&(n+=r),i&&(n+=i);var g=M(\\\"span\\\",[s],n,o);if(l)for(var m in l)l.hasOwnProperty(m)&&\\\"style\\\"!=m&&\\\"class\\\"!=m&&g.setAttribute(m,l[m]);return e.content.appendChild(g)}e.content.appendChild(s)}}function Jt(e,t,n,r){var i=!r&&n.widgetNode;i&&e.map.push(e.pos,e.pos+t,i),!r&&e.cm.display.input.needsContentAttribute&&(i=i||e.content.appendChild(document.createElement(\\\"span\\\"))).setAttribute(\\\"cm-marker\\\",n.id),i&&(e.cm.display.input.setUneditable(i),e.content.appendChild(i)),e.pos+=t,e.trailingSpace=!1}function en(e,t,n){this.line=t,this.rest=function(e){for(var t,n;t=It(e);)e=t.find(1,!0).line,(n=n||[]).push(e);return n}(t),this.size=this.rest?Je(Y(this.rest))-n+1:1,this.node=this.text=null,this.hidden=Ut(e,t)}function tn(e,t,n){for(var r=[],i=t;i\u003Cn;i=l){var o=new en(e.doc,$e(e.doc,i),i),l=i+o.size;r.push(o)}return r}var nn=null;function rn(e,t){var n=e.ownsGroup;if(n)try{!function(e){var t=e.delayedCallbacks,n=0;do{for(;n\u003Ct.length;n++)t[n].call(null);for(var r=0;r\u003Ce.ops.length;r++){var i=e.ops[r];if(i.cursorActivityHandlers)for(;i.cursorActivityCalled\u003Ci.cursorActivityHandlers.length;)i.cursorActivityHandlers[i.cursorActivityCalled++].call(null,i.cm)}}while(n\u003Ct.length)}(n)}finally{nn=null,t(n)}}var on=null;function ln(e,t){var n=be(e,t);if(n.length){var r,i=Array.prototype.slice.call(arguments,2);nn?r=nn.delayedCallbacks:on?r=on:(r=on=[],setTimeout(sn,0));for(var o=0;o\u003Cn.length;++o)!function(e){r.push(function(){return n[e].apply(null,i)})}(o)}}function sn(){var e=on;on=null;for(var t=0;t\u003Ce.length;++t)e[t]()}function an(e,t,n,r){for(var i=0;i\u003Ct.changes.length;i++){var o=t.changes[i];\\\"text\\\"==o?function(e,t){var n=t.text.className,r=cn(e,t);t.text==t.node&&(t.node=r.pre);t.text.parentNode.replaceChild(r.pre,t.text),t.text=r.pre,r.bgClass!=t.bgClass||r.textClass!=t.textClass?(t.bgClass=r.bgClass,t.textClass=r.textClass,hn(e,t)):n&&(t.text.className=n)}(e,t):\\\"gutter\\\"==o?dn(e,t,n,r):\\\"class\\\"==o?hn(e,t):\\\"widget\\\"==o&&function(e,t,n){t.alignable&&(t.alignable=null);for(var r=C(\\\"CodeMirror-linewidget\\\"),i=t.node.firstChild,o=void 0;i;i=o)o=i.nextSibling,r.test(i.className)&&t.node.removeChild(i);fn(e,t,n)}(e,t,r)}t.changes=null}function un(e){return e.node==e.text&&(e.node=M(\\\"div\\\",null,null,\\\"position: relative\\\"),e.text.parentNode&&e.text.parentNode.replaceChild(e.node,e.text),e.node.appendChild(e.text),w&&v\u003C8&&(e.node.style.zIndex=2)),e.node}function cn(e,t){var n=e.display.externalMeasured;return n&&n.line==t.line?(e.display.externalMeasured=null,t.measure=n.measure,n.built):qt(e,t)}function hn(e,t){var n,r;n=e,(r=(i=t).bgClass?i.bgClass+\\\" \\\"+(i.line.bgClass||\\\"\\\"):i.line.bgClass)&&(r+=\\\" CodeMirror-linebackground\\\"),i.background?r?i.background.className=r:(i.background.parentNode.removeChild(i.background),i.background=null):r&&(e=un(i),i.background=e.insertBefore(M(\\\"div\\\",null,r),e.firstChild),n.display.input.setUneditable(i.background)),t.line.wrapClass?un(t).className=t.line.wrapClass:t.node!=t.text&&(t.node.className=\\\"\\\");var i=t.textClass?t.textClass+\\\" \\\"+(t.line.textClass||\\\"\\\"):t.line.textClass;t.text.className=i||\\\"\\\"}function dn(e,t,n,r){t.gutter&&(t.node.removeChild(t.gutter),t.gutter=null),t.gutterBackground&&(t.node.removeChild(t.gutterBackground),t.gutterBackground=null),t.line.gutterClass&&(o=un(t),t.gutterBackground=M(\\\"div\\\",null,\\\"CodeMirror-gutter-background \\\"+t.line.gutterClass,\\\"left: \\\"+(e.options.fixedGutter?r.fixedPos:-r.gutterTotalWidth)+\\\"px; width: \\\"+r.gutterTotalWidth+\\\"px\\\"),e.display.input.setUneditable(t.gutterBackground),o.insertBefore(t.gutterBackground,t.text));var i=t.line.gutterMarkers;if(e.options.lineNumbers||i){var o=un(t),l=t.gutter=M(\\\"div\\\",null,\\\"CodeMirror-gutter-wrapper\\\",\\\"left: \\\"+(e.options.fixedGutter?r.fixedPos:-r.gutterTotalWidth)+\\\"px\\\");if(e.display.input.setUneditable(l),o.insertBefore(l,t.text),t.line.gutterClass&&(l.className+=\\\" \\\"+t.line.gutterClass),!e.options.lineNumbers||i&&i[\\\"CodeMirror-linenumbers\\\"]||(t.lineNumber=l.appendChild(M(\\\"div\\\",nt(e.options,n),\\\"CodeMirror-linenumber CodeMirror-gutter-elt\\\",\\\"left: \\\"+r.gutterLeft[\\\"CodeMirror-linenumbers\\\"]+\\\"px; width: \\\"+e.display.lineNumInnerWidth+\\\"px\\\"))),i)for(var s=0;s\u003Ce.display.gutterSpecs.length;++s){var a=e.display.gutterSpecs[s].className,u=i.hasOwnProperty(a)&&i[a];u&&l.appendChild(M(\\\"div\\\",[u],\\\"CodeMirror-gutter-elt\\\",\\\"left: \\\"+r.gutterLeft[a]+\\\"px; width: \\\"+r.gutterWidth[a]+\\\"px\\\"))}}}function fn(e,t,n){if(pn(e,t.line,t,n,!0),t.rest)for(var r=0;r\u003Ct.rest.length;r++)pn(e,t.rest[r],t,n,!1)}function pn(e,t,n,r,i){if(t.widgets)for(var o=un(n),l=0,s=t.widgets;l\u003Cs.length;++l){var a=s[l],u=M(\\\"div\\\",[a.node],\\\"CodeMirror-linewidget\\\"+(a.className?\\\" \\\"+a.className:\\\"\\\"));a.handleMouseEvents||u.setAttribute(\\\"cm-ignore-events\\\",\\\"true\\\"),function(e,t,n,r){e.noHScroll&&((n.alignable||(n.alignable=[])).push(t),n=r.wrapperWidth,t.style.left=r.fixedPos+\\\"px\\\",e.coverGutter||(n-=r.gutterTotalWidth,t.style.paddingLeft=r.gutterTotalWidth+\\\"px\\\"),t.style.width=n+\\\"px\\\");e.coverGutter&&(t.style.zIndex=5,t.style.position=\\\"relative\\\",e.noHScroll||(t.style.marginLeft=-r.gutterTotalWidth+\\\"px\\\"))}(a,u,n,r),e.display.input.setUneditable(u),i&&a.above?o.insertBefore(u,n.gutter||n.text):o.appendChild(u),ln(a,\\\"redraw\\\")}}function gn(e){if(null!=e.height)return e.height;var t,n=e.doc.cm;return n?(A(document.body,e.node)||(t=\\\"position: relative;\\\",e.coverGutter&&(t+=\\\"margin-left: -\\\"+n.display.gutters.offsetWidth+\\\"px;\\\"),e.noHScroll&&(t+=\\\"width: \\\"+n.display.wrapper.clientWidth+\\\"px;\\\"),T(n.display.measure,M(\\\"div\\\",[e.node],null,t))),e.height=e.node.parentNode.offsetHeight):0}function mn(e,t){for(var n=Oe(t);n!=e.wrapper;n=n.parentNode)if(!n||1==n.nodeType&&\\\"true\\\"==n.getAttribute(\\\"cm-ignore-events\\\")||n.parentNode==e.sizer&&n!=e.mover)return 1}function vn(e){return e.lineSpace.offsetTop}function yn(e){return e.mover.offsetHeight-e.lineSpace.offsetHeight}function bn(e){if(e.cachedPaddingH)return e.cachedPaddingH;var t=T(e.measure,M(\\\"pre\\\",\\\"x\\\",\\\"CodeMirror-line-like\\\")),t=window.getComputedStyle?window.getComputedStyle(t):t.currentStyle,t={left:parseInt(t.paddingLeft),right:parseInt(t.paddingRight)};return isNaN(t.left)||isNaN(t.right)||(e.cachedPaddingH=t),t}function wn(e){return z-e.display.nativeBarWidth}function xn(e){return e.display.scroller.clientWidth-wn(e)-e.display.barWidth}function Cn(e){return e.display.scroller.clientHeight-wn(e)-e.display.barHeight}function Sn(e,t,n){if(e.line==t)return{map:e.measure.map,cache:e.measure.cache};for(var r=0;r\u003Ce.rest.length;r++)if(e.rest[r]==t)return{map:e.measure.maps[r],cache:e.measure.caches[r]};for(var i=0;i\u003Ce.rest.length;i++)if(Je(e.rest[i])>n)return{map:e.measure.maps[i],cache:e.measure.caches[i],before:!0}}function Ln(e,t,n,r){return Mn(e,Tn(e,t),n,r)}function kn(e,t){if(t>=e.display.viewFrom&&t\u003Ce.display.viewTo)return e.display.view[er(e,t)];e=e.display.externalMeasured;return e&&t>=e.lineN&&t\u003Ce.lineN+e.size?e:void 0}function Tn(e,t){var n,r,i=Je(t),o=kn(e,i);o&&!o.text?o=null:o&&o.changes&&(an(e,o,i,$n(e)),e.curOp.forceUpdate=!0),o||(n=e,e=Je(r=zt(r=t)),(r=n.display.externalMeasured=new en(n.doc,r,e)).lineN=e,e=r.built=qt(n,r),r.text=e.pre,T(n.display.lineMeasure,e.pre),o=r);i=Sn(o,t,i);return{line:t,view:o,rect:null,map:i.map,cache:i.cache,before:i.before,hasHeights:!1}}function Mn(e,t,n,r,i){t.before&&(n=-1);var o,l=n+(r||\\\"\\\");return t.cache.hasOwnProperty(l)?o=t.cache[l]:(t.rect||(t.rect=t.view.text.getBoundingClientRect()),t.hasHeights||(function(e,t,n){var r=e.options.lineWrapping,e=r&&xn(e);if(!t.measure.heights||r&&t.measure.width!=e){var i=t.measure.heights=[];if(r){t.measure.width=e;for(var o=t.text.firstChild.getClientRects(),l=0;l\u003Co.length-1;l++){var s=o[l],a=o[l+1];2\u003CMath.abs(s.bottom-a.bottom)&&i.push((s.bottom+a.top)/2-n.top)}}i.push(n.bottom-n.top)}}(e,t.view,t.rect),t.hasHeights=!0),(o=function(e,t,n,r){var i,o=On(t.map,n,r),l=o.node,s=o.start,a=o.end,u=o.collapse;if(3==l.nodeType){for(var c=0;c\u003C4;c++){for(;s&&ne(t.line.text.charAt(o.coverStart+s));)--s;for(;o.coverStart+a\u003Co.coverEnd&&ne(t.line.text.charAt(o.coverStart+a));)++a;if((i=w&&v\u003C9&&0==s&&a==o.coverEnd-o.coverStart?l.parentNode.getBoundingClientRect():function(e,t){var n=An;if(\\\"left\\\"==t)for(var r=0;r\u003Ce.length&&(n=e[r]).left==n.right;r++);else for(var i=e.length-1;0\u003C=i&&(n=e[i]).left==n.right;i--);return n}(S(l,s,a).getClientRects(),r)).left||i.right||0==s)break;a=s,--s,u=\\\"right\\\"}w&&v\u003C11&&(i=function(e,t){if(!window.screen||null==screen.logicalXDPI||screen.logicalXDPI==screen.deviceXDPI||!function(e){if(null!=Re)return Re;var e=(t=T(e,M(\\\"span\\\",\\\"x\\\"))).getBoundingClientRect(),t=S(t,0,1).getBoundingClientRect();return Re=1\u003CMath.abs(e.left-t.left)}(e))return t;var n=screen.logicalXDPI/screen.deviceXDPI,e=screen.logicalYDPI/screen.deviceYDPI;return{left:t.left*n,right:t.right*n,top:t.top*e,bottom:t.bottom*e}}(e.display.measure,i))}else 0\u003Cs&&(u=r=\\\"right\\\"),i=e.options.lineWrapping&&1\u003C(g=l.getClientRects()).length?g[\\\"right\\\"==r?g.length-1:0]:l.getBoundingClientRect();!(w&&v\u003C9)||s||i&&(i.left||i.right)||(m=l.parentNode.getClientRects()[0],i=m?{left:m.left,right:m.left+_n(e.display),top:m.top,bottom:m.bottom}:An);for(var h=i.top-t.rect.top,n=i.bottom-t.rect.top,d=(h+n)/2,f=t.view.measure.heights,p=0;p\u003Cf.length-1&&!(d\u003Cf[p]);p++);var g=p?f[p-1]:0,m=f[p],m={left:(\\\"right\\\"==u?i.right:i.left)-t.rect.left,right:(\\\"left\\\"==u?i.left:i.right)-t.rect.left,top:g,bottom:m};i.left||i.right||(m.bogus=!0);e.options.singleCursorHeightPerLine||(m.rtop=h,m.rbottom=n);return m}(e,t,n,r)).bogus||(t.cache[l]=o)),{left:o.left,right:o.right,top:i?o.rtop:o.top,bottom:i?o.rbottom:o.bottom}}var Nn,An={left:0,right:0,top:0,bottom:0};function On(e,t,n){for(var r,i,o,l,s,a,u=0;u\u003Ce.length;u+=3)if(s=e[u],a=e[u+1],t\u003Cs?(i=0,o=1,l=\\\"left\\\"):t\u003Ca?o=(i=t-s)+1:(u==e.length-3||t==a&&e[u+3]>t)&&(i=(o=a-s)-1,a\u003C=t&&(l=\\\"right\\\")),null!=i){if(r=e[u+2],s==a&&n==(r.insertLeft?\\\"left\\\":\\\"right\\\")&&(l=n),\\\"left\\\"==n&&0==i)for(;u&&e[u-2]==e[u-3]&&e[u-1].insertLeft;)r=e[2+(u-=3)],l=\\\"left\\\";if(\\\"right\\\"==n&&i==a-s)for(;u\u003Ce.length-3&&e[u+3]==e[u+4]&&!e[u+5].insertLeft;)r=e[(u+=3)+2],l=\\\"right\\\";break}return{node:r,start:i,end:o,collapse:l,coverStart:s,coverEnd:a}}function Dn(e){if(e.measure&&(e.measure.cache={},e.measure.heights=null,e.rest))for(var t=0;t\u003Ce.rest.length;t++)e.measure.caches[t]={}}function Wn(e){e.display.externalMeasure=null,k(e.display.lineMeasure);for(var t=0;t\u003Ce.display.view.length;t++)Dn(e.display.view[t])}function Hn(e){Wn(e),e.display.cachedCharWidth=e.display.cachedTextHeight=e.display.cachedPaddingH=null,e.options.lineWrapping||(e.display.maxLineChanged=!0),e.display.lineNumChars=null}function Fn(){return o&&a?-(document.body.getBoundingClientRect().left-parseInt(getComputedStyle(document.body).marginLeft)):window.pageXOffset||(document.documentElement||document.body).scrollLeft}function En(){return o&&a?-(document.body.getBoundingClientRect().top-parseInt(getComputedStyle(document.body).marginTop)):window.pageYOffset||(document.documentElement||document.body).scrollTop}function Pn(e){var t=0;if(e.widgets)for(var n=0;n\u003Ce.widgets.length;++n)e.widgets[n].above&&(t+=gn(e.widgets[n]));return t}function In(e,t,n,r,i){if(i||(i=Pn(t),n.top+=i,n.bottom+=i),\\\"line\\\"==r)return n;r=r||\\\"local\\\";t=Vt(t);return\\\"local\\\"==r?t+=vn(e.display):t-=e.display.viewOffset,\\\"page\\\"!=r&&\\\"window\\\"!=r||(t+=(e=e.display.lineSpace.getBoundingClientRect()).top+(\\\"window\\\"==r?0:En()),r=e.left+(\\\"window\\\"==r?0:Fn()),n.left+=r,n.right+=r),n.top+=t,n.bottom+=t,n}function Rn(e,t,n){if(\\\"div\\\"==n)return t;var r=t.left,t=t.top;\\\"page\\\"==n?(r-=Fn(),t-=En()):\\\"local\\\"!=n&&n||(r+=(n=e.display.sizer.getBoundingClientRect()).left,t+=n.top);e=e.display.lineSpace.getBoundingClientRect();return{left:r-e.left,top:t-e.top}}function zn(e,t,n,r,i){return In(e,r=r||$e(e.doc,t.line),Ln(e,r,t.ch,i),n)}function Bn(n,e,r,i,o,l){function s(e,t){e=Mn(n,o,e,t?\\\"right\\\":\\\"left\\\",l);return t?e.left=e.right:e.right=e.left,In(n,i,e,r)}i=i||$e(n.doc,e.line),o=o||Tn(n,i);var a=me(i,n.doc.direction),t=e.ch,u=e.sticky;if(t>=i.text.length?(t=i.text.length,u=\\\"before\\\"):t\u003C=0&&(t=0,u=\\\"after\\\"),!a)return s(\\\"before\\\"==u?t-1:t,\\\"before\\\"==u);function c(e,t,n){return s(n?e-1:e,1==a[t].level!=n)}var h=le(a,t,u),e=oe,h=c(t,h,\\\"before\\\"==u);return null!=e&&(h.other=c(t,e,\\\"before\\\"!=u)),h}function Gn(e,t){var n=0;t=ct(e.doc,t),e.options.lineWrapping||(n=_n(e.display)*t.ch);t=$e(e.doc,t.line),e=Vt(t)+vn(e.display);return{left:n,right:n,top:e,bottom:e+t.height}}function Un(e,t,n,r,i){n=rt(e,t,n);return n.xRel=i,r&&(n.outside=r),n}function Vn(e,t,n){var r=e.doc;if((n+=e.display.viewOffset)\u003C0)return Un(r.first,0,null,-1,-1);var i=et(r,n),o=r.first+r.size-1;if(o\u003Ci)return Un(r.first+r.size-1,$e(r,o).text.length,null,1,1);t\u003C0&&(t=0);for(var l=$e(r,i);;){var s=function(n,e,t,r,i){i-=Vt(e);var o=Tn(n,e),l=Pn(e),s=0,a=e.text.length,u=!0,c=me(e,n.doc.direction);c&&(f=(n.options.lineWrapping?function(e,t,n,r,i,o,l){var l=Kn(e,t,r,l),s=l.begin,a=l.end;/\\\\s/.test(t.text.charAt(a-1))&&a--;for(var u=null,c=null,h=0;h\u003Ci.length;h++){var d,f=i[h];f.from>=a||f.to\u003C=s||(d=1!=f.level,d=Mn(e,r,d?Math.min(a,f.to)-1:Math.max(s,f.from)).right,d=d\u003Co?o-d+1e9:d-o,(!u||d\u003Cc)&&(u=f,c=d))}u=u||i[i.length-1];u.from\u003Cs&&(u={from:s,to:u.to,level:u.level});u.to>a&&(u={from:u.from,to:a,level:u.level});return u}:function(n,r,i,o,l,s,a){var e=ie(function(e){var t=l[e],e=1!=t.level;return Xn(Bn(n,rt(i,e?t.to:t.from,e?\\\"before\\\":\\\"after\\\"),\\\"line\\\",r,o),s,a,!0)},0,l.length-1),t=l[e];{var u;0\u003Ce&&(u=1!=t.level,Xn(u=Bn(n,rt(i,u?t.from:t.to,u?\\\"after\\\":\\\"before\\\"),\\\"line\\\",r,o),s,a,!0)&&u.top>a&&(t=l[e-1]))}return t})(n,e,t,o,c,r,i),u=1!=f.level,s=u?f.from:f.to-1,a=u?f.to:f.from-1);var h=null,d=null,c=ie(function(e){var t=Mn(n,o,e);return t.top+=l,t.bottom+=l,Xn(t,r,i,!1)&&(t.top\u003C=i&&t.left\u003C=r&&(h=e,d=t),1)},s,a),f=!1;{var p,g;d?(p=r-d.left\u003Cd.right-r,c=h+((g=p==u)?0:1),g=g?\\\"after\\\":\\\"before\\\",p=p?d.left:d.right):(u||c!=a&&c!=s||c++,g=0==c||c!=e.text.length&&Mn(n,o,c-(u?1:0)).bottom+l\u003C=i==u?\\\"after\\\":\\\"before\\\",u=Bn(n,rt(t,c,g),\\\"line\\\",e,o),p=u.left,f=i\u003Cu.top?-1:i>=u.bottom?1:0)}return c=re(e.text,c,1),Un(t,c,g,f,r-p)}(e,l,i,t,n),a=function(e,t){var n,r=kt&&e.markedSpans;if(r)for(var i=0;i\u003Cr.length;++i){var o=r[i];o.marker.collapsed&&(null==o.from||o.from\u003Ct)&&(null==o.to||o.to>t)&&(!n||Ft(n,o.marker)\u003C0)&&(n=o.marker)}return n}(l,s.ch+(0\u003Cs.xRel||0\u003Cs.outside?1:0));if(!a)return s;a=a.find(1);if(a.line==i)return a;l=$e(r,i=a.line)}}function Kn(t,e,n,r){r-=Pn(e);var i=e.text.length,e=ie(function(e){return Mn(t,n,e-1).bottom\u003C=r},i,0);return{begin:e,end:i=ie(function(e){return Mn(t,n,e).top>r},e,i)}}function jn(e,t,n,r){return Kn(e,t,n=n||Tn(e,t),In(e,t,Mn(e,n,r),\\\"line\\\").top)}function Xn(e,t,n,r){return!(e.bottom\u003C=n)&&(e.top>n||(r?e.left:e.right)>t)}function Yn(e){if(null!=e.cachedTextHeight)return e.cachedTextHeight;if(null==Nn){Nn=M(\\\"pre\\\",null,\\\"CodeMirror-line-like\\\");for(var t=0;t\u003C49;++t)Nn.appendChild(document.createTextNode(\\\"x\\\")),Nn.appendChild(M(\\\"br\\\"));Nn.appendChild(document.createTextNode(\\\"x\\\"))}T(e.measure,Nn);var n=Nn.offsetHeight/50;return 3\u003Cn&&(e.cachedTextHeight=n),k(e.measure),n||1}function _n(e){if(null!=e.cachedCharWidth)return e.cachedCharWidth;var t=M(\\\"span\\\",\\\"xxxxxxxxxx\\\"),n=M(\\\"pre\\\",[t],\\\"CodeMirror-line-like\\\");T(e.measure,n);t=t.getBoundingClientRect(),t=(t.right-t.left)/10;return 2\u003Ct&&(e.cachedCharWidth=t),t||10}function $n(e){for(var t=e.display,n={},r={},i=t.gutters.clientLeft,o=t.gutters.firstChild,l=0;o;o=o.nextSibling,++l){var s=e.display.gutterSpecs[l].className;n[s]=o.offsetLeft+o.clientLeft+i,r[s]=o.clientWidth}return{fixedPos:qn(t),gutterTotalWidth:t.gutters.offsetWidth,gutterLeft:n,gutterWidth:r,wrapperWidth:t.wrapper.clientWidth}}function qn(e){return e.scroller.getBoundingClientRect().left-e.sizer.getBoundingClientRect().left}function Zn(r){var i=Yn(r.display),o=r.options.lineWrapping,l=o&&Math.max(5,r.display.scroller.clientWidth/_n(r.display)-3);return function(e){if(Ut(r.doc,e))return 0;var t=0;if(e.widgets)for(var n=0;n\u003Ce.widgets.length;n++)e.widgets[n].height&&(t+=e.widgets[n].height);return o?t+(Math.ceil(e.text.length/l)||1)*i:t+i}}function Qn(e){var t=e.doc,n=Zn(e);t.iter(function(e){var t=n(e);t!=e.height&&Qe(e,t)})}function Jn(e,t,n,r){var i=e.display;if(!n&&\\\"true\\\"==Oe(t).getAttribute(\\\"cm-not-content\\\"))return null;var o,l,s=i.lineSpace.getBoundingClientRect();try{o=t.clientX-s.left,l=t.clientY-s.top}catch(e){return null}var a,i=Vn(e,o,l);return r&&0\u003Ci.xRel&&(a=$e(e.doc,i.line).text).length==i.ch&&(a=P(a,a.length,e.options.tabSize)-a.length,i=rt(i.line,Math.max(0,Math.round((o-bn(e.display).left)/_n(e.display))-a))),i}function er(e,t){if(t>=e.display.viewTo)return null;if((t-=e.display.viewFrom)\u003C0)return null;for(var n=e.display.view,r=0;r\u003Cn.length;r++)if((t-=n[r].size)\u003C0)return r}function tr(e,t,n,r){null==t&&(t=e.doc.first),null==n&&(n=e.doc.first+e.doc.size),r=r||0;var i,o,l=e.display;r&&n\u003Cl.viewTo&&(null==l.updateLineNumbers||l.updateLineNumbers>t)&&(l.updateLineNumbers=t),e.curOp.viewChanged=!0,t>=l.viewTo?kt&&Bt(e.doc,t)\u003Cl.viewTo&&rr(e):n\u003C=l.viewFrom?kt&&Gt(e.doc,n+r)>l.viewFrom?rr(e):(l.viewFrom+=r,l.viewTo+=r):t\u003C=l.viewFrom&&n>=l.viewTo?rr(e):t\u003C=l.viewFrom?(i=ir(e,n,n+r,1))?(l.view=l.view.slice(i.index),l.viewFrom=i.lineN,l.viewTo+=r):rr(e):n>=l.viewTo?(o=ir(e,t,t,-1))?(l.view=l.view.slice(0,o.index),l.viewTo=o.lineN):rr(e):(i=ir(e,t,t,-1),o=ir(e,n,n+r,1),i&&o?(l.view=l.view.slice(0,i.index).concat(tn(e,i.lineN,o.lineN)).concat(l.view.slice(o.index)),l.viewTo+=r):rr(e));e=l.externalMeasured;e&&(n\u003Ce.lineN?e.lineN+=r:t\u003Ce.lineN+e.size&&(l.externalMeasured=null))}function nr(e,t,n){e.curOp.viewChanged=!0;var r=e.display,i=e.display.externalMeasured;i&&t>=i.lineN&&t\u003Ci.lineN+i.size&&(r.externalMeasured=null),t\u003Cr.viewFrom||t>=r.viewTo||(null==(t=r.view[er(e,t)]).node||-1==R(t=t.changes||(t.changes=[]),n)&&t.push(n))}function rr(e){e.display.viewFrom=e.display.viewTo=e.doc.first,e.display.view=[],e.display.viewOffset=0}function ir(e,t,n,r){var i,o=er(e,t),l=e.display.view;if(!kt||n==e.doc.first+e.doc.size)return{index:o,lineN:n};for(var s=e.display.viewFrom,a=0;a\u003Co;a++)s+=l[a].size;if(s!=t){if(0\u003Cr){if(o==l.length-1)return null;i=s+l[o].size-t,o++}else i=s-t;t+=i,n+=i}for(;Bt(e.doc,n)!=n;){if(o==(r\u003C0?0:l.length-1))return null;n+=r*l[o-(r\u003C0?1:0)].size,o+=r}return{index:o,lineN:n}}function or(e){for(var t=e.display.view,n=0,r=0;r\u003Ct.length;r++){var i=t[r];i.hidden||i.node&&!i.changes||++n}return n}function lr(e){e.display.input.showSelection(e.display.input.prepareSelection())}function sr(e,t){void 0===t&&(t=!0);for(var n,r,i=e.doc,o={},l=o.cursors=document.createDocumentFragment(),s=o.selection=document.createDocumentFragment(),a=0;a\u003Ci.sel.ranges.length;a++)!t&&a==i.sel.primIndex||((n=i.sel.ranges[a]).from().line>=e.display.viewTo||n.to().line\u003Ce.display.viewFrom||(((r=n.empty())||e.options.showCursorWhenSelecting)&&ar(e,n.head,l),r||function(i,e,t){var n=i.display,o=i.doc,l=document.createDocumentFragment(),r=bn(i.display),S=r.left,L=Math.max(n.sizerWidth,xn(i)-n.sizer.offsetLeft)-r.right,k=\\\"ltr\\\"==o.direction;function T(e,t,n,r){t\u003C0&&(t=0),t=Math.round(t),r=Math.round(r),l.appendChild(M(\\\"div\\\",null,\\\"CodeMirror-selected\\\",\\\"position: absolute; left: \\\"+e+\\\"px;\\\\n top: \\\"+t+\\\"px; width: \\\"+(null==n?L-e:n)+\\\"px;\\\\n height: \\\"+(r-t)+\\\"px\\\"))}function s(n,g,m){var v,y,r=$e(o,n),b=r.text.length;function w(e,t){return zn(i,rt(n,e),\\\"div\\\",r,t)}function x(e,t,n){e=jn(i,r,null,e),t=\\\"ltr\\\"==t==(\\\"after\\\"==n)?\\\"left\\\":\\\"right\\\";return w(\\\"after\\\"==n?e.begin:e.end-(/\\\\s/.test(r.text.charAt(e.end-1))?2:1),t)[t]}var C=me(r,o.direction);return function(e,t,n,r){if(!e)return r(t,n,\\\"ltr\\\",0);for(var i=!1,o=0;o\u003Ce.length;++o){var l=e[o];(l.from\u003Cn&&l.to>t||t==n&&l.to==t)&&(r(Math.max(l.from,t),Math.min(l.to,n),1==l.level?\\\"rtl\\\":\\\"ltr\\\",o),i=!0)}i||r(t,n,\\\"ltr\\\")}(C,g||0,null==m?b:m,function(e,t,n,r){var i,o,l,s,a=\\\"ltr\\\"==n,u=w(e,a?\\\"left\\\":\\\"right\\\"),c=w(t-1,a?\\\"right\\\":\\\"left\\\"),h=null==g&&0==e,d=null==m&&t==b,f=0==r,p=!C||r==C.length-1;c.top-u.top\u003C=3?(i=(k?d:h)&&p,r=(k?h:d)&&f?S:(a?u:c).left,i=i?L:(a?c:u).right,T(r,u.top,i-r,u.bottom)):(n=a?(o=k&&h&&f?S:u.left,l=k?L:x(e,n,\\\"before\\\"),s=k?S:x(t,n,\\\"after\\\"),k&&d&&p?L:c.right):(o=k?x(e,n,\\\"before\\\"):S,l=!k&&h&&f?L:u.right,s=!k&&d&&p?S:c.left,k?x(t,n,\\\"after\\\"):L),T(o,u.top,l-o,u.bottom),u.bottom\u003Cc.top&&T(S,u.bottom,null,c.top),T(s,c.top,n-s,c.bottom)),(!v||ur(u,v)\u003C0)&&(v=u),ur(c,v)\u003C0&&(v=c),(!y||ur(u,y)\u003C0)&&(y=u),ur(c,y)\u003C0&&(y=c)}),{start:v,end:y}}var a=e.from(),n=e.to();a.line==n.line?s(a.line,a.ch,n.ch):(r=$e(o,a.line),e=$e(o,n.line),e=zt(r)==zt(e),r=s(a.line,a.ch,e?r.text.length+1:null).end,n=s(n.line,e?0:null,n.ch).start,e&&(r.top\u003Cn.top-2?(T(r.right,r.top,null,r.bottom),T(S,n.top,n.left,n.bottom)):T(r.right,r.top,n.left-r.right,r.bottom)),r.bottom\u003Cn.top&&T(S,r.bottom,null,n.top));t.appendChild(l)}(e,n,s)));return o}function ar(e,t,n){var r=Bn(e,t,\\\"div\\\",null,null,!e.options.singleCursorHeightPerLine),t=n.appendChild(M(\\\"div\\\",\\\" \\\",\\\"CodeMirror-cursor\\\"));t.style.left=r.left+\\\"px\\\",t.style.top=r.top+\\\"px\\\",t.style.height=Math.max(0,r.bottom-r.top)*e.options.cursorHeight+\\\"px\\\",r.other&&((n=n.appendChild(M(\\\"div\\\",\\\" \\\",\\\"CodeMirror-cursor CodeMirror-secondarycursor\\\"))).style.display=\\\"\\\",n.style.left=r.other.left+\\\"px\\\",n.style.top=r.other.top+\\\"px\\\",n.style.height=.85*(r.other.bottom-r.other.top)+\\\"px\\\")}function ur(e,t){return e.top-t.top||e.left-t.left}function cr(e){var t,n;e.state.focused&&(t=e.display,clearInterval(t.blinker),n=!0,t.cursorDiv.style.visibility=\\\"\\\",0\u003Ce.options.cursorBlinkRate?t.blinker=setInterval(function(){e.hasFocus()||pr(e),t.cursorDiv.style.visibility=(n=!n)?\\\"\\\":\\\"hidden\\\"},e.options.cursorBlinkRate):e.options.cursorBlinkRate\u003C0&&(t.cursorDiv.style.visibility=\\\"hidden\\\"))}function hr(e){e.hasFocus()||(e.display.input.focus(),e.state.focused||fr(e))}function dr(e){e.state.delayingBlurEvent=!0,setTimeout(function(){e.state.delayingBlurEvent&&(e.state.delayingBlurEvent=!1,e.state.focused&&pr(e))},100)}function fr(e,t){e.state.delayingBlurEvent&&!e.state.draggingText&&(e.state.delayingBlurEvent=!1),\\\"nocursor\\\"!=e.options.readOnly&&(e.state.focused||(xe(e,\\\"focus\\\",e,t),e.state.focused=!0,D(e.display.wrapper,\\\"CodeMirror-focused\\\"),e.curOp||e.display.selForContextMenu==e.doc.sel||(e.display.input.reset(),f&&setTimeout(function(){return e.display.input.reset(!0)},20)),e.display.input.receivedFocus()),cr(e))}function pr(e,t){e.state.delayingBlurEvent||(e.state.focused&&(xe(e,\\\"blur\\\",e,t),e.state.focused=!1,L(e.display.wrapper,\\\"CodeMirror-focused\\\")),clearInterval(e.display.blinker),setTimeout(function(){e.state.focused||(e.display.shift=!1)},150))}function gr(e){for(var t=e.display,n=t.lineDiv.offsetTop,r=0;r\u003Ct.view.length;r++){var i,o=t.view[r],l=e.options.lineWrapping,s=void 0,a=0;if(!o.hidden){w&&v\u003C8?(s=(i=o.node.offsetTop+o.node.offsetHeight)-n,n=i):(s=(u=o.node.getBoundingClientRect()).bottom-u.top,!l&&o.text.firstChild&&(a=o.text.firstChild.getBoundingClientRect().right-u.left-1));var u=o.line.height-s;if((.005\u003Cu||u\u003C-.005)&&(Qe(o.line,s),mr(o.line),o.rest))for(var c=0;c\u003Co.rest.length;c++)mr(o.rest[c]);a>e.display.sizerWidth&&((a=Math.ceil(a/_n(e.display)))>e.display.maxLineLength&&(e.display.maxLineLength=a,e.display.maxLine=o.line,e.display.maxLineChanged=!0))}}}function mr(e){if(e.widgets)for(var t=0;t\u003Ce.widgets.length;++t){var n=e.widgets[t],r=n.node.parentNode;r&&(n.height=r.offsetHeight)}}function vr(e,t,n){var r=n&&null!=n.top?Math.max(0,n.top):e.scroller.scrollTop,r=Math.floor(r-vn(e)),i=n&&null!=n.bottom?n.bottom:r+e.wrapper.clientHeight,o=et(t,r),r=et(t,i);return n&&n.ensure&&(i=n.ensure.from.line,n=n.ensure.to.line,i\u003Co?r=et(t,Vt($e(t,o=i))+e.wrapper.clientHeight):Math.min(n,t.lastLine())>=r&&(o=et(t,Vt($e(t,n))-e.wrapper.clientHeight),r=n)),{from:o,to:Math.max(r,o+1)}}function yr(e,t){var n=e.display,r=Yn(e.display);t.top\u003C0&&(t.top=0);var i=(e.curOp&&null!=e.curOp.scrollTop?e.curOp:n.scroller).scrollTop,o=Cn(e),l={};t.bottom-t.top>o&&(t.bottom=t.top+o);var s=e.doc.height+yn(n),a=t.top\u003Cr,r=t.bottom>s-r;t.top\u003Ci?l.scrollTop=a?0:t.top:t.bottom>i+o&&((u=Math.min(t.top,(r?s:t.bottom)-o))!=i&&(l.scrollTop=u));var i=e.options.fixedGutter?0:n.gutters.offsetWidth,u=e.curOp&&null!=e.curOp.scrollLeft?e.curOp.scrollLeft:n.scroller.scrollLeft-i,e=xn(e)-n.gutters.offsetWidth,n=t.right-t.left>e;return n&&(t.right=t.left+e),t.left\u003C10?l.scrollLeft=0:t.left\u003Cu?l.scrollLeft=Math.max(0,t.left+i-(n?0:10)):t.right>e+u-3&&(l.scrollLeft=t.right+(n?0:10)-e),l}function br(e,t){null!=t&&(Cr(e),e.curOp.scrollTop=(null==e.curOp.scrollTop?e.doc:e.curOp).scrollTop+t)}function wr(e){Cr(e);var t=e.getCursor();e.curOp.scrollToPos={from:t,to:t,margin:e.options.cursorScrollMargin}}function xr(e,t,n){null==t&&null==n||Cr(e),null!=t&&(e.curOp.scrollLeft=t),null!=n&&(e.curOp.scrollTop=n)}function Cr(e){var t=e.curOp.scrollToPos;t&&(e.curOp.scrollToPos=null,Sr(e,Gn(e,t.from),Gn(e,t.to),t.margin))}function Sr(e,t,n,r){r=yr(e,{left:Math.min(t.left,n.left),top:Math.min(t.top,n.top)-r,right:Math.max(t.right,n.right),bottom:Math.max(t.bottom,n.bottom)+r});xr(e,r.scrollLeft,r.scrollTop)}function Lr(e,t){Math.abs(e.doc.scrollTop-t)\u003C2||(d||Kr(e,{top:t}),kr(e,t,!0),d&&Kr(e),zr(e,100))}function kr(e,t,n){t=Math.max(0,Math.min(e.display.scroller.scrollHeight-e.display.scroller.clientHeight,t)),e.display.scroller.scrollTop==t&&!n||(e.doc.scrollTop=t,e.display.scrollbars.setScrollTop(t),e.display.scroller.scrollTop!=t&&(e.display.scroller.scrollTop=t))}function Tr(e,t,n,r){t=Math.max(0,Math.min(t,e.display.scroller.scrollWidth-e.display.scroller.clientWidth)),(n?t==e.doc.scrollLeft:Math.abs(e.doc.scrollLeft-t)\u003C2)&&!r||(e.doc.scrollLeft=t,Yr(e),e.display.scroller.scrollLeft!=t&&(e.display.scroller.scrollLeft=t),e.display.scrollbars.setScrollLeft(t))}function Mr(e){var t=e.display,n=t.gutters.offsetWidth,r=Math.round(e.doc.height+yn(e.display));return{clientHeight:t.scroller.clientHeight,viewHeight:t.wrapper.clientHeight,scrollWidth:t.scroller.scrollWidth,clientWidth:t.scroller.clientWidth,viewWidth:t.wrapper.clientWidth,barLeft:e.options.fixedGutter?n:0,docHeight:r,scrollHeight:r+wn(e)+t.barHeight,nativeBarWidth:t.nativeBarWidth,gutterWidth:n}}e=function(e,t,n){this.cm=n;var r=this.vert=M(\\\"div\\\",[M(\\\"div\\\",null,null,\\\"min-width: 1px\\\")],\\\"CodeMirror-vscrollbar\\\"),i=this.horiz=M(\\\"div\\\",[M(\\\"div\\\",null,null,\\\"height: 100%; min-height: 1px\\\")],\\\"CodeMirror-hscrollbar\\\");r.tabIndex=i.tabIndex=-1,e(r),e(i),ye(r,\\\"scroll\\\",function(){r.clientHeight&&t(r.scrollTop,\\\"vertical\\\")}),ye(i,\\\"scroll\\\",function(){i.clientWidth&&t(i.scrollLeft,\\\"horizontal\\\")}),this.checkedZeroWidth=!1,w&&v\u003C8&&(this.horiz.style.minHeight=this.vert.style.minWidth=\\\"18px\\\")};e.prototype.update=function(e){var t,n=e.scrollWidth>e.clientWidth+1,r=e.scrollHeight>e.clientHeight+1,i=e.nativeBarWidth;return r?(this.vert.style.display=\\\"block\\\",this.vert.style.bottom=n?i+\\\"px\\\":\\\"0\\\",t=e.viewHeight-(n?i:0),this.vert.firstChild.style.height=Math.max(0,e.scrollHeight-e.clientHeight+t)+\\\"px\\\"):(this.vert.style.display=\\\"\\\",this.vert.firstChild.style.height=\\\"0\\\"),n?(this.horiz.style.display=\\\"block\\\",this.horiz.style.right=r?i+\\\"px\\\":\\\"0\\\",this.horiz.style.left=e.barLeft+\\\"px\\\",t=e.viewWidth-e.barLeft-(r?i:0),this.horiz.firstChild.style.width=Math.max(0,e.scrollWidth-e.clientWidth+t)+\\\"px\\\"):(this.horiz.style.display=\\\"\\\",this.horiz.firstChild.style.width=\\\"0\\\"),!this.checkedZeroWidth&&0\u003Ce.clientHeight&&(0==i&&this.zeroWidthHack(),this.checkedZeroWidth=!0),{right:r?i:0,bottom:n?i:0}},e.prototype.setScrollLeft=function(e){this.horiz.scrollLeft!=e&&(this.horiz.scrollLeft=e),this.disableHoriz&&this.enableZeroWidthBar(this.horiz,this.disableHoriz,\\\"horiz\\\")},e.prototype.setScrollTop=function(e){this.vert.scrollTop!=e&&(this.vert.scrollTop=e),this.disableVert&&this.enableZeroWidthBar(this.vert,this.disableVert,\\\"vert\\\")},e.prototype.zeroWidthHack=function(){var e=g&&!l?\\\"12px\\\":\\\"18px\\\";this.horiz.style.height=this.vert.style.width=e,this.horiz.style.pointerEvents=this.vert.style.pointerEvents=\\\"none\\\",this.disableHoriz=new I,this.disableVert=new I},e.prototype.enableZeroWidthBar=function(n,r,i){n.style.pointerEvents=\\\"auto\\\",r.set(1e3,function e(){var t=n.getBoundingClientRect();(\\\"vert\\\"==i?document.elementFromPoint(t.right-1,(t.top+t.bottom)/2):document.elementFromPoint((t.right+t.left)/2,t.bottom-1))!=n?n.style.pointerEvents=\\\"none\\\":r.set(1e3,e)})},e.prototype.clear=function(){var e=this.horiz.parentNode;e.removeChild(this.horiz),e.removeChild(this.vert)};r=function(){};function Nr(e,t){t=t||Mr(e);var n=e.display.barWidth,r=e.display.barHeight;Ar(e,t);for(var i=0;i\u003C4&&n!=e.display.barWidth||r!=e.display.barHeight;i++)n!=e.display.barWidth&&e.options.lineWrapping&&gr(e),Ar(e,Mr(e)),n=e.display.barWidth,r=e.display.barHeight}function Ar(e,t){var n=e.display,r=n.scrollbars.update(t);n.sizer.style.paddingRight=(n.barWidth=r.right)+\\\"px\\\",n.sizer.style.paddingBottom=(n.barHeight=r.bottom)+\\\"px\\\",n.heightForcer.style.borderBottom=r.bottom+\\\"px solid transparent\\\",r.right&&r.bottom?(n.scrollbarFiller.style.display=\\\"block\\\",n.scrollbarFiller.style.height=r.bottom+\\\"px\\\",n.scrollbarFiller.style.width=r.right+\\\"px\\\"):n.scrollbarFiller.style.display=\\\"\\\",r.bottom&&e.options.coverGutterNextToScrollbar&&e.options.fixedGutter?(n.gutterFiller.style.display=\\\"block\\\",n.gutterFiller.style.height=r.bottom+\\\"px\\\",n.gutterFiller.style.width=t.gutterWidth+\\\"px\\\"):n.gutterFiller.style.display=\\\"\\\"}r.prototype.update=function(){return{bottom:0,right:0}},r.prototype.setScrollLeft=function(){},r.prototype.setScrollTop=function(){},r.prototype.clear=function(){};var Or={native:e,null:r};function Dr(n){n.display.scrollbars&&(n.display.scrollbars.clear(),n.display.scrollbars.addClass&&L(n.display.wrapper,n.display.scrollbars.addClass)),n.display.scrollbars=new Or[n.options.scrollbarStyle](function(e){n.display.wrapper.insertBefore(e,n.display.scrollbarFiller),ye(e,\\\"mousedown\\\",function(){n.state.focused&&setTimeout(function(){return n.display.input.focus()},0)}),e.setAttribute(\\\"cm-not-content\\\",\\\"true\\\")},function(e,t){(\\\"horizontal\\\"==t?Tr:Lr)(n,e)},n),n.display.scrollbars.addClass&&D(n.display.wrapper,n.display.scrollbars.addClass)}var Wr=0;function Hr(e){e.curOp={cm:e,viewChanged:!1,startHeight:e.doc.height,forceUpdate:!1,updateInput:0,typing:!1,changeObjs:null,cursorActivityHandlers:null,cursorActivityCalled:0,selectionChanged:!1,updateMaxLine:!1,scrollLeft:null,scrollTop:null,scrollToPos:null,focus:!1,id:++Wr},e=e.curOp,nn?nn.ops.push(e):e.ownsGroup=nn={ops:[e],delayedCallbacks:[]}}function Fr(e){e=e.curOp;e&&rn(e,function(e){for(var t=0;t\u003Ce.ops.length;t++)e.ops[t].cm.curOp=null;!function(e){for(var t=e.ops,n=0;n\u003Ct.length;n++)!function(e){var t=e.cm,n=t.display;(function(e){var t=e.display;!t.scrollbarsClipped&&t.scroller.offsetWidth&&(t.nativeBarWidth=t.scroller.offsetWidth-t.scroller.clientWidth,t.heightForcer.style.height=wn(e)+\\\"px\\\",t.sizer.style.marginBottom=-t.nativeBarWidth+\\\"px\\\",t.sizer.style.borderRightWidth=wn(e)+\\\"px\\\",t.scrollbarsClipped=!0)})(t),e.updateMaxLine&&jt(t);e.mustUpdate=e.viewChanged||e.forceUpdate||null!=e.scrollTop||e.scrollToPos&&(e.scrollToPos.from.line\u003Cn.viewFrom||e.scrollToPos.to.line>=n.viewTo)||n.maxLineChanged&&t.options.lineWrapping,e.update=e.mustUpdate&&new Gr(t,e.mustUpdate&&{top:e.scrollTop,ensure:e.scrollToPos},e.forceUpdate)}(t[n]);for(var r=0;r\u003Ct.length;r++)!function(e){e.updatedDisplay=e.mustUpdate&&Ur(e.cm,e.update)}(t[r]);for(var i=0;i\u003Ct.length;i++)!function(e){var t=e.cm,n=t.display;e.updatedDisplay&&gr(t);e.barMeasure=Mr(t),n.maxLineChanged&&!t.options.lineWrapping&&(e.adjustWidthTo=Ln(t,n.maxLine,n.maxLine.text.length).left+3,t.display.sizerWidth=e.adjustWidthTo,e.barMeasure.scrollWidth=Math.max(n.scroller.clientWidth,n.sizer.offsetLeft+e.adjustWidthTo+wn(t)+t.display.barWidth),e.maxScrollLeft=Math.max(0,n.sizer.offsetLeft+e.adjustWidthTo-xn(t)));(e.updatedDisplay||e.selectionChanged)&&(e.preparedSelection=n.input.prepareSelection())}(t[i]);for(var o=0;o\u003Ct.length;o++)!function(e){var t=e.cm;null!=e.adjustWidthTo&&(t.display.sizer.style.minWidth=e.adjustWidthTo+\\\"px\\\",e.maxScrollLeft\u003Ct.doc.scrollLeft&&Tr(t,Math.min(t.display.scroller.scrollLeft,e.maxScrollLeft),!0),t.display.maxLineChanged=!1);var n=e.focus&&e.focus==O();e.preparedSelection&&t.display.input.showSelection(e.preparedSelection,n);!e.updatedDisplay&&e.startHeight==t.doc.height||Nr(t,e.barMeasure);e.updatedDisplay&&Xr(t,e.barMeasure);e.selectionChanged&&cr(t);t.state.focused&&e.updateInput&&t.display.input.reset(e.typing);n&&hr(e.cm)}(t[o]);for(var l=0;l\u003Ct.length;l++)!function(e){var t=e.cm,n=t.display,r=t.doc;e.updatedDisplay&&Vr(t,e.update);null==n.wheelStartX||null==e.scrollTop&&null==e.scrollLeft&&!e.scrollToPos||(n.wheelStartX=n.wheelStartY=null);null!=e.scrollTop&&kr(t,e.scrollTop,e.forceScroll);null!=e.scrollLeft&&Tr(t,e.scrollLeft,!0,!0);{var i;e.scrollToPos&&(i=function(e,t,n,r){null==r&&(r=0),e.options.lineWrapping||t!=n||(n=\\\"before\\\"==(t=t.ch?rt(t.line,\\\"before\\\"==t.sticky?t.ch-1:t.ch,\\\"after\\\"):t).sticky?rt(t.line,t.ch+1,\\\"before\\\"):t);for(var i=0;i\u003C5;i++){var o,l=!1,s=Bn(e,t),a=n&&n!=t?Bn(e,n):s,u=yr(e,o={left:Math.min(s.left,a.left),top:Math.min(s.top,a.top)-r,right:Math.max(s.left,a.left),bottom:Math.max(s.bottom,a.bottom)+r}),s=e.doc.scrollTop,a=e.doc.scrollLeft;if(null!=u.scrollTop&&(Lr(e,u.scrollTop),1\u003CMath.abs(e.doc.scrollTop-s)&&(l=!0)),null!=u.scrollLeft&&(Tr(e,u.scrollLeft),1\u003CMath.abs(e.doc.scrollLeft-a)&&(l=!0)),!l)break}return o}(t,ct(r,e.scrollToPos.from),ct(r,e.scrollToPos.to),e.scrollToPos.margin),function(e,t){var n,r,i;Ce(e,\\\"scrollCursorIntoView\\\")||(r=(n=e.display).sizer.getBoundingClientRect(),i=null,t.top+r.top\u003C0?i=!0:t.bottom+r.top>(window.innerHeight||document.documentElement.clientHeight)&&(i=!1),null==i||u||(t=M(\\\"div\\\",\\\"\\\",null,\\\"position: absolute;\\\\n top: \\\"+(t.top-n.viewOffset-vn(e.display))+\\\"px;\\\\n height: \\\"+(t.bottom-t.top+wn(e)+n.barHeight)+\\\"px;\\\\n left: \\\"+t.left+\\\"px; width: \\\"+Math.max(2,t.right-t.left)+\\\"px;\\\"),e.display.lineSpace.appendChild(t),t.scrollIntoView(i),e.display.lineSpace.removeChild(t)))}(t,i))}var o=e.maybeHiddenMarkers,l=e.maybeUnhiddenMarkers;if(o)for(var s=0;s\u003Co.length;++s)o[s].lines.length||xe(o[s],\\\"hide\\\");if(l)for(var a=0;a\u003Cl.length;++a)l[a].lines.length&&xe(l[a],\\\"unhide\\\");n.wrapper.offsetHeight&&(r.scrollTop=t.display.scroller.scrollTop);e.changeObjs&&xe(t,\\\"changes\\\",t,e.changeObjs);e.update&&e.update.finish()}(t[l])}(e)})}function Er(e,t){if(e.curOp)return t();Hr(e);try{return t()}finally{Fr(e)}}function Pr(e,t){return function(){if(e.curOp)return t.apply(e,arguments);Hr(e);try{return t.apply(e,arguments)}finally{Fr(e)}}}function Ir(e){return function(){if(this.curOp)return e.apply(this,arguments);Hr(this);try{return e.apply(this,arguments)}finally{Fr(this)}}}function Rr(t){return function(){var e=this.cm;if(!e||e.curOp)return t.apply(this,arguments);Hr(e);try{return t.apply(this,arguments)}finally{Fr(e)}}}function zr(e,t){e.doc.highlightFrontier\u003Ce.display.viewTo&&e.state.highlight.set(t,F(Br,e))}function Br(l){var s,a,u,c=l.doc;c.highlightFrontier>=l.display.viewTo||(s=+new Date+l.options.workTime,a=mt(l,c.highlightFrontier),u=[],c.iter(a.line,Math.min(c.first+c.size,l.display.viewTo+500),function(e){if(a.line>=l.display.viewFrom){var t=e.styles,n=e.text.length>l.options.maxHighlightLength?je(c.mode,a.state):null,r=pt(l,e,a,!0);n&&(a.state=n),e.styles=r.styles;n=e.styleClasses,r=r.classes;r?e.styleClasses=r:n&&(e.styleClasses=null);for(var i=!t||t.length!=e.styles.length||n!=r&&(!n||!r||n.bgClass!=r.bgClass||n.textClass!=r.textClass),o=0;!i&&o\u003Ct.length;++o)i=t[o]!=e.styles[o];i&&u.push(a.line),e.stateAfter=a.save(),a.nextLine()}else e.text.length\u003C=l.options.maxHighlightLength&&vt(l,e.text,a),e.stateAfter=a.line%5==0?a.save():null,a.nextLine();if(+new Date>s)return zr(l,l.options.workDelay),!0}),c.highlightFrontier=a.line,c.modeFrontier=Math.max(c.modeFrontier,a.line),u.length&&Er(l,function(){for(var e=0;e\u003Cu.length;e++)nr(l,u[e],\\\"text\\\")}))}var Gr=function(e,t,n){var r=e.display;this.viewport=t,this.visible=vr(r,e.doc,t),this.editorIsHidden=!r.wrapper.offsetWidth,this.wrapperHeight=r.wrapper.clientHeight,this.wrapperWidth=r.wrapper.clientWidth,this.oldDisplayWidth=xn(e),this.force=n,this.dims=$n(e),this.events=[]};function Ur(e,t){var n=e.display,r=e.doc;if(t.editorIsHidden)return rr(e),!1;if(!t.force&&t.visible.from>=n.viewFrom&&t.visible.to\u003C=n.viewTo&&(null==n.updateLineNumbers||n.updateLineNumbers>=n.viewTo)&&n.renderedView==n.view&&0==or(e))return!1;_r(e)&&(rr(e),t.dims=$n(e));var i=r.first+r.size,o=Math.max(t.visible.from-e.options.viewportMargin,r.first),l=Math.min(i,t.visible.to+e.options.viewportMargin);n.viewFrom\u003Co&&o-n.viewFrom\u003C20&&(o=Math.max(r.first,n.viewFrom)),n.viewTo>l&&n.viewTo-l\u003C20&&(l=Math.min(i,n.viewTo)),kt&&(o=Bt(e.doc,o),l=Gt(e.doc,l));var s=o!=n.viewFrom||l!=n.viewTo||n.lastWrapHeight!=t.wrapperHeight||n.lastWrapWidth!=t.wrapperWidth;r=o,i=l,0==(l=(o=e).display).view.length||r>=l.viewTo||i\u003C=l.viewFrom?(l.view=tn(o,r,i),l.viewFrom=r):(l.viewFrom>r?l.view=tn(o,r,l.viewFrom).concat(l.view):l.viewFrom\u003Cr&&(l.view=l.view.slice(er(o,r))),l.viewFrom=r,l.viewTo\u003Ci?l.view=l.view.concat(tn(o,l.viewTo,i)):l.viewTo>i&&(l.view=l.view.slice(0,er(o,i)))),l.viewTo=i,n.viewOffset=Vt($e(e.doc,n.viewFrom)),e.display.mover.style.top=n.viewOffset+\\\"px\\\";o=or(e);if(!s&&0==o&&!t.force&&n.renderedView==n.view&&(null==n.updateLineNumbers||n.updateLineNumbers>=n.viewTo))return!1;l=function(e){if(e.hasFocus())return null;var t=O();if(!t||!A(e.display.lineDiv,t))return null;var n={activeElt:t};return!window.getSelection||(t=window.getSelection()).anchorNode&&t.extend&&A(e.display.lineDiv,t.anchorNode)&&(n.anchorNode=t.anchorNode,n.anchorOffset=t.anchorOffset,n.focusNode=t.focusNode,n.focusOffset=t.focusOffset),n}(e);return 4\u003Co&&(n.lineDiv.style.display=\\\"none\\\"),function(n,e,t){var r=n.display,i=n.options.lineNumbers,o=r.lineDiv,l=o.firstChild;function s(e){var t=e.nextSibling;return f&&g&&n.display.currentWheelTarget==e?e.style.display=\\\"none\\\":e.parentNode.removeChild(e),t}for(var a=r.view,u=r.viewFrom,c=0;c\u003Ca.length;c++){var h=a[c];if(!h.hidden)if(h.node&&h.node.parentNode==o){for(;l!=h.node;)l=s(l);var d=i&&null!=e&&e\u003C=u&&h.lineNumber;h.changes&&(-1\u003CR(h.changes,\\\"gutter\\\")&&(d=!1),an(n,h,u,t)),d&&(k(h.lineNumber),h.lineNumber.appendChild(document.createTextNode(nt(n.options,u)))),l=h.node.nextSibling}else{d=function(e,t,n,r){var i=cn(e,t);return t.text=t.node=i.pre,i.bgClass&&(t.bgClass=i.bgClass),i.textClass&&(t.textClass=i.textClass),hn(e,t),dn(e,t,n,r),fn(e,t,r),t.node}(n,h,u,t);o.insertBefore(d,l)}u+=h.size}for(;l;)l=s(l)}(e,n.updateLineNumbers,t.dims),4\u003Co&&(n.lineDiv.style.display=\\\"\\\"),n.renderedView=n.view,(i=l)&&i.activeElt&&i.activeElt!=O()&&(i.activeElt.focus(),!/^(INPUT|TEXTAREA)$/.test(i.activeElt.nodeName)&&i.anchorNode&&A(document.body,i.anchorNode)&&A(document.body,i.focusNode)&&(o=window.getSelection(),(l=document.createRange()).setEnd(i.anchorNode,i.anchorOffset),l.collapse(!1),o.removeAllRanges(),o.addRange(l),o.extend(i.focusNode,i.focusOffset))),k(n.cursorDiv),k(n.selectionDiv),n.gutters.style.height=n.sizer.style.minHeight=0,s&&(n.lastWrapHeight=t.wrapperHeight,n.lastWrapWidth=t.wrapperWidth,zr(e,400)),!(n.updateLineNumbers=null)}function Vr(e,t){for(var n=t.viewport,r=!0;;r=!1){if(r&&e.options.lineWrapping&&t.oldDisplayWidth!=xn(e))r&&(t.visible=vr(e.display,e.doc,n));else if(n&&null!=n.top&&(n={top:Math.min(e.doc.height+yn(e.display)-Cn(e),n.top)}),t.visible=vr(e.display,e.doc,n),t.visible.from>=e.display.viewFrom&&t.visible.to\u003C=e.display.viewTo)break;if(!Ur(e,t))break;gr(e);var i=Mr(e);lr(e),Nr(e,i),Xr(e,i),t.force=!1}t.signal(e,\\\"update\\\",e),e.display.viewFrom==e.display.reportedViewFrom&&e.display.viewTo==e.display.reportedViewTo||(t.signal(e,\\\"viewportChange\\\",e,e.display.viewFrom,e.display.viewTo),e.display.reportedViewFrom=e.display.viewFrom,e.display.reportedViewTo=e.display.viewTo)}function Kr(e,t){var n=new Gr(e,t);Ur(e,n)&&(gr(e),Vr(e,n),t=Mr(e),lr(e),Nr(e,t),Xr(e,t),n.finish())}function jr(e){var t=e.gutters.offsetWidth;e.sizer.style.marginLeft=t+\\\"px\\\"}function Xr(e,t){e.display.sizer.style.minHeight=t.docHeight+\\\"px\\\",e.display.heightForcer.style.top=t.docHeight+\\\"px\\\",e.display.gutters.style.height=t.docHeight+e.display.barHeight+wn(e)+\\\"px\\\"}function Yr(e){var t=e.display,n=t.view;if(t.alignWidgets||t.gutters.firstChild&&e.options.fixedGutter){for(var r=qn(t)-t.scroller.scrollLeft+e.doc.scrollLeft,i=t.gutters.offsetWidth,o=r+\\\"px\\\",l=0;l\u003Cn.length;l++)if(!n[l].hidden){e.options.fixedGutter&&(n[l].gutter&&(n[l].gutter.style.left=o),n[l].gutterBackground&&(n[l].gutterBackground.style.left=o));var s=n[l].alignable;if(s)for(var a=0;a\u003Cs.length;a++)s[a].style.left=o}e.options.fixedGutter&&(t.gutters.style.left=r+i+\\\"px\\\")}}function _r(e){if(e.options.lineNumbers){var t=e.doc,n=nt(e.options,t.first+t.size-1),r=e.display;if(n.length!=r.lineNumChars){var i=r.measure.appendChild(M(\\\"div\\\",[M(\\\"div\\\",n)],\\\"CodeMirror-linenumber CodeMirror-gutter-elt\\\")),t=i.firstChild.offsetWidth,i=i.offsetWidth-t;return r.lineGutter.style.width=\\\"\\\",r.lineNumInnerWidth=Math.max(t,r.lineGutter.offsetWidth-i)+1,r.lineNumWidth=r.lineNumInnerWidth+i,r.lineNumChars=r.lineNumInnerWidth?n.length:-1,r.lineGutter.style.width=r.lineNumWidth+\\\"px\\\",jr(e.display),1}}}function $r(e,t){for(var n=[],r=!1,i=0;i\u003Ce.length;i++){var o=e[i],l=null;if(\\\"string\\\"!=typeof o&&(l=o.style,o=o.className),\\\"CodeMirror-linenumbers\\\"==o){if(!t)continue;r=!0}n.push({className:o,style:l})}return t&&!r&&n.push({className:\\\"CodeMirror-linenumbers\\\",style:null}),n}function qr(e){var t=e.gutters,n=e.gutterSpecs;k(t),e.lineGutter=null;for(var r=0;r\u003Cn.length;++r){var i=n[r],o=i.className,l=i.style,i=t.appendChild(M(\\\"div\\\",null,\\\"CodeMirror-gutter \\\"+o));l&&(i.style.cssText=l),\\\"CodeMirror-linenumbers\\\"==o&&((e.lineGutter=i).style.width=(e.lineNumWidth||1)+\\\"px\\\")}t.style.display=n.length?\\\"\\\":\\\"none\\\",jr(e)}function Zr(e){qr(e.display),tr(e),Yr(e)}function Qr(e,t,n,r){var i=this;this.input=n,i.scrollbarFiller=M(\\\"div\\\",null,\\\"CodeMirror-scrollbar-filler\\\"),i.scrollbarFiller.setAttribute(\\\"cm-not-content\\\",\\\"true\\\"),i.gutterFiller=M(\\\"div\\\",null,\\\"CodeMirror-gutter-filler\\\"),i.gutterFiller.setAttribute(\\\"cm-not-content\\\",\\\"true\\\"),i.lineDiv=N(\\\"div\\\",null,\\\"CodeMirror-code\\\"),i.selectionDiv=M(\\\"div\\\",null,null,\\\"position: relative; z-index: 1\\\"),i.cursorDiv=M(\\\"div\\\",null,\\\"CodeMirror-cursors\\\"),i.measure=M(\\\"div\\\",null,\\\"CodeMirror-measure\\\"),i.lineMeasure=M(\\\"div\\\",null,\\\"CodeMirror-measure\\\"),i.lineSpace=N(\\\"div\\\",[i.measure,i.lineMeasure,i.selectionDiv,i.cursorDiv,i.lineDiv],null,\\\"position: relative; outline: none\\\");var o=N(\\\"div\\\",[i.lineSpace],\\\"CodeMirror-lines\\\");i.mover=M(\\\"div\\\",[o],null,\\\"position: relative\\\"),i.sizer=M(\\\"div\\\",[i.mover],\\\"CodeMirror-sizer\\\"),i.sizerWidth=null,i.heightForcer=M(\\\"div\\\",null,null,\\\"position: absolute; height: \\\"+z+\\\"px; width: 1px;\\\"),i.gutters=M(\\\"div\\\",null,\\\"CodeMirror-gutters\\\"),i.lineGutter=null,i.scroller=M(\\\"div\\\",[i.sizer,i.heightForcer,i.gutters],\\\"CodeMirror-scroll\\\"),i.scroller.setAttribute(\\\"tabIndex\\\",\\\"-1\\\"),i.wrapper=M(\\\"div\\\",[i.scrollbarFiller,i.gutterFiller,i.scroller],\\\"CodeMirror\\\"),w&&v\u003C8&&(i.gutters.style.zIndex=-1,i.scroller.style.paddingRight=0),f||d&&h||(i.scroller.draggable=!0),e&&(e.appendChild?e.appendChild(i.wrapper):e(i.wrapper)),i.viewFrom=i.viewTo=t.first,i.reportedViewFrom=i.reportedViewTo=t.first,i.view=[],i.renderedView=null,i.externalMeasured=null,i.viewOffset=0,i.lastWrapHeight=i.lastWrapWidth=0,i.updateLineNumbers=null,i.nativeBarWidth=i.barHeight=i.barWidth=0,i.scrollbarsClipped=!1,i.lineNumWidth=i.lineNumInnerWidth=i.lineNumChars=null,i.alignWidgets=!1,i.cachedCharWidth=i.cachedTextHeight=i.cachedPaddingH=null,i.maxLine=null,i.maxLineLength=0,i.maxLineChanged=!1,i.wheelDX=i.wheelDY=i.wheelStartX=i.wheelStartY=null,i.shift=!1,i.selForContextMenu=null,i.activeTouch=null,i.gutterSpecs=$r(r.gutters,r.lineNumbers),qr(i),n.init(i)}Gr.prototype.signal=function(e,t){Le(e,t)&&this.events.push(arguments)},Gr.prototype.finish=function(){for(var e=0;e\u003Cthis.events.length;e++)xe.apply(null,this.events[e])};var Jr=0,ei=null;function ti(e){var t=e.wheelDeltaX,n=e.wheelDeltaY;return null==t&&e.detail&&e.axis==e.HORIZONTAL_AXIS&&(t=e.detail),null==n&&e.detail&&e.axis==e.VERTICAL_AXIS?n=e.detail:null==n&&(n=e.wheelDelta),{x:t,y:n}}function ni(e){e=ti(e);return e.x*=ei,e.y*=ei,e}function ri(e,t){var n=ti(t),r=n.x,i=n.y,o=e.display,l=o.scroller,s=l.scrollWidth>l.clientWidth,a=l.scrollHeight>l.clientHeight;if(r&&s||i&&a){if(i&&g&&f)e:for(var u=t.target,c=o.view;u!=l;u=u.parentNode)for(var h=0;h\u003Cc.length;h++)if(c[h].node==u){e.display.currentWheelTarget=u;break e}if(r&&!d&&!p&&null!=ei)return i&&a&&Lr(e,Math.max(0,l.scrollTop+i*ei)),Tr(e,Math.max(0,l.scrollLeft+r*ei)),(!i||i&&a)&&Te(t),void(o.wheelStartX=null);i&&null!=ei&&(n=i*ei,a=(s=e.doc.scrollTop)+o.wrapper.clientHeight,n\u003C0?s=Math.max(0,s+n-50):a=Math.min(e.doc.height,a+n+50),Kr(e,{top:s,bottom:a})),Jr\u003C20&&(null==o.wheelStartX?(o.wheelStartX=l.scrollLeft,o.wheelStartY=l.scrollTop,o.wheelDX=r,o.wheelDY=i,setTimeout(function(){var e,t;null!=o.wheelStartX&&(t=l.scrollLeft-o.wheelStartX,t=(e=l.scrollTop-o.wheelStartY)&&o.wheelDY&&e/o.wheelDY||t&&o.wheelDX&&t/o.wheelDX,o.wheelStartX=o.wheelStartY=null,t&&(ei=(ei*Jr+t)/(Jr+1),++Jr))},200)):(o.wheelDX+=r,o.wheelDY+=i))}}w?ei=-.53:d?ei=15:o?ei=-.7:c&&(ei=-1/3);var ii=function(e,t){this.ranges=e,this.primIndex=t};ii.prototype.primary=function(){return this.ranges[this.primIndex]},ii.prototype.equals=function(e){if(e==this)return!0;if(e.primIndex!=this.primIndex||e.ranges.length!=this.ranges.length)return!1;for(var t=0;t\u003Cthis.ranges.length;t++){var n=this.ranges[t],r=e.ranges[t];if(!ot(n.anchor,r.anchor)||!ot(n.head,r.head))return!1}return!0},ii.prototype.deepCopy=function(){for(var e=[],t=0;t\u003Cthis.ranges.length;t++)e[t]=new oi(lt(this.ranges[t].anchor),lt(this.ranges[t].head));return new ii(e,this.primIndex)},ii.prototype.somethingSelected=function(){for(var e=0;e\u003Cthis.ranges.length;e++)if(!this.ranges[e].empty())return!0;return!1},ii.prototype.contains=function(e,t){t=t||e;for(var n=0;n\u003Cthis.ranges.length;n++){var r=this.ranges[n];if(0\u003C=it(t,r.from())&&it(e,r.to())\u003C=0)return n}return-1};var oi=function(e,t){this.anchor=e,this.head=t};function li(e,t,n){var r=e&&e.options.selectionsMayTouch,e=t[n];t.sort(function(e,t){return it(e.from(),t.from())}),n=R(t,e);for(var i=1;i\u003Ct.length;i++){var o,l=t[i],s=t[i-1],a=it(s.to(),l.from());(r&&!l.empty()?0\u003Ca:0\u003C=a)&&(o=at(s.from(),l.from()),a=st(s.to(),l.to()),s=s.empty()?l.from()==l.head:s.from()==s.head,i\u003C=n&&--n,t.splice(--i,2,new oi(s?a:o,s?o:a)))}return new ii(t,n)}function si(e,t){return new ii([new oi(e,t||e)],0)}function ai(e){return e.text?rt(e.from.line+e.text.length-1,Y(e.text).length+(1==e.text.length?e.from.ch:0)):e.to}function ui(e,t){if(it(e,t.from)\u003C0)return e;if(it(e,t.to)\u003C=0)return ai(t);var n=e.line+t.text.length-(t.to.line-t.from.line)-1,r=e.ch;return e.line==t.to.line&&(r+=ai(t).ch-t.to.ch),rt(n,r)}function ci(e,t){for(var n=[],r=0;r\u003Ce.sel.ranges.length;r++){var i=e.sel.ranges[r];n.push(new oi(ui(i.anchor,t),ui(i.head,t)))}return li(e.cm,n,e.sel.primIndex)}function hi(e,t,n){return e.line==t.line?rt(n.line,e.ch-t.ch+n.ch):rt(n.line+(e.line-t.line),e.ch)}function di(e){e.doc.mode=Ue(e.options,e.doc.modeOption),fi(e)}function fi(e){e.doc.iter(function(e){e.stateAfter&&(e.stateAfter=null),e.styles&&(e.styles=null)}),e.doc.modeFrontier=e.doc.highlightFrontier=e.doc.first,zr(e,100),e.state.modeGen++,e.curOp&&tr(e)}function pi(e,t){return 0==t.from.ch&&0==t.to.ch&&\\\"\\\"==Y(t.text)&&(!e.cm||e.cm.options.wholeLineUpdateBefore)}function gi(e,o,t,l){function i(e){return t?t[e]:null}function n(e,t,n){var r,i;r=t,i=n,t=l,(n=e).text=r,n.stateAfter&&(n.stateAfter=null),n.styles&&(n.styles=null),null!=n.order&&(n.order=null),Ot(n),Dt(n,i),(t=t?t(n):1)!=n.height&&Qe(n,t),ln(e,\\\"change\\\",e,o)}function r(e,t){for(var n=[],r=e;r\u003Ct;++r)n.push(new Xt(c[r],i(r),l));return n}var s,a=o.from,u=o.to,c=o.text,h=$e(e,a.line),d=$e(e,u.line),f=Y(c),p=i(c.length-1),g=u.line-a.line;o.full?(e.insert(0,r(0,c.length)),e.remove(c.length,e.size-c.length)):pi(e,o)?(s=r(0,c.length-1),n(d,d.text,p),g&&e.remove(a.line,g),s.length&&e.insert(a.line,s)):h==d?1==c.length?n(h,h.text.slice(0,a.ch)+f+h.text.slice(u.ch),p):((s=r(1,c.length-1)).push(new Xt(f+h.text.slice(u.ch),p,l)),n(h,h.text.slice(0,a.ch)+c[0],i(0)),e.insert(a.line+1,s)):1==c.length?(n(h,h.text.slice(0,a.ch)+c[0]+d.text.slice(u.ch),i(0)),e.remove(a.line+1,g)):(n(h,h.text.slice(0,a.ch)+c[0],i(0)),n(d,f+d.text.slice(u.ch),p),p=r(1,c.length-1),1\u003Cg&&e.remove(a.line+1,g-1),e.insert(a.line+1,p)),ln(e,\\\"change\\\",e,o)}function mi(e,s,a){!function e(t,n,r){if(t.linked)for(var i=0;i\u003Ct.linked.length;++i){var o,l=t.linked[i];l.doc!=n&&(o=r&&l.sharedHist,a&&!o||(s(l.doc,o),e(l.doc,t,o)))}}(e,null,!0)}function vi(e,t){if(t.cm)throw new Error(\\\"This document is already in use.\\\");Qn((e.doc=t).cm=e),di(e),yi(e),e.options.lineWrapping||jt(e),e.options.mode=t.modeOption,tr(e)}function yi(e){(\\\"rtl\\\"==e.doc.direction?D:L)(e.display.lineDiv,\\\"CodeMirror-rtl\\\")}function bi(e){this.done=[],this.undone=[],this.undoDepth=1/0,this.lastModTime=this.lastSelTime=0,this.lastOp=this.lastSelOp=null,this.lastOrigin=this.lastSelOrigin=null,this.generation=this.maxGeneration=e||1}function wi(e,t){var n={from:lt(t.from),to:ai(t),text:qe(e,t.from,t.to)};return ki(e,n,t.from.line,t.to.line+1),mi(e,function(e){return ki(e,n,t.from.line,t.to.line+1),0},!0),n}function xi(e){for(;e.length;){if(!Y(e).ranges)break;e.pop()}}function Ci(e,t,n,r){var i=e.history;i.undone.length=0;var o,l,s=+new Date;if((i.lastOp==r||i.lastOrigin==t.origin&&t.origin&&(\\\"+\\\"==t.origin.charAt(0)&&i.lastModTime>s-(e.cm?e.cm.options.historyEventDelay:500)||\\\"*\\\"==t.origin.charAt(0)))&&(o=(a=i).lastOp==r?(xi(a.done),Y(a.done)):a.done.length&&!Y(a.done).ranges?Y(a.done):1\u003Ca.done.length&&!a.done[a.done.length-2].ranges?(a.done.pop(),Y(a.done)):void 0))l=Y(o.changes),0==it(t.from,t.to)&&0==it(t.from,l.to)?l.to=ai(t):o.changes.push(wi(e,t));else{var a=Y(i.done);for(a&&a.ranges||Li(e.sel,i.done),o={changes:[wi(e,t)],generation:i.generation},i.done.push(o);i.done.length>i.undoDepth;)i.done.shift(),i.done[0].ranges||i.done.shift()}i.done.push(n),i.generation=++i.maxGeneration,i.lastModTime=i.lastSelTime=s,i.lastOp=i.lastSelOp=r,i.lastOrigin=i.lastSelOrigin=t.origin,l||xe(e,\\\"historyAdded\\\")}function Si(e,t,n,r){var i,o,l,s=e.history,a=r&&r.origin;n==s.lastSelOp||a&&s.lastSelOrigin==a&&(s.lastModTime==s.lastSelTime&&s.lastOrigin==a||(i=e,o=a,l=Y(s.done),e=t,\\\"*\\\"==(o=o.charAt(0))||\\\"+\\\"==o&&l.ranges.length==e.ranges.length&&l.somethingSelected()==e.somethingSelected()&&new Date-i.history.lastSelTime\u003C=(i.cm?i.cm.options.historyEventDelay:500)))?s.done[s.done.length-1]=t:Li(t,s.done),s.lastSelTime=+new Date,s.lastSelOrigin=a,s.lastSelOp=n,r&&!1!==r.clearRedo&&xi(s.undone)}function Li(e,t){var n=Y(t);n&&n.ranges&&n.equals(e)||t.push(e)}function ki(t,n,e,r){var i=n[\\\"spans_\\\"+t.id],o=0;t.iter(Math.max(t.first,e),Math.min(t.first+t.size,r),function(e){e.markedSpans&&((i=i||(n[\\\"spans_\\\"+t.id]={}))[o]=e.markedSpans),++o})}function Ti(e,t){var n=t[\\\"spans_\\\"+e.id];if(!n)return null;for(var r=[],i=0;i\u003Ct.text.length;++i)r.push(function(e){if(!e)return null;for(var t,n=0;n\u003Ce.length;++n)e[n].marker.explicitlyCleared?t=t||e.slice(0,n):t&&t.push(e[n]);return t?t.length?t:null:e}(n[i]));return r}function Mi(e,t){var n=Ti(e,t),r=Nt(e,t);if(!n)return r;if(!r)return n;for(var i=0;i\u003Cn.length;++i){var o=n[i],l=r[i];if(o&&l)e:for(var s=0;s\u003Cl.length;++s){for(var a=l[s],u=0;u\u003Co.length;++u)if(o[u].marker==a.marker)continue e;o.push(a)}else l&&(n[i]=l)}return n}function Ni(e,t,n){for(var r=[],i=0;i\u003Ce.length;++i){var o=e[i];if(o.ranges)r.push(n?ii.prototype.deepCopy.call(o):o);else{var l=o.changes,s=[];r.push({changes:s});for(var a=0;a\u003Cl.length;++a){var u,c=l[a];if(s.push({from:c.from,to:c.to,text:c.text}),t)for(var h in c)(u=h.match(/^spans_(\\\\d+)$/))&&-1\u003CR(t,Number(u[1]))&&(Y(s)[h]=c[h],delete c[h])}}}return r}function Ai(e,t,n,r){if(r){r=e.anchor;return n&&((e=it(t,r)\u003C0)!=it(n,r)\u003C0?(r=t,t=n):e!=it(t,n)\u003C0&&(t=n)),new oi(r,t)}return new oi(n||t,t)}function Oi(e,t,n,r,i){null==i&&(i=e.cm&&(e.cm.display.shift||e.extend)),Ei(e,new ii([Ai(e.sel.primary(),t,n,i)],0),r)}function Di(e,t,n){for(var r=[],i=e.cm&&(e.cm.display.shift||e.extend),o=0;o\u003Ce.sel.ranges.length;o++)r[o]=Ai(e.sel.ranges[o],t[o],null,i);Ei(e,li(e.cm,r,e.sel.primIndex),n)}function Wi(e,t,n,r){var i=e.sel.ranges.slice(0);i[t]=n,Ei(e,li(e.cm,i,e.sel.primIndex),r)}function Hi(e,t,n,r){Ei(e,si(t,n),r)}function Fi(e,t,n){var r=e.history.done,i=Y(r);i&&i.ranges?Pi(e,r[r.length-1]=t,n):Ei(e,t,n)}function Ei(e,t,n){Pi(e,t,n),Si(e,e.sel,e.cm?e.cm.curOp.id:NaN,n)}function Pi(e,t,n){var r,i;(Le(e,\\\"beforeSelectionChange\\\")||e.cm&&Le(e.cm,\\\"beforeSelectionChange\\\"))&&(r=e,i=n,i={ranges:(o=t).ranges,update:function(e){this.ranges=[];for(var t=0;t\u003Ce.length;t++)this.ranges[t]=new oi(ct(r,e[t].anchor),ct(r,e[t].head))},origin:i&&i.origin},xe(r,\\\"beforeSelectionChange\\\",r,i),r.cm&&xe(r.cm,\\\"beforeSelectionChange\\\",r.cm,i),t=i.ranges!=o.ranges?li(r.cm,i.ranges,i.ranges.length-1):o);var o=n&&n.bias||(it(t.primary().head,e.sel.primary().head)\u003C0?-1:1);Ii(e,zi(e,t,o,!0)),n&&!1===n.scroll||!e.cm||wr(e.cm)}function Ii(e,t){t.equals(e.sel)||(e.sel=t,e.cm&&(e.cm.curOp.updateInput=1,e.cm.curOp.selectionChanged=!0,Se(e.cm)),ln(e,\\\"cursorActivity\\\",e))}function Ri(e){Ii(e,zi(e,e.sel,null,!1))}function zi(e,t,n,r){for(var i,o=0;o\u003Ct.ranges.length;o++){var l=t.ranges[o],s=t.ranges.length==e.sel.ranges.length&&e.sel.ranges[o],a=Gi(e,l.anchor,s&&s.anchor,n,r),s=Gi(e,l.head,s&&s.head,n,r);!i&&a==l.anchor&&s==l.head||((i=i||t.ranges.slice(0,o))[o]=new oi(a,s))}return i?li(e.cm,i,t.primIndex):t}function Bi(e,t,n,r,i){var o=$e(e,t.line);if(o.markedSpans)for(var l=0;l\u003Co.markedSpans.length;++l){var s=o.markedSpans[l],a=s.marker,u=\\\"selectLeft\\\"in a?!a.selectLeft:a.inclusiveLeft,c=\\\"selectRight\\\"in a?!a.selectRight:a.inclusiveRight;if((null==s.from||(u?s.from\u003C=t.ch:s.from\u003Ct.ch))&&(null==s.to||(c?s.to>=t.ch:s.to>t.ch))){if(i&&(xe(a,\\\"beforeCursorEnter\\\"),a.explicitlyCleared)){if(o.markedSpans){--l;continue}break}if(a.atomic){if(n){var h=a.find(r\u003C0?1:-1),s=void 0;if((r\u003C0?c:u)&&(h=Ui(e,h,-r,h&&h.line==t.line?o:null)),h&&h.line==t.line&&(s=it(h,n))&&(r\u003C0?s\u003C0:0\u003Cs))return Bi(e,h,t,r,i)}a=a.find(r\u003C0?-1:1);return(r\u003C0?u:c)&&(a=Ui(e,a,r,a.line==t.line?o:null)),a?Bi(e,a,t,r,i):null}}}return t}function Gi(e,t,n,r,i){r=r||1,r=Bi(e,t,n,r,i)||!i&&Bi(e,t,n,r,!0)||Bi(e,t,n,-r,i)||!i&&Bi(e,t,n,-r,!0);return r||(e.cantEdit=!0,rt(e.first,0))}function Ui(e,t,n,r){return n\u003C0&&0==t.ch?t.line>e.first?ct(e,rt(t.line-1)):null:0\u003Cn&&t.ch==(r||$e(e,t.line)).text.length?t.line\u003Ce.first+e.size-1?rt(t.line+1,0):null:new rt(t.line,t.ch+n)}function Vi(e){e.setSelection(rt(e.firstLine(),0),rt(e.lastLine()),G)}function Ki(i,e,t){var o={canceled:!1,from:e.from,to:e.to,text:e.text,origin:e.origin,cancel:function(){return o.canceled=!0}};return t&&(o.update=function(e,t,n,r){e&&(o.from=ct(i,e)),t&&(o.to=ct(i,t)),n&&(o.text=n),void 0!==r&&(o.origin=r)}),xe(i,\\\"beforeChange\\\",i,o),i.cm&&xe(i.cm,\\\"beforeChange\\\",i.cm,o),o.canceled?(i.cm&&(i.cm.curOp.updateInput=2),null):{from:o.from,to:o.to,text:o.text,origin:o.origin}}function ji(e,t,n){if(e.cm){if(!e.cm.curOp)return Pr(e.cm,ji)(e,t,n);if(e.cm.state.suppressEdits)return}if(!(Le(e,\\\"beforeChange\\\")||e.cm&&Le(e.cm,\\\"beforeChange\\\"))||(t=Ki(e,t,!0))){var r=Lt&&!n&&function(e,t,n){var r=null;if(e.iter(t.line,n.line+1,function(e){if(e.markedSpans)for(var t=0;t\u003Ce.markedSpans.length;++t){var n=e.markedSpans[t].marker;!n.readOnly||r&&-1!=R(r,n)||(r=r||[]).push(n)}}),!r)return null;for(var i=[{from:t,to:n}],o=0;o\u003Cr.length;++o)for(var l=r[o],s=l.find(0),a=0;a\u003Ci.length;++a){var u,c,h,d=i[a];it(d.to,s.from)\u003C0||0\u003Cit(d.from,s.to)||(u=[a,1],c=it(d.from,s.from),h=it(d.to,s.to),(c\u003C0||!l.inclusiveLeft&&!c)&&u.push({from:d.from,to:s.from}),(0\u003Ch||!l.inclusiveRight&&!h)&&u.push({from:s.to,to:d.to}),i.splice.apply(i,u),a+=u.length-3)}return i}(e,t.from,t.to);if(r)for(var i=r.length-1;0\u003C=i;--i)Xi(e,{from:r[i].from,to:r[i].to,text:i?[\\\"\\\"]:t.text,origin:t.origin});else Xi(e,t)}}function Xi(e,n){var t,r;1==n.text.length&&\\\"\\\"==n.text[0]&&0==it(n.from,n.to)||(t=ci(e,n),Ci(e,n,t,e.cm?e.cm.curOp.id:NaN),$i(e,n,t,Nt(e,n)),r=[],mi(e,function(e,t){t||-1!=R(r,e.history)||(Ji(e.history,n),r.push(e.history)),$i(e,n,null,Nt(e,n))}))}function Yi(i,o,e){var t=i.cm&&i.cm.state.suppressEdits;if(!t||e){for(var l,n=i.history,r=i.sel,s=\\\"undo\\\"==o?n.done:n.undone,a=\\\"undo\\\"==o?n.undone:n.done,u=0;u\u003Cs.length&&(l=s[u],e?!l.ranges||l.equals(i.sel):l.ranges);u++);if(u!=s.length){for(n.lastOrigin=n.lastSelOrigin=null;;){if(!(l=s.pop()).ranges){if(t)return void s.push(l);break}if(Li(l,a),e&&!l.equals(i.sel))return void Ei(i,l,{clearRedo:!1});r=l}var c=[];Li(r,a),a.push({changes:c,generation:n.generation}),n.generation=l.generation||++n.maxGeneration;for(var h=Le(i,\\\"beforeChange\\\")||i.cm&&Le(i.cm,\\\"beforeChange\\\"),d=l.changes.length-1;0\u003C=d;--d){var f=function(e){var n=l.changes[e];if(n.origin=o,h&&!Ki(i,n,!1))return s.length=0,{};c.push(wi(i,n));var t=e?ci(i,n):Y(s);$i(i,n,t,Mi(i,n)),!e&&i.cm&&i.cm.scrollIntoView({from:n.from,to:ai(n)});var r=[];mi(i,function(e,t){t||-1!=R(r,e.history)||(Ji(e.history,n),r.push(e.history)),$i(e,n,null,Mi(e,n))})}(d);if(f)return f.v}}}}function _i(e,t){if(0!=t&&(e.first+=t,e.sel=new ii(_(e.sel.ranges,function(e){return new oi(rt(e.anchor.line+t,e.anchor.ch),rt(e.head.line+t,e.head.ch))}),e.sel.primIndex),e.cm)){tr(e.cm,e.first,e.first-t,t);for(var n=e.cm.display,r=n.viewFrom;r\u003Cn.viewTo;r++)nr(e.cm,r,\\\"gutter\\\")}}function $i(e,t,n,r){if(e.cm&&!e.cm.curOp)return Pr(e.cm,$i)(e,t,n,r);var i;t.to.line\u003Ce.first?_i(e,t.text.length-1-(t.to.line-t.from.line)):t.from.line>e.lastLine()||(t.from.line\u003Ce.first&&(_i(e,i=t.text.length-1-(e.first-t.from.line)),t={from:rt(e.first,0),to:rt(t.to.line+i,t.to.ch),text:[Y(t.text)],origin:t.origin}),i=e.lastLine(),t.to.line>i&&(t={from:t.from,to:rt(i,$e(e,i).text.length),text:[t.text[0]],origin:t.origin}),t.removed=qe(e,t.from,t.to),n=n||ci(e,t),e.cm?function(e,t,n){var r=e.doc,i=e.display,o=t.from,l=t.to,s=!1,a=o.line;e.options.lineWrapping||(a=Je(zt($e(r,o.line))),r.iter(a,l.line+1,function(e){if(e==i.maxLine)return s=!0}));-1\u003Cr.sel.contains(t.from,t.to)&&Se(e);gi(r,t,n,Zn(e)),e.options.lineWrapping||(r.iter(a,o.line+t.text.length,function(e){var t=Kt(e);t>i.maxLineLength&&(i.maxLine=e,i.maxLineLength=t,i.maxLineChanged=!0,s=!1)}),s&&(e.curOp.updateMaxLine=!0));(function(e,t){if(e.modeFrontier=Math.min(e.modeFrontier,t),!(e.highlightFrontier\u003Ct-10)){for(var n=e.first,r=t-1;n\u003Cr;r--){var i=$e(e,r).stateAfter;if(i&&(!(i instanceof dt)||r+i.lookAhead\u003Ct)){n=r+1;break}}e.highlightFrontier=Math.min(e.highlightFrontier,n)}})(r,o.line),zr(e,400);a=t.text.length-(l.line-o.line)-1;t.full?tr(e):o.line!=l.line||1!=t.text.length||pi(e.doc,t)?tr(e,o.line,l.line+1,a):nr(e,o.line,\\\"text\\\");r=Le(e,\\\"changes\\\"),a=Le(e,\\\"change\\\");(a||r)&&(t={from:o,to:l,text:t.text,removed:t.removed,origin:t.origin},a&&ln(e,\\\"change\\\",e,t),r&&(e.curOp.changeObjs||(e.curOp.changeObjs=[])).push(t));e.display.selForContextMenu=null}(e.cm,t,r):gi(e,t,r),Pi(e,n,G),e.cantEdit&&Gi(e,rt(e.firstLine(),0))&&(e.cantEdit=!1))}function qi(e,t,n,r,i){var o;it(r=r||n,n)\u003C0&&(n=(o=[r,n])[0],r=o[1]),\\\"string\\\"==typeof t&&(t=e.splitLines(t)),ji(e,{from:n,to:r,text:t,origin:i})}function Zi(e,t,n,r){n\u003Ce.line?e.line+=r:t\u003Ce.line&&(e.line=t,e.ch=0)}function Qi(e,t,n,r){for(var i=0;i\u003Ce.length;++i){var o=e[i],l=!0;if(o.ranges){o.copied||((o=e[i]=o.deepCopy()).copied=!0);for(var s=0;s\u003Co.ranges.length;s++)Zi(o.ranges[s].anchor,t,n,r),Zi(o.ranges[s].head,t,n,r)}else{for(var a=0;a\u003Co.changes.length;++a){var u=o.changes[a];if(n\u003Cu.from.line)u.from=rt(u.from.line+r,u.from.ch),u.to=rt(u.to.line+r,u.to.ch);else if(t\u003C=u.to.line){l=!1;break}}l||(e.splice(0,i+1),i=0)}}}function Ji(e,t){var n=t.from.line,r=t.to.line,t=t.text.length-(r-n)-1;Qi(e.done,n,r,t),Qi(e.undone,n,r,t)}function eo(e,t,n,r){var i=t,o=t;return\\\"number\\\"==typeof t?o=$e(e,ut(e,t)):i=Je(t),null==i?null:(r(o,i)&&e.cm&&nr(e.cm,i,n),o)}function to(e){this.lines=e,this.parent=null;for(var t=0,n=0;n\u003Ce.length;++n)e[n].parent=this,t+=e[n].height;this.height=t}function no(e){this.children=e;for(var t=0,n=0,r=0;r\u003Ce.length;++r){var i=e[r];t+=i.chunkSize(),n+=i.height,i.parent=this}this.size=t,this.height=n,this.parent=null}oi.prototype.from=function(){return at(this.anchor,this.head)},oi.prototype.to=function(){return st(this.anchor,this.head)},oi.prototype.empty=function(){return this.head.line==this.anchor.line&&this.head.ch==this.anchor.ch},to.prototype={chunkSize:function(){return this.lines.length},removeInner:function(e,t){for(var n,r=e,i=e+t;r\u003Ci;++r){var o=this.lines[r];this.height-=o.height,(n=o).parent=null,Ot(n),ln(o,\\\"delete\\\")}this.lines.splice(e,t)},collapse:function(e){e.push.apply(e,this.lines)},insertInner:function(e,t,n){this.height+=n,this.lines=this.lines.slice(0,e).concat(t).concat(this.lines.slice(e));for(var r=0;r\u003Ct.length;++r)t[r].parent=this},iterN:function(e,t,n){for(var r=e+t;e\u003Cr;++e)if(n(this.lines[e]))return!0}},no.prototype={chunkSize:function(){return this.size},removeInner:function(e,t){this.size-=t;for(var n,r=0;r\u003Cthis.children.length;++r){var i=this.children[r],o=i.chunkSize();if(e\u003Co){var l=Math.min(t,o-e),s=i.height;if(i.removeInner(e,l),this.height-=s-i.height,o==l&&(this.children.splice(r--,1),i.parent=null),0==(t-=l))break;e=0}else e-=o}this.size-t\u003C25&&(1\u003Cthis.children.length||!(this.children[0]instanceof to))&&(n=[],this.collapse(n),this.children=[new to(n)],this.children[0].parent=this)},collapse:function(e){for(var t=0;t\u003Cthis.children.length;++t)this.children[t].collapse(e)},insertInner:function(e,t,n){this.size+=t.length,this.height+=n;for(var r=0;r\u003Cthis.children.length;++r){var i=this.children[r],o=i.chunkSize();if(e\u003C=o){if(i.insertInner(e,t,n),i.lines&&50\u003Ci.lines.length){for(var l=i.lines.length%25+25,s=l;s\u003Ci.lines.length;){var a=new to(i.lines.slice(s,s+=25));i.height-=a.height,this.children.splice(++r,0,a),a.parent=this}i.lines=i.lines.slice(0,l),this.maybeSpill()}break}e-=o}},maybeSpill:function(){if(!(this.children.length\u003C=10)){var e=this;do{var t,n=new no(e.children.splice(e.children.length-5,5))}while(e.parent?(e.size-=n.size,e.height-=n.height,t=R(e.parent.children,e),e.parent.children.splice(t+1,0,n)):(((t=new no(e.children)).parent=e).children=[t,n],e=t),n.parent=e.parent,10\u003Ce.children.length);e.parent.maybeSpill()}},iterN:function(e,t,n){for(var r=0;r\u003Cthis.children.length;++r){var i=this.children[r],o=i.chunkSize();if(e\u003Co){var l=Math.min(t,o-e);if(i.iterN(e,l,n))return!0;if(0==(t-=l))break;e=0}else e-=o}}};function ro(e,t,n){if(n)for(var r in n)n.hasOwnProperty(r)&&(this[r]=n[r]);this.doc=e,this.node=t}function io(e,t,n){Vt(t)\u003C(e.curOp&&e.curOp.scrollTop||e.doc.scrollTop)&&br(e,n)}ro.prototype.clear=function(){var e=this.doc.cm,t=this.line.widgets,n=this.line,r=Je(n);if(null!=r&&t){for(var i=0;i\u003Ct.length;++i)t[i]==this&&t.splice(i--,1);t.length||(n.widgets=null);var o=gn(this);Qe(n,Math.max(0,n.height-o)),e&&(Er(e,function(){io(e,n,-o),nr(e,r,\\\"widget\\\")}),ln(e,\\\"lineWidgetCleared\\\",e,this,r))}},ro.prototype.changed=function(){var e=this,t=this.height,n=this.doc.cm,r=this.line;this.height=null;var i=gn(this)-t;i&&(Ut(this.doc,r)||Qe(r,r.height+i),n&&Er(n,function(){n.curOp.forceUpdate=!0,io(n,r,i),ln(n,\\\"lineWidgetChanged\\\",n,e,Je(r))}))},ke(ro);var oo=0,lo=function(e,t){this.lines=[],this.type=t,this.doc=e,this.id=++oo};function so(t,n,r,e,i){if(e&&e.shared)return function(e,n,r,i,o){(i=E(i)).shared=!1;var l=[so(e,n,r,i,o)],s=l[0],a=i.widgetNode;return mi(e,function(e){a&&(i.widgetNode=a.cloneNode(!0)),l.push(so(e,ct(e,n),ct(e,r),i,o));for(var t=0;t\u003Ce.linked.length;++t)if(e.linked[t].isParent)return;s=Y(l)}),new ao(l,s)}(t,n,r,e,i);if(t.cm&&!t.cm.curOp)return Pr(t.cm,so)(t,n,r,e,i);var o=new lo(t,i),i=it(n,r);if(e&&E(e,o,!1),0\u003Ci||0==i&&!1!==o.clearWhenEmpty)return o;if(o.replacedWith&&(o.collapsed=!0,o.widgetNode=N(\\\"span\\\",[o.replacedWith],\\\"CodeMirror-widget\\\"),e.handleMouseEvents||o.widgetNode.setAttribute(\\\"cm-ignore-events\\\",\\\"true\\\"),e.insertLeft&&(o.widgetNode.insertLeft=!0)),o.collapsed){if(Rt(t,n.line,n,r,o)||n.line!=r.line&&Rt(t,r.line,n,r,o))throw new Error(\\\"Inserting collapsed marker partially overlapping an existing one\\\");kt=!0}o.addToHistory&&Ci(t,{from:n,to:r,origin:\\\"markText\\\"},t.sel,NaN);var l,s=n.line,a=t.cm;if(t.iter(s,r.line+1,function(e){var t;a&&o.collapsed&&!a.options.lineWrapping&&zt(e)==a.display.maxLine&&(l=!0),o.collapsed&&s!=n.line&&Qe(e,0),t=e,e=new Tt(o,s==n.line?n.ch:null,s==r.line?r.ch:null),t.markedSpans=t.markedSpans?t.markedSpans.concat([e]):[e],e.marker.attachLine(t),++s}),o.collapsed&&t.iter(n.line,r.line+1,function(e){Ut(t,e)&&Qe(e,0)}),o.clearOnEnter&&ye(o,\\\"beforeCursorEnter\\\",function(){return o.clear()}),o.readOnly&&(Lt=!0,(t.history.done.length||t.history.undone.length)&&t.clearHistory()),o.collapsed&&(o.id=++oo,o.atomic=!0),a){if(l&&(a.curOp.updateMaxLine=!0),o.collapsed)tr(a,n.line,r.line+1);else if(o.className||o.startStyle||o.endStyle||o.css||o.attributes||o.title)for(var u=n.line;u\u003C=r.line;u++)nr(a,u,\\\"text\\\");o.atomic&&Ri(a.doc),ln(a,\\\"markerAdded\\\",a,o)}return o}lo.prototype.clear=function(){if(!this.explicitlyCleared){var e,t=this.doc.cm,n=t&&!t.curOp;n&&Hr(t),!Le(this,\\\"clear\\\")||(e=this.find())&&ln(this,\\\"clear\\\",e.from,e.to);for(var r=null,i=null,o=0;o\u003Cthis.lines.length;++o){var l=this.lines[o],s=Mt(l.markedSpans,this);t&&!this.collapsed?nr(t,Je(l),\\\"text\\\"):t&&(null!=s.to&&(i=Je(l)),null!=s.from&&(r=Je(l))),l.markedSpans=function(e,t){for(var n,r=0;r\u003Ce.length;++r)e[r]!=t&&(n=n||[]).push(e[r]);return n}(l.markedSpans,s),null==s.from&&this.collapsed&&!Ut(this.doc,l)&&t&&Qe(l,Yn(t.display))}if(t&&this.collapsed&&!t.options.lineWrapping)for(var a=0;a\u003Cthis.lines.length;++a){var u=zt(this.lines[a]),c=Kt(u);c>t.display.maxLineLength&&(t.display.maxLine=u,t.display.maxLineLength=c,t.display.maxLineChanged=!0)}null!=r&&t&&this.collapsed&&tr(t,r,i+1),this.lines.length=0,this.explicitlyCleared=!0,this.atomic&&this.doc.cantEdit&&(this.doc.cantEdit=!1,t&&Ri(t.doc)),t&&ln(t,\\\"markerCleared\\\",t,this,r,i),n&&Fr(t),this.parent&&this.parent.clear()}},lo.prototype.find=function(e,t){var n,r;null==e&&\\\"bookmark\\\"==this.type&&(e=1);for(var i=0;i\u003Cthis.lines.length;++i){var o=this.lines[i],l=Mt(o.markedSpans,this);if(null!=l.from&&(n=rt(t?o:Je(o),l.from),-1==e))return n;if(null!=l.to&&(r=rt(t?o:Je(o),l.to),1==e))return r}return n&&{from:n,to:r}},lo.prototype.changed=function(){var n=this,r=this.find(-1,!0),i=this,o=this.doc.cm;r&&o&&Er(o,function(){var e=r.line,t=Je(r.line),t=kn(o,t);t&&(Dn(t),o.curOp.selectionChanged=o.curOp.forceUpdate=!0),o.curOp.updateMaxLine=!0,Ut(i.doc,e)||null==i.height||(t=i.height,i.height=null,(t=gn(i)-t)&&Qe(e,e.height+t)),ln(o,\\\"markerChanged\\\",o,n)})},lo.prototype.attachLine=function(e){var t;!this.lines.length&&this.doc.cm&&((t=this.doc.cm.curOp).maybeHiddenMarkers&&-1!=R(t.maybeHiddenMarkers,this)||(t.maybeUnhiddenMarkers||(t.maybeUnhiddenMarkers=[])).push(this)),this.lines.push(e)},lo.prototype.detachLine=function(e){this.lines.splice(R(this.lines,e),1),!this.lines.length&&this.doc.cm&&((e=this.doc.cm.curOp).maybeHiddenMarkers||(e.maybeHiddenMarkers=[])).push(this)},ke(lo);var ao=function(e,t){this.markers=e,this.primary=t;for(var n=0;n\u003Ce.length;++n)e[n].parent=this};function uo(e){return e.findMarks(rt(e.first,0),e.clipPos(rt(e.lastLine())),function(e){return e.parent})}ao.prototype.clear=function(){if(!this.explicitlyCleared){this.explicitlyCleared=!0;for(var e=0;e\u003Cthis.markers.length;++e)this.markers[e].clear();ln(this,\\\"clear\\\")}},ao.prototype.find=function(e,t){return this.primary.find(e,t)},ke(ao);var co=0,ho=function(e,t,n,r,i){if(!(this instanceof ho))return new ho(e,t,n,r,i);null==n&&(n=0),no.call(this,[new to([new Xt(\\\"\\\",null)])]),this.first=n,this.scrollTop=this.scrollLeft=0,this.cantEdit=!1,this.cleanGeneration=1;n=rt(this.modeFrontier=this.highlightFrontier=n,0);this.sel=si(n),this.history=new bi(null),this.id=++co,this.modeOption=t,this.lineSep=r,this.direction=\\\"rtl\\\"==i?\\\"rtl\\\":\\\"ltr\\\",this.extend=!1,\\\"string\\\"==typeof e&&(e=this.splitLines(e)),gi(this,{from:n,to:n,text:e}),Ei(this,si(n),G)};ho.prototype=q(no.prototype,{constructor:ho,iter:function(e,t,n){n?this.iterN(e-this.first,t-e,n):this.iterN(this.first,this.first+this.size,e)},insert:function(e,t){for(var n=0,r=0;r\u003Ct.length;++r)n+=t[r].height;this.insertInner(e-this.first,t,n)},remove:function(e,t){this.removeInner(e-this.first,t)},getValue:function(e){var t=Ze(this,this.first,this.first+this.size);return!1===e?t:t.join(e||this.lineSeparator())},setValue:Rr(function(e){var t=rt(this.first,0),n=this.first+this.size-1;ji(this,{from:t,to:rt(n,$e(this,n).text.length),text:this.splitLines(e),origin:\\\"setValue\\\",full:!0},!0),this.cm&&xr(this.cm,0,0),Ei(this,si(t),G)}),replaceRange:function(e,t,n,r){qi(this,e,t=ct(this,t),n=n?ct(this,n):t,r)},getRange:function(e,t,n){t=qe(this,ct(this,e),ct(this,t));return!1===n?t:t.join(n||this.lineSeparator())},getLine:function(e){e=this.getLineHandle(e);return e&&e.text},getLineHandle:function(e){if(tt(this,e))return $e(this,e)},getLineNumber:Je,getLineHandleVisualStart:function(e){return\\\"number\\\"==typeof e&&(e=$e(this,e)),zt(e)},lineCount:function(){return this.size},firstLine:function(){return this.first},lastLine:function(){return this.first+this.size-1},clipPos:function(e){return ct(this,e)},getCursor:function(e){var t=this.sel.primary(),t=null==e||\\\"head\\\"==e?t.head:\\\"anchor\\\"==e?t.anchor:\\\"end\\\"==e||\\\"to\\\"==e||!1===e?t.to():t.from();return t},listSelections:function(){return this.sel.ranges},somethingSelected:function(){return this.sel.somethingSelected()},setCursor:Rr(function(e,t,n){Hi(this,ct(this,\\\"number\\\"==typeof e?rt(e,t||0):e),null,n)}),setSelection:Rr(function(e,t,n){Hi(this,ct(this,e),ct(this,t||e),n)}),extendSelection:Rr(function(e,t,n){Oi(this,ct(this,e),t&&ct(this,t),n)}),extendSelections:Rr(function(e,t){Di(this,ht(this,e),t)}),extendSelectionsBy:Rr(function(e,t){Di(this,ht(this,_(this.sel.ranges,e)),t)}),setSelections:Rr(function(e,t,n){if(e.length){for(var r=[],i=0;i\u003Ce.length;i++)r[i]=new oi(ct(this,e[i].anchor),ct(this,e[i].head));null==t&&(t=Math.min(e.length-1,this.sel.primIndex)),Ei(this,li(this.cm,r,t),n)}}),addSelection:Rr(function(e,t,n){var r=this.sel.ranges.slice(0);r.push(new oi(ct(this,e),ct(this,t||e))),Ei(this,li(this.cm,r,r.length-1),n)}),getSelection:function(e){for(var t=this.sel.ranges,n=0;n\u003Ct.length;n++)var r=qe(this,t[n].from(),t[n].to()),i=i?i.concat(r):r;return!1===e?i:i.join(e||this.lineSeparator())},getSelections:function(e){for(var t=[],n=this.sel.ranges,r=0;r\u003Cn.length;r++){var i=qe(this,n[r].from(),n[r].to());!1!==e&&(i=i.join(e||this.lineSeparator())),t[r]=i}return t},replaceSelection:function(e,t,n){for(var r=[],i=0;i\u003Cthis.sel.ranges.length;i++)r[i]=e;this.replaceSelections(r,t,n||\\\"+input\\\")},replaceSelections:Rr(function(e,t,n){for(var r=[],i=this.sel,o=0;o\u003Ci.ranges.length;o++){var l=i.ranges[o];r[o]={from:l.from(),to:l.to(),text:this.splitLines(e[o]),origin:n}}for(var t=t&&\\\"end\\\"!=t&&function(e,t,n){for(var r=[],i=u=rt(e.first,0),o=0;o\u003Ct.length;o++){var l=t[o],s=hi(l.from,u,i),a=hi(ai(l),u,i),u=l.to,i=a;\\\"around\\\"==n?(l=it((l=e.sel.ranges[o]).head,l.anchor)\u003C0,r[o]=new oi(l?a:s,l?s:a)):r[o]=new oi(s,s)}return new ii(r,e.sel.primIndex)}(this,r,t),s=r.length-1;0\u003C=s;s--)ji(this,r[s]);t?Fi(this,t):this.cm&&wr(this.cm)}),undo:Rr(function(){Yi(this,\\\"undo\\\")}),redo:Rr(function(){Yi(this,\\\"redo\\\")}),undoSelection:Rr(function(){Yi(this,\\\"undo\\\",!0)}),redoSelection:Rr(function(){Yi(this,\\\"redo\\\",!0)}),setExtending:function(e){this.extend=e},getExtending:function(){return this.extend},historySize:function(){for(var e=this.history,t=0,n=0,r=0;r\u003Ce.done.length;r++)e.done[r].ranges||++t;for(var i=0;i\u003Ce.undone.length;i++)e.undone[i].ranges||++n;return{undo:t,redo:n}},clearHistory:function(){var t=this;this.history=new bi(this.history.maxGeneration),mi(this,function(e){return e.history=t.history},!0)},markClean:function(){this.cleanGeneration=this.changeGeneration(!0)},changeGeneration:function(e){return e&&(this.history.lastOp=this.history.lastSelOp=this.history.lastOrigin=null),this.history.generation},isClean:function(e){return this.history.generation==(e||this.cleanGeneration)},getHistory:function(){return{done:Ni(this.history.done),undone:Ni(this.history.undone)}},setHistory:function(e){var t=this.history=new bi(this.history.maxGeneration);t.done=Ni(e.done.slice(0),null,!0),t.undone=Ni(e.undone.slice(0),null,!0)},setGutterMarker:Rr(function(e,n,r){return eo(this,e,\\\"gutter\\\",function(e){var t=e.gutterMarkers||(e.gutterMarkers={});return!(t[n]=r)&&ee(t)&&(e.gutterMarkers=null),1})}),clearGutter:Rr(function(t){var n=this;this.iter(function(e){e.gutterMarkers&&e.gutterMarkers[t]&&eo(n,e,\\\"gutter\\\",function(){return e.gutterMarkers[t]=null,ee(e.gutterMarkers)&&(e.gutterMarkers=null),1})})}),lineInfo:function(e){var t;if(\\\"number\\\"==typeof e){if(!tt(this,e))return null;if(!(e=$e(this,t=e)))return null}else if(null==(t=Je(e)))return null;return{line:t,handle:e,text:e.text,gutterMarkers:e.gutterMarkers,textClass:e.textClass,bgClass:e.bgClass,wrapClass:e.wrapClass,widgets:e.widgets}},addLineClass:Rr(function(e,n,r){return eo(this,e,\\\"gutter\\\"==n?\\\"gutter\\\":\\\"class\\\",function(e){var t=\\\"text\\\"==n?\\\"textClass\\\":\\\"background\\\"==n?\\\"bgClass\\\":\\\"gutter\\\"==n?\\\"gutterClass\\\":\\\"wrapClass\\\";if(e[t]){if(C(r).test(e[t]))return;e[t]+=\\\" \\\"+r}else e[t]=r;return 1})}),removeLineClass:Rr(function(e,o,l){return eo(this,e,\\\"gutter\\\"==o?\\\"gutter\\\":\\\"class\\\",function(e){var t=\\\"text\\\"==o?\\\"textClass\\\":\\\"background\\\"==o?\\\"bgClass\\\":\\\"gutter\\\"==o?\\\"gutterClass\\\":\\\"wrapClass\\\",n=e[t];if(n){if(null==l)e[t]=null;else{var r=n.match(C(l));if(!r)return;var i=r.index+r[0].length;e[t]=n.slice(0,r.index)+(r.index&&i!=n.length?\\\" \\\":\\\"\\\")+n.slice(i)||null}return 1}})}),addLineWidget:Rr(function(e,t,n){return e=e,i=new ro(r=this,t,n),(o=r.cm)&&i.noHScroll&&(o.display.alignWidgets=!0),eo(r,e,\\\"widget\\\",function(e){var t=e.widgets||(e.widgets=[]);return null==i.insertAt?t.push(i):t.splice(Math.min(t.length,Math.max(0,i.insertAt)),0,i),i.line=e,o&&!Ut(r,e)&&(t=Vt(e)\u003Cr.scrollTop,Qe(e,e.height+gn(i)),t&&br(o,i.height),o.curOp.forceUpdate=!0),1}),o&&ln(o,\\\"lineWidgetAdded\\\",o,i,\\\"number\\\"==typeof e?e:Je(e)),i;var r,i,o}),removeLineWidget:function(e){e.clear()},markText:function(e,t,n){return so(this,ct(this,e),ct(this,t),n,n&&n.type||\\\"range\\\")},setBookmark:function(e,t){t={replacedWith:t&&(null==t.nodeType?t.widget:t),insertLeft:t&&t.insertLeft,clearWhenEmpty:!1,shared:t&&t.shared,handleMouseEvents:t&&t.handleMouseEvents};return so(this,e=ct(this,e),e,t,\\\"bookmark\\\")},findMarksAt:function(e){var t=[],n=$e(this,(e=ct(this,e)).line).markedSpans;if(n)for(var r=0;r\u003Cn.length;++r){var i=n[r];(null==i.from||i.from\u003C=e.ch)&&(null==i.to||i.to>=e.ch)&&t.push(i.marker.parent||i.marker)}return t},findMarks:function(i,o,l){i=ct(this,i),o=ct(this,o);var s=[],a=i.line;return this.iter(i.line,o.line+1,function(e){var t=e.markedSpans;if(t)for(var n=0;n\u003Ct.length;n++){var r=t[n];null!=r.to&&a==i.line&&i.ch>=r.to||null==r.from&&a!=i.line||null!=r.from&&a==o.line&&r.from>=o.ch||l&&!l(r.marker)||s.push(r.marker.parent||r.marker)}++a}),s},getAllMarks:function(){var r=[];return this.iter(function(e){var t=e.markedSpans;if(t)for(var n=0;n\u003Ct.length;++n)null!=t[n].from&&r.push(t[n].marker)}),r},posFromIndex:function(t){var n,r=this.first,i=this.lineSeparator().length;return this.iter(function(e){e=e.text.length+i;if(t\u003Ce)return n=t,!0;t-=e,++r}),ct(this,rt(r,n))},indexFromPos:function(e){var t=(e=ct(this,e)).ch;if(e.line\u003Cthis.first||e.ch\u003C0)return 0;var n=this.lineSeparator().length;return this.iter(this.first,e.line,function(e){t+=e.text.length+n}),t},copy:function(e){var t=new ho(Ze(this,this.first,this.first+this.size),this.modeOption,this.first,this.lineSep,this.direction);return t.scrollTop=this.scrollTop,t.scrollLeft=this.scrollLeft,t.sel=this.sel,t.extend=!1,e&&(t.history.undoDepth=this.history.undoDepth,t.setHistory(this.getHistory())),t},linkedDoc:function(e){e=e||{};var t=this.first,n=this.first+this.size;null!=e.from&&e.from>t&&(t=e.from),null!=e.to&&e.to\u003Cn&&(n=e.to);t=new ho(Ze(this,t,n),e.mode||this.modeOption,t,this.lineSep,this.direction);return e.sharedHist&&(t.history=this.history),(this.linked||(this.linked=[])).push({doc:t,sharedHist:e.sharedHist}),t.linked=[{doc:this,isParent:!0,sharedHist:e.sharedHist}],function(e,t){for(var n=0;n\u003Ct.length;n++){var r=t[n],i=r.find(),o=e.clipPos(i.from),i=e.clipPos(i.to);it(o,i)&&(i=so(e,o,i,r.primary,r.primary.type),r.markers.push(i),i.parent=r)}}(t,uo(this)),t},unlinkDoc:function(e){if(e instanceof ul&&(e=e.doc),this.linked)for(var t=0;t\u003Cthis.linked.length;++t)if(this.linked[t].doc==e){this.linked.splice(t,1),e.unlinkDoc(this),function(o){for(var e=0;e\u003Co.length;e++)!function(e){var t=o[e],n=[t.primary.doc];mi(t.primary.doc,function(e){return n.push(e)});for(var r=0;r\u003Ct.markers.length;r++){var i=t.markers[r];-1==R(n,i.doc)&&(i.parent=null,t.markers.splice(r--,1))}}(e)}(uo(this));break}var n;e.history==this.history&&(n=[e.id],mi(e,function(e){return n.push(e.id)},!0),e.history=new bi(null),e.history.done=Ni(this.history.done,n),e.history.undone=Ni(this.history.undone,n))},iterLinkedDocs:function(e){mi(this,e)},getMode:function(){return this.mode},getEditor:function(){return this.cm},splitLines:function(e){return this.lineSep?e.split(this.lineSep):Ee(e)},lineSeparator:function(){return this.lineSep||\\\"\\\\n\\\"},setDirection:Rr(function(e){var t;\\\"rtl\\\"!=e&&(e=\\\"ltr\\\"),e!=this.direction&&(this.direction=e,this.iter(function(e){return e.order=null}),this.cm&&Er(t=this.cm,function(){yi(t),tr(t)}))})}),ho.prototype.eachLine=ho.prototype.iter;var fo=0;function po(e){var r=this;if(go(r),!Ce(r,e)&&!mn(r.display,e)){Te(e),w&&(fo=+new Date);var t=Jn(r,e,!0),n=e.dataTransfer.files;if(t&&!r.isReadOnly())if(n&&n.length&&window.FileReader&&window.File)for(var i=n.length,o=Array(i),l=0,s=function(){++l==i&&Pr(r,function(){var e={from:t=ct(r.doc,t),to:t,text:r.doc.splitLines(o.filter(function(e){return null!=e}).join(r.doc.lineSeparator())),origin:\\\"paste\\\"};ji(r.doc,e),Fi(r.doc,si(ct(r.doc,t),ct(r.doc,ai(e))))})()},a=0;a\u003Cn.length;a++)!function(e,t){var n;r.options.allowDropFileTypes&&-1==R(r.options.allowDropFileTypes,e.type)?s():((n=new FileReader).onerror=s,n.onload=function(){var e=n.result;/[\\\\x00-\\\\x08\\\\x0e-\\\\x1f]{2}/.test(e)||(o[t]=e),s()},n.readAsText(e))}(n[a],a);else{if(r.state.draggingText&&-1\u003Cr.doc.sel.contains(t))return r.state.draggingText(e),void setTimeout(function(){return r.display.input.focus()},20);try{var u,c=e.dataTransfer.getData(\\\"Text\\\");if(c){if(r.state.draggingText&&!r.state.draggingText.copy&&(u=r.listSelections()),Pi(r.doc,si(t,t)),u)for(var h=0;h\u003Cu.length;++h)qi(r.doc,\\\"\\\",u[h].anchor,u[h].head,\\\"drag\\\");r.replaceSelection(c,\\\"around\\\",\\\"paste\\\"),r.display.input.focus()}}catch(e){}}}}function go(e){e.display.dragCursor&&(e.display.lineSpace.removeChild(e.display.dragCursor),e.display.dragCursor=null)}function mo(t){if(document.getElementsByClassName){for(var e=document.getElementsByClassName(\\\"CodeMirror\\\"),n=[],r=0;r\u003Ce.length;r++){var i=e[r].CodeMirror;i&&n.push(i)}n.length&&n[0].operation(function(){for(var e=0;e\u003Cn.length;e++)t(n[e])})}}var vo=!1;function yo(){var e;vo||(ye(window,\\\"resize\\\",function(){null==e&&(e=setTimeout(function(){e=null,mo(bo)},100))}),ye(window,\\\"blur\\\",function(){return mo(pr)}),vo=!0)}function bo(e){var t=e.display;t.cachedCharWidth=t.cachedTextHeight=t.cachedPaddingH=null,t.scrollbarsClipped=!1,e.setSize()}for(var wo={3:\\\"Pause\\\",8:\\\"Backspace\\\",9:\\\"Tab\\\",13:\\\"Enter\\\",16:\\\"Shift\\\",17:\\\"Ctrl\\\",18:\\\"Alt\\\",19:\\\"Pause\\\",20:\\\"CapsLock\\\",27:\\\"Esc\\\",32:\\\"Space\\\",33:\\\"PageUp\\\",34:\\\"PageDown\\\",35:\\\"End\\\",36:\\\"Home\\\",37:\\\"Left\\\",38:\\\"Up\\\",39:\\\"Right\\\",40:\\\"Down\\\",44:\\\"PrintScrn\\\",45:\\\"Insert\\\",46:\\\"Delete\\\",59:\\\";\\\",61:\\\"=\\\",91:\\\"Mod\\\",92:\\\"Mod\\\",93:\\\"Mod\\\",106:\\\"*\\\",107:\\\"=\\\",109:\\\"-\\\",110:\\\".\\\",111:\\\"/\\\",145:\\\"ScrollLock\\\",173:\\\"-\\\",186:\\\";\\\",187:\\\"=\\\",188:\\\",\\\",189:\\\"-\\\",190:\\\".\\\",191:\\\"/\\\",192:\\\"`\\\",219:\\\"[\\\",220:\\\"\\\\\\\\\\\",221:\\\"]\\\",222:\\\"'\\\",224:\\\"Mod\\\",63232:\\\"Up\\\",63233:\\\"Down\\\",63234:\\\"Left\\\",63235:\\\"Right\\\",63272:\\\"Delete\\\",63273:\\\"Home\\\",63275:\\\"End\\\",63276:\\\"PageUp\\\",63277:\\\"PageDown\\\",63302:\\\"Insert\\\"},xo=0;xo\u003C10;xo++)wo[xo+48]=wo[xo+96]=String(xo);for(var Co=65;Co\u003C=90;Co++)wo[Co]=String.fromCharCode(Co);for(var So=1;So\u003C=12;So++)wo[So+111]=wo[So+63235]=\\\"F\\\"+So;var Lo={};function ko(e){var t,n,r,i,o=e.split(/-(?!$)/);e=o[o.length-1];for(var l=0;l\u003Co.length-1;l++){var s=o[l];if(/^(cmd|meta|m)$/i.test(s))i=!0;else if(/^a(lt)?$/i.test(s))t=!0;else if(/^(c|ctrl|control)$/i.test(s))n=!0;else{if(!/^s(hift)?$/i.test(s))throw new Error(\\\"Unrecognized modifier name: \\\"+s);r=!0}}return t&&(e=\\\"Alt-\\\"+e),n&&(e=\\\"Ctrl-\\\"+e),i&&(e=\\\"Cmd-\\\"+e),r&&(e=\\\"Shift-\\\"+e),e}function To(e){var t,n,r={};for(t in e)if(e.hasOwnProperty(t)){var i=e[t];if(!/^(name|fallthrough|(de|at)tach)$/.test(t))if(\\\"...\\\"!=i){for(var o=_(t.split(\\\" \\\"),ko),l=0;l\u003Co.length;l++){var s=void 0,a=void 0,s=l==o.length-1?(a=o.join(\\\" \\\"),i):(a=o.slice(0,l+1).join(\\\" \\\"),\\\"...\\\"),u=r[a];if(u){if(u!=s)throw new Error(\\\"Inconsistent bindings for \\\"+a)}else r[a]=s}delete e[t]}else delete e[t]}for(n in r)e[n]=r[n];return e}function Mo(e,t,n,r){var i=(t=Do(t)).call?t.call(e,r):t[e];if(!1===i)return\\\"nothing\\\";if(\\\"...\\\"===i)return\\\"multi\\\";if(null!=i&&n(i))return\\\"handled\\\";if(t.fallthrough){if(\\\"[object Array]\\\"!=Object.prototype.toString.call(t.fallthrough))return Mo(e,t.fallthrough,n,r);for(var o=0;o\u003Ct.fallthrough.length;o++){var l=Mo(e,t.fallthrough[o],n,r);if(l)return l}}}function No(e){e=\\\"string\\\"==typeof e?e:wo[e.keyCode];return\\\"Ctrl\\\"==e||\\\"Alt\\\"==e||\\\"Shift\\\"==e||\\\"Mod\\\"==e}function Ao(e,t,n){var r=e;return t.altKey&&\\\"Alt\\\"!=r&&(e=\\\"Alt-\\\"+e),(b?t.metaKey:t.ctrlKey)&&\\\"Ctrl\\\"!=r&&(e=\\\"Ctrl-\\\"+e),(b?t.ctrlKey:t.metaKey)&&\\\"Mod\\\"!=r&&(e=\\\"Cmd-\\\"+e),!n&&t.shiftKey&&\\\"Shift\\\"!=r&&(e=\\\"Shift-\\\"+e),e}function Oo(e,t){if(p&&34==e.keyCode&&e.char)return!1;var n=wo[e.keyCode];return null!=n&&!e.altGraphKey&&(3==e.keyCode&&e.code&&(n=e.code),Ao(n,e,t))}function Do(e){return\\\"string\\\"==typeof e?Lo[e]:e}function Wo(t,e){for(var n=t.doc.sel.ranges,r=[],i=0;i\u003Cn.length;i++){for(var o=e(n[i]);r.length&&it(o.from,Y(r).to)\u003C=0;){var l=r.pop();if(it(l.from,o.from)\u003C0){o.from=l.from;break}}r.push(o)}Er(t,function(){for(var e=r.length-1;0\u003C=e;e--)qi(t.doc,\\\"\\\",r[e].from,r[e].to,\\\"+delete\\\");wr(t)})}function Ho(e,t,n){n=re(e.text,t+n,n);return n\u003C0||n>e.text.length?null:n}function Fo(e,t,n){e=Ho(e,t.ch,n);return null==e?null:new rt(t.line,e,n\u003C0?\\\"after\\\":\\\"before\\\")}function Eo(e,t,n,r,i){if(e){\\\"rtl\\\"==t.doc.direction&&(i=-i);var o=me(n,t.doc.direction);if(o){var l,s,a,e=i\u003C0?Y(o):o[0],o=i\u003C0==(1==e.level)?\\\"after\\\":\\\"before\\\";return 0\u003Ce.level||\\\"rtl\\\"==t.doc.direction?(l=Tn(t,n),s=i\u003C0?n.text.length-1:0,a=Mn(t,l,s).top,s=ie(function(e){return Mn(t,l,e).top==a},i\u003C0==(1==e.level)?e.from:e.to-1,s),\\\"before\\\"==o&&(s=Ho(n,s,1))):s=i\u003C0?e.to:e.from,new rt(r,s,o)}}return new rt(r,i\u003C0?n.text.length:0,i\u003C0?\\\"before\\\":\\\"after\\\")}function Po(t,n,s,e){var a=me(n,t.doc.direction);if(!a)return Fo(n,s,e);s.ch>=n.text.length?(s.ch=n.text.length,s.sticky=\\\"before\\\"):s.ch\u003C=0&&(s.ch=0,s.sticky=\\\"after\\\");var r=le(a,s.ch,s.sticky),i=a[r];if(\\\"ltr\\\"==t.doc.direction&&i.level%2==0&&(0\u003Ce?i.to>s.ch:i.from\u003Cs.ch))return Fo(n,s,e);function u(e,t){return Ho(n,e instanceof rt?e.ch:e,t)}function o(e){return t.options.lineWrapping?(l=l||Tn(t,n),jn(t,n,l,e)):{begin:0,end:n.text.length}}var l,c=o(\\\"before\\\"==s.sticky?u(s,-1):s.ch);if(\\\"rtl\\\"==t.doc.direction||1==i.level){var h=1==i.level==e\u003C0,d=u(s,h?1:-1);if(null!=d&&(h?d\u003C=i.to&&d\u003C=c.end:d>=i.from&&d>=c.begin)){var f=h?\\\"before\\\":\\\"after\\\";return new rt(s.line,d,f)}}f=function(e,t,n){for(var r=function(e,t){return t?new rt(s.line,u(e,1),\\\"before\\\"):new rt(s.line,e,\\\"after\\\")};0\u003C=e&&e\u003Ca.length;e+=t){var i=a[e],o=0\u003Ct==(1!=i.level),l=o?n.begin:u(n.end,-1);if(i.from\u003C=l&&l\u003Ci.to)return r(l,o);if(l=o?i.from:u(i.to,-1),n.begin\u003C=l&&l\u003Cn.end)return r(l,o)}},r=f(r+e,e,c);if(r)return r;c=0\u003Ce?c.end:u(c.begin,-1);return null==c||0\u003Ce&&c==n.text.length||!(r=f(0\u003Ce?0:a.length-1,e,o(c)))?null:r}Lo.basic={Left:\\\"goCharLeft\\\",Right:\\\"goCharRight\\\",Up:\\\"goLineUp\\\",Down:\\\"goLineDown\\\",End:\\\"goLineEnd\\\",Home:\\\"goLineStartSmart\\\",PageUp:\\\"goPageUp\\\",PageDown:\\\"goPageDown\\\",Delete:\\\"delCharAfter\\\",Backspace:\\\"delCharBefore\\\",\\\"Shift-Backspace\\\":\\\"delCharBefore\\\",Tab:\\\"defaultTab\\\",\\\"Shift-Tab\\\":\\\"indentAuto\\\",Enter:\\\"newlineAndIndent\\\",Insert:\\\"toggleOverwrite\\\",Esc:\\\"singleSelection\\\"},Lo.pcDefault={\\\"Ctrl-A\\\":\\\"selectAll\\\",\\\"Ctrl-D\\\":\\\"deleteLine\\\",\\\"Ctrl-Z\\\":\\\"undo\\\",\\\"Shift-Ctrl-Z\\\":\\\"redo\\\",\\\"Ctrl-Y\\\":\\\"redo\\\",\\\"Ctrl-Home\\\":\\\"goDocStart\\\",\\\"Ctrl-End\\\":\\\"goDocEnd\\\",\\\"Ctrl-Up\\\":\\\"goLineUp\\\",\\\"Ctrl-Down\\\":\\\"goLineDown\\\",\\\"Ctrl-Left\\\":\\\"goGroupLeft\\\",\\\"Ctrl-Right\\\":\\\"goGroupRight\\\",\\\"Alt-Left\\\":\\\"goLineStart\\\",\\\"Alt-Right\\\":\\\"goLineEnd\\\",\\\"Ctrl-Backspace\\\":\\\"delGroupBefore\\\",\\\"Ctrl-Delete\\\":\\\"delGroupAfter\\\",\\\"Ctrl-S\\\":\\\"save\\\",\\\"Ctrl-F\\\":\\\"find\\\",\\\"Ctrl-G\\\":\\\"findNext\\\",\\\"Shift-Ctrl-G\\\":\\\"findPrev\\\",\\\"Shift-Ctrl-F\\\":\\\"replace\\\",\\\"Shift-Ctrl-R\\\":\\\"replaceAll\\\",\\\"Ctrl-[\\\":\\\"indentLess\\\",\\\"Ctrl-]\\\":\\\"indentMore\\\",\\\"Ctrl-U\\\":\\\"undoSelection\\\",\\\"Shift-Ctrl-U\\\":\\\"redoSelection\\\",\\\"Alt-U\\\":\\\"redoSelection\\\",fallthrough:\\\"basic\\\"},Lo.emacsy={\\\"Ctrl-F\\\":\\\"goCharRight\\\",\\\"Ctrl-B\\\":\\\"goCharLeft\\\",\\\"Ctrl-P\\\":\\\"goLineUp\\\",\\\"Ctrl-N\\\":\\\"goLineDown\\\",\\\"Alt-F\\\":\\\"goWordRight\\\",\\\"Alt-B\\\":\\\"goWordLeft\\\",\\\"Ctrl-A\\\":\\\"goLineStart\\\",\\\"Ctrl-E\\\":\\\"goLineEnd\\\",\\\"Ctrl-V\\\":\\\"goPageDown\\\",\\\"Shift-Ctrl-V\\\":\\\"goPageUp\\\",\\\"Ctrl-D\\\":\\\"delCharAfter\\\",\\\"Ctrl-H\\\":\\\"delCharBefore\\\",\\\"Alt-D\\\":\\\"delWordAfter\\\",\\\"Alt-Backspace\\\":\\\"delWordBefore\\\",\\\"Ctrl-K\\\":\\\"killLine\\\",\\\"Ctrl-T\\\":\\\"transposeChars\\\",\\\"Ctrl-O\\\":\\\"openLine\\\"},Lo.macDefault={\\\"Cmd-A\\\":\\\"selectAll\\\",\\\"Cmd-D\\\":\\\"deleteLine\\\",\\\"Cmd-Z\\\":\\\"undo\\\",\\\"Shift-Cmd-Z\\\":\\\"redo\\\",\\\"Cmd-Y\\\":\\\"redo\\\",\\\"Cmd-Home\\\":\\\"goDocStart\\\",\\\"Cmd-Up\\\":\\\"goDocStart\\\",\\\"Cmd-End\\\":\\\"goDocEnd\\\",\\\"Cmd-Down\\\":\\\"goDocEnd\\\",\\\"Alt-Left\\\":\\\"goGroupLeft\\\",\\\"Alt-Right\\\":\\\"goGroupRight\\\",\\\"Cmd-Left\\\":\\\"goLineLeft\\\",\\\"Cmd-Right\\\":\\\"goLineRight\\\",\\\"Alt-Backspace\\\":\\\"delGroupBefore\\\",\\\"Ctrl-Alt-Backspace\\\":\\\"delGroupAfter\\\",\\\"Alt-Delete\\\":\\\"delGroupAfter\\\",\\\"Cmd-S\\\":\\\"save\\\",\\\"Cmd-F\\\":\\\"find\\\",\\\"Cmd-G\\\":\\\"findNext\\\",\\\"Shift-Cmd-G\\\":\\\"findPrev\\\",\\\"Cmd-Alt-F\\\":\\\"replace\\\",\\\"Shift-Cmd-Alt-F\\\":\\\"replaceAll\\\",\\\"Cmd-[\\\":\\\"indentLess\\\",\\\"Cmd-]\\\":\\\"indentMore\\\",\\\"Cmd-Backspace\\\":\\\"delWrappedLineLeft\\\",\\\"Cmd-Delete\\\":\\\"delWrappedLineRight\\\",\\\"Cmd-U\\\":\\\"undoSelection\\\",\\\"Shift-Cmd-U\\\":\\\"redoSelection\\\",\\\"Ctrl-Up\\\":\\\"goDocStart\\\",\\\"Ctrl-Down\\\":\\\"goDocEnd\\\",fallthrough:[\\\"basic\\\",\\\"emacsy\\\"]},Lo.default=g?Lo.macDefault:Lo.pcDefault;var Io={selectAll:Vi,singleSelection:function(e){return e.setSelection(e.getCursor(\\\"anchor\\\"),e.getCursor(\\\"head\\\"),G)},killLine:function(n){return Wo(n,function(e){if(e.empty()){var t=$e(n.doc,e.head.line).text.length;return e.head.ch==t&&e.head.line\u003Cn.lastLine()?{from:e.head,to:rt(e.head.line+1,0)}:{from:e.head,to:rt(e.head.line,t)}}return{from:e.from(),to:e.to()}})},deleteLine:function(t){return Wo(t,function(e){return{from:rt(e.from().line,0),to:ct(t.doc,rt(e.to().line+1,0))}})},delLineLeft:function(e){return Wo(e,function(e){return{from:rt(e.from().line,0),to:e.from()}})},delWrappedLineLeft:function(n){return Wo(n,function(e){var t=n.charCoords(e.head,\\\"div\\\").top+5;return{from:n.coordsChar({left:0,top:t},\\\"div\\\"),to:e.from()}})},delWrappedLineRight:function(n){return Wo(n,function(e){var t=n.charCoords(e.head,\\\"div\\\").top+5,t=n.coordsChar({left:n.display.lineDiv.offsetWidth+100,top:t},\\\"div\\\");return{from:e.from(),to:t}})},undo:function(e){return e.undo()},redo:function(e){return e.redo()},undoSelection:function(e){return e.undoSelection()},redoSelection:function(e){return e.redoSelection()},goDocStart:function(e){return e.extendSelection(rt(e.firstLine(),0))},goDocEnd:function(e){return e.extendSelection(rt(e.lastLine()))},goLineStart:function(t){return t.extendSelectionsBy(function(e){return Ro(t,e.head.line)},{origin:\\\"+move\\\",bias:1})},goLineStartSmart:function(t){return t.extendSelectionsBy(function(e){return zo(t,e.head)},{origin:\\\"+move\\\",bias:1})},goLineEnd:function(t){return t.extendSelectionsBy(function(e){return function(e,t){var n=$e(e.doc,t),r=function(e){for(var t;t=It(e);)e=t.find(1,!0).line;return e}(n);r!=n&&(t=Je(r));return Eo(!0,e,n,t,-1)}(t,e.head.line)},{origin:\\\"+move\\\",bias:-1})},goLineRight:function(t){return t.extendSelectionsBy(function(e){e=t.cursorCoords(e.head,\\\"div\\\").top+5;return t.coordsChar({left:t.display.lineDiv.offsetWidth+100,top:e},\\\"div\\\")},V)},goLineLeft:function(t){return t.extendSelectionsBy(function(e){e=t.cursorCoords(e.head,\\\"div\\\").top+5;return t.coordsChar({left:0,top:e},\\\"div\\\")},V)},goLineLeftSmart:function(n){return n.extendSelectionsBy(function(e){var t=n.cursorCoords(e.head,\\\"div\\\").top+5,t=n.coordsChar({left:0,top:t},\\\"div\\\");return t.ch\u003Cn.getLine(t.line).search(/\\\\S/)?zo(n,e.head):t},V)},goLineUp:function(e){return e.moveV(-1,\\\"line\\\")},goLineDown:function(e){return e.moveV(1,\\\"line\\\")},goPageUp:function(e){return e.moveV(-1,\\\"page\\\")},goPageDown:function(e){return e.moveV(1,\\\"page\\\")},goCharLeft:function(e){return e.moveH(-1,\\\"char\\\")},goCharRight:function(e){return e.moveH(1,\\\"char\\\")},goColumnLeft:function(e){return e.moveH(-1,\\\"column\\\")},goColumnRight:function(e){return e.moveH(1,\\\"column\\\")},goWordLeft:function(e){return e.moveH(-1,\\\"word\\\")},goGroupRight:function(e){return e.moveH(1,\\\"group\\\")},goGroupLeft:function(e){return e.moveH(-1,\\\"group\\\")},goWordRight:function(e){return e.moveH(1,\\\"word\\\")},delCharBefore:function(e){return e.deleteH(-1,\\\"codepoint\\\")},delCharAfter:function(e){return e.deleteH(1,\\\"char\\\")},delWordBefore:function(e){return e.deleteH(-1,\\\"word\\\")},delWordAfter:function(e){return e.deleteH(1,\\\"word\\\")},delGroupBefore:function(e){return e.deleteH(-1,\\\"group\\\")},delGroupAfter:function(e){return e.deleteH(1,\\\"group\\\")},indentAuto:function(e){return e.indentSelection(\\\"smart\\\")},indentMore:function(e){return e.indentSelection(\\\"add\\\")},indentLess:function(e){return e.indentSelection(\\\"subtract\\\")},insertTab:function(e){return e.replaceSelection(\\\"\\\\t\\\")},insertSoftTab:function(e){for(var t=[],n=e.listSelections(),r=e.options.tabSize,i=0;i\u003Cn.length;i++){var o=n[i].from(),o=P(e.getLine(o.line),o.ch,r);t.push(X(r-o%r))}e.replaceSelections(t)},defaultTab:function(e){e.somethingSelected()?e.indentSelection(\\\"add\\\"):e.execCommand(\\\"insertTab\\\")},transposeChars:function(l){return Er(l,function(){for(var e,t,n,r=l.listSelections(),i=[],o=0;o\u003Cr.length;o++)r[o].empty()&&(e=r[o].head,(t=$e(l.doc,e.line).text)&&(e.ch==t.length&&(e=new rt(e.line,e.ch-1)),0\u003Ce.ch?(e=new rt(e.line,e.ch+1),l.replaceRange(t.charAt(e.ch-1)+t.charAt(e.ch-2),rt(e.line,e.ch-2),e,\\\"+transpose\\\")):e.line>l.doc.first&&((n=$e(l.doc,e.line-1).text)&&(e=new rt(e.line,1),l.replaceRange(t.charAt(0)+l.doc.lineSeparator()+n.charAt(n.length-1),rt(e.line-1,n.length-1),e,\\\"+transpose\\\")))),i.push(new oi(e,e)));l.setSelections(i)})},newlineAndIndent:function(r){return Er(r,function(){for(var e=r.listSelections(),t=e.length-1;0\u003C=t;t--)r.replaceRange(r.doc.lineSeparator(),e[t].anchor,e[t].head,\\\"+input\\\");e=r.listSelections();for(var n=0;n\u003Ce.length;n++)r.indentLine(e[n].from().line,null,!0);wr(r)})},openLine:function(e){return e.replaceSelection(\\\"\\\\n\\\",\\\"start\\\")},toggleOverwrite:function(e){return e.toggleOverwrite()}};function Ro(e,t){var n=$e(e.doc,t),r=zt(n);return r!=n&&(t=Je(r)),Eo(!0,e,r,t,1)}function zo(e,t){var n=Ro(e,t.line),r=$e(e.doc,n.line),e=me(r,e.doc.direction);if(e&&0!=e[0].level)return n;r=Math.max(n.ch,r.text.search(/\\\\S/)),t=t.line==n.line&&t.ch\u003C=r&&t.ch;return rt(n.line,t?0:r,n.sticky)}function Bo(e,t,n){if(\\\"string\\\"==typeof t&&!(t=Io[t]))return!1;e.display.input.ensurePolled();var r=e.display.shift,i=!1;try{e.isReadOnly()&&(e.state.suppressEdits=!0),n&&(e.display.shift=!1),i=t(e)!=B}finally{e.display.shift=r,e.state.suppressEdits=!1}return i}var Go=new I;function Uo(e,t,n,r){var i=e.state.keySeq;if(i){if(No(t))return\\\"handled\\\";if(/\\\\'$/.test(t)?e.state.keySeq=null:Go.set(50,function(){e.state.keySeq==i&&(e.state.keySeq=null,e.display.input.reset())}),Vo(e,i+\\\" \\\"+t,n,r))return!0}return Vo(e,t,n,r)}function Vo(e,t,n,r){r=function(e,t,n){for(var r=0;r\u003Ce.state.keyMaps.length;r++){var i=Mo(t,e.state.keyMaps[r],n,e);if(i)return i}return e.options.extraKeys&&Mo(t,e.options.extraKeys,n,e)||Mo(t,e.options.keyMap,n,e)}(e,t,r);return\\\"multi\\\"==r&&(e.state.keySeq=t),\\\"handled\\\"==r&&ln(e,\\\"keyHandled\\\",e,t,n),\\\"handled\\\"!=r&&\\\"multi\\\"!=r||(Te(n),cr(e)),!!r}function Ko(t,e){var n=Oo(e,!0);return!!n&&(e.shiftKey&&!t.state.keySeq?Uo(t,\\\"Shift-\\\"+n,e,function(e){return Bo(t,e,!0)})||Uo(t,n,e,function(e){if(\\\"string\\\"==typeof e?/^go[A-Z]/.test(e):e.motion)return Bo(t,e)}):Uo(t,n,e,function(e){return Bo(t,e)}))}var jo=null;function Xo(e){var t,n,r,i=this;function o(e){18!=e.keyCode&&e.altKey||(L(r,\\\"CodeMirror-crosshair\\\"),we(document,\\\"keyup\\\",o),we(document,\\\"mouseover\\\",o))}e.target&&e.target!=i.display.input.getField()||(i.curOp.focus=O(),Ce(i,e)||(w&&v\u003C11&&27==e.keyCode&&(e.returnValue=!1),t=e.keyCode,i.display.shift=16==t||e.shiftKey,n=Ko(i,e),p&&(jo=n?t:null,!n&&88==t&&!Ie&&(g?e.metaKey:e.ctrlKey)&&i.replaceSelection(\\\"\\\",null,\\\"cut\\\")),d&&!g&&!n&&46==t&&e.shiftKey&&!e.ctrlKey&&document.execCommand&&document.execCommand(\\\"cut\\\"),18!=t||/\\\\bCodeMirror-crosshair\\\\b/.test(i.display.lineDiv.className)||(D(r=i.display.lineDiv,\\\"CodeMirror-crosshair\\\"),ye(document,\\\"keyup\\\",o),ye(document,\\\"mouseover\\\",o))))}function Yo(e){16==e.keyCode&&(this.doc.sel.shift=!1),Ce(this,e)}function _o(e){var t=this;if(!(e.target&&e.target!=t.display.input.getField()||mn(t.display,e)||Ce(t,e)||e.ctrlKey&&!e.altKey||g&&e.metaKey)){var n,r=e.keyCode,i=e.charCode;if(p&&r==jo)return jo=null,void Te(e);p&&(!e.which||e.which\u003C10)&&Ko(t,e)||\\\"\\\\b\\\"!=(i=String.fromCharCode(null==i?r:i))&&(Uo(n=t,\\\"'\\\"+i+\\\"'\\\",e,function(e){return Bo(n,e,!0)})||t.display.input.onKeyPress(e))}}var $o,qo,Zo=function(e,t,n){this.time=e,this.pos=t,this.button=n};function Qo(e){var t,n,r,i,o,l=this,s=l.display;Ce(l,e)||s.activeTouch&&s.input.supportsTouch()||(s.input.ensurePolled(),s.shift=e.shiftKey,mn(s,e)?f||(s.scroller.draggable=!1,setTimeout(function(){return s.scroller.draggable=!0},100)):tl(l,e)||(t=Jn(l,e),n=De(e),i=t?(r=t,i=n,o=+new Date,qo&&qo.compare(o,r,i)?($o=qo=null,\\\"triple\\\"):$o&&$o.compare(o,r,i)?(qo=new Zo(o,r,i),$o=null,\\\"double\\\"):($o=new Zo(o,r,i),qo=null,\\\"single\\\")):\\\"single\\\",window.focus(),1==n&&l.state.selectingText&&l.state.selectingText(e),t&&function(n,e,r,t,i){var o=\\\"Click\\\";\\\"double\\\"==t?o=\\\"Double\\\"+o:\\\"triple\\\"==t&&(o=\\\"Triple\\\"+o);return Uo(n,Ao(o=(1==e?\\\"Left\\\":2==e?\\\"Middle\\\":\\\"Right\\\")+o,i),i,function(e){if(\\\"string\\\"==typeof e&&(e=Io[e]),!e)return!1;var t=!1;try{n.isReadOnly()&&(n.state.suppressEdits=!0),t=e(n,r)!=B}finally{n.state.suppressEdits=!1}return t})}(l,n,t,i,e)||(1==n?t?function(e,t,n,r){w?setTimeout(F(hr,e),0):e.curOp.focus=O();var i,o=function(e,t,n){var r=e.getOption(\\\"configureMouse\\\"),i=r?r(e,t,n):{};null==i.unit&&(r=m?n.shiftKey&&n.metaKey:n.altKey,i.unit=r?\\\"rectangle\\\":\\\"single\\\"==t?\\\"char\\\":\\\"double\\\"==t?\\\"word\\\":\\\"line\\\");null!=i.extend&&!e.doc.extend||(i.extend=e.doc.extend||n.shiftKey);null==i.addNew&&(i.addNew=g?n.metaKey:n.ctrlKey);null==i.moveOnDrag&&(i.moveOnDrag=!(g?n.altKey:n.ctrlKey));return i}(e,n,r),l=e.doc.sel;(e.options.dragDrop&&Fe&&!e.isReadOnly()&&\\\"single\\\"==n&&-1\u003C(i=l.contains(t))&&(it((i=l.ranges[i]).from(),t)\u003C0||0\u003Ct.xRel)&&(0\u003Cit(i.to(),t)||t.xRel\u003C0)?function(t,n,r,i){var o=t.display,l=!1,s=Pr(t,function(e){f&&(o.scroller.draggable=!1),t.state.draggingText=!1,t.state.delayingBlurEvent&&(t.hasFocus()?t.state.delayingBlurEvent=!1:dr(t)),we(o.wrapper.ownerDocument,\\\"mouseup\\\",s),we(o.wrapper.ownerDocument,\\\"mousemove\\\",a),we(o.scroller,\\\"dragstart\\\",u),we(o.scroller,\\\"drop\\\",s),l||(Te(e),i.addNew||Oi(t.doc,r,null,null,i.extend),f&&!c||w&&9==v?setTimeout(function(){o.wrapper.ownerDocument.body.focus({preventScroll:!0}),o.input.focus()},20):o.input.focus())}),a=function(e){l=l||10\u003C=Math.abs(n.clientX-e.clientX)+Math.abs(n.clientY-e.clientY)},u=function(){return l=!0};f&&(o.scroller.draggable=!0);(t.state.draggingText=s).copy=!i.moveOnDrag,ye(o.wrapper.ownerDocument,\\\"mouseup\\\",s),ye(o.wrapper.ownerDocument,\\\"mousemove\\\",a),ye(o.scroller,\\\"dragstart\\\",u),ye(o.scroller,\\\"drop\\\",s),t.state.delayingBlurEvent=!0,setTimeout(function(){return o.input.focus()},20),o.scroller.dragDrop&&o.scroller.dragDrop()}:function(d,e,f,p){w&&dr(d);var l=d.display,g=d.doc;Te(e);var m,v,y=g.sel,t=y.ranges;p.addNew&&!p.extend?(v=g.sel.contains(f),m=-1\u003Cv?t[v]:new oi(f,f)):(m=g.sel.primary(),v=g.sel.primIndex);\\\"rectangle\\\"==p.unit?(p.addNew||(m=new oi(f,f)),f=Jn(d,e,!0,!0),v=-1):(e=Jo(d,f,p.unit),m=p.extend?Ai(m,e.anchor,e.head,p.extend):e);p.addNew?-1==v?(v=t.length,Ei(g,li(d,t.concat([m]),v),{scroll:!1,origin:\\\"*mouse\\\"})):1\u003Ct.length&&t[v].empty()&&\\\"char\\\"==p.unit&&!p.extend?(Ei(g,li(d,t.slice(0,v).concat(t.slice(v+1)),0),{scroll:!1,origin:\\\"*mouse\\\"}),y=g.sel):Wi(g,v,m,U):(Ei(g,new ii([m],v=0),U),y=g.sel);var b=f;function s(e){if(0!=it(b,e))if(b=e,\\\"rectangle\\\"==p.unit){for(var t=[],n=d.options.tabSize,r=P($e(g,f.line).text,f.ch,n),i=P($e(g,e.line).text,e.ch,n),o=Math.min(r,i),l=Math.max(r,i),s=Math.min(f.line,e.line),a=Math.min(d.lastLine(),Math.max(f.line,e.line));s\u003C=a;s++){var u=$e(g,s).text,c=K(u,o,n);o==l?t.push(new oi(rt(s,c),rt(s,c))):u.length>c&&t.push(new oi(rt(s,c),rt(s,K(u,l,n))))}t.length||t.push(new oi(f,f)),Ei(g,li(d,y.ranges.slice(0,v).concat(t),v),{origin:\\\"*mouse\\\",scroll:!1}),d.scrollIntoView(e)}else{var h,r=m,i=Jo(d,e,p.unit),e=r.anchor,e=0\u003Cit(i.anchor,e)?(h=i.head,at(r.from(),i.anchor)):(h=i.anchor,st(r.to(),i.head)),i=y.ranges.slice(0);i[v]=function(e,t){var n=t.anchor,r=t.head,i=$e(e.doc,n.line);if(0==it(n,r)&&n.sticky==r.sticky)return t;var o=me(i);if(!o)return t;var l=le(o,n.ch,n.sticky),s=o[l];if(s.from!=n.ch&&s.to!=n.ch)return t;i=l+(s.from==n.ch==(1!=s.level)?0:1);if(0==i||i==o.length)return t;a=r.line!=n.line?0\u003C(r.line-n.line)*(\\\"ltr\\\"==e.doc.direction?1:-1):(e=le(o,r.ch,r.sticky),a=e-l||(r.ch-n.ch)*(1==s.level?-1:1),e==i-1||e==i?a\u003C0:0\u003Ca);var i=o[i+(a?-1:0)],a=a==(1==i.level),i=a?i.from:i.to,a=a?\\\"after\\\":\\\"before\\\";return n.ch==i&&n.sticky==a?t:new oi(new rt(n.line,i,a),r)}(d,new oi(ct(g,e),h)),Ei(g,li(d,i,v),U)}}var a=l.wrapper.getBoundingClientRect(),u=0;function n(e){d.state.selectingText=!1,u=1/0,e&&(Te(e),l.input.focus()),we(l.wrapper.ownerDocument,\\\"mousemove\\\",r),we(l.wrapper.ownerDocument,\\\"mouseup\\\",i),g.history.lastSelOrigin=null}var r=Pr(d,function(e){(0!==e.buttons&&De(e)?function e(t){var n,r,i=++u,o=Jn(d,t,!0,\\\"rectangle\\\"==p.unit);o&&(0!=it(o,b)?(d.curOp.focus=O(),s(o),n=vr(l,g),(o.line>=n.to||o.line\u003Cn.from)&&setTimeout(Pr(d,function(){u==i&&e(t)}),150)):(r=t.clientY\u003Ca.top?-20:t.clientY>a.bottom?20:0)&&setTimeout(Pr(d,function(){u==i&&(l.scroller.scrollTop+=r,e(t))}),50))}:n)(e)}),i=Pr(d,n);d.state.selectingText=i,ye(l.wrapper.ownerDocument,\\\"mousemove\\\",r),ye(l.wrapper.ownerDocument,\\\"mouseup\\\",i)})(e,r,t,o)}(l,t,i,e):Oe(e)==s.scroller&&Te(e):2==n?(t&&Oi(l.doc,t),setTimeout(function(){return s.input.focus()},20)):3==n&&(x?l.display.input.onContextMenu(e):dr(l)))))}function Jo(e,t,n){if(\\\"char\\\"==n)return new oi(t,t);if(\\\"word\\\"==n)return e.findWordAt(t);if(\\\"line\\\"==n)return new oi(rt(t.line,0),ct(e.doc,rt(t.line+1,0)));t=n(e,t);return new oi(t.from,t.to)}function el(e,t,n,r){var i,o;if(t.touches)i=t.touches[0].clientX,o=t.touches[0].clientY;else try{i=t.clientX,o=t.clientY}catch(e){return!1}if(i>=Math.floor(e.display.gutters.getBoundingClientRect().right))return!1;r&&Te(t);var l=e.display,r=l.lineDiv.getBoundingClientRect();if(o>r.bottom||!Le(e,n))return Ne(t);o-=r.top-l.viewOffset;for(var s=0;s\u003Ce.display.gutterSpecs.length;++s){var a=l.gutters.childNodes[s];if(a&&a.getBoundingClientRect().right>=i)return xe(e,n,e,et(e.doc,o),e.display.gutterSpecs[s].className,t),Ne(t)}}function tl(e,t){return el(e,t,\\\"gutterClick\\\",!0)}function nl(e,t){var n,r;mn(e.display,t)||(r=t,Le(n=e,\\\"gutterContextMenu\\\")&&el(n,r,\\\"gutterContextMenu\\\",!1))||Ce(e,t,\\\"contextmenu\\\")||x||e.display.input.onContextMenu(t)}function rl(e){e.display.wrapper.className=e.display.wrapper.className.replace(/\\\\s*cm-s-\\\\S+/g,\\\"\\\")+e.options.theme.replace(/(^|\\\\s)\\\\s*/g,\\\" cm-s-\\\"),Hn(e)}Zo.prototype.compare=function(e,t,n){return this.time+400>e&&0==it(t,this.pos)&&n==this.button};var il={toString:function(){return\\\"CodeMirror.Init\\\"}},ol={},ll={};function sl(e,t,n){!t!=!(n&&n!=il)&&(n=e.display.dragFunctions,(t=t?ye:we)(e.display.scroller,\\\"dragstart\\\",n.start),t(e.display.scroller,\\\"dragenter\\\",n.enter),t(e.display.scroller,\\\"dragover\\\",n.over),t(e.display.scroller,\\\"dragleave\\\",n.leave),t(e.display.scroller,\\\"drop\\\",n.drop))}function al(e){e.options.lineWrapping?(D(e.display.wrapper,\\\"CodeMirror-wrap\\\"),e.display.sizer.style.minWidth=\\\"\\\",e.display.sizerWidth=null):(L(e.display.wrapper,\\\"CodeMirror-wrap\\\"),jt(e)),Qn(e),tr(e),Hn(e),setTimeout(function(){return Nr(e)},100)}function ul(e,t){var n=this;if(!(this instanceof ul))return new ul(e,t);this.options=t=t?E(t):{},E(ol,t,!1);var r=t.value;\\\"string\\\"==typeof r?r=new ho(r,t.mode,null,t.lineSeparator,t.direction):t.mode&&(r.modeOption=t.mode),this.doc=r;var i,o=new ul.inputStyles[t.inputStyle](this),o=this.display=new Qr(e,r,o,t);for(i in rl(o.wrapper.CodeMirror=this),t.lineWrapping&&(this.display.wrapper.className+=\\\" CodeMirror-wrap\\\"),Dr(this),this.state={keyMaps:[],overlays:[],modeGen:0,overwrite:!1,delayingBlurEvent:!1,focused:!1,suppressEdits:!1,pasteIncoming:-1,cutIncoming:-1,selectingText:!1,draggingText:!1,highlight:new I,keySeq:null,specialChars:null},t.autofocus&&!h&&o.input.focus(),w&&v\u003C11&&setTimeout(function(){return n.display.input.reset(!0)},20),function(r){var i=r.display;ye(i.scroller,\\\"mousedown\\\",Pr(r,Qo)),ye(i.scroller,\\\"dblclick\\\",w&&v\u003C11?Pr(r,function(e){var t;Ce(r,e)||(!(t=Jn(r,e))||tl(r,e)||mn(r.display,e)||(Te(e),t=r.findWordAt(t),Oi(r.doc,t.anchor,t.head)))}):function(e){return Ce(r,e)||Te(e)});ye(i.scroller,\\\"contextmenu\\\",function(e){return nl(r,e)}),ye(i.input.getField(),\\\"contextmenu\\\",function(e){i.scroller.contains(e.target)||nl(r,e)});var n,o={end:0};function l(){i.activeTouch&&(n=setTimeout(function(){return i.activeTouch=null},1e3),(o=i.activeTouch).end=+new Date)}function s(e,t){if(null==t.left)return 1;var n=t.left-e.left,e=t.top-e.top;return 400\u003Cn*n+e*e}ye(i.scroller,\\\"touchstart\\\",function(e){var t;Ce(r,e)||function(e){if(1==e.touches.length){e=e.touches[0];return e.radiusX\u003C=1&&e.radiusY\u003C=1}}(e)||tl(r,e)||(i.input.ensurePolled(),clearTimeout(n),t=+new Date,i.activeTouch={start:t,moved:!1,prev:t-o.end\u003C=300?o:null},1==e.touches.length&&(i.activeTouch.left=e.touches[0].pageX,i.activeTouch.top=e.touches[0].pageY))}),ye(i.scroller,\\\"touchmove\\\",function(){i.activeTouch&&(i.activeTouch.moved=!0)}),ye(i.scroller,\\\"touchend\\\",function(e){var t,n=i.activeTouch;n&&!mn(i,e)&&null!=n.left&&!n.moved&&new Date-n.start\u003C300&&(t=r.coordsChar(i.activeTouch,\\\"page\\\"),t=!n.prev||s(n,n.prev)?new oi(t,t):!n.prev.prev||s(n,n.prev.prev)?r.findWordAt(t):new oi(rt(t.line,0),ct(r.doc,rt(t.line+1,0))),r.setSelection(t.anchor,t.head),r.focus(),Te(e)),l()}),ye(i.scroller,\\\"touchcancel\\\",l),ye(i.scroller,\\\"scroll\\\",function(){i.scroller.clientHeight&&(Lr(r,i.scroller.scrollTop),Tr(r,i.scroller.scrollLeft,!0),xe(r,\\\"scroll\\\",r))}),ye(i.scroller,\\\"mousewheel\\\",function(e){return ri(r,e)}),ye(i.scroller,\\\"DOMMouseScroll\\\",function(e){return ri(r,e)}),ye(i.wrapper,\\\"scroll\\\",function(){return i.wrapper.scrollTop=i.wrapper.scrollLeft=0}),i.dragFunctions={enter:function(e){Ce(r,e)||Ae(e)},over:function(e){var t,n;Ce(r,e)||((n=Jn(t=r,n=e))&&(ar(t,n,n=document.createDocumentFragment()),t.display.dragCursor||(t.display.dragCursor=M(\\\"div\\\",null,\\\"CodeMirror-cursors CodeMirror-dragcursors\\\"),t.display.lineSpace.insertBefore(t.display.dragCursor,t.display.cursorDiv)),T(t.display.dragCursor,n)),Ae(e))},start:function(e){return t=r,n=e,void(w&&(!t.state.draggingText||+new Date-fo\u003C100)?Ae(n):Ce(t,n)||mn(t.display,n)||(n.dataTransfer.setData(\\\"Text\\\",t.getSelection()),n.dataTransfer.effectAllowed=\\\"copyMove\\\",n.dataTransfer.setDragImage&&!c&&((e=M(\\\"img\\\",null,null,\\\"position: fixed; left: 0; top: 0;\\\")).src=\\\"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\\\",p&&(e.width=e.height=1,t.display.wrapper.appendChild(e),e._top=e.offsetTop),n.dataTransfer.setDragImage(e,0,0),p&&e.parentNode.removeChild(e))));var t,n},drop:Pr(r,po),leave:function(e){Ce(r,e)||go(r)}};var e=i.input.getField();ye(e,\\\"keyup\\\",function(e){return Yo.call(r,e)}),ye(e,\\\"keydown\\\",Pr(r,Xo)),ye(e,\\\"keypress\\\",Pr(r,_o)),ye(e,\\\"focus\\\",function(e){return fr(r,e)}),ye(e,\\\"blur\\\",function(e){return pr(r,e)})}(this),yo(),Hr(this),this.curOp.forceUpdate=!0,vi(this,r),t.autofocus&&!h||this.hasFocus()?setTimeout(function(){n.hasFocus()&&!n.state.focused&&fr(n)},20):pr(this),ll)ll.hasOwnProperty(i)&&ll[i](this,t[i],il);_r(this),t.finishInit&&t.finishInit(this);for(var l=0;l\u003Ccl.length;++l)cl[l](this);Fr(this),f&&t.lineWrapping&&\\\"optimizelegibility\\\"==getComputedStyle(o.lineDiv).textRendering&&(o.lineDiv.style.textRendering=\\\"auto\\\")}ul.defaults=ol,ul.optionHandlers=ll;var cl=[];function hl(e,t,n,r){var i,o=e.doc;null==n&&(n=\\\"add\\\"),\\\"smart\\\"==n&&(o.mode.indent?i=mt(e,t).state:n=\\\"prev\\\");var l=e.options.tabSize,s=$e(o,t),a=P(s.text,null,l);s.stateAfter&&(s.stateAfter=null);var u,c=s.text.match(/^\\\\s*/)[0];if(r||/\\\\S/.test(s.text)){if(\\\"smart\\\"==n&&((u=o.mode.indent(i,s.text.slice(c.length),s.text))==B||150\u003Cu)){if(!r)return;n=\\\"prev\\\"}}else u=0,n=\\\"not\\\";\\\"prev\\\"==n?u=t>o.first?P($e(o,t-1).text,null,l):0:\\\"add\\\"==n?u=a+e.options.indentUnit:\\\"subtract\\\"==n?u=a-e.options.indentUnit:\\\"number\\\"==typeof n&&(u=a+n),u=Math.max(0,u);var h=\\\"\\\",d=0;if(e.options.indentWithTabs)for(var f=Math.floor(u/l);f;--f)d+=l,h+=\\\"\\\\t\\\";if(d\u003Cu&&(h+=X(u-d)),h!=c)return qi(o,h,rt(t,0),rt(t,c.length),\\\"+input\\\"),!(s.stateAfter=null);for(var p=0;p\u003Co.sel.ranges.length;p++){var g=o.sel.ranges[p];if(g.head.line==t&&g.head.ch\u003Cc.length){g=rt(t,c.length);Wi(o,p,new oi(g,g));break}}}ul.defineInitHook=function(e){return cl.push(e)};var dl=null;function fl(e){dl=e}function pl(e,t,n,r,i){var o=e.doc;e.display.shift=!1,r=r||o.sel;var l=+new Date-200,s=\\\"paste\\\"==i||e.state.pasteIncoming>l,a=Ee(t),u=null;if(s&&1\u003Cr.ranges.length)if(dl&&dl.text.join(\\\"\\\\n\\\")==t){if(r.ranges.length%dl.text.length==0){u=[];for(var c=0;c\u003Cdl.text.length;c++)u.push(o.splitLines(dl.text[c]))}}else a.length==r.ranges.length&&e.options.pasteLinesPerSelection&&(u=_(a,function(e){return[e]}));for(var h=e.curOp.updateInput,d=r.ranges.length-1;0\u003C=d;d--){var f=r.ranges[d],p=f.from(),g=f.to();f.empty()&&(n&&0\u003Cn?p=rt(p.line,p.ch-n):e.state.overwrite&&!s?g=rt(g.line,Math.min($e(o,g.line).text.length,g.ch+Y(a).length)):s&&dl&&dl.lineWise&&dl.text.join(\\\"\\\\n\\\")==a.join(\\\"\\\\n\\\")&&(p=g=rt(p.line,0)));g={from:p,to:g,text:u?u[d%u.length]:a,origin:i||(s?\\\"paste\\\":e.state.cutIncoming>l?\\\"cut\\\":\\\"+input\\\")};ji(e.doc,g),ln(e,\\\"inputRead\\\",e,g)}t&&!s&&ml(e,t),wr(e),e.curOp.updateInput\u003C2&&(e.curOp.updateInput=h),e.curOp.typing=!0,e.state.pasteIncoming=e.state.cutIncoming=-1}function gl(e,t){var n=e.clipboardData&&e.clipboardData.getData(\\\"Text\\\");return n&&(e.preventDefault(),t.isReadOnly()||t.options.disableInput||Er(t,function(){return pl(t,n,0,null,\\\"paste\\\")}),1)}function ml(e,t){if(e.options.electricChars&&e.options.smartIndent)for(var n=e.doc.sel,r=n.ranges.length-1;0\u003C=r;r--){var i=n.ranges[r];if(!(100\u003Ci.head.ch||r&&n.ranges[r-1].head.line==i.head.line)){var o=e.getModeAt(i.head),l=!1;if(o.electricChars){for(var s=0;s\u003Co.electricChars.length;s++)if(-1\u003Ct.indexOf(o.electricChars.charAt(s))){l=hl(e,i.head.line,\\\"smart\\\");break}}else o.electricInput&&o.electricInput.test($e(e.doc,i.head.line).text.slice(0,i.head.ch))&&(l=hl(e,i.head.line,\\\"smart\\\"));l&&ln(e,\\\"electricInput\\\",e,i.head.line)}}}function vl(e){for(var t=[],n=[],r=0;r\u003Ce.doc.sel.ranges.length;r++){var i=e.doc.sel.ranges[r].head.line,i={anchor:rt(i,0),head:rt(i+1,0)};n.push(i),t.push(e.getRange(i.anchor,i.head))}return{text:t,ranges:n}}function yl(e,t,n,r){e.setAttribute(\\\"autocorrect\\\",n?\\\"\\\":\\\"off\\\"),e.setAttribute(\\\"autocapitalize\\\",r?\\\"\\\":\\\"off\\\"),e.setAttribute(\\\"spellcheck\\\",!!t)}function bl(){var e=M(\\\"textarea\\\",null,null,\\\"position: absolute; bottom: -1em; padding: 0; width: 1px; height: 1em; outline: none\\\"),t=M(\\\"div\\\",[e],null,\\\"overflow: hidden; position: relative; width: 3px; height: 0px;\\\");return f?e.style.width=\\\"1000px\\\":e.setAttribute(\\\"wrap\\\",\\\"off\\\"),s&&(e.style.border=\\\"1px solid black\\\"),yl(e),t}function wl(r,i,o,l,s){var e=i,t=o,a=$e(r,i.line),u=s&&\\\"rtl\\\"==r.direction?-o:o;function n(e){var t,n;if(null==(t=\\\"codepoint\\\"==l?(t=a.text.charCodeAt(i.ch+(0\u003Cl?0:-1)),isNaN(t)?null:new rt(i.line,Math.max(0,Math.min(a.text.length,i.ch+o*(55296\u003C=t&&t\u003C56320?2:1))),-o)):s?Po(r.cm,a,i,o):Fo(a,i,o))){if(e||(n=i.line+u)\u003Cr.first||n>=r.first+r.size||(i=new rt(n,i.ch,i.sticky),!(a=$e(r,n))))return;i=Eo(s,r.cm,a,i.line,u)}else i=t;return 1}if(\\\"char\\\"==l||\\\"codepoint\\\"==l)n();else if(\\\"column\\\"==l)n(!0);else if(\\\"word\\\"==l||\\\"group\\\"==l)for(var c=null,h=\\\"group\\\"==l,d=r.cm&&r.cm.getHelper(i,\\\"wordChars\\\"),f=!0;!(o\u003C0)||n(!f);f=!1){var p=a.text.charAt(i.ch)||\\\"\\\\n\\\",p=J(p,d)?\\\"w\\\":h&&\\\"\\\\n\\\"==p?\\\"n\\\":!h||/\\\\s/.test(p)?null:\\\"p\\\";if(!h||f||p||(p=\\\"s\\\"),c&&c!=p){o\u003C0&&(o=1,n(),i.sticky=\\\"after\\\");break}if(p&&(c=p),0\u003Co&&!n(!f))break}t=Gi(r,i,e,t,!0);return ot(e,t)&&(t.hitSide=!0),t}function xl(e,t,n,r){var i,o,l,s=e.doc,a=t.left;for(\\\"page\\\"==r?(i=Math.min(e.display.wrapper.clientHeight,window.innerHeight||document.documentElement.clientHeight),i=Math.max(i-.5*Yn(e.display),3),o=(0\u003Cn?t.bottom:t.top)+n*i):\\\"line\\\"==r&&(o=0\u003Cn?t.bottom+3:t.top-3);(l=Vn(e,a,o)).outside;){if(n\u003C0?o\u003C=0:o>=s.height){l.hitSide=!0;break}o+=5*n}return l}e=function(e){this.cm=e,this.lastAnchorNode=this.lastAnchorOffset=this.lastFocusNode=this.lastFocusOffset=null,this.polling=new I,this.composing=null,this.gracePeriod=!1,this.readDOMTimeout=null};function Cl(e,t){var n=kn(e,t.line);if(!n||n.hidden)return null;var r=$e(e.doc,t.line),n=Sn(n,r,t.line),r=me(r,e.doc.direction),e=\\\"left\\\";r&&(e=le(r,t.ch)%2?\\\"right\\\":\\\"left\\\");e=On(n.map,t.ch,e);return e.offset=\\\"right\\\"==e.collapse?e.end:e.start,e}function Sl(e,t){return t&&(e.bad=!0),e}function Ll(e,t,n){var r;if(t==e.display.lineDiv){if(!(r=e.display.lineDiv.childNodes[n]))return Sl(e.clipPos(rt(e.display.viewTo-1)),!0);t=null,n=0}else for(r=t;;r=r.parentNode){if(!r||r==e.display.lineDiv)return null;if(r.parentNode&&r.parentNode==e.display.lineDiv)break}for(var i=0;i\u003Ce.display.view.length;i++){var o=e.display.view[i];if(o.node==r)return function(u,e,t){var n=u.text.firstChild,r=!1;if(!e||!A(n,e))return Sl(rt(Je(u.line),0),!0);if(e==n&&(r=!0,e=n.childNodes[t],t=0,!e)){var i=u.rest?Y(u.rest):u.line;return Sl(rt(Je(i),i.text.length),r)}var i=3==e.nodeType?e:null,o=e;i||1!=e.childNodes.length||3!=e.firstChild.nodeType||(i=e.firstChild,t=t&&i.nodeValue.length);for(;o.parentNode!=n;)o=o.parentNode;var c=u.measure,h=c.maps;function l(e,t,n){for(var r=-1;r\u003C(h?h.length:0);r++)for(var i=r\u003C0?c.map:h[r],o=0;o\u003Ci.length;o+=3){var l=i[o+2];if(l==e||l==t){var s=Je(r\u003C0?u.line:u.rest[r]),a=i[o]+n;return(n\u003C0||l!=e)&&(a=i[o+(n?1:0)]),rt(s,a)}}}var s=l(i,o,t);if(s)return Sl(s,r);for(var a=o.nextSibling,d=i?i.nodeValue.length-t:0;a;a=a.nextSibling){if(s=l(a,a.firstChild,0))return Sl(rt(s.line,s.ch-d),r);d+=a.textContent.length}for(var f=o.previousSibling,p=t;f;f=f.previousSibling){if(s=l(f,f.firstChild,-1))return Sl(rt(s.line,s.ch+p),r);p+=f.textContent.length}}(o,t,n)}}e.prototype.init=function(e){var t=this,o=this,l=o.cm,s=o.div=e.lineDiv;function a(e){for(var t=e.target;t;t=t.parentNode){if(t==s)return 1;if(/\\\\bCodeMirror-(?:line)?widget\\\\b/.test(t.className))break}}function n(e){if(a(e)&&!Ce(l,e)){if(l.somethingSelected())fl({lineWise:!1,text:l.getSelections()}),\\\"cut\\\"==e.type&&l.replaceSelection(\\\"\\\",null,\\\"cut\\\");else{if(!l.options.lineWiseCopyCut)return;var t=vl(l);fl({lineWise:!0,text:t.text}),\\\"cut\\\"==e.type&&l.operation(function(){l.setSelections(t.ranges,0,G),l.replaceSelection(\\\"\\\",null,\\\"cut\\\")})}if(e.clipboardData){e.clipboardData.clearData();var n=dl.text.join(\\\"\\\\n\\\");if(e.clipboardData.setData(\\\"Text\\\",n),e.clipboardData.getData(\\\"Text\\\")==n)return void e.preventDefault()}var r=bl(),e=r.firstChild;l.display.lineSpace.insertBefore(r,l.display.lineSpace.firstChild),e.value=dl.text.join(\\\"\\\\n\\\");var i=document.activeElement;H(e),setTimeout(function(){l.display.lineSpace.removeChild(r),i.focus(),i==s&&o.showPrimarySelection()},50)}}yl(s,l.options.spellcheck,l.options.autocorrect,l.options.autocapitalize),ye(s,\\\"paste\\\",function(e){!a(e)||Ce(l,e)||gl(e,l)||v\u003C=11&&setTimeout(Pr(l,function(){return t.updateFromDOM()}),20)}),ye(s,\\\"compositionstart\\\",function(e){t.composing={data:e.data,done:!1}}),ye(s,\\\"compositionupdate\\\",function(e){t.composing||(t.composing={data:e.data,done:!1})}),ye(s,\\\"compositionend\\\",function(e){t.composing&&(e.data!=t.composing.data&&t.readFromDOMSoon(),t.composing.done=!0)}),ye(s,\\\"touchstart\\\",function(){return o.forceCompositionEnd()}),ye(s,\\\"input\\\",function(){t.composing||t.readFromDOMSoon()}),ye(s,\\\"copy\\\",n),ye(s,\\\"cut\\\",n)},e.prototype.screenReaderLabelChanged=function(e){e?this.div.setAttribute(\\\"aria-label\\\",e):this.div.removeAttribute(\\\"aria-label\\\")},e.prototype.prepareSelection=function(){var e=sr(this.cm,!1);return e.focus=document.activeElement==this.div,e},e.prototype.showSelection=function(e,t){e&&this.cm.display.view.length&&((e.focus||t)&&this.showPrimarySelection(),this.showMultipleSelections(e))},e.prototype.getSelection=function(){return this.cm.display.wrapper.ownerDocument.getSelection()},e.prototype.showPrimarySelection=function(){var e=this.getSelection(),t=this.cm,n=t.doc.sel.primary(),r=n.from(),i=n.to();if(t.display.viewTo==t.display.viewFrom||r.line>=t.display.viewTo||i.line\u003Ct.display.viewFrom)e.removeAllRanges();else{var o=Ll(t,e.anchorNode,e.anchorOffset),n=Ll(t,e.focusNode,e.focusOffset);if(!o||o.bad||!n||n.bad||0!=it(at(o,n),r)||0!=it(st(o,n),i)){var n=t.display.view,l=r.line>=t.display.viewFrom&&Cl(t,r)||{node:n[0].measure.map[2],offset:0},s=i.line\u003Ct.display.viewTo&&Cl(t,i);if(s||(s={node:(u=(u=n[n.length-1].measure).maps?u.maps[u.maps.length-1]:u.map)[u.length-1],offset:u[u.length-2]-u[u.length-3]}),l&&s){var a,u=e.rangeCount&&e.getRangeAt(0);try{a=S(l.node,l.offset,s.offset,s.node)}catch(e){}a&&(!d&&t.state.focused?(e.collapse(l.node,l.offset),a.collapsed||(e.removeAllRanges(),e.addRange(a))):(e.removeAllRanges(),e.addRange(a)),u&&null==e.anchorNode?e.addRange(u):d&&this.startGracePeriod()),this.rememberSelection()}else e.removeAllRanges()}}},e.prototype.startGracePeriod=function(){var e=this;clearTimeout(this.gracePeriod),this.gracePeriod=setTimeout(function(){e.gracePeriod=!1,e.selectionChanged()&&e.cm.operation(function(){return e.cm.curOp.selectionChanged=!0})},20)},e.prototype.showMultipleSelections=function(e){T(this.cm.display.cursorDiv,e.cursors),T(this.cm.display.selectionDiv,e.selection)},e.prototype.rememberSelection=function(){var e=this.getSelection();this.lastAnchorNode=e.anchorNode,this.lastAnchorOffset=e.anchorOffset,this.lastFocusNode=e.focusNode,this.lastFocusOffset=e.focusOffset},e.prototype.selectionInEditor=function(){var e=this.getSelection();if(!e.rangeCount)return!1;e=e.getRangeAt(0).commonAncestorContainer;return A(this.div,e)},e.prototype.focus=function(){\\\"nocursor\\\"!=this.cm.options.readOnly&&(this.selectionInEditor()&&document.activeElement==this.div||this.showSelection(this.prepareSelection(),!0),this.div.focus())},e.prototype.blur=function(){this.div.blur()},e.prototype.getField=function(){return this.div},e.prototype.supportsTouch=function(){return!0},e.prototype.receivedFocus=function(){var t=this;this.selectionInEditor()?this.pollSelection():Er(this.cm,function(){return t.cm.curOp.selectionChanged=!0}),this.polling.set(this.cm.options.pollInterval,function e(){t.cm.state.focused&&(t.pollSelection(),t.polling.set(t.cm.options.pollInterval,e))})},e.prototype.selectionChanged=function(){var e=this.getSelection();return e.anchorNode!=this.lastAnchorNode||e.anchorOffset!=this.lastAnchorOffset||e.focusNode!=this.lastFocusNode||e.focusOffset!=this.lastFocusOffset},e.prototype.pollSelection=function(){if(null==this.readDOMTimeout&&!this.gracePeriod&&this.selectionChanged()){var e,t,n=this.getSelection(),r=this.cm;if(a&&o&&this.cm.display.gutterSpecs.length&&function(e){for(var t=e;t;t=t.parentNode)if(/CodeMirror-gutter-wrapper/.test(t.className))return!0;return!1}(n.anchorNode))return this.cm.triggerOnKeyDown({type:\\\"keydown\\\",keyCode:8,preventDefault:Math.abs}),this.blur(),void this.focus();this.composing||(this.rememberSelection(),e=Ll(r,n.anchorNode,n.anchorOffset),t=Ll(r,n.focusNode,n.focusOffset),e&&t&&Er(r,function(){Ei(r.doc,si(e,t),G),(e.bad||t.bad)&&(r.curOp.selectionChanged=!0)}))}},e.prototype.pollContent=function(){null!=this.readDOMTimeout&&(clearTimeout(this.readDOMTimeout),this.readDOMTimeout=null);var e,t=this.cm,n=t.display,r=t.doc.sel.primary(),i=r.from(),r=r.to();if(0==i.ch&&i.line>t.firstLine()&&(i=rt(i.line-1,$e(t.doc,i.line-1).length)),r.ch==$e(t.doc,r.line).text.length&&r.line\u003Ct.lastLine()&&(r=rt(r.line+1,0)),i.line\u003Cn.viewFrom||r.line>n.viewTo-1)return!1;m=i.line==n.viewFrom||0==(m=er(t,i.line))?(e=Je(n.view[0].line),n.view[0].node):(e=Je(n.view[m].line),n.view[m-1].node.nextSibling);var o,r=er(t,r.line),r=r==n.view.length-1?(o=n.viewTo-1,n.lineDiv.lastChild):(o=Je(n.view[r+1].line)-1,n.view[r+1].node.previousSibling);if(!m)return!1;for(var l=t.doc.splitLines(function(l,e,t,s,a){var n=\\\"\\\",u=!1,c=l.doc.lineSeparator(),h=!1;function d(){u&&(n+=c,h&&(n+=c),u=h=!1)}function f(e){e&&(d(),n+=e)}for(;!function e(t){if(1==t.nodeType){var n=t.getAttribute(\\\"cm-text\\\");if(n)f(n);else if(n=t.getAttribute(\\\"cm-marker\\\"))(n=l.findMarks(rt(s,0),rt(a+1,0),(o=+n,function(e){return e.id==o}))).length&&(r=n[0].find(0))&&f(qe(l.doc,r.from,r.to).join(c));else if(\\\"false\\\"!=t.getAttribute(\\\"contenteditable\\\")){var r=/^(pre|div|p|li|table|br)$/i.test(t.nodeName);if(/^br$/i.test(t.nodeName)||0!=t.textContent.length){r&&d();for(var i=0;i\u003Ct.childNodes.length;i++)e(t.childNodes[i]);/^(pre|p)$/i.test(t.nodeName)&&(h=!0),r&&(u=!0)}}}else 3==t.nodeType&&f(t.nodeValue.replace(/\\\\u200b/g,\\\"\\\").replace(/\\\\u00a0/g,\\\" \\\"));var o}(e),e!=t;)e=e.nextSibling,h=!1;return n}(t,m,r,e,o)),s=qe(t.doc,rt(e,0),rt(o,$e(t.doc,o).text.length));1\u003Cl.length&&1\u003Cs.length;)if(Y(l)==Y(s))l.pop(),s.pop(),o--;else{if(l[0]!=s[0])break;l.shift(),s.shift(),e++}for(var a=0,u=0,c=l[0],h=s[0],d=Math.min(c.length,h.length);a\u003Cd&&c.charCodeAt(a)==h.charCodeAt(a);)++a;for(var f=Y(l),p=Y(s),g=Math.min(f.length-(1==l.length?a:0),p.length-(1==s.length?a:0));u\u003Cg&&f.charCodeAt(f.length-u-1)==p.charCodeAt(p.length-u-1);)++u;if(1==l.length&&1==s.length&&e==i.line)for(;a&&a>i.ch&&f.charCodeAt(f.length-u-1)==p.charCodeAt(p.length-u-1);)a--,u++;l[l.length-1]=f.slice(0,f.length-u).replace(/^\\\\u200b+/,\\\"\\\"),l[0]=l[0].slice(a).replace(/\\\\u200b+$/,\\\"\\\");var m=rt(e,a),r=rt(o,s.length?Y(s).length-u:0);return 1\u003Cl.length||l[0]||it(m,r)?(qi(t.doc,l,m,r,\\\"+input\\\"),!0):void 0},e.prototype.ensurePolled=function(){this.forceCompositionEnd()},e.prototype.reset=function(){this.forceCompositionEnd()},e.prototype.forceCompositionEnd=function(){this.composing&&(clearTimeout(this.readDOMTimeout),this.composing=null,this.updateFromDOM(),this.div.blur(),this.div.focus())},e.prototype.readFromDOMSoon=function(){var e=this;null==this.readDOMTimeout&&(this.readDOMTimeout=setTimeout(function(){if(e.readDOMTimeout=null,e.composing){if(!e.composing.done)return;e.composing=null}e.updateFromDOM()},80))},e.prototype.updateFromDOM=function(){var e=this;!this.cm.isReadOnly()&&this.pollContent()||Er(this.cm,function(){return tr(e.cm)})},e.prototype.setUneditable=function(e){e.contentEditable=\\\"false\\\"},e.prototype.onKeyPress=function(e){0==e.charCode||this.composing||(e.preventDefault(),this.cm.isReadOnly()||Pr(this.cm,pl)(this.cm,String.fromCharCode(null==e.charCode?e.keyCode:e.charCode),0))},e.prototype.readOnlyChanged=function(e){this.div.contentEditable=String(\\\"nocursor\\\"!=e)},e.prototype.onContextMenu=function(){},e.prototype.resetPosition=function(){},e.prototype.needsContentAttribute=!0;var kl,Tl,Ml,Nl,Al,r=function(e){this.cm=e,this.prevInput=\\\"\\\",this.pollingFast=!1,this.polling=new I,this.hasSelection=!1,this.composing=null};function Ol(e,t,r,n){kl.defaults[e]=t,r&&(Tl[e]=n?function(e,t,n){n!=il&&r(e,t,n)}:r)}r.prototype.init=function(n){var e=this,r=this,i=this.cm;this.createField(n);var o=this.textarea;function t(e){if(!Ce(i,e)){if(i.somethingSelected())fl({lineWise:!1,text:i.getSelections()});else{if(!i.options.lineWiseCopyCut)return;var t=vl(i);fl({lineWise:!0,text:t.text}),\\\"cut\\\"==e.type?i.setSelections(t.ranges,null,G):(r.prevInput=\\\"\\\",o.value=t.text.join(\\\"\\\\n\\\"),H(o))}\\\"cut\\\"==e.type&&(i.state.cutIncoming=+new Date)}}n.wrapper.insertBefore(this.wrapper,n.wrapper.firstChild),s&&(o.style.width=\\\"0px\\\"),ye(o,\\\"input\\\",function(){w&&9\u003C=v&&e.hasSelection&&(e.hasSelection=null),r.poll()}),ye(o,\\\"paste\\\",function(e){Ce(i,e)||gl(e,i)||(i.state.pasteIncoming=+new Date,r.fastPoll())}),ye(o,\\\"cut\\\",t),ye(o,\\\"copy\\\",t),ye(n.scroller,\\\"paste\\\",function(e){if(!mn(n,e)&&!Ce(i,e)){if(!o.dispatchEvent)return i.state.pasteIncoming=+new Date,void r.focus();var t=new Event(\\\"paste\\\");t.clipboardData=e.clipboardData,o.dispatchEvent(t)}}),ye(n.lineSpace,\\\"selectstart\\\",function(e){mn(n,e)||Te(e)}),ye(o,\\\"compositionstart\\\",function(){var e=i.getCursor(\\\"from\\\");r.composing&&r.composing.range.clear(),r.composing={start:e,range:i.markText(e,i.getCursor(\\\"to\\\"),{className:\\\"CodeMirror-composing\\\"})}}),ye(o,\\\"compositionend\\\",function(){r.composing&&(r.poll(),r.composing.range.clear(),r.composing=null)})},r.prototype.createField=function(e){this.wrapper=bl(),this.textarea=this.wrapper.firstChild},r.prototype.screenReaderLabelChanged=function(e){e?this.textarea.setAttribute(\\\"aria-label\\\",e):this.textarea.removeAttribute(\\\"aria-label\\\")},r.prototype.prepareSelection=function(){var e,t=this.cm,n=t.display,r=t.doc,i=sr(t);return t.options.moveInputWithCursor&&(e=Bn(t,r.sel.primary().head,\\\"div\\\"),t=n.wrapper.getBoundingClientRect(),r=n.lineDiv.getBoundingClientRect(),i.teTop=Math.max(0,Math.min(n.wrapper.clientHeight-10,e.top+r.top-t.top)),i.teLeft=Math.max(0,Math.min(n.wrapper.clientWidth-10,e.left+r.left-t.left))),i},r.prototype.showSelection=function(e){var t=this.cm.display;T(t.cursorDiv,e.cursors),T(t.selectionDiv,e.selection),null!=e.teTop&&(this.wrapper.style.top=e.teTop+\\\"px\\\",this.wrapper.style.left=e.teLeft+\\\"px\\\")},r.prototype.reset=function(e){var t,n;this.contextMenuPending||this.composing||((t=this.cm).somethingSelected()?(this.prevInput=\\\"\\\",n=t.getSelection(),this.textarea.value=n,t.state.focused&&H(this.textarea),w&&9\u003C=v&&(this.hasSelection=n)):e||(this.prevInput=this.textarea.value=\\\"\\\",w&&9\u003C=v&&(this.hasSelection=null)))},r.prototype.getField=function(){return this.textarea},r.prototype.supportsTouch=function(){return!1},r.prototype.focus=function(){if(\\\"nocursor\\\"!=this.cm.options.readOnly&&(!h||O()!=this.textarea))try{this.textarea.focus()}catch(e){}},r.prototype.blur=function(){this.textarea.blur()},r.prototype.resetPosition=function(){this.wrapper.style.top=this.wrapper.style.left=0},r.prototype.receivedFocus=function(){this.slowPoll()},r.prototype.slowPoll=function(){var e=this;this.pollingFast||this.polling.set(this.cm.options.pollInterval,function(){e.poll(),e.cm.state.focused&&e.slowPoll()})},r.prototype.fastPoll=function(){var t=!1,n=this;n.pollingFast=!0,n.polling.set(20,function e(){n.poll()||t?(n.pollingFast=!1,n.slowPoll()):(t=!0,n.polling.set(60,e))})},r.prototype.poll=function(){var e=this,t=this.cm,n=this.textarea,r=this.prevInput;if(this.contextMenuPending||!t.state.focused||Pe(n)&&!r&&!this.composing||t.isReadOnly()||t.options.disableInput||t.state.keySeq)return!1;var i=n.value;if(i==r&&!t.somethingSelected())return!1;if(w&&9\u003C=v&&this.hasSelection===i||g&&/[\\\\uf700-\\\\uf7ff]/.test(i))return t.display.input.reset(),!1;if(t.doc.sel==t.display.selForContextMenu){var o=i.charCodeAt(0);if(8203!=o||r||(r=\\\"\\\"),8666==o)return this.reset(),this.cm.execCommand(\\\"undo\\\")}for(var l=0,s=Math.min(r.length,i.length);l\u003Cs&&r.charCodeAt(l)==i.charCodeAt(l);)++l;return Er(t,function(){pl(t,i.slice(l),r.length-l,null,e.composing?\\\"*compose\\\":null),1e3\u003Ci.length||-1\u003Ci.indexOf(\\\"\\\\n\\\")?n.value=e.prevInput=\\\"\\\":e.prevInput=i,e.composing&&(e.composing.range.clear(),e.composing.range=t.markText(e.composing.start,t.getCursor(\\\"to\\\"),{className:\\\"CodeMirror-composing\\\"}))}),!0},r.prototype.ensurePolled=function(){this.pollingFast&&this.poll()&&(this.pollingFast=!1)},r.prototype.onKeyPress=function(){w&&9\u003C=v&&(this.hasSelection=null),this.fastPoll()},r.prototype.onContextMenu=function(e){var n=this,r=n.cm,i=r.display,o=n.textarea;n.contextMenuPending&&n.contextMenuPending();var l,s,t,a,u=Jn(r,e),c=i.scroller.scrollTop;function h(){var e,t;null!=o.selectionStart&&(t=\\\"\\\"+((e=r.somethingSelected())?o.value:\\\"\\\"),o.value=\\\"⇚\\\",o.value=t,n.prevInput=e?\\\"\\\":\\\"\\\",o.selectionStart=1,o.selectionEnd=t.length,i.selForContextMenu=r.doc.sel)}function d(){var e,t;n.contextMenuPending==d&&(n.contextMenuPending=!1,n.wrapper.style.cssText=s,o.style.cssText=l,w&&v\u003C9&&i.scrollbars.setScrollTop(i.scroller.scrollTop=c),null!=o.selectionStart&&((!w||w&&v\u003C9)&&h(),e=0,t=function(){i.selForContextMenu==r.doc.sel&&0==o.selectionStart&&0\u003Co.selectionEnd&&\\\"\\\"==n.prevInput?Pr(r,Vi)(r):e++\u003C10?i.detectingSelectAll=setTimeout(t,500):(i.selForContextMenu=null,i.input.reset())},i.detectingSelectAll=setTimeout(t,200)))}u&&!p&&(r.options.resetSelectionOnContextMenu&&-1==r.doc.sel.contains(u)&&Pr(r,Ei)(r.doc,si(u),G),l=o.style.cssText,s=n.wrapper.style.cssText,u=n.wrapper.offsetParent.getBoundingClientRect(),n.wrapper.style.cssText=\\\"position: static\\\",o.style.cssText=\\\"position: absolute; width: 30px; height: 30px;\\\\n top: \\\"+(e.clientY-u.top-5)+\\\"px; left: \\\"+(e.clientX-u.left-5)+\\\"px;\\\\n z-index: 1000; background: \\\"+(w?\\\"rgba(255, 255, 255, .05)\\\":\\\"transparent\\\")+\\\";\\\\n outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);\\\",f&&(t=window.scrollY),i.input.focus(),f&&window.scrollTo(null,t),i.input.reset(),r.somethingSelected()||(o.value=n.prevInput=\\\" \\\"),n.contextMenuPending=d,i.selForContextMenu=r.doc.sel,clearTimeout(i.detectingSelectAll),w&&9\u003C=v&&h(),x?(Ae(e),a=function(){we(window,\\\"mouseup\\\",a),setTimeout(d,20)},ye(window,\\\"mouseup\\\",a)):setTimeout(d,50))},r.prototype.readOnlyChanged=function(e){e||this.reset(),this.textarea.disabled=\\\"nocursor\\\"==e,this.textarea.readOnly=!!e},r.prototype.setUneditable=function(){},r.prototype.needsContentAttribute=!1,Tl=(kl=ul).optionHandlers,kl.defineOption=Ol,kl.Init=il,Ol(\\\"value\\\",\\\"\\\",function(e,t){return e.setValue(t)},!0),Ol(\\\"mode\\\",null,function(e,t){e.doc.modeOption=t,di(e)},!0),Ol(\\\"indentUnit\\\",2,di,!0),Ol(\\\"indentWithTabs\\\",!1),Ol(\\\"smartIndent\\\",!0),Ol(\\\"tabSize\\\",4,function(e){fi(e),Hn(e),tr(e)},!0),Ol(\\\"lineSeparator\\\",null,function(e,r){if(e.doc.lineSep=r){var i=[],o=e.doc.first;e.doc.iter(function(e){for(var t=0;;){var n=e.text.indexOf(r,t);if(-1==n)break;t=n+r.length,i.push(rt(o,n))}o++});for(var t=i.length-1;0\u003C=t;t--)qi(e.doc,r,i[t],rt(i[t].line,i[t].ch+r.length))}}),Ol(\\\"specialChars\\\",/[\\\\u0000-\\\\u001f\\\\u007f-\\\\u009f\\\\u00ad\\\\u061c\\\\u200b-\\\\u200c\\\\u200e\\\\u200f\\\\u2028\\\\u2029\\\\ufeff\\\\ufff9-\\\\ufffc]/g,function(e,t,n){e.state.specialChars=new RegExp(t.source+(t.test(\\\"\\\\t\\\")?\\\"\\\":\\\"|\\\\t\\\"),\\\"g\\\"),n!=il&&e.refresh()}),Ol(\\\"specialCharPlaceholder\\\",Zt,function(e){return e.refresh()},!0),Ol(\\\"electricChars\\\",!0),Ol(\\\"inputStyle\\\",h?\\\"contenteditable\\\":\\\"textarea\\\",function(){throw new Error(\\\"inputStyle can not (yet) be changed in a running editor\\\")},!0),Ol(\\\"spellcheck\\\",!1,function(e,t){return e.getInputField().spellcheck=t},!0),Ol(\\\"autocorrect\\\",!1,function(e,t){return e.getInputField().autocorrect=t},!0),Ol(\\\"autocapitalize\\\",!1,function(e,t){return e.getInputField().autocapitalize=t},!0),Ol(\\\"rtlMoveVisually\\\",!y),Ol(\\\"wholeLineUpdateBefore\\\",!0),Ol(\\\"theme\\\",\\\"default\\\",function(e){rl(e),Zr(e)},!0),Ol(\\\"keyMap\\\",\\\"default\\\",function(e,t,n){t=Do(t),n=n!=il&&Do(n);n&&n.detach&&n.detach(e,t),t.attach&&t.attach(e,n||null)}),Ol(\\\"extraKeys\\\",null),Ol(\\\"configureMouse\\\",null),Ol(\\\"lineWrapping\\\",!1,al,!0),Ol(\\\"gutters\\\",[],function(e,t){e.display.gutterSpecs=$r(t,e.options.lineNumbers),Zr(e)},!0),Ol(\\\"fixedGutter\\\",!0,function(e,t){e.display.gutters.style.left=t?qn(e.display)+\\\"px\\\":\\\"0\\\",e.refresh()},!0),Ol(\\\"coverGutterNextToScrollbar\\\",!1,function(e){return Nr(e)},!0),Ol(\\\"scrollbarStyle\\\",\\\"native\\\",function(e){Dr(e),Nr(e),e.display.scrollbars.setScrollTop(e.doc.scrollTop),e.display.scrollbars.setScrollLeft(e.doc.scrollLeft)},!0),Ol(\\\"lineNumbers\\\",!1,function(e,t){e.display.gutterSpecs=$r(e.options.gutters,t),Zr(e)},!0),Ol(\\\"firstLineNumber\\\",1,Zr,!0),Ol(\\\"lineNumberFormatter\\\",function(e){return e},Zr,!0),Ol(\\\"showCursorWhenSelecting\\\",!1,lr,!0),Ol(\\\"resetSelectionOnContextMenu\\\",!0),Ol(\\\"lineWiseCopyCut\\\",!0),Ol(\\\"pasteLinesPerSelection\\\",!0),Ol(\\\"selectionsMayTouch\\\",!1),Ol(\\\"readOnly\\\",!1,function(e,t){\\\"nocursor\\\"==t&&(pr(e),e.display.input.blur()),e.display.input.readOnlyChanged(t)}),Ol(\\\"screenReaderLabel\\\",null,function(e,t){t=\\\"\\\"===t?null:t,e.display.input.screenReaderLabelChanged(t)}),Ol(\\\"disableInput\\\",!1,function(e,t){t||e.display.input.reset()},!0),Ol(\\\"dragDrop\\\",!0,sl),Ol(\\\"allowDropFileTypes\\\",null),Ol(\\\"cursorBlinkRate\\\",530),Ol(\\\"cursorScrollMargin\\\",0),Ol(\\\"cursorHeight\\\",1,lr,!0),Ol(\\\"singleCursorHeightPerLine\\\",!0,lr,!0),Ol(\\\"workTime\\\",100),Ol(\\\"workDelay\\\",100),Ol(\\\"flattenSpans\\\",!0,fi,!0),Ol(\\\"addModeClass\\\",!1,fi,!0),Ol(\\\"pollInterval\\\",100),Ol(\\\"undoDepth\\\",200,function(e,t){return e.doc.history.undoDepth=t}),Ol(\\\"historyEventDelay\\\",1250),Ol(\\\"viewportMargin\\\",10,function(e){return e.refresh()},!0),Ol(\\\"maxHighlightLength\\\",1e4,fi,!0),Ol(\\\"moveInputWithCursor\\\",!0,function(e,t){t||e.display.input.resetPosition()}),Ol(\\\"tabindex\\\",null,function(e,t){return e.display.input.getField().tabIndex=t||\\\"\\\"}),Ol(\\\"autofocus\\\",null),Ol(\\\"direction\\\",\\\"ltr\\\",function(e,t){return e.doc.setDirection(t)},!0),Ol(\\\"phrases\\\",null),Nl=(Ml=ul).optionHandlers,Al=Ml.helpers={},Ml.prototype={constructor:Ml,focus:function(){window.focus(),this.display.input.focus()},setOption:function(e,t){var n=this.options,r=n[e];n[e]==t&&\\\"mode\\\"!=e||(n[e]=t,Nl.hasOwnProperty(e)&&Pr(this,Nl[e])(this,t,r),xe(this,\\\"optionChange\\\",this,e))},getOption:function(e){return this.options[e]},getDoc:function(){return this.doc},addKeyMap:function(e,t){this.state.keyMaps[t?\\\"push\\\":\\\"unshift\\\"](Do(e))},removeKeyMap:function(e){for(var t=this.state.keyMaps,n=0;n\u003Ct.length;++n)if(t[n]==e||t[n].name==e)return t.splice(n,1),!0},addOverlay:Ir(function(e,t){var n=e.token?e:Ml.getMode(this.options,e);if(n.startState)throw new Error(\\\"Overlays may not be stateful.\\\");!function(e,t,n){for(var r=0,i=n(t);r\u003Ce.length&&n(e[r])\u003C=i;)r++;e.splice(r,0,t)}(this.state.overlays,{mode:n,modeSpec:e,opaque:t&&t.opaque,priority:t&&t.priority||0},function(e){return e.priority}),this.state.modeGen++,tr(this)}),removeOverlay:Ir(function(e){for(var t=this.state.overlays,n=0;n\u003Ct.length;++n){var r=t[n].modeSpec;if(r==e||\\\"string\\\"==typeof e&&r.name==e)return t.splice(n,1),this.state.modeGen++,void tr(this)}}),indentLine:Ir(function(e,t,n){\\\"string\\\"!=typeof t&&\\\"number\\\"!=typeof t&&(t=null==t?this.options.smartIndent?\\\"smart\\\":\\\"prev\\\":t?\\\"add\\\":\\\"subtract\\\"),tt(this.doc,e)&&hl(this,e,t,n)}),indentSelection:Ir(function(e){for(var t=this.doc.sel.ranges,n=-1,r=0;r\u003Ct.length;r++){var i=t[r];if(i.empty())i.head.line>n&&(hl(this,i.head.line,e,!0),n=i.head.line,r==this.doc.sel.primIndex&&wr(this));else{for(var o=i.from(),l=i.to(),i=Math.max(n,o.line),n=Math.min(this.lastLine(),l.line-(l.ch?0:1))+1,s=i;s\u003Cn;++s)hl(this,s,e);i=this.doc.sel.ranges;0==o.ch&&t.length==i.length&&0\u003Ci[r].from().ch&&Wi(this.doc,r,new oi(o,i[r].to()),G)}}}),getTokenAt:function(e,t){return xt(this,e,t)},getLineTokens:function(e,t){return xt(this,rt(e),t,!0)},getTokenTypeAt:function(e){e=ct(this.doc,e);var t,n=gt(this,$e(this.doc,e.line)),r=0,i=(n.length-1)/2,o=e.ch;if(0==o)t=n[2];else for(;;){var l=r+i>>1;if((l?n[2*l-1]:0)>=o)i=l;else{if(!(n[2*l+1]\u003Co)){t=n[2*l+2];break}r=1+l}}e=t?t.indexOf(\\\"overlay \\\"):-1;return e\u003C0?t:0==e?null:t.slice(0,e-1)},getModeAt:function(e){var t=this.doc.mode;return t.innerMode?Ml.innerMode(t,this.getTokenAt(e).state).mode:t},getHelper:function(e,t){return this.getHelpers(e,t)[0]},getHelpers:function(e,t){var n=[];if(!Al.hasOwnProperty(t))return n;var r=Al[t],i=this.getModeAt(e);if(\\\"string\\\"==typeof i[t])r[i[t]]&&n.push(r[i[t]]);else if(i[t])for(var o=0;o\u003Ci[t].length;o++){var l=r[i[t][o]];l&&n.push(l)}else i.helperType&&r[i.helperType]?n.push(r[i.helperType]):r[i.name]&&n.push(r[i.name]);for(var s=0;s\u003Cr._global.length;s++){var a=r._global[s];a.pred(i,this)&&-1==R(n,a.val)&&n.push(a.val)}return n},getStateAfter:function(e,t){var n=this.doc;return mt(this,(e=ut(n,null==e?n.first+n.size-1:e))+1,t).state},cursorCoords:function(e,t){var n=this.doc.sel.primary(),n=null==e?n.head:\\\"object\\\"==typeof e?ct(this.doc,e):e?n.from():n.to();return Bn(this,n,t||\\\"page\\\")},charCoords:function(e,t){return zn(this,ct(this.doc,e),t||\\\"page\\\")},coordsChar:function(e,t){return Vn(this,(e=Rn(this,e,t||\\\"page\\\")).left,e.top)},lineAtHeight:function(e,t){return e=Rn(this,{top:e,left:0},t||\\\"page\\\").top,et(this.doc,e+this.display.viewOffset)},heightAtLine:function(e,t,n){var r,i=!1,e=\\\"number\\\"==typeof e?(r=this.doc.first+this.doc.size-1,e\u003Cthis.doc.first?e=this.doc.first:r\u003Ce&&(e=r,i=!0),$e(this.doc,e)):e;return In(this,e,{top:0,left:0},t||\\\"page\\\",n||i).top+(i?this.doc.height-Vt(e):0)},defaultTextHeight:function(){return Yn(this.display)},defaultCharWidth:function(){return _n(this.display)},getViewport:function(){return{from:this.display.viewFrom,to:this.display.viewTo}},addWidget:function(e,t,n,r,i){var o,l,s=this.display,a=(e=Bn(this,ct(this.doc,e))).bottom,u=e.left;t.style.position=\\\"absolute\\\",t.setAttribute(\\\"cm-ignore-events\\\",\\\"true\\\"),this.display.input.setUneditable(t),s.sizer.appendChild(t),\\\"over\\\"==r?a=e.top:\\\"above\\\"!=r&&\\\"near\\\"!=r||(o=Math.max(s.wrapper.clientHeight,this.doc.height),l=Math.max(s.sizer.clientWidth,s.lineSpace.clientWidth),(\\\"above\\\"==r||e.bottom+t.offsetHeight>o)&&e.top>t.offsetHeight?a=e.top-t.offsetHeight:e.bottom+t.offsetHeight\u003C=o&&(a=e.bottom),u+t.offsetWidth>l&&(u=l-t.offsetWidth)),t.style.top=a+\\\"px\\\",t.style.left=t.style.right=\\\"\\\",\\\"right\\\"==i?(u=s.sizer.clientWidth-t.offsetWidth,t.style.right=\\\"0px\\\"):(\\\"left\\\"==i?u=0:\\\"middle\\\"==i&&(u=(s.sizer.clientWidth-t.offsetWidth)/2),t.style.left=u+\\\"px\\\"),n&&(n=this,t={left:u,top:a,right:u+t.offsetWidth,bottom:a+t.offsetHeight},null!=(t=yr(n,t)).scrollTop&&Lr(n,t.scrollTop),null!=t.scrollLeft&&Tr(n,t.scrollLeft))},triggerOnKeyDown:Ir(Xo),triggerOnKeyPress:Ir(_o),triggerOnKeyUp:Yo,triggerOnMouseDown:Ir(Qo),execCommand:function(e){if(Io.hasOwnProperty(e))return Io[e].call(null,this)},triggerElectric:Ir(function(e){ml(this,e)}),findPosH:function(e,t,n,r){var i=1;t\u003C0&&(i=-1,t=-t);for(var o=ct(this.doc,e),l=0;l\u003Ct&&!(o=wl(this.doc,o,i,n,r)).hitSide;++l);return o},moveH:Ir(function(t,n){var r=this;this.extendSelectionsBy(function(e){return r.display.shift||r.doc.extend||e.empty()?wl(r.doc,e.head,t,n,r.options.rtlMoveVisually):t\u003C0?e.from():e.to()},V)}),deleteH:Ir(function(n,r){var e=this.doc.sel,i=this.doc;e.somethingSelected()?i.replaceSelection(\\\"\\\",null,\\\"+delete\\\"):Wo(this,function(e){var t=wl(i,e.head,n,r,!1);return n\u003C0?{from:t,to:e.head}:{from:e.head,to:t}})}),findPosV:function(e,t,n,r){var i=1,o=r;t\u003C0&&(i=-1,t=-t);for(var l=ct(this.doc,e),s=0;s\u003Ct;++s){var a=Bn(this,l,\\\"div\\\");if(null==o?o=a.left:a.left=o,(l=xl(this,a,i,n)).hitSide)break}return l},moveV:Ir(function(r,i){var o=this,l=this.doc,s=[],a=!this.display.shift&&!l.extend&&l.sel.somethingSelected();if(l.extendSelectionsBy(function(e){if(a)return r\u003C0?e.from():e.to();var t=Bn(o,e.head,\\\"div\\\");null!=e.goalColumn&&(t.left=e.goalColumn),s.push(t.left);var n=xl(o,t,r,i);return\\\"page\\\"==i&&e==l.sel.primary()&&br(o,zn(o,n,\\\"div\\\").top-t.top),n},V),s.length)for(var e=0;e\u003Cl.sel.ranges.length;e++)l.sel.ranges[e].goalColumn=s[e]}),findWordAt:function(e){var t=$e(this.doc,e.line).text,n=e.ch,r=e.ch;if(t){var i=this.getHelper(e,\\\"wordChars\\\");\\\"before\\\"!=e.sticky&&r!=t.length||!n?++r:--n;for(var o=t.charAt(n),l=J(o,i)?function(e){return J(e,i)}:/\\\\s/.test(o)?function(e){return/\\\\s/.test(e)}:function(e){return!/\\\\s/.test(e)&&!J(e)};0\u003Cn&&l(t.charAt(n-1));)--n;for(;r\u003Ct.length&&l(t.charAt(r));)++r}return new oi(rt(e.line,n),rt(e.line,r))},toggleOverwrite:function(e){null!=e&&e==this.state.overwrite||(((this.state.overwrite=!this.state.overwrite)?D:L)(this.display.cursorDiv,\\\"CodeMirror-overwrite\\\"),xe(this,\\\"overwriteToggle\\\",this,this.state.overwrite))},hasFocus:function(){return this.display.input.getField()==O()},isReadOnly:function(){return!(!this.options.readOnly&&!this.doc.cantEdit)},scrollTo:Ir(function(e,t){xr(this,e,t)}),getScrollInfo:function(){var e=this.display.scroller;return{left:e.scrollLeft,top:e.scrollTop,height:e.scrollHeight-wn(this)-this.display.barHeight,width:e.scrollWidth-wn(this)-this.display.barWidth,clientHeight:Cn(this),clientWidth:xn(this)}},scrollIntoView:Ir(function(e,t){var n;null==e?(e={from:this.doc.sel.primary().head,to:null},null==t&&(t=this.options.cursorScrollMargin)):\\\"number\\\"==typeof e?e={from:rt(e,0),to:null}:null==e.from&&(e={from:e,to:null}),e.to||(e.to=e.from),e.margin=t||0,null!=e.from.line?(n=e,Cr(t=this),t.curOp.scrollToPos=n):Sr(this,e.from,e.to,e.margin)}),setSize:Ir(function(e,t){function n(e){return\\\"number\\\"==typeof e||/^\\\\d+$/.test(String(e))?e+\\\"px\\\":e}var r=this;null!=e&&(this.display.wrapper.style.width=n(e)),null!=t&&(this.display.wrapper.style.height=n(t)),this.options.lineWrapping&&Wn(this);var i=this.display.viewFrom;this.doc.iter(i,this.display.viewTo,function(e){if(e.widgets)for(var t=0;t\u003Ce.widgets.length;t++)if(e.widgets[t].noHScroll){nr(r,i,\\\"widget\\\");break}++i}),this.curOp.forceUpdate=!0,xe(this,\\\"refresh\\\",this)}),operation:function(e){return Er(this,e)},startOperation:function(){return Hr(this)},endOperation:function(){return Fr(this)},refresh:Ir(function(){var e=this.display.cachedTextHeight;tr(this),this.curOp.forceUpdate=!0,Hn(this),xr(this,this.doc.scrollLeft,this.doc.scrollTop),jr(this.display),(null==e||.5\u003CMath.abs(e-Yn(this.display))||this.options.lineWrapping)&&Qn(this),xe(this,\\\"refresh\\\",this)}),swapDoc:Ir(function(e){var t=this.doc;return t.cm=null,this.state.selectingText&&this.state.selectingText(),vi(this,e),Hn(this),this.display.input.reset(),xr(this,e.scrollLeft,e.scrollTop),this.curOp.forceScroll=!0,ln(this,\\\"swapDoc\\\",this,t),t}),phrase:function(e){var t=this.options.phrases;return t&&Object.prototype.hasOwnProperty.call(t,e)?t[e]:e},getInputField:function(){return this.display.input.getField()},getWrapperElement:function(){return this.display.wrapper},getScrollerElement:function(){return this.display.scroller},getGutterElement:function(){return this.display.gutters}},ke(Ml),Ml.registerHelper=function(e,t,n){Al.hasOwnProperty(e)||(Al[e]=Ml[e]={_global:[]}),Al[e][t]=n},Ml.registerGlobalHelper=function(e,t,n,r){Ml.registerHelper(e,t,r),Al[e]._global.push({pred:n,val:r})};var Dl,Wl,Hl=\\\"iter insert remove copy getEditor constructor\\\".split(\\\" \\\");for(Dl in ho.prototype)ho.prototype.hasOwnProperty(Dl)&&R(Hl,Dl)\u003C0&&(ul.prototype[Dl]=function(e){return function(){return e.apply(this.doc,arguments)}}(ho.prototype[Dl]));return ke(ho),ul.inputStyles={textarea:r,contenteditable:e},ul.defineMode=function(e){ul.defaults.mode||\\\"null\\\"==e||(ul.defaults.mode=e),function(e,t){2\u003Carguments.length&&(t.dependencies=Array.prototype.slice.call(arguments,2)),ze[e]=t}.apply(this,arguments)},ul.defineMIME=function(e,t){Be[e]=t},ul.defineMode(\\\"null\\\",function(){return{token:function(e){return e.skipToEnd()}}}),ul.defineMIME(\\\"text/plain\\\",\\\"null\\\"),ul.defineExtension=function(e,t){ul.prototype[e]=t},ul.defineDocExtension=function(e,t){ho.prototype[e]=t},ul.fromTextArea=function(t,n){var e;function r(){t.value=s.getValue()}if(n=n?E(n):{},n.value=t.value,!n.tabindex&&t.tabIndex&&(n.tabindex=t.tabIndex),!n.placeholder&&t.placeholder&&(n.placeholder=t.placeholder),null==n.autofocus&&(e=O(),n.autofocus=e==t||null!=t.getAttribute(\\\"autofocus\\\")&&e==document.body),t.form&&(ye(t.form,\\\"submit\\\",r),!n.leaveSubmitMethodAlone)){var i=t.form,o=i.submit;try{var l=i.submit=function(){r(),i.submit=o,i.submit(),i.submit=l}}catch(e){}}n.finishInit=function(e){e.save=r,e.getTextArea=function(){return t},e.toTextArea=function(){e.toTextArea=isNaN,r(),t.parentNode.removeChild(e.getWrapperElement()),t.style.display=\\\"\\\",t.form&&(we(t.form,\\\"submit\\\",r),n.leaveSubmitMethodAlone||\\\"function\\\"!=typeof t.form.submit||(t.form.submit=o))}},t.style.display=\\\"none\\\";var s=ul(function(e){return t.parentNode.insertBefore(e,t.nextSibling)},n);return s},(Wl=ul).off=we,Wl.on=ye,Wl.wheelEventPixels=ni,Wl.Doc=ho,Wl.splitLines=Ee,Wl.countColumn=P,Wl.findColumn=K,Wl.isWordChar=Q,Wl.Pass=B,Wl.signal=xe,Wl.Line=Xt,Wl.changeEnd=ai,Wl.scrollbarModel=Or,Wl.Pos=rt,Wl.cmpPos=it,Wl.modes=ze,Wl.mimeModes=Be,Wl.resolveMode=Ge,Wl.getMode=Ue,Wl.modeExtensions=Ve,Wl.extendMode=Ke,Wl.copyState=je,Wl.startState=Ye,Wl.innerMode=Xe,Wl.commands=Io,Wl.keyMap=Lo,Wl.keyName=Oo,Wl.isModifierKey=No,Wl.lookupKey=Mo,Wl.normalizeKeyMap=To,Wl.StringStream=_e,Wl.SharedTextMarker=ao,Wl.TextMarker=lo,Wl.LineWidget=ro,Wl.e_preventDefault=Te,Wl.e_stopPropagation=Me,Wl.e_stop=Ae,Wl.addClass=D,Wl.contains=A,Wl.rmClass=L,Wl.keyNames=wo,ul.version=\\\"5.58.3\\\",ul});\\n\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/tiddlywiki/codemirror/lib/codemirror.js\",\"module-type\":\"library\"},\"$:/plugins/tiddlywiki/codemirror/lib/codemirror.css\":{\"text\":\".CodeMirror{font-family:monospace;height:300px;color:#000;direction:ltr}.CodeMirror-lines{padding:4px 0}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{padding:0 4px}.CodeMirror-scrollbar-filler,.CodeMirror-gutter-filler{background-color:#fff}.CodeMirror-gutters{border-right:1px solid #ddd;background-color:#f7f7f7;white-space:nowrap}.CodeMirror-linenumber{padding:0 3px 0 5px;min-width:20px;text-align:right;color:#999;white-space:nowrap}.CodeMirror-guttermarker{color:#000}.CodeMirror-guttermarker-subtle{color:#999}.CodeMirror-cursor{border-left:1px solid #000;border-right:none;width:0}.CodeMirror div.CodeMirror-secondarycursor{border-left:1px solid silver}.cm-fat-cursor .CodeMirror-cursor{width:auto;border:0!important;background:#7e7}.cm-fat-cursor div.CodeMirror-cursors{z-index:1}.cm-fat-cursor-mark{background-color:rgba(20,255,20,0.5);-webkit-animation:blink 1.06s steps(1) infinite;-moz-animation:blink 1.06s steps(1) infinite;animation:blink 1.06s steps(1) infinite}.cm-animate-fat-cursor{width:auto;border:0;-webkit-animation:blink 1.06s steps(1) infinite;-moz-animation:blink 1.06s steps(1) infinite;animation:blink 1.06s steps(1) infinite;background-color:#7e7}@-moz-keyframes blink{50%{background-color:transparent}}@-webkit-keyframes blink{50%{background-color:transparent}}@keyframes blink{50%{background-color:transparent}}.cm-tab{display:inline-block;text-decoration:inherit}.CodeMirror-rulers{position:absolute;left:0;right:0;top:-50px;bottom:0;overflow:hidden}.CodeMirror-ruler{border-left:1px solid #ccc;top:0;bottom:0;position:absolute}.cm-s-default .cm-header{color:blue}.cm-s-default .cm-quote{color:#090}.cm-negative{color:#d44}.cm-positive{color:#292}.cm-header,.cm-strong{font-weight:700}.cm-em{font-style:italic}.cm-link{text-decoration:underline}.cm-strikethrough{text-decoration:line-through}.cm-s-default .cm-keyword{color:#708}.cm-s-default .cm-atom{color:#219}.cm-s-default .cm-number{color:#164}.cm-s-default .cm-def{color:#00f}.cm-s-default .cm-variable-2{color:#05a}.cm-s-default .cm-variable-3,.cm-s-default .cm-type{color:#085}.cm-s-default .cm-comment{color:#a50}.cm-s-default .cm-string{color:#a11}.cm-s-default .cm-string-2{color:#f50}.cm-s-default .cm-meta{color:#555}.cm-s-default .cm-qualifier{color:#555}.cm-s-default .cm-builtin{color:#30a}.cm-s-default .cm-bracket{color:#997}.cm-s-default .cm-tag{color:#170}.cm-s-default .cm-attribute{color:#00c}.cm-s-default .cm-hr{color:#999}.cm-s-default .cm-link{color:#00c}.cm-s-default .cm-error{color:red}.cm-invalidchar{color:red}.CodeMirror-composing{border-bottom:2px solid}div.CodeMirror span.CodeMirror-matchingbracket{color:#0b0}div.CodeMirror span.CodeMirror-nonmatchingbracket{color:#a22}.CodeMirror-matchingtag{background:rgba(255,150,0,.3)}.CodeMirror-activeline-background{background:#e8f2ff}.CodeMirror{position:relative;overflow:hidden;background:#fff}.CodeMirror-scroll{overflow:scroll!important;margin-bottom:-50px;margin-right:-50px;padding-bottom:50px;height:100%;outline:none;position:relative}.CodeMirror-sizer{position:relative;border-right:50px solid transparent}.CodeMirror-vscrollbar,.CodeMirror-hscrollbar,.CodeMirror-scrollbar-filler,.CodeMirror-gutter-filler{position:absolute;z-index:6;display:none;outline:none}.CodeMirror-vscrollbar{right:0;top:0;overflow-x:hidden;overflow-y:scroll}.CodeMirror-hscrollbar{bottom:0;left:0;overflow-y:hidden;overflow-x:scroll}.CodeMirror-scrollbar-filler{right:0;bottom:0}.CodeMirror-gutter-filler{left:0;bottom:0}.CodeMirror-gutters{position:absolute;left:0;top:0;min-height:100%;z-index:3}.CodeMirror-gutter{white-space:normal;height:100%;display:inline-block;vertical-align:top;margin-bottom:-50px}.CodeMirror-gutter-wrapper{position:absolute;z-index:4;background:none!important;border:none!important}.CodeMirror-gutter-background{position:absolute;top:0;bottom:0;z-index:4}.CodeMirror-gutter-elt{position:absolute;cursor:default;z-index:4}.CodeMirror-gutter-wrapper ::selection{background-color:transparent}.CodeMirror-gutter-wrapper ::-moz-selection{background-color:transparent}.CodeMirror-lines{cursor:text;min-height:1px}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;border-width:0;background:transparent;font-family:inherit;font-size:inherit;margin:0;white-space:pre;word-wrap:normal;line-height:inherit;color:inherit;z-index:2;position:relative;overflow:visible;-webkit-tap-highlight-color:transparent;-webkit-font-variant-ligatures:contextual;font-variant-ligatures:contextual}.CodeMirror-wrap pre.CodeMirror-line,.CodeMirror-wrap pre.CodeMirror-line-like{word-wrap:break-word;white-space:pre-wrap;word-break:normal}.CodeMirror-linebackground{position:absolute;left:0;right:0;top:0;bottom:0;z-index:0}.CodeMirror-linewidget{position:relative;z-index:2;padding:.1px}.CodeMirror-rtl pre{direction:rtl}.CodeMirror-code{outline:none}.CodeMirror-scroll,.CodeMirror-sizer,.CodeMirror-gutter,.CodeMirror-gutters,.CodeMirror-linenumber{-moz-box-sizing:content-box;box-sizing:content-box}.CodeMirror-measure{position:absolute;width:100%;height:0;overflow:hidden;visibility:hidden}.CodeMirror-cursor{position:absolute;pointer-events:none}.CodeMirror-measure pre{position:static}div.CodeMirror-cursors{visibility:hidden;position:relative;z-index:3}div.CodeMirror-dragcursors{visibility:visible}.CodeMirror-focused div.CodeMirror-cursors{visibility:visible}.CodeMirror-selected{background:#d9d9d9}.CodeMirror-focused .CodeMirror-selected{background:#d7d4f0}.CodeMirror-crosshair{cursor:crosshair}.CodeMirror-line::selection,.CodeMirror-line > span::selection,.CodeMirror-line > span > span::selection{background:#d7d4f0}.CodeMirror-line::-moz-selection,.CodeMirror-line > span::-moz-selection,.CodeMirror-line > span > span::-moz-selection{background:#d7d4f0}.cm-searching{background-color:#ffa;background-color:rgba(255,255,0,.4)}.cm-force-border{padding-right:.1px}@media print{.CodeMirror div.CodeMirror-cursors{visibility:hidden}}.cm-tab-wrap-hack:after{content:''}span.CodeMirror-selectedtext{background:none}\\n\",\"type\":\"text/vnd.tiddlywiki\",\"title\":\"$:/plugins/tiddlywiki/codemirror/lib/codemirror.css\",\"tags\":\"[[$:/tags/Stylesheet]]\"},\"$:/plugins/tiddlywiki/codemirror/addon/dialog/dialog.css\":{\"text\":\".CodeMirror-dialog {\\n position: absolute;\\n left: 0; right: 0;\\n background: inherit;\\n z-index: 15;\\n padding: .1em .8em;\\n overflow: hidden;\\n color: inherit;\\n}\\n\\n.CodeMirror-dialog-top {\\n border-bottom: 1px solid #eee;\\n top: 0;\\n}\\n\\n.CodeMirror-dialog-bottom {\\n border-top: 1px solid #eee;\\n bottom: 0;\\n}\\n\\n.CodeMirror-dialog input {\\n border: none;\\n outline: none;\\n background: transparent;\\n width: 20em;\\n color: inherit;\\n font-family: monospace;\\n}\\n\\n.CodeMirror-dialog button {\\n font-size: 70%;\\n}\\n\",\"type\":\"text/css\",\"title\":\"$:/plugins/tiddlywiki/codemirror/addon/dialog/dialog.css\",\"tags\":\"[[$:/tags/Stylesheet]]\"},\"$:/plugins/tiddlywiki/codemirror/addon/dialog/dialog.js\":{\"text\":\"!function(e){\\\"object\\\"==typeof exports&&\\\"object\\\"==typeof module?e(require(\\\"../../lib/codemirror\\\")):\\\"function\\\"==typeof define&&define.amd?define([\\\"../../lib/codemirror\\\"],e):e(CodeMirror)}(function(s){function f(e,o,n){var t=e.getWrapperElement(),i=t.appendChild(document.createElement(\\\"div\\\"));return i.className=n?\\\"CodeMirror-dialog CodeMirror-dialog-bottom\\\":\\\"CodeMirror-dialog CodeMirror-dialog-top\\\",\\\"string\\\"==typeof o?i.innerHTML=o:i.appendChild(o),s.addClass(t,\\\"dialog-opened\\\"),i}function p(e,o){e.state.currentNotificationClose&&e.state.currentNotificationClose(),e.state.currentNotificationClose=o}s.defineExtension(\\\"openDialog\\\",function(e,o,n){n=n||{},p(this,null);var t=f(this,e,n.bottom),i=!1,r=this;function u(e){if(\\\"string\\\"==typeof e)a.value=e;else{if(i)return;i=!0,s.rmClass(t.parentNode,\\\"dialog-opened\\\"),t.parentNode.removeChild(t),r.focus(),n.onClose&&n.onClose(t)}}var l,a=t.getElementsByTagName(\\\"input\\\")[0];return a?(a.focus(),n.value&&(a.value=n.value,!1!==n.selectValueOnOpen&&a.select()),n.onInput&&s.on(a,\\\"input\\\",function(e){n.onInput(e,a.value,u)}),n.onKeyUp&&s.on(a,\\\"keyup\\\",function(e){n.onKeyUp(e,a.value,u)}),s.on(a,\\\"keydown\\\",function(e){n&&n.onKeyDown&&n.onKeyDown(e,a.value,u)||((27==e.keyCode||!1!==n.closeOnEnter&&13==e.keyCode)&&(a.blur(),s.e_stop(e),u()),13==e.keyCode&&o(a.value,e))}),!1!==n.closeOnBlur&&s.on(t,\\\"focusout\\\",function(e){null!==e.relatedTarget&&u()})):(l=t.getElementsByTagName(\\\"button\\\")[0])&&(s.on(l,\\\"click\\\",function(){u(),r.focus()}),!1!==n.closeOnBlur&&s.on(l,\\\"blur\\\",u),l.focus()),u}),s.defineExtension(\\\"openConfirm\\\",function(e,o,n){p(this,null);var t=f(this,e,n&&n.bottom),i=t.getElementsByTagName(\\\"button\\\"),r=!1,u=this,l=1;function a(){r||(r=!0,s.rmClass(t.parentNode,\\\"dialog-opened\\\"),t.parentNode.removeChild(t),u.focus())}i[0].focus();for(var c=0;c\u003Ci.length;++c){var d=i[c];!function(o){s.on(d,\\\"click\\\",function(e){s.e_preventDefault(e),a(),o&&o(u)})}(o[c]),s.on(d,\\\"blur\\\",function(){--l,setTimeout(function(){l\u003C=0&&a()},200)}),s.on(d,\\\"focus\\\",function(){++l})}}),s.defineExtension(\\\"openNotification\\\",function(e,o){p(this,u);var n,t=f(this,e,o&&o.bottom),i=!1,r=o&&void 0!==o.duration?o.duration:5e3;function u(){i||(i=!0,clearTimeout(n),s.rmClass(t.parentNode,\\\"dialog-opened\\\"),t.parentNode.removeChild(t))}return s.on(t,\\\"click\\\",function(e){s.e_preventDefault(e),u()}),r&&(n=setTimeout(u,r)),u})});\\n\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/tiddlywiki/codemirror/addon/dialog/dialog.js\",\"module-type\":\"codemirror\"},\"$:/plugins/tiddlywiki/codemirror/addon/selection/activeline.js\":{\"text\":\"!function(e){\\\"object\\\"==typeof exports&&\\\"object\\\"==typeof module?e(require(\\\"../../lib/codemirror\\\")):\\\"function\\\"==typeof define&&define.amd?define([\\\"../../lib/codemirror\\\"],e):e(CodeMirror)}(function(r){\\\"use strict\\\";var s=\\\"CodeMirror-activeline\\\",c=\\\"CodeMirror-activeline-background\\\",l=\\\"CodeMirror-activeline-gutter\\\";function f(e){for(var t=0;t\u003Ce.state.activeLines.length;t++)e.removeLineClass(e.state.activeLines[t],\\\"wrap\\\",s),e.removeLineClass(e.state.activeLines[t],\\\"background\\\",c),e.removeLineClass(e.state.activeLines[t],\\\"gutter\\\",l)}function o(t,e){for(var n=[],i=0;i\u003Ce.length;i++){var r,o=e[i],a=t.getOption(\\\"styleActiveLine\\\");(\\\"object\\\"==typeof a&&a.nonEmpty?o.anchor.line==o.head.line:o.empty())&&(r=t.getLineHandleVisualStart(o.head.line),n[n.length-1]!=r&&n.push(r))}!function(e,t){if(e.length==t.length){for(var n=0;n\u003Ce.length;n++)if(e[n]!=t[n])return;return 1}}(t.state.activeLines,n)&&t.operation(function(){f(t);for(var e=0;e\u003Cn.length;e++)t.addLineClass(n[e],\\\"wrap\\\",s),t.addLineClass(n[e],\\\"background\\\",c),t.addLineClass(n[e],\\\"gutter\\\",l);t.state.activeLines=n})}function a(e,t){o(e,t.ranges)}r.defineOption(\\\"styleActiveLine\\\",!1,function(e,t,n){var i=n!=r.Init&&n;t!=i&&(i&&(e.off(\\\"beforeSelectionChange\\\",a),f(e),delete e.state.activeLines),t&&(e.state.activeLines=[],o(e,e.listSelections()),e.on(\\\"beforeSelectionChange\\\",a)))})});\\n\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/tiddlywiki/codemirror/addon/selection/activeline.js\",\"module-type\":\"codemirror\"},\"$:/plugins/tiddlywiki/codemirror/mode/tw-meta.js\":{\"text\":\"!function(e){\\\"object\\\"==typeof exports&&\\\"object\\\"==typeof module?e(require(\\\"../lib/codemirror\\\")):\\\"function\\\"==typeof define&&define.amd?define([\\\"../lib/codemirror\\\"],e):e(CodeMirror)}(function(e){\\\"use strict\\\";e.modeInfo=[{name:\\\"CMake\\\",mime:\\\"text/x-cmake\\\",mode:\\\"cmake\\\",ext:[\\\"cmake\\\",\\\"cmake.in\\\"],file:/^CMakeLists.txt$/},{name:\\\"Cython\\\",mime:\\\"text/x-cython\\\",mode:\\\"python\\\",ext:[\\\"pyx\\\",\\\"pxd\\\",\\\"pxi\\\"]},{name:\\\"CSS\\\",mime:\\\"text/css\\\",mode:\\\"css\\\",ext:[\\\"css\\\"]},{name:\\\"diff\\\",mime:\\\"text/x-diff\\\",mode:\\\"diff\\\",ext:[\\\"diff\\\",\\\"patch\\\"]},{name:\\\"Embedded Javascript\\\",mime:\\\"application/x-ejs\\\",mode:\\\"htmlembedded\\\",ext:[\\\"ejs\\\"]},{name:\\\"Embedded Ruby\\\",mime:\\\"application/x-erb\\\",mode:\\\"htmlembedded\\\",ext:[\\\"erb\\\"]},{name:\\\"Erlang\\\",mime:\\\"text/x-erlang\\\",mode:\\\"erlang\\\",ext:[\\\"erl\\\"]},{name:\\\"GitHub Flavored Markdown\\\",mime:\\\"text/x-gfm\\\",mode:\\\"gfm\\\",file:/^(readme|contributing|history).md$/i},{name:\\\"Go\\\",mime:\\\"text/x-go\\\",mode:\\\"go\\\",ext:[\\\"go\\\"]},{name:\\\"ASP.NET\\\",mime:\\\"application/x-aspx\\\",mode:\\\"htmlembedded\\\",ext:[\\\"aspx\\\"],alias:[\\\"asp\\\",\\\"aspx\\\"]},{name:\\\"HTML\\\",mime:\\\"text/html\\\",mode:\\\"htmlmixed\\\",ext:[\\\"html\\\",\\\"htm\\\",\\\"handlebars\\\",\\\"hbs\\\"],alias:[\\\"xhtml\\\"]},{name:\\\"HTTP\\\",mime:\\\"message/http\\\",mode:\\\"http\\\"},{name:\\\"JavaScript\\\",mimes:[\\\"text/javascript\\\",\\\"text/ecmascript\\\",\\\"application/javascript\\\",\\\"application/x-javascript\\\",\\\"application/ecmascript\\\"],mode:\\\"javascript\\\",ext:[\\\"js\\\"],alias:[\\\"ecmascript\\\",\\\"js\\\",\\\"node\\\"]},{name:\\\"JSON\\\",mimes:[\\\"application/json\\\",\\\"application/x-json\\\"],mode:\\\"javascript\\\",ext:[\\\"json\\\",\\\"map\\\"],alias:[\\\"json5\\\"]},{name:\\\"JSON-LD\\\",mime:\\\"application/ld+json\\\",mode:\\\"javascript\\\",ext:[\\\"jsonld\\\"],alias:[\\\"jsonld\\\"]},{name:\\\"Lua\\\",mime:\\\"text/x-lua\\\",mode:\\\"lua\\\",ext:[\\\"lua\\\"]},{name:\\\"Markdown\\\",mime:\\\"text/x-markdown\\\",mode:\\\"markdown\\\",ext:[\\\"markdown\\\",\\\"md\\\",\\\"mkd\\\"]},{name:\\\"MySQL\\\",mime:\\\"text/x-mysql\\\",mode:\\\"sql\\\"},{name:\\\"Plain Text\\\",mime:\\\"text/plain\\\",mode:\\\"null\\\",ext:[\\\"txt\\\",\\\"text\\\",\\\"conf\\\",\\\"def\\\",\\\"list\\\",\\\"log\\\"]},{name:\\\"Python\\\",mime:\\\"text/x-python\\\",mode:\\\"python\\\",ext:[\\\"BUILD\\\",\\\"bzl\\\",\\\"py\\\",\\\"pyw\\\"],file:/^(BUCK|BUILD)$/},{name:\\\"SCSS\\\",mime:\\\"text/x-scss\\\",mode:\\\"css\\\",ext:[\\\"scss\\\"]},{name:\\\"LaTeX\\\",mime:\\\"text/x-latex\\\",mode:\\\"stex\\\",ext:[\\\"text\\\",\\\"ltx\\\",\\\"tex\\\"],alias:[\\\"tex\\\"]},{name:\\\"TiddlyWiki \\\",mime:\\\"text/x-tiddlywiki\\\",mode:\\\"tiddlywiki\\\"}];for(var t=0;t\u003Ce.modeInfo.length;t++){var m=e.modeInfo[t];m.mimes&&(m.mime=m.mimes[0])}e.findModeByMIME=function(t){t=t.toLowerCase();for(var m=0;m\u003Ce.modeInfo.length;m++){var i=e.modeInfo[m];if(i.mime==t)return i;if(i.mimes)for(var a=0;a\u003Ci.mimes.length;a++)if(i.mimes[a]==t)return i}return/\\\\+xml$/.test(t)?e.findModeByMIME(\\\"application/xml\\\"):/\\\\+json$/.test(t)?e.findModeByMIME(\\\"application/json\\\"):void 0},e.findModeByExtension=function(t){for(var m=0;m\u003Ce.modeInfo.length;m++){var i=e.modeInfo[m];if(i.ext)for(var a=0;a\u003Ci.ext.length;a++)if(i.ext[a]==t)return i}},e.findModeByFileName=function(t){for(var m=0;m\u003Ce.modeInfo.length;m++){var i=e.modeInfo[m];if(i.file&&i.file.test(t))return i}var a=t.lastIndexOf(\\\".\\\"),o=a>-1&&t.substring(a+1,t.length);if(o)return e.findModeByExtension(o)},e.findModeByName=function(t){t=t.toLowerCase();for(var m=0;m\u003Ce.modeInfo.length;m++){var i=e.modeInfo[m];if(i.name.toLowerCase()==t)return i;if(i.alias)for(var a=0;a\u003Ci.alias.length;a++)if(i.alias[a].toLowerCase()==t)return i}}});\\n\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/tiddlywiki/codemirror/mode/tw-meta.js\",\"module-type\":\"codemirror\"},\"$:/plugins/tiddlywiki/codemirror/keyboard\":{\"title\":\"$:/plugins/tiddlywiki/codemirror/keyboard\",\"text\":\"\\n!!Default keyboard shortcuts\\n\\n!!!Basic shortcuts\\n\\n|Shortcut |Function |h\\n|Left |goCharLeft |\\n|Right |goCharRight |\\n|Up |goLineUp |\\n|Down |goLineDown |\\n|End |goLineEnd |\\n|Home |goLineStartSmart |\\n|~PageUp |goPageUp |\\n|~PageDown |goPageDown |\\n|Delete |delCharAfter |\\n|Backspace |delCharBefore |\\n|Shift-Backspace |delCharBefore |\\n|Tab |defaultTab |\\n|Shift-Tab |indentAuto |\\n|Enter |newlineAndIndent |\\n|Insert |toggleOverwrite |\\n|Ctrl-Esc |singleSelection |\\n\\n\\n!!!Shortcuts on Windows and Linux\\n\\n|Shortcut |Function |h\\n|Ctrl-A |selectAll |\\n|Ctrl-D |deleteLine |\\n|Ctrl-Z |undo |\\n|Shift-Ctrl-Z |redo |\\n|Ctrl-Y |redo |\\n|Ctrl-Home |goDocStart |\\n|Ctrl-End |goDocEnd |\\n|Ctrl-Up |goLineUp |\\n|Ctrl-Down |goLineDown |\\n|Ctrl-Left |goGroupLeft |\\n|Ctrl-Right |goGroupRight |\\n|Alt-Left |goLineStart |\\n|Alt-Right |goLineEnd |\\n|Ctrl-Backspace |delGroupBefore |\\n|Ctrl-Delete |delGroupAfter |\\n|Ctrl-F |find |\\n|Ctrl-G |findNext |\\n|Shift-Ctrl-G |findPrev |\\n|Shift-Ctrl-F |replace |\\n|Shift-Ctrl-R |replaceAll |\\n|Ctrl-[ |indentLess |\\n|Ctrl-] |indentMore |\\n|Alt-U |undoSelection |\\n|Shift-Ctrl-U |redoSelection |\\n|Shift-Alt-U |redoSelection |\\n\\n\\n!!!Shortcuts on ~MacOs\\n\\n|Shortcut |Function |h\\n|Cmd-A |selectAll |\\n|Cmd-D |deleteLine |\\n|Cmd-Z |undo |\\n|Shift-Cmd-Z |redo |\\n|Cmd-Y |redo |\\n|Cmd-Home |goDocStart |\\n|Cmd-Up |goDocStart |\\n|Cmd-End |goDocEnd |\\n|Cmd-Down |goDocEnd |\\n|Alt-Left |goGroupLeft |\\n|Alt-Right |goGroupRight |\\n|Cmd-Left |goLineLeft |\\n|Cmd-Right |goLineRight |\\n|Alt-Backspace |delGroupBefore |\\n|Ctrl-Alt-Backspace |delGroupAfter |\\n|Alt-Delete |delGroupAfter |\\n|Cmd-F |find |\\n|Cmd-G |findNext |\\n|Shift-Cmd-G |findPrev |\\n|Cmd-Alt-F |replace |\\n|Shift-Cmd-Alt-F |replaceAll |\\n|Cmd-[ |indentLess |\\n|Cmd-] |indentMore |\\n|Cmd-Backspace |delWrappedLineLeft |\\n|Cmd-Delete |delWrappedLineRight |\\n|Alt-U |undoSelection |\\n|Shift-Alt-U |redoSelection |\\n|Ctrl-Up |goDocStart |\\n|Ctrl-Down |goDocEnd |\\n|Ctrl-F |goCharRight |\\n|Ctrl-B |goCharLeft |\\n|Ctrl-P |goLineUp |\\n|Ctrl-N |goLineDown |\\n|Alt-F |goWordRight |\\n|Alt-B |goWordLeft |\\n|Ctrl-A |goLineStart |\\n|Ctrl-E |goLineEnd |\\n|Ctrl-V |goPageDown |\\n|Shift-Ctrl-V |goPageUp |\\n|Ctrl-D |delCharAfter |\\n|Ctrl-H |delCharBefore |\\n|Alt-D |delWordAfter |\\n|Alt-Backspace |delWordBefore |\\n|Ctrl-K |killLine |\\n|Alt-T |transposeChars |\\n|Ctrl-O |openLine |\\n\\n\\n\"},\"$:/plugins/tiddlywiki/codemirror/license\":{\"title\":\"$:/plugins/tiddlywiki/codemirror/license\",\"text\":\"\\\"\\\"\\\"\\n~CodeMirror, copyright (c) by Marijn Haverbeke and others\\nDistributed under an MIT license: http://codemirror.net/LICENSE\\n\\nCopyright (c) 2004-2007, Jeremy Ruston\\nCopyright (c) 2007-2018, UnaMesa Association\\nDistributed under an BSD license: https://tiddlywiki.com/#License\\n\\\"\\\"\\\"\\n\"},\"$:/plugins/tiddlywiki/codemirror/readme\":{\"title\":\"$:/plugins/tiddlywiki/codemirror/readme\",\"text\":\"This plugin provides an enhanced text editor component based on [[CodeMirror|http://codemirror.net]]. The basic configuration is designed to be as lightweight as possible and is just around 235kb of size. Additional features can be installed with ~CodeMirror ~AddOns from the plugin library.\\n\\n[[Source code|https://github.com/Jermolene/TiddlyWiki5/blob/master/plugins/tiddlywiki/codemirror]]\\n\\nBased on ~CodeMirror version 5.58.3\\n\"},\"$:/core/ui/ControlPanel/Settings/codemirror/cursorBlinkRate\":{\"title\":\"$:/core/ui/ControlPanel/Settings/codemirror/cursorBlinkRate\",\"tags\":\"$:/tags/ControlPanel/Settings/CodeMirror\",\"caption\":\"{{$:/language/codemirror/cursorBlinkRate/hint}}\",\"text\":\"\\\\define lingo-base() $:/language/codemirror/cursorBlinkRate/\\n\\n|\u003C$link to=\\\"$:/config/codemirror/cursorBlinkRate\\\">\u003C\u003Clingo hint>>\u003C/$link> |\u003C$edit-text tiddler=\\\"$:/config/codemirror/cursorBlinkRate\\\" default=\\\"\\\" placeholder=\\\"cursorBlinkRate\\\" tag=\\\"input\\\"/> |\\n\"},\"$:/core/ui/ControlPanel/Settings/codemirror/editorFont\":{\"title\":\"$:/core/ui/ControlPanel/Settings/codemirror/editorFont\",\"tags\":\"$:/tags/ControlPanel/Settings/CodeMirror\",\"caption\":\"{{$:/language/codemirror/editorFont/hint}}\",\"text\":\"\\\\define lingo-base() $:/language/ThemeTweaks/\\n\\n|\u003C$link to=\\\"$:/themes/tiddlywiki/vanilla/settings/editorfontfamily\\\">\u003C\u003Clingo Settings/EditorFontFamily>>\u003C/$link> |\u003C$edit-text tiddler=\\\"$:/themes/tiddlywiki/vanilla/settings/editorfontfamily\\\" default=\\\"\\\" tag=\\\"input\\\"/> | |\\n\"},\"$:/core/ui/ControlPanel/Settings/codemirror/indentUnit\":{\"title\":\"$:/core/ui/ControlPanel/Settings/codemirror/indentUnit\",\"tags\":\"$:/tags/ControlPanel/Settings/CodeMirror\",\"caption\":\"{{$:/language/codemirror/indentUnit/hint}}\",\"text\":\"\\\\define lingo-base() $:/language/codemirror/indentUnit/\\n\\n|\u003C$link to=\\\"$:/config/codemirror/indentUnit\\\">\u003C\u003Clingo hint>>\u003C/$link> |\u003C$edit-text tiddler=\\\"$:/config/codemirror/indentUnit\\\" default=\\\"\\\" placeholder=\\\"indentUnit\\\" tag=\\\"input\\\"/> |\\n\"},\"$:/core/ui/ControlPanel/Settings/codemirror/indentWithTabs\":{\"title\":\"$:/core/ui/ControlPanel/Settings/codemirror/indentWithTabs\",\"tags\":\"$:/tags/ControlPanel/Settings/CodeMirror\",\"caption\":\"{{$:/language/codemirror/indentWithTabs/hint}}\",\"text\":\"\\\\define lingo-base() $:/language/codemirror/indentWithTabs/\\n\u003C\u003Clingo hint>>\\n\\n\u003C$checkbox tiddler=\\\"$:/config/codemirror/indentWithTabs\\\" field=\\\"text\\\" checked=\\\"true\\\" unchecked=\\\"false\\\" default=\\\"true\\\"> \u003C$link to=\\\"$:/config/codemirror/indentWithTabs\\\">\u003C\u003Clingo info>>\u003C/$link> \u003C/$checkbox>\\n\"},\"$:/core/ui/ControlPanel/Settings/codemirror/keyMap\":{\"title\":\"$:/core/ui/ControlPanel/Settings/codemirror/keyMap\",\"tags\":\"$:/tags/ControlPanel/Settings/CodeMirror\",\"caption\":\"{{$:/language/codemirror/keyMap/hint}}\",\"text\":\"\\\\define lingo-base() $:/language/codemirror/keyMap\\n\\n\u003C$link to=\\\"$:/config/codemirror/keyMap\\\">\u003C\u003Clingo hint>>\u003C/$link>\\n\\n\u003C$select tiddler=\\\"$:/config/codemirror/keyMap\\\" default=\\\"default\\\">\\n\u003Coption value=\\\"default\\\">default\u003C/option>\\n\u003C$list filter=\\\"[all[shadows+tiddlers]module-type[codemirror-keymap]!has[draft.of]get[text]]\\\">\\n\u003Coption value=\u003C\u003CcurrentTiddler>>>\u003C$transclude>\u003C$text text=\u003C\u003CcurrentTiddler>>/>\u003C/$transclude>\u003C/option>\\n\u003C/$list>\\n\u003C/$select>\\n\\n\"},\"$:/core/ui/ControlPanel/Settings/codemirror/lineNumbers\":{\"title\":\"$:/core/ui/ControlPanel/Settings/codemirror/lineNumbers\",\"tags\":\"$:/tags/ControlPanel/Settings/CodeMirror\",\"caption\":\"{{$:/language/codemirror/lineNumbers/hint}}\",\"text\":\"\\\\define lingo-base() $:/language/codemirror/lineNumbers/\\n\u003C\u003Clingo hint>>\\n\\n\u003C$checkbox tiddler=\\\"$:/config/codemirror/lineNumbers\\\" field=\\\"text\\\" checked=\\\"true\\\" unchecked=\\\"false\\\" default=\\\"false\\\"> \u003C$link to=\\\"$:/config/codemirror/lineNumbers\\\">\u003C\u003Clingo info>>\u003C/$link> \u003C/$checkbox>\\n\\n\"},\"$:/core/ui/ControlPanel/Settings/codemirror/lineWrapping\":{\"title\":\"$:/core/ui/ControlPanel/Settings/codemirror/lineWrapping\",\"tags\":\"$:/tags/ControlPanel/Settings/CodeMirror\",\"caption\":\"{{$:/language/codemirror/lineWrapping/hint}}\",\"text\":\"\\\\define lingo-base() $:/language/codemirror/lineWrapping/\\n\u003C\u003Clingo hint>>\\n\\n\u003C$checkbox tiddler=\\\"$:/config/codemirror/lineWrapping\\\" field=\\\"text\\\" checked=\\\"true\\\" unchecked=\\\"false\\\" default=\\\"true\\\"> \u003C$link to=\\\"$:/config/codemirror/lineWrapping\\\">\u003C\u003Clingo info>>\u003C/$link> \u003C/$checkbox>\\n\\n\"},\"$:/core/ui/ControlPanel/Settings/codemirror/showCursorWhenSelecting\":{\"title\":\"$:/core/ui/ControlPanel/Settings/codemirror/showCursorWhenSelecting\",\"tags\":\"$:/tags/ControlPanel/Settings/CodeMirror\",\"caption\":\"{{$:/language/codemirror/showCursorWhenSelecting/hint}}\",\"text\":\"\\\\define lingo-base() $:/language/codemirror/showCursorWhenSelecting/\\n\u003C\u003Clingo hint>>\\n\\n\u003C$checkbox tiddler=\\\"$:/config/codemirror/showCursorWhenSelecting\\\" field=\\\"text\\\" checked=\\\"true\\\" unchecked=\\\"false\\\" default=\\\"true\\\"> \u003C$link to=\\\"$:/config/codemirror/showCursorWhenSelecting\\\">\u003C\u003Clingo info>>\u003C/$link> \u003C/$checkbox>\\n\\n\"},\"$:/core/ui/ControlPanel/Settings/codemirror/smartIndent\":{\"title\":\"$:/core/ui/ControlPanel/Settings/codemirror/smartIndent\",\"tags\":\"$:/tags/ControlPanel/Settings/CodeMirror\",\"caption\":\"{{$:/language/codemirror/smartIndent/hint}}\",\"text\":\"\\\\define lingo-base() $:/language/codemirror/smartIndent/\\n\u003C\u003Clingo hint>>\\n\\n\u003C$checkbox tiddler=\\\"$:/config/codemirror/smartIndent\\\" field=\\\"text\\\" checked=\\\"true\\\" unchecked=\\\"false\\\" default=\\\"true\\\"> \u003C$link to=\\\"$:/config/codemirror/smartIndent\\\">\u003C\u003Clingo info>>\u003C/$link> \u003C/$checkbox>\\n\"},\"$:/core/ui/ControlPanel/Settings/codemirror/styleActiveLine\":{\"title\":\"$:/core/ui/ControlPanel/Settings/codemirror/styleActiveLine\",\"tags\":\"$:/tags/ControlPanel/Settings/CodeMirror\",\"caption\":\"{{$:/language/codemirror/styleActiveLine/hint}}\",\"text\":\"\\\\define lingo-base() $:/language/codemirror/styleActiveLine/\\n\u003C\u003Clingo hint>>\\n\\n\u003C$checkbox tiddler=\\\"$:/config/codemirror/styleActiveLine\\\" field=\\\"text\\\" checked=\\\"true\\\" unchecked=\\\"false\\\" default=\\\"false\\\"> \u003C$link to=\\\"$:/config/codemirror/styleActiveLine\\\">\u003C\u003Clingo info>>\u003C/$link> \u003C/$checkbox>\\n\\n\"},\"$:/core/ui/ControlPanel/Settings/codemirror/tabSize\":{\"title\":\"$:/core/ui/ControlPanel/Settings/codemirror/tabSize\",\"tags\":\"$:/tags/ControlPanel/Settings/CodeMirror\",\"caption\":\"{{$:/language/codemirror/tabSize/hint}}\",\"text\":\"\\\\define lingo-base() $:/language/codemirror/tabSize/\\n\\n|\u003C$link to=\\\"$:/config/codemirror/tabSize\\\">\u003C\u003Clingo hint>>\u003C/$link> |\u003C$edit-text tiddler=\\\"$:/config/codemirror/tabSize\\\" default=\\\"\\\" placeholder=\\\"tabSize\\\" tag=\\\"input\\\"/> |\\n\"},\"$:/core/ui/ControlPanel/Settings/codemirror/theme\":{\"title\":\"$:/core/ui/ControlPanel/Settings/codemirror/theme\",\"tags\":\"$:/tags/ControlPanel/Settings/CodeMirror\",\"caption\":\"{{$:/language/codemirror/theme/hint}}\",\"text\":\"\\\\define lingo-base() $:/language/codemirror/\\n\\n\u003C$link to=\\\"$:/config/codemirror/theme\\\">\u003C\u003Clingo hint>>\u003C/$link>\\n\\n\u003C$select tiddler=\\\"$:/config/codemirror/theme\\\" default=\\\"default\\\">\\n\u003Coption value=\\\"default\\\">default\u003C/option>\\n\u003C$list filter=\\\"[all[shadows+tiddlers]tag[$:/tags/Stylesheet]module-type[codemirror-theme]!has[draft.of]get[name]]\\\">\\n\u003Coption value=\u003C\u003CcurrentTiddler>>>\u003C$transclude field=\\\"name\\\">\u003C$text text=\u003C\u003CcurrentTiddler>>/>\u003C/$transclude>\u003C/option>\\n\u003C/$list>\\n\u003C/$select>\\n\\n//see the [[CodeMirror Usage|$:/plugins/tiddlywiki/codemirror/usage]] how to add themes//\\n\"},\"$:/plugins/tiddlywiki/codemirror/styles\":{\"title\":\"$:/plugins/tiddlywiki/codemirror/styles\",\"tags\":\"[[$:/tags/Stylesheet]]\",\"module-type\":\"codemirror-theme\",\"name\":\"tiddlywiki\",\"text\":\"\\\\define set-fat-cursor-background-css(colour,colourA,colourB)\\n\u003C$set name=\\\"backgroundColour\\\" value=\u003C\u003Ccontrastcolour target:\\\"\\\"\\\"$colour$\\\"\\\"\\\" fallbackTarget:\\\"\\\"\\\"\\\"\\\"\\\" colourA:\\\"\\\"\\\"$colourA$\\\"\\\"\\\" colourB:\\\"\\\"\\\"$colourB$\\\"\\\"\\\">>>\\n.cm-s-tiddlywiki.cm-fat-cursor .CodeMirror-cursor { background: \u003C\u003CbackgroundColour>>; }\\n.cm-s-tiddlywiki .cm-animate-fat-cursor { background-color: \u003C\u003CbackgroundColour>>; }\\n\u003C/$set>\\n\\\\end\\n\\\\define set-fat-cursor-background-colours(palette)\\n\u003C$macrocall $name=\\\"set-fat-cursor-background-css\\\" colour={{$palette$##foreground}} colourA=\\\"#77ee77\\\" colourB=\\\"#586e75\\\"/>\\n\\\\end\\n\\\\define set-fat-cursor-background()\\n\u003C$macrocall $name=\\\"set-fat-cursor-background-colours\\\" palette={{$:/palette}}/>\\n\\\\end\\n\\\\define set-selection-background-css(colour,colourA,colourB,tiddlerEditorBackground)\\n\u003C$wikify name=\\\"tiddlerEditorBackground\\\" text={{{ [[$tiddlerEditorBackground$]lowercase[]] }}}>\\n\u003C$set name=\\\"backgroundColour\\\" value=\u003C\u003Ccontrastcolour target:\\\"\\\"\\\"$colour$\\\"\\\"\\\" fallbackTarget:\\\"\\\"\\\"\\\"\\\"\\\" colourA:\\\"\\\"\\\"$colourA$\\\"\\\"\\\" colourB:\\\"\\\"\\\"$colourB$\\\"\\\"\\\">>>\\n\u003C$set name=\\\"backgroundColour\\\" value={{{ [\u003CbackgroundColour>lowercase[]match\u003CtiddlerEditorBackground>then[]] ~[\u003CbackgroundColour>] }}}>\\n.cm-s-tiddlywiki div.CodeMirror-selected { background: \u003C\u003CbackgroundColour>>; color: \u003C\u003Ccolour foreground>>; }\\n.cm-s-tiddlywiki.CodeMirror ::selection { background: \u003C\u003CbackgroundColour>>; color: \u003C\u003Ccolour foreground>>; }\\n.cm-s-tiddlywiki .CodeMirror-line::-moz-selection, .CodeMirror-line > span::-moz-selection, .CodeMirror-line > span > span::-moz-selection { background: \u003C\u003CbackgroundColour>>; color: \u003C\u003Ccolour foreground>>; }\\n.cm-s-tiddlywiki .CodeMirror-line::selection, .CodeMirror-line > span::selection, .CodeMirror-line > span > span::selection { background: \u003C\u003CbackgroundColour>>; color: \u003C\u003Ccolour foreground>>; }\\n\u003C/$set>\\n\u003C/$set>\\n\u003C/$wikify>\\n\\\\end\\n\\\\define set-selection-background-colours(palette)\\n\u003C$macrocall $name=\\\"set-selection-background-css\\\" colour={{$palette$##foreground}} colourA={{{ [{$palette$##selection-background}!match[]!prefix[\u003C\u003C]!suffix[>>]] ~#073642 }}} colourB={{{ [{$palette$##selection-background}!match[]!prefix[\u003C\u003C]!suffix[>>]] ~#eee8d5 }}} tiddlerEditorBackground={{$palette$##tiddler-editor-background}}/>\\n\\\\end\\n\\\\define set-selection-background()\\n\u003C$macrocall $name=\\\"set-selection-background-colours\\\" palette={{$:/palette}}/>\\n\\\\end\\n\\n\\\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline macrocallblock\\n\\n/* Make the editor resize to fit its content */\\n\\n.CodeMirror {\\n\\theight: auto;\\n\\tborder: 1px solid \u003C\u003Ccolour tiddler-editor-border>>;\\n\\tline-height: 1.5;\\n\\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/editorfontfamily}};\\n\\tfont-size: {{$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize}};\\n}\\n\\n.CodeMirror-scroll {\\n\\toverflow-x: auto;\\n\\toverflow-y: hidden;\\n}\\n\\n.cm-s-tiddlywiki {\\n color-profile: sRGB;\\n rendering-intent: auto;\\n}\\n\\n.cm-s-tiddlywiki.CodeMirror, .cm-s-tiddlywiki .CodeMirror-gutters { background-color: \u003C\u003Ccolour tiddler-editor-background>>; color: \u003C\u003Ccolour foreground>>; }\\n.cm-s-tiddlywiki .CodeMirror-gutters {background: \u003C\u003Ccolour tiddler-editor-background>>; border-right: 1px solid \u003C\u003Ccolour tiddler-editor-border>>;}\\n.cm-s-tiddlywiki .CodeMirror-linenumber {color: \u003C\u003Ccolour foreground>>;}\\n.cm-s-tiddlywiki .CodeMirror-cursor { border-left: 2px solid \u003C\u003Ccolour foreground>>; }\\n.cm-s-tiddlywiki span.cm-comment { color: #586e75; font-style:italic; font-weight:normal; }\\n.cm-s-tiddlywiki .CodeMirror-activeline-background, .cm-s-tiddlywiki .CodeMirror-activeline-gutter .CodeMirror-linenumber { background: rgba(127,127,127,0.2); }\\n.cm-s-tiddlywiki span.cm-matchhighlight { color: \u003C\u003Ccolour background>>; background-color: \u003C\u003Ccolour primary>>; font-weight: normal;}\\n.cm-s-tiddlywiki .CodeMirror-widget { text-shadow: none; }\\n.cm-s-tiddlywiki .CodeMirror-dialog { background: \u003C\u003Ccolour tiddler-background>>; }\\n.cm-s-tiddlywiki .cm-header { color: #586e75; }\\n.cm-s-tiddlywiki .cm-quote { color: #93a1a1; }\\n.cm-s-tiddlywiki .cm-keyword { color: #cb4b16; }\\n.cm-s-tiddlywiki .cm-atom { color: #d33682; }\\n.cm-s-tiddlywiki .cm-number { color: #d33682; }\\n.cm-s-tiddlywiki .cm-def { color: #2aa198; }\\n.cm-s-tiddlywiki .cm-variable { color: #839496; }\\n.cm-s-tiddlywiki .cm-variable-2 { color: #b58900; }\\n.cm-s-tiddlywiki .cm-variable-3, .cm-s-tiddlywiki .cm-type { color: #6c71c4; }\\n.cm-s-tiddlywiki .cm-property { color: #2aa198; }\\n.cm-s-tiddlywiki .cm-operator { color: #6c71c4; }\\n.cm-s-tiddlywiki .cm-comment { color: #586e75; font-style:italic; }\\n.cm-s-tiddlywiki .cm-string { color: #859900; }\\n.cm-s-tiddlywiki .cm-string-2 { color: #b58900; }\\n.cm-s-tiddlywiki .cm-meta { color: #859900; }\\n.cm-s-tiddlywiki .cm-qualifier { color: #b58900; }\\n.cm-s-tiddlywiki .cm-builtin { color: #d33682; }\\n.cm-s-tiddlywiki .cm-bracket { color: #cb4b16; }\\n.cm-s-tiddlywiki .CodeMirror-matchingbracket { color: #859900; }\\n.cm-s-tiddlywiki .CodeMirror-nonmatchingbracket { color: #dc322f; }\\n.cm-s-tiddlywiki .cm-tag { color: #93a1a1; }\\n.cm-s-tiddlywiki .cm-attribute { color: #2aa198; }\\n.cm-s-tiddlywiki .cm-hr { color: transparent; border-top: 1px solid #586e75; display: block; }\\n.cm-s-tiddlywiki .cm-link { color: #93a1a1; cursor: pointer; }\\n.cm-s-tiddlywiki .cm-special { color: #6c71c4; }\\n.cm-s-tiddlywiki .cm-em { color: #999; text-decoration: underline; text-decoration-style: dotted; }\\n.cm-s-tiddlywiki .cm-error,\\n.cm-s-tiddlywiki .cm-invalidchar { color: #586e75; border-bottom: 1px dotted #dc322f; }\\n.cm-s-tiddlywiki .CodeMirror-matchingbracket { color: #859900; }\\n.cm-s-tiddlywiki .CodeMirror-nonmatchingbracket { color: #dc322f; }\\n.cm-s-tiddlywiki .cm-searching { background: rgba(243, 155, 53, .3); outline: 1px solid #F39B35; }\\n\u003C\u003Cset-fat-cursor-background>>\\n\u003C\u003Cset-selection-background>>\\n\"},\"$:/core/ui/ControlPanel/Settings/CodeMirror\":{\"title\":\"$:/core/ui/ControlPanel/Settings/CodeMirror\",\"tags\":\"$:/tags/ControlPanel/SettingsTab\",\"caption\":\"CodeMirror\",\"list-after\":\"$:/core/ui/ControlPanel/Settings/TiddlyWiki\",\"text\":\"\\\\define lingo-base() $:/language/codemirror/controlPanel/\\n\\n\u003C\u003Clingo hint>>\\n\\n\u003C$link to=\\\"$:/plugins/tiddlywiki/codemirror/usage\\\">\u003C\u003Clingo usage>>\u003C/$link>\\n\\n\u003C$link to=\\\"$:/plugins/tiddlywiki/codemirror/keyboard\\\">\u003C\u003Clingo keyboard>>\u003C/$link>\\n\\n\u003C$list filter=\\\"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Settings/CodeMirror]]\\\">\\n\\n\u003Cdiv style=\\\"border-top:1px solid #eee;\\\">\\n\\n!! \u003C$link>\u003C$transclude field=\\\"caption\\\"/>\u003C/$link>\\n\\n\u003C$transclude/>\\n\\n\u003C/div>\\n\\n\u003C/$list>\\n\"},\"$:/core/ui/ControlPanel/Settings\":{\"title\":\"$:/core/ui/ControlPanel/Settings\",\"tags\":\"$:/tags/ControlPanel\",\"caption\":\"{{$:/language/ControlPanel/Settings/Caption}}\",\"text\":\"\u003Cdiv class=\\\"tc-control-panel\\\">\\n\u003C$macrocall $name=\\\"tabs\\\" tabsList=\\\"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/SettingsTab]!has[draft.of]]\\\" default=\\\"$:/core/ui/ControlPanel/Settings/TiddlyWiki\\\" explicitState=\\\"$:/state/tab--697582678\\\"/>\\n\u003C/div>\\n\"},\"$:/core/ui/ControlPanel/Settings/TiddlyWiki\":{\"title\":\"$:/core/ui/ControlPanel/Settings/TiddlyWiki\",\"tags\":\"$:/tags/ControlPanel/SettingsTab\",\"caption\":\"TiddlyWiki\",\"text\":\"\\\\define lingo-base() $:/language/ControlPanel/Settings/\\n\\n\u003C\u003Clingo Hint>>\\n\\n\u003C$list filter=\\\"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Settings]]\\\">\\n\\n\u003Cdiv style=\\\"border-top:1px solid #eee;\\\">\\n\\n!! \u003C$link>\u003C$transclude field=\\\"caption\\\"/>\u003C/$link>\\n\\n\u003C$transclude/>\\n\\n\u003C/div>\\n\\n\u003C/$list>\\n\"},\"$:/plugins/tiddlywiki/codemirror/usage\":{\"title\":\"$:/plugins/tiddlywiki/codemirror/usage\",\"text\":\"! Configuration\\n\\nConfiguration for the ~CodeMirror text-editor can be done from within the CodeMirror Settings Tab in the [[ControlPanel|$:/ControlPanel]] (Settings - ~CodeMirror)\\n\\n\\n!!Setting a different Theme\\n\\n~CodeMirror themes are available in the [ext[official GitHub repository|https://github.com/codemirror/CodeMirror/tree/master/theme]]\\n\\nMore themes can be found at https://github.com/FarhadG/code-mirror-themes/tree/master/themes and previewed [ext[here|http://farhadg.github.io/code-mirror-themes/]]\\n\\n\\nTo add a theme to your wiki, follow these four steps:\\n\\n* choose one of the CSS files and copy its content to a new tiddler\\n* remove all comments from the top and tag the tiddler with \u003C\u003Ctag-pill \\\"$:/tags/Stylesheet\\\">>\\n* add a field \\\"module-type\\\" with the value \\\"codemirror-theme\\\". add a field \\\"name\\\" with the exact ''name'' of the theme as value\\n* save the tiddler and go to the Settings tab in $:/ControlPanel - look for the \\\"theme\\\" dropdown to select your newly added theme\\n\\n\\n!!Line Numbers\\n\\nTo show or hide the Line Numbers at the left, go to ~ControlPanel - Settings - ~CodeMirror and look for the \\\"Line Numbers\\\" checkbox\\n\\n\\n!!Line Wrapping\\n\\nControls if long lines get visually wrapped to a new line if they're too long to fit the editor width or if the editor should scroll horizontally\\n\\nTo change the line-wrapping behaviour, go to ~ControlPanel - Settings - ~CodeMirror and look for the \\\"Line Wrapping\\\" checkbox\\n\\n\\n!!Show Cursor when selecting\\n\\nDefines whether the Mouse cursor should be visually shown or hidden when making a text-selection\\n\\nTo change the show-cursor-when-selecting behaviour, go to ~ControlPanel - Settings - ~CodeMirror and look for the \\\"Show cursor when selecting\\\" checkbox\\n\\n\\n!!~CodeMirror Font Family\\n\\nThe Font-Family used within the ~CodeMirror text-editor defaults to \\\"monospace\\\" which will choose your configured monospace system-font\\n\\nThat setting can be overridden entering one or more Font-Families in the \\\"Font Family\\\" input field at ~ControlPanel - Settings - ~CodeMirror\\n\\n* The entries must be separated by semicolons ','\\n* Font-Family Names that contain spaces must be quoted like \\\"My Font\\\"\\n* If a list of Font-Families is specified, the last Font-Family found on the user-system gets used, non-existing fonts get ignored\\n* If none of the specified Font-Families is available, ~CodeMirror uses the default \\\"monospace\\\"\\n\\n\\n!!\\\"Hidden\\\" Settings:\\n\\n!!!Cursor Blink Rate\\n\\nThe cursor blink-rate defines how fast (in milliseconds) the cursor blinks inside the textarea\\n\\nYou can change it by editing $:/config/codemirror/cursorBlinkRate\\n\\\"0\\\" disables blinking\\n\\n!!!Tabsize\\n\\nThe Tabsize defines the width of a tab character. Default is 4.\\n\\nYou can change it by editing $:/config/codemirror/tabSize\\n\\n!!!Indent Unit\\n\\nNot enabled for vnd.tiddlywiki and x-tiddlywiki\\n\\nDefines how many spaces a text-block should be indented. Defaults to 2.\\n\\nYou can change it by editing $:/config/codemirror/indentUnit\\n\\n\"}}}"},
{"title":"$:/plugins/tiddlywiki/codemirror-closebrackets","name":"CodeMirror Close Brackets","description":"Close brackets for CodeMirror","parent-plugin":"$:/plugins/tiddlywiki/codemirror","list":"readme","version":"5.2.3","plugin-type":"plugin","dependents":"","type":"application/json","text":"{\"tiddlers\":{\"$:/config/codemirror/autoCloseBrackets\":{\"title\":\"$:/config/codemirror/autoCloseBrackets\",\"type\":\"bool\",\"text\":\"true\"},\"$:/config/codemirror/matchBrackets\":{\"title\":\"$:/config/codemirror/matchBrackets\",\"type\":\"bool\",\"text\":\"true\\n\"},\"$:/plugins/tiddlywiki/codemirror/addon/edit/closebrackets.js\":{\"text\":\"// CodeMirror, copyright (c) by Marijn Haverbeke and others\\n// Distributed under an MIT license: https://codemirror.net/LICENSE\\n!function(e){\\\"object\\\"==typeof exports&&\\\"object\\\"==typeof module?e(require(\\\"../../lib/codemirror\\\")):\\\"function\\\"==typeof define&&define.amd?define([\\\"../../lib/codemirror\\\"],e):e(CodeMirror)}(function(C){var r={pairs:\\\"()[]{}''\\\\\\\"\\\\\\\"\\\",closeBefore:\\\")]}'\\\\\\\":;>\\\",triples:\\\"\\\",explode:\\\"[]{}\\\"},x=C.Pos;function P(e,t){return\\\"pairs\\\"==t&&\\\"string\\\"==typeof e?e:\\\"object\\\"==typeof e&&null!=e[t]?e[t]:r[t]}C.defineOption(\\\"autoCloseBrackets\\\",!1,function(e,t,r){r&&r!=C.Init&&(e.removeKeyMap(i),e.state.closeBrackets=null),t&&(n(P(t,\\\"pairs\\\")),e.state.closeBrackets=t,e.addKeyMap(i))});var i={Backspace:function(e){var t=k(e);if(!t||e.getOption(\\\"disableInput\\\"))return C.Pass;for(var r=P(t,\\\"pairs\\\"),n=e.listSelections(),i=0;i\u003Cn.length;i++){if(!n[i].empty())return C.Pass;var a=s(e,n[i].head);if(!a||r.indexOf(a)%2!=0)return C.Pass}for(i=n.length-1;0\u003C=i;i--){var o=n[i].head;e.replaceRange(\\\"\\\",x(o.line,o.ch-1),x(o.line,o.ch+1),\\\"+delete\\\")}},Enter:function(n){var e=k(n),t=e&&P(e,\\\"explode\\\");if(!t||n.getOption(\\\"disableInput\\\"))return C.Pass;for(var i=n.listSelections(),r=0;r\u003Ci.length;r++){if(!i[r].empty())return C.Pass;var a=s(n,i[r].head);if(!a||t.indexOf(a)%2!=0)return C.Pass}n.operation(function(){var e=n.lineSeparator()||\\\"\\\\n\\\";n.replaceSelection(e+e,null),n.execCommand(\\\"goCharLeft\\\"),i=n.listSelections();for(var t=0;t\u003Ci.length;t++){var r=i[t].head.line;n.indentLine(r,null,!0),n.indentLine(r+1,null,!0)}})}};function n(e){for(var t=0;t\u003Ce.length;t++){var r=e.charAt(t),n=\\\"'\\\"+r+\\\"'\\\";i[n]||(i[n]=function(t){return function(e){return function(i,e){var t=k(i);if(!t||i.getOption(\\\"disableInput\\\"))return C.Pass;var r=P(t,\\\"pairs\\\"),n=r.indexOf(e);if(-1==n)return C.Pass;for(var a,o=P(t,\\\"closeBefore\\\"),s=P(t,\\\"triples\\\"),l=r.charAt(n+1)==e,c=i.listSelections(),f=n%2==0,h=0;h\u003Cc.length;h++){var u,d=c[h],p=d.head,g=i.getRange(p,x(p.line,p.ch+1));if(f&&!d.empty())u=\\\"surround\\\";else if(!l&&f||g!=e)if(l&&1\u003Cp.ch&&0\u003C=s.indexOf(e)&&i.getRange(x(p.line,p.ch-2),p)==e+e){if(2\u003Cp.ch&&/\\\\bstring/.test(i.getTokenTypeAt(x(p.line,p.ch-2))))return C.Pass;u=\\\"addFour\\\"}else if(l){var v=0==p.ch?\\\" \\\":i.getRange(x(p.line,p.ch-1),p);if(C.isWordChar(g)||v==e||C.isWordChar(v))return C.Pass;u=\\\"both\\\"}else{if(!f||!(0===g.length||/\\\\s/.test(g)||-1\u003Co.indexOf(g)))return C.Pass;u=\\\"both\\\"}else u=l&&function(e,t){var r=e.getTokenAt(x(t.line,t.ch+1));return/\\\\bstring/.test(r.type)&&r.start==t.ch&&(0==t.ch||!/\\\\bstring/.test(e.getTokenTypeAt(t)))}(i,p)?\\\"both\\\":0\u003C=s.indexOf(e)&&i.getRange(p,x(p.line,p.ch+3))==e+e+e?\\\"skipThree\\\":\\\"skip\\\";if(a){if(a!=u)return C.Pass}else a=u}var m=n%2?r.charAt(n-1):e,b=n%2?e:r.charAt(n+1);i.operation(function(){if(\\\"skip\\\"==a)i.execCommand(\\\"goCharRight\\\");else if(\\\"skipThree\\\"==a)for(var e=0;e\u003C3;e++)i.execCommand(\\\"goCharRight\\\");else if(\\\"surround\\\"==a){for(var t=i.getSelections(),e=0;e\u003Ct.length;e++)t[e]=m+t[e]+b;i.replaceSelections(t,\\\"around\\\"),t=i.listSelections().slice();for(e=0;e\u003Ct.length;e++)t[e]=(r=t[e],n=0\u003CC.cmpPos(r.anchor,r.head),{anchor:new x(r.anchor.line,r.anchor.ch+(n?-1:1)),head:new x(r.head.line,r.head.ch+(n?1:-1))});i.setSelections(t)}else\\\"both\\\"==a?(i.replaceSelection(m+b,null),i.triggerElectric(m+b),i.execCommand(\\\"goCharLeft\\\")):\\\"addFour\\\"==a&&(i.replaceSelection(m+m+m+m,\\\"before\\\"),i.execCommand(\\\"goCharRight\\\"));var r,n})}(e,t)}}(r))}}function k(e){var t=e.state.closeBrackets;return t&&!t.override&&e.getModeAt(e.getCursor()).closeBrackets||t}function s(e,t){var r=e.getRange(x(t.line,t.ch-1),x(t.line,t.ch+1));return 2==r.length?r:null}n(r.pairs+\\\"`\\\")});\\n\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/tiddlywiki/codemirror/addon/edit/closebrackets.js\",\"module-type\":\"codemirror\"},\"$:/plugins/tiddlywiki/codemirror/addon/edit/matchbrackets.js\":{\"text\":\"// CodeMirror, copyright (c) by Marijn Haverbeke and others\\n// Distributed under an MIT license: https://codemirror.net/LICENSE\\n!function(t){\\\"object\\\"==typeof exports&&\\\"object\\\"==typeof module?t(require(\\\"../../lib/codemirror\\\")):\\\"function\\\"==typeof define&&define.amd?define([\\\"../../lib/codemirror\\\"],t):t(CodeMirror)}(function(i){var h=/MSIE \\\\d/.test(navigator.userAgent)&&(null==document.documentMode||document.documentMode\u003C8),k=i.Pos,p={\\\"(\\\":\\\")>\\\",\\\")\\\":\\\"(\u003C\\\",\\\"[\\\":\\\"]>\\\",\\\"]\\\":\\\"[\u003C\\\",\\\"{\\\":\\\"}>\\\",\\\"}\\\":\\\"{\u003C\\\",\\\"\u003C\\\":\\\">>\\\",\\\">\\\":\\\"\u003C\u003C\\\"};function v(t){return t&&t.bracketRegex||/[(){}[\\\\]]/}function u(t,e,n){var r=t.getLineHandle(e.line),i=e.ch-1,c=n&&n.afterCursor;null==c&&(c=/(^| )cm-fat-cursor($| )/.test(t.getWrapperElement().className));var a=v(n),o=!c&&0\u003C=i&&a.test(r.text.charAt(i))&&p[r.text.charAt(i)]||a.test(r.text.charAt(i+1))&&p[r.text.charAt(++i)];if(!o)return null;var l=\\\">\\\"==o.charAt(1)?1:-1;if(n&&n.strict&&0\u003Cl!=(i==e.ch))return null;var s=t.getTokenTypeAt(k(e.line,i+1)),h=f(t,k(e.line,i+(0\u003Cl?1:0)),l,s||null,n);return null==h?null:{from:k(e.line,i),to:h&&h.pos,match:h&&h.ch==o.charAt(0),forward:0\u003Cl}}function f(t,e,n,r,i){for(var c=i&&i.maxScanLineLength||1e4,a=i&&i.maxScanLines||1e3,o=[],l=v(i),s=0\u003Cn?Math.min(e.line+a,t.lastLine()+1):Math.max(t.firstLine()-1,e.line-a),h=e.line;h!=s;h+=n){var u=t.getLine(h);if(u){var f=0\u003Cn?0:u.length-1,m=0\u003Cn?u.length:-1;if(!(u.length>c))for(h==e.line&&(f=e.ch-(n\u003C0?1:0));f!=m;f+=n){var g=u.charAt(f);if(l.test(g)&&(void 0===r||t.getTokenTypeAt(k(h,f+1))==r)){var d=p[g];if(d&&\\\">\\\"==d.charAt(1)==0\u003Cn)o.push(g);else{if(!o.length)return{pos:k(h,f),ch:g};o.pop()}}}}}return h-n!=(0\u003Cn?t.lastLine():t.firstLine())&&null}function e(t,e,n){for(var r=t.state.matchBrackets.maxHighlightLineLength||1e3,i=[],c=t.listSelections(),a=0;a\u003Cc.length;a++){var o,l=c[a].empty()&&u(t,c[a].head,n);l&&t.getLine(l.from.line).length\u003C=r&&(o=l.match?\\\"CodeMirror-matchingbracket\\\":\\\"CodeMirror-nonmatchingbracket\\\",i.push(t.markText(l.from,k(l.from.line,l.from.ch+1),{className:o})),l.to&&t.getLine(l.to.line).length\u003C=r&&i.push(t.markText(l.to,k(l.to.line,l.to.ch+1),{className:o})))}if(i.length){h&&t.state.focused&&t.focus();function s(){t.operation(function(){for(var t=0;t\u003Ci.length;t++)i[t].clear()})}if(!e)return s;setTimeout(s,800)}}function c(t){t.operation(function(){t.state.matchBrackets.currentlyHighlighted&&(t.state.matchBrackets.currentlyHighlighted(),t.state.matchBrackets.currentlyHighlighted=null),t.state.matchBrackets.currentlyHighlighted=e(t,!1,t.state.matchBrackets)})}i.defineOption(\\\"matchBrackets\\\",!1,function(t,e,n){function r(t){t.state.matchBrackets&&t.state.matchBrackets.currentlyHighlighted&&(t.state.matchBrackets.currentlyHighlighted(),t.state.matchBrackets.currentlyHighlighted=null)}n&&n!=i.Init&&(t.off(\\\"cursorActivity\\\",c),t.off(\\\"focus\\\",c),t.off(\\\"blur\\\",r),r(t)),e&&(t.state.matchBrackets=\\\"object\\\"==typeof e?e:{},t.on(\\\"cursorActivity\\\",c),t.on(\\\"focus\\\",c),t.on(\\\"blur\\\",r))}),i.defineExtension(\\\"matchBrackets\\\",function(){e(this,!0)}),i.defineExtension(\\\"findMatchingBracket\\\",function(t,e,n){return!n&&\\\"boolean\\\"!=typeof e||(e=n?(n.strict=e,n):e?{strict:!0}:null),u(this,t,e)}),i.defineExtension(\\\"scanForBracket\\\",function(t,e,n,r){return f(this,t,e,n,r)})});\\n\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/tiddlywiki/codemirror/addon/edit/matchbrackets.js\",\"module-type\":\"codemirror\"},\"$:/plugins/tiddlywiki/codemirror-closebrackets/readme\":{\"title\":\"$:/plugins/tiddlywiki/codemirror-closebrackets/readme\",\"text\":\"This plugin adds the ability to automatically insert the closing brackets when you type an opening bracket.\\nAlso enables highlighting of matching brackets.\\n\\nIt needs the latest [[CodeMirror plugin|$:/plugins/tiddlywiki/codemirror]] to be installed\\n\\n\"}}}"},
{"title":"$:/plugins/tiddlywiki/codemirror-closetag","name":"CodeMirror Close Tag","description":"Close tags automatically for CodeMirror","parent-plugin":"$:/plugins/tiddlywiki/codemirror","list":"readme","version":"5.2.3","plugin-type":"plugin","dependents":"","type":"application/json","text":"{\"tiddlers\":{\"$:/config/codemirror/autoCloseTags\":{\"title\":\"$:/config/codemirror/autoCloseTags\",\"type\":\"bool\",\"text\":\"true\\n\"},\"$:/language/codemirror/autoCloseTags/hint\":{\"title\":\"$:/language/codemirror/autoCloseTags/hint\",\"text\":\"Auto-close tags\"},\"$:/language/codemirror/autoCloseTags/info\":{\"title\":\"$:/language/codemirror/autoCloseTags/info\",\"text\":\"Whether or not to automatically close tags\"},\"$:/plugins/tiddlywiki/codemirror/addon/fold/xml-fold.js\":{\"text\":\"// CodeMirror, copyright (c) by Marijn Haverbeke and others\\n// Distributed under an MIT license: https://codemirror.net/LICENSE\\n!function(e){\\\"object\\\"==typeof exports&&\\\"object\\\"==typeof module?e(require(\\\"../../lib/codemirror\\\")):\\\"function\\\"==typeof define&&define.amd?define([\\\"../../lib/codemirror\\\"],e):e(CodeMirror)}(function(e){\\\"use strict\\\";var l=e.Pos;function c(e,n){return e.line-n.line||e.ch-n.ch}var n=\\\"A-Z_a-z\\\\\\\\u00C0-\\\\\\\\u00D6\\\\\\\\u00D8-\\\\\\\\u00F6\\\\\\\\u00F8-\\\\\\\\u02FF\\\\\\\\u0370-\\\\\\\\u037D\\\\\\\\u037F-\\\\\\\\u1FFF\\\\\\\\u200C-\\\\\\\\u200D\\\\\\\\u2070-\\\\\\\\u218F\\\\\\\\u2C00-\\\\\\\\u2FEF\\\\\\\\u3001-\\\\\\\\uD7FF\\\\\\\\uF900-\\\\\\\\uFDCF\\\\\\\\uFDF0-\\\\\\\\uFFFD\\\",i=new RegExp(\\\"\u003C(/?)([\\\"+n+\\\"][A-Z_a-z\\\\\\\\u00C0-\\\\\\\\u00D6\\\\\\\\u00D8-\\\\\\\\u00F6\\\\\\\\u00F8-\\\\\\\\u02FF\\\\\\\\u0370-\\\\\\\\u037D\\\\\\\\u037F-\\\\\\\\u1FFF\\\\\\\\u200C-\\\\\\\\u200D\\\\\\\\u2070-\\\\\\\\u218F\\\\\\\\u2C00-\\\\\\\\u2FEF\\\\\\\\u3001-\\\\\\\\uD7FF\\\\\\\\uF900-\\\\\\\\uFDCF\\\\\\\\uFDF0-\\\\\\\\uFFFD-:.0-9\\\\\\\\u00B7\\\\\\\\u0300-\\\\\\\\u036F\\\\\\\\u203F-\\\\\\\\u2040]*)\\\",\\\"g\\\");function a(e,n,t,i){this.line=n,this.ch=t,this.cm=e,this.text=e.getLine(n),this.min=i?Math.max(i.from,e.firstLine()):e.firstLine(),this.max=i?Math.min(i.to-1,e.lastLine()):e.lastLine()}function s(e,n){var t=e.cm.getTokenTypeAt(l(e.line,n));return t&&/\\\\btag\\\\b/.test(t)}function r(e){return!(e.line>=e.max)&&(e.ch=0,e.text=e.cm.getLine(++e.line),1)}function h(e){return!(e.line\u003C=e.min)&&(e.text=e.cm.getLine(--e.line),e.ch=e.text.length,1)}function F(e){for(;;){var n=e.text.indexOf(\\\">\\\",e.ch);if(-1==n){if(r(e))continue;return}if(s(e,n+1)){var t=e.text.lastIndexOf(\\\"/\\\",n),i=-1\u003Ct&&!/\\\\S/.test(e.text.slice(t+1,n));return e.ch=n+1,i?\\\"selfClose\\\":\\\"regular\\\"}e.ch=n+1}}function x(e){for(;;){var n=e.ch?e.text.lastIndexOf(\\\"\u003C\\\",e.ch-1):-1;if(-1==n){if(h(e))continue;return}if(s(e,n+1)){i.lastIndex=n,e.ch=n;var t=i.exec(e.text);if(t&&t.index==n)return t}else e.ch=n}}function g(e){for(;;){i.lastIndex=e.ch;var n=i.exec(e.text);if(!n){if(r(e))continue;return}if(s(e,n.index+1))return e.ch=n.index+n[0].length,n;e.ch=n.index+1}}function v(e,n){for(var t=[];;){var i,r=g(e),u=e.line,f=e.ch-(r?r[0].length:0);if(!r||!(i=F(e)))return;if(\\\"selfClose\\\"!=i)if(r[1]){for(var o=t.length-1;0\u003C=o;--o)if(t[o]==r[2]){t.length=o;break}if(o\u003C0&&(!n||n==r[2]))return{tag:r[2],from:l(u,f),to:l(e.line,e.ch)}}else t.push(r[2])}}function d(e,n){for(var t=[];;){var i=function(e){for(;;){var n=e.ch?e.text.lastIndexOf(\\\">\\\",e.ch-1):-1;if(-1==n){if(h(e))continue;return}if(s(e,n+1)){var t=e.text.lastIndexOf(\\\"/\\\",n),i=-1\u003Ct&&!/\\\\S/.test(e.text.slice(t+1,n));return e.ch=n+1,i?\\\"selfClose\\\":\\\"regular\\\"}e.ch=n}}(e);if(!i)return;if(\\\"selfClose\\\"!=i){var r=e.line,u=e.ch,f=x(e);if(!f)return;if(f[1])t.push(f[2]);else{for(var o=t.length-1;0\u003C=o;--o)if(t[o]==f[2]){t.length=o;break}if(o\u003C0&&(!n||n==f[2]))return{tag:f[2],from:l(e.line,e.ch),to:l(r,u)}}}else x(e)}}e.registerHelper(\\\"fold\\\",\\\"xml\\\",function(e,n){for(var t=new a(e,n.line,0);;){var i=g(t);if(!i||t.line!=n.line)return;var r=F(t);if(!r)return;if(!i[1]&&\\\"selfClose\\\"!=r){var u=l(t.line,t.ch),f=v(t,i[2]);return f&&0\u003Cc(f.from,u)?{from:u,to:f.from}:null}}}),e.findMatchingTag=function(e,n,t){var i=new a(e,n.line,n.ch,t);if(-1!=i.text.indexOf(\\\">\\\")||-1!=i.text.indexOf(\\\"\u003C\\\")){var r=F(i),u=r&&l(i.line,i.ch),f=r&&x(i);if(r&&f&&!(0\u003Cc(i,n))){var o={from:l(i.line,i.ch),to:u,tag:f[2]};return\\\"selfClose\\\"==r?{open:o,close:null,at:\\\"open\\\"}:f[1]?{open:d(i,f[2]),close:o,at:\\\"close\\\"}:{open:o,close:v(i=new a(e,u.line,u.ch,t),f[2]),at:\\\"open\\\"}}}},e.findEnclosingTag=function(e,n,t,i){for(var r=new a(e,n.line,n.ch,t);;){var u=d(r,i);if(!u)break;var f=v(new a(e,n.line,n.ch,t),u.tag);if(f)return{open:u,close:f}}},e.scanForClosingTag=function(e,n,t,i){return v(new a(e,n.line,n.ch,i?{from:0,to:i}:null),t)}});\\n\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/tiddlywiki/codemirror/addon/fold/xml-fold.js\",\"module-type\":\"codemirror\"},\"$:/plugins/tiddlywiki/codemirror/addon/edit/closetag.js\":{\"text\":\"// CodeMirror, copyright (c) by Marijn Haverbeke and others\\n// Distributed under an MIT license: https://codemirror.net/LICENSE\\n!function(e){\\\"object\\\"==typeof exports&&\\\"object\\\"==typeof module?e(require(\\\"../../lib/codemirror\\\"),require(\\\"../fold/xml-fold\\\")):\\\"function\\\"==typeof define&&define.amd?define([\\\"../../lib/codemirror\\\",\\\"../fold/xml-fold\\\"],e):e(CodeMirror)}(function(y){y.defineOption(\\\"autoCloseTags\\\",!1,function(e,t,n){var o;n!=y.Init&&n&&e.removeKeyMap(\\\"autoCloseTags\\\"),t&&(o={name:\\\"autoCloseTags\\\"},\\\"object\\\"==typeof t&&!1===t.whenClosing||(o[\\\"'/'\\\"]=function(e){return(t=e).getOption(\\\"disableInput\\\")?y.Pass:r(t,!0);var t}),\\\"object\\\"==typeof t&&!1===t.whenOpening||(o[\\\"'>'\\\"]=function(e){if(e.getOption(\\\"disableInput\\\"))return y.Pass;for(var t=e.listSelections(),n=[],o=e.getOption(\\\"autoCloseTags\\\"),r=0;r\u003Ct.length;r++){if(!t[r].empty())return y.Pass;var a=t[r].head,i=e.getTokenAt(a),l=y.innerMode(e.getMode(),i.state),s=l.state,d=l.mode.xmlCurrentTag&&l.mode.xmlCurrentTag(s),c=d&&d.name;if(!c)return y.Pass;var f=\\\"html\\\"==l.mode.configuration,g=\\\"object\\\"==typeof o&&o.dontCloseTags||f&&x,u=\\\"object\\\"==typeof o&&o.indentTags||f&&P;i.end>a.ch&&(c=c.slice(0,c.length-i.end+a.ch));var m=c.toLowerCase();if(!c||\\\"string\\\"==i.type&&(i.end!=a.ch||!/[\\\\\\\"\\\\']/.test(i.string.charAt(i.string.length-1))||1==i.string.length)||\\\"tag\\\"==i.type&&d.close||i.string.indexOf(\\\"/\\\")==a.ch-i.start-1||g&&-1\u003CT(g,m)||j(e,l.mode.xmlCurrentContext&&l.mode.xmlCurrentContext(s)||[],c,a,!0))return y.Pass;var h,p=\\\"object\\\"==typeof o&&o.emptyTags;p&&-1\u003CT(p,c)?n[r]={text:\\\"/>\\\",newPos:y.Pos(a.line,a.ch+2)}:(h=u&&-1\u003CT(u,m),n[r]={indent:h,text:\\\">\\\"+(h?\\\"\\\\n\\\\n\\\":\\\"\\\")+\\\"\u003C/\\\"+c+\\\">\\\",newPos:h?y.Pos(a.line+1,0):y.Pos(a.line,a.ch+1)})}for(var C=\\\"object\\\"==typeof o&&o.dontIndentOnAutoClose,r=t.length-1;0\u003C=r;r--){var b=n[r];e.replaceRange(b.text,t[r].head,t[r].anchor,\\\"+insert\\\");var v=e.listSelections().slice(0);v[r]={head:b.newPos,anchor:b.newPos},e.setSelections(v),!C&&b.indent&&(e.indentLine(b.newPos.line,null,!0),e.indentLine(b.newPos.line+1,null,!0))}}),e.addKeyMap(o))});var x=[\\\"area\\\",\\\"base\\\",\\\"br\\\",\\\"col\\\",\\\"command\\\",\\\"embed\\\",\\\"hr\\\",\\\"img\\\",\\\"input\\\",\\\"keygen\\\",\\\"link\\\",\\\"meta\\\",\\\"param\\\",\\\"source\\\",\\\"track\\\",\\\"wbr\\\"],P=[\\\"applet\\\",\\\"blockquote\\\",\\\"body\\\",\\\"button\\\",\\\"div\\\",\\\"dl\\\",\\\"fieldset\\\",\\\"form\\\",\\\"frameset\\\",\\\"h1\\\",\\\"h2\\\",\\\"h3\\\",\\\"h4\\\",\\\"h5\\\",\\\"h6\\\",\\\"head\\\",\\\"html\\\",\\\"iframe\\\",\\\"layer\\\",\\\"legend\\\",\\\"object\\\",\\\"ol\\\",\\\"p\\\",\\\"select\\\",\\\"table\\\",\\\"ul\\\"];function r(e,t){for(var n=e.listSelections(),o=[],r=t?\\\"/\\\":\\\"\u003C/\\\",a=e.getOption(\\\"autoCloseTags\\\"),i=\\\"object\\\"==typeof a&&a.dontIndentOnSlash,l=0;l\u003Cn.length;l++){if(!n[l].empty())return y.Pass;var s=n[l].head,d=e.getTokenAt(s),c=y.innerMode(e.getMode(),d.state),f=c.state;if(t&&(\\\"string\\\"==d.type||\\\"\u003C\\\"!=d.string.charAt(0)||d.start!=s.ch-1))return y.Pass;var g,u=\\\"xml\\\"!=c.mode.name&&\\\"htmlmixed\\\"==e.getMode().name;if(u&&\\\"javascript\\\"==c.mode.name)g=r+\\\"script\\\";else if(u&&\\\"css\\\"==c.mode.name)g=r+\\\"style\\\";else{var m=c.mode.xmlCurrentContext&&c.mode.xmlCurrentContext(f);if(!m||m.length&&j(e,m,m[m.length-1],s))return y.Pass;g=r+m[m.length-1]}\\\">\\\"!=e.getLine(s.line).charAt(d.end)&&(g+=\\\">\\\"),o[l]=g}if(e.replaceSelections(o),n=e.listSelections(),!i)for(l=0;l\u003Cn.length;l++)(l==n.length-1||n[l].head.line\u003Cn[l+1].head.line)&&e.indentLine(n[l].head.line)}function T(e,t){if(e.indexOf)return e.indexOf(t);for(var n=0,o=e.length;n\u003Co;++n)if(e[n]==t)return n;return-1}function j(e,t,n,o,r){if(y.scanForClosingTag){var a=Math.min(e.lastLine()+1,o.line+500),i=y.scanForClosingTag(e,o,null,a);if(i&&i.tag==n){for(var l=r?1:0,s=t.length-1;0\u003C=s&&t[s]==n;s--)++l;o=i.to;for(s=1;s\u003Cl;s++){var d=y.scanForClosingTag(e,o,null,a);if(!d||d.tag!=n)return;o=d.to}return 1}}}y.commands.closeTag=function(e){return r(e)}});\\n\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/tiddlywiki/codemirror/addon/edit/closetag.js\",\"module-type\":\"codemirror\"},\"$:/plugins/tiddlywiki/codemirror-closetag/readme\":{\"title\":\"$:/plugins/tiddlywiki/codemirror-closetag/readme\",\"text\":\"This plugin adds the ability to ''automatically close Tags''. It needs the latest [[CodeMirror plugin|$:/plugins/tiddlywiki/codemirror]] to be installed\\n\\n\\n\"},\"$:/core/ui/ControlPanel/Settings/codemirror/autoCloseTags\":{\"title\":\"$:/core/ui/ControlPanel/Settings/codemirror/autoCloseTags\",\"tags\":\"$:/tags/ControlPanel/Settings/CodeMirror\",\"caption\":\"{{$:/language/codemirror/autoCloseTags/hint}}\",\"text\":\"\\\\define lingo-base() $:/language/codemirror/autoCloseTags/\\n\u003C\u003Clingo hint>>\\n\\n\u003C$checkbox tiddler=\\\"$:/config/codemirror/autoCloseTags\\\" field=\\\"text\\\" checked=\\\"true\\\" unchecked=\\\"false\\\" default=\\\"true\\\"> \u003C$link to=\\\"$:/config/codemirror/autoCloseTags\\\">\u003C\u003Clingo info>>\u003C/$link> \u003C/$checkbox>\\n\\n\"}}}"},
{"title":"$:/plugins/tiddlywiki/codemirror-fullscreen","name":"CodeMirror Fullscreen","description":"Fullscreen editing for CodeMirror","parent-plugin":"$:/plugins/tiddlywiki/codemirror","list":"readme","version":"5.2.3","plugin-type":"plugin","dependents":"","type":"application/json","text":"{\"tiddlers\":{\"$:/config/codemirror/fullscreen\":{\"title\":\"$:/config/codemirror/fullscreen\",\"extend\":\"extraKeys\",\"type\":\"json\",\"text\":\"{\\n\\t\\\"F11\\\": \\\"togglefullscreen\\\"\\n}\"},\"$:/plugins/tiddlywiki/codemirror/addon/fullscreen/fullscreen.js\":{\"text\":\"// CodeMirror, copyright (c) by Marijn Haverbeke and others\\n// Distributed under an MIT license: https://codemirror.net/LICENSE\\n!function(e){\\\"object\\\"==typeof exports&&\\\"object\\\"==typeof module?e(require(\\\"../../lib/codemirror\\\")):\\\"function\\\"==typeof define&&define.amd?define([\\\"../../lib/codemirror\\\"],e):e(CodeMirror)}(function(i){\\\"use strict\\\";i.defineOption(\\\"fullScreen\\\",!1,function(e,t,o){var r,l;o==i.Init&&(o=!1),!o!=!t&&(t?(l=(r=e).getWrapperElement(),r.state.fullScreenRestore={scrollTop:window.pageYOffset,scrollLeft:window.pageXOffset,width:l.style.width,height:l.style.height},l.style.width=\\\"\\\",l.style.height=\\\"auto\\\",l.className+=\\\" CodeMirror-fullscreen\\\",document.documentElement.style.overflow=\\\"hidden\\\",r.refresh()):function(e){var t=e.getWrapperElement();t.className=t.className.replace(/\\\\s*CodeMirror-fullscreen\\\\b/,\\\"\\\"),document.documentElement.style.overflow=\\\"\\\";var o=e.state.fullScreenRestore;t.style.width=o.width,t.style.height=o.height,window.scrollTo(o.scrollLeft,o.scrollTop),e.refresh()}(e))})});\\n\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/tiddlywiki/codemirror/addon/fullscreen/fullscreen.js\",\"module-type\":\"codemirror\"},\"$:/plugins/tiddlywiki/codemirror/addon/fullscreen/fullscreen.css\":{\"text\":\".CodeMirror-fullscreen {\\n position: fixed;\\n top: 0; left: 0; right: 0; bottom: 0;\\n height: auto;\\n z-index: 9;\\n}\\n\",\"type\":\"text/css\",\"title\":\"$:/plugins/tiddlywiki/codemirror/addon/fullscreen/fullscreen.css\",\"tags\":\"[[$:/tags/Stylesheet]]\"},\"$:/plugins/tiddlywiki/codemirror-fullscreen/readme\":{\"title\":\"$:/plugins/tiddlywiki/codemirror-fullscreen/readme\",\"text\":\"This plugin adds a ''Fullscreen editing Mode'' to the [[CodeMirror|http://codemirror.net]] text editor. It needs the latest [[CodeMirror plugin|$:/plugins/tiddlywiki/codemirror]] to be installed\\n\\nPressing ''F11'' with the focus within the editor-textarea will make the editor go fullscreen, pressing ''F11'' again leaves fullscreen-mode\\n\\n\"}}}"},
{"title":"$:/plugins/tiddlywiki/codemirror-mode-css","name":"CodeMirror Mode CSS","description":"CSS highlighting mode for CodeMirror","parent-plugin":"$:/plugins/tiddlywiki/codemirror","list":"readme","version":"5.2.3","plugin-type":"plugin","dependents":"","type":"application/json","text":"{\"tiddlers\":{\"$:/plugins/tiddlywiki/codemirror/mode/css/css.js\":{\"text\":\"// CodeMirror, copyright (c) by Marijn Haverbeke and others\\n// Distributed under an MIT license: https://codemirror.net/LICENSE\\n!function(e){\\\"object\\\"==typeof exports&&\\\"object\\\"==typeof module?e(require(\\\"../../lib/codemirror\\\")):\\\"function\\\"==typeof define&&define.amd?define([\\\"../../lib/codemirror\\\"],e):e(CodeMirror)}(function(T){\\\"use strict\\\";function e(e){for(var t={},r=0;r\u003Ce.length;++r)t[e[r].toLowerCase()]=!0;return t}T.defineMode(\\\"css\\\",function(e,t){var r=t.inline;t.propertyKeywords||(t=T.resolveMode(\\\"text/css\\\"));var a,i,n=e.indentUnit,l=t.tokenHooks,o=t.documentTypes||{},s=t.mediaTypes||{},d=t.mediaFeatures||{},c=t.mediaValueKeywords||{},p=t.propertyKeywords||{},u=t.nonStandardPropertyKeywords||{},m=t.fontProperties||{},b=t.counterDescriptors||{},g=t.colorKeywords||{},h=t.valueKeywords||{},f=t.allowNested,k=t.lineComment,y=!0===t.supportsAtComponent,w=!1!==e.highlightNonStandardPropertyKeywords;function v(e,t){return a=t,e}function x(i){return function(e,t){for(var r,o=!1;null!=(r=e.next());){if(r==i&&!o){\\\")\\\"==i&&e.backUp(1);break}o=!o&&\\\"\\\\\\\\\\\"==r}return r!=i&&(o||\\\")\\\"==i)||(t.tokenize=null),a=\\\"string\\\"}}function z(e,t){return e.next(),e.match(/\\\\s*[\\\\\\\"\\\\')]/,!1)?t.tokenize=null:t.tokenize=x(\\\")\\\"),a=\\\"(\\\",null}function j(e,t,r){this.type=e,this.indent=t,this.prev=r}function P(e,t,r,o){return e.context=new j(r,t.indentation()+(!1===o?0:n),e.context),r}function K(e){return e.context.prev&&(e.context=e.context.prev),e.context.type}function q(e,t,r){return _[r.context.type](e,t,r)}function C(e,t,r,o){for(var i=o||1;0\u003Ci;i--)r.context=r.context.prev;return q(e,t,r)}function B(e){var t=e.current().toLowerCase();i=h.hasOwnProperty(t)?\\\"atom\\\":g.hasOwnProperty(t)?\\\"keyword\\\":\\\"variable\\\"}var _={top:function(e,t,r){if(\\\"{\\\"==e)return P(r,t,\\\"block\\\");if(\\\"}\\\"==e&&r.context.prev)return K(r);if(y&&/@component/i.test(e))return P(r,t,\\\"atComponentBlock\\\");if(/^@(-moz-)?document$/i.test(e))return P(r,t,\\\"documentTypes\\\");if(/^@(media|supports|(-moz-)?document|import)$/i.test(e))return P(r,t,\\\"atBlock\\\");if(/^@(font-face|counter-style)/i.test(e))return r.stateArg=e,\\\"restricted_atBlock_before\\\";if(/^@(-(moz|ms|o|webkit)-)?keyframes$/i.test(e))return\\\"keyframes\\\";if(e&&\\\"@\\\"==e.charAt(0))return P(r,t,\\\"at\\\");if(\\\"hash\\\"==e)i=\\\"builtin\\\";else if(\\\"word\\\"==e)i=\\\"tag\\\";else{if(\\\"variable-definition\\\"==e)return\\\"maybeprop\\\";if(\\\"interpolation\\\"==e)return P(r,t,\\\"interpolation\\\");if(\\\":\\\"==e)return\\\"pseudo\\\";if(f&&\\\"(\\\"==e)return P(r,t,\\\"parens\\\")}return r.context.type},block:function(e,t,r){if(\\\"word\\\"!=e)return\\\"meta\\\"==e?\\\"block\\\":f||\\\"hash\\\"!=e&&\\\"qualifier\\\"!=e?_.top(e,t,r):(i=\\\"error\\\",\\\"block\\\");var o=t.current().toLowerCase();return p.hasOwnProperty(o)?(i=\\\"property\\\",\\\"maybeprop\\\"):u.hasOwnProperty(o)?(i=w?\\\"string-2\\\":\\\"property\\\",\\\"maybeprop\\\"):f?(i=t.match(/^\\\\s*:(?:\\\\s|$)/,!1)?\\\"property\\\":\\\"tag\\\",\\\"block\\\"):(i+=\\\" error\\\",\\\"maybeprop\\\")},maybeprop:function(e,t,r){return\\\":\\\"==e?P(r,t,\\\"prop\\\"):q(e,t,r)},prop:function(e,t,r){if(\\\";\\\"==e)return K(r);if(\\\"{\\\"==e&&f)return P(r,t,\\\"propBlock\\\");if(\\\"}\\\"==e||\\\"{\\\"==e)return C(e,t,r);if(\\\"(\\\"==e)return P(r,t,\\\"parens\\\");if(\\\"hash\\\"!=e||/^#([0-9a-fA-f]{3,4}|[0-9a-fA-f]{6}|[0-9a-fA-f]{8})$/.test(t.current())){if(\\\"word\\\"==e)B(t);else if(\\\"interpolation\\\"==e)return P(r,t,\\\"interpolation\\\")}else i+=\\\" error\\\";return\\\"prop\\\"},propBlock:function(e,t,r){return\\\"}\\\"==e?K(r):\\\"word\\\"==e?(i=\\\"property\\\",\\\"maybeprop\\\"):r.context.type},parens:function(e,t,r){return\\\"{\\\"==e||\\\"}\\\"==e?C(e,t,r):\\\")\\\"==e?K(r):\\\"(\\\"==e?P(r,t,\\\"parens\\\"):\\\"interpolation\\\"==e?P(r,t,\\\"interpolation\\\"):(\\\"word\\\"==e&&B(t),\\\"parens\\\")},pseudo:function(e,t,r){return\\\"meta\\\"==e?\\\"pseudo\\\":\\\"word\\\"==e?(i=\\\"variable-3\\\",r.context.type):q(e,t,r)},documentTypes:function(e,t,r){return\\\"word\\\"==e&&o.hasOwnProperty(t.current())?(i=\\\"tag\\\",r.context.type):_.atBlock(e,t,r)},atBlock:function(e,t,r){return\\\"(\\\"==e?P(r,t,\\\"atBlock_parens\\\"):\\\"}\\\"==e||\\\";\\\"==e?C(e,t,r):\\\"{\\\"==e?K(r)&&P(r,t,f?\\\"block\\\":\\\"top\\\"):\\\"interpolation\\\"==e?P(r,t,\\\"interpolation\\\"):(\\\"word\\\"==e&&(o=t.current().toLowerCase(),i=\\\"only\\\"==o||\\\"not\\\"==o||\\\"and\\\"==o||\\\"or\\\"==o?\\\"keyword\\\":s.hasOwnProperty(o)?\\\"attribute\\\":d.hasOwnProperty(o)?\\\"property\\\":c.hasOwnProperty(o)?\\\"keyword\\\":p.hasOwnProperty(o)?\\\"property\\\":u.hasOwnProperty(o)?w?\\\"string-2\\\":\\\"property\\\":h.hasOwnProperty(o)?\\\"atom\\\":g.hasOwnProperty(o)?\\\"keyword\\\":\\\"error\\\"),r.context.type);var o},atComponentBlock:function(e,t,r){return\\\"}\\\"==e?C(e,t,r):\\\"{\\\"==e?K(r)&&P(r,t,f?\\\"block\\\":\\\"top\\\",!1):(\\\"word\\\"==e&&(i=\\\"error\\\"),r.context.type)},atBlock_parens:function(e,t,r){return\\\")\\\"==e?K(r):\\\"{\\\"==e||\\\"}\\\"==e?C(e,t,r,2):_.atBlock(e,t,r)},restricted_atBlock_before:function(e,t,r){return\\\"{\\\"==e?P(r,t,\\\"restricted_atBlock\\\"):\\\"word\\\"==e&&\\\"@counter-style\\\"==r.stateArg?(i=\\\"variable\\\",\\\"restricted_atBlock_before\\\"):q(e,t,r)},restricted_atBlock:function(e,t,r){return\\\"}\\\"==e?(r.stateArg=null,K(r)):\\\"word\\\"==e?(i=\\\"@font-face\\\"==r.stateArg&&!m.hasOwnProperty(t.current().toLowerCase())||\\\"@counter-style\\\"==r.stateArg&&!b.hasOwnProperty(t.current().toLowerCase())?\\\"error\\\":\\\"property\\\",\\\"maybeprop\\\"):\\\"restricted_atBlock\\\"},keyframes:function(e,t,r){return\\\"word\\\"==e?(i=\\\"variable\\\",\\\"keyframes\\\"):\\\"{\\\"==e?P(r,t,\\\"top\\\"):q(e,t,r)},at:function(e,t,r){return\\\";\\\"==e?K(r):\\\"{\\\"==e||\\\"}\\\"==e?C(e,t,r):(\\\"word\\\"==e?i=\\\"tag\\\":\\\"hash\\\"==e&&(i=\\\"builtin\\\"),\\\"at\\\")},interpolation:function(e,t,r){return\\\"}\\\"==e?K(r):\\\"{\\\"==e||\\\";\\\"==e?C(e,t,r):(\\\"word\\\"==e?i=\\\"variable\\\":\\\"variable\\\"!=e&&\\\"(\\\"!=e&&\\\")\\\"!=e&&(i=\\\"error\\\"),\\\"interpolation\\\")}};return{startState:function(e){return{tokenize:null,state:r?\\\"block\\\":\\\"top\\\",stateArg:null,context:new j(r?\\\"block\\\":\\\"top\\\",e||0,null)}},token:function(e,t){if(!t.tokenize&&e.eatSpace())return null;var r=(t.tokenize||function(e,t){var r=e.next();if(l[r]){var o=l[r](e,t);if(!1!==o)return o}return\\\"@\\\"==r?(e.eatWhile(/[\\\\w\\\\\\\\\\\\-]/),v(\\\"def\\\",e.current())):\\\"=\\\"==r||(\\\"~\\\"==r||\\\"|\\\"==r)&&e.eat(\\\"=\\\")?(a=\\\"compare\\\",null):'\\\"'==r||\\\"'\\\"==r?(t.tokenize=x(r),t.tokenize(e,t)):\\\"#\\\"==r?(e.eatWhile(/[\\\\w\\\\\\\\\\\\-]/),a=\\\"hash\\\",\\\"atom\\\"):\\\"!\\\"==r?(e.match(/^\\\\s*\\\\w*/),a=\\\"important\\\",\\\"keyword\\\"):/\\\\d/.test(r)||\\\".\\\"==r&&e.eat(/\\\\d/)?(e.eatWhile(/[\\\\w.%]/),a=\\\"unit\\\",\\\"number\\\"):\\\"-\\\"!==r?/[,+>*\\\\/]/.test(r)?(a=\\\"select-op\\\",null):\\\".\\\"==r&&e.match(/^-?[_a-z][_a-z0-9-]*/i)?a=\\\"qualifier\\\":/[:;{}\\\\[\\\\]\\\\(\\\\)]/.test(r)?v(null,r):e.match(/[\\\\w-.]+(?=\\\\()/)?(/^(url(-prefix)?|domain|regexp)$/.test(e.current().toLowerCase())&&(t.tokenize=z),a=\\\"variable\\\",\\\"variable callee\\\"):/[\\\\w\\\\\\\\\\\\-]/.test(r)?(e.eatWhile(/[\\\\w\\\\\\\\\\\\-]/),a=\\\"word\\\",\\\"property\\\"):a=null:/[\\\\d.]/.test(e.peek())?(e.eatWhile(/[\\\\w.%]/),a=\\\"unit\\\",\\\"number\\\"):e.match(/^-[\\\\w\\\\\\\\\\\\-]*/)?(e.eatWhile(/[\\\\w\\\\\\\\\\\\-]/),a=e.match(/^\\\\s*:/,!1)?\\\"variable-definition\\\":\\\"variable\\\",\\\"variable-2\\\"):e.match(/^\\\\w+-/)?a=\\\"meta\\\":void 0})(e,t);return r&&\\\"object\\\"==typeof r&&(a=r[1],r=r[0]),i=r,\\\"comment\\\"!=a&&(t.state=_[t.state](a,e,t)),i},indent:function(e,t){var r=e.context,o=t&&t.charAt(0),i=r.indent;return\\\"prop\\\"!=r.type||\\\"}\\\"!=o&&\\\")\\\"!=o||(r=r.prev),r.prev&&(\\\"}\\\"!=o||\\\"block\\\"!=r.type&&\\\"top\\\"!=r.type&&\\\"interpolation\\\"!=r.type&&\\\"restricted_atBlock\\\"!=r.type?(\\\")\\\"!=o||\\\"parens\\\"!=r.type&&\\\"atBlock_parens\\\"!=r.type)&&(\\\"{\\\"!=o||\\\"at\\\"!=r.type&&\\\"atBlock\\\"!=r.type)||(i=Math.max(0,r.indent-n)):i=(r=r.prev).indent),i},electricChars:\\\"}\\\",blockCommentStart:\\\"/*\\\",blockCommentEnd:\\\"*/\\\",blockCommentContinue:\\\" * \\\",lineComment:k,fold:\\\"brace\\\"}});var t=[\\\"domain\\\",\\\"regexp\\\",\\\"url\\\",\\\"url-prefix\\\"],r=e(t),o=[\\\"all\\\",\\\"aural\\\",\\\"braille\\\",\\\"handheld\\\",\\\"print\\\",\\\"projection\\\",\\\"screen\\\",\\\"tty\\\",\\\"tv\\\",\\\"embossed\\\"],i=e(o),a=[\\\"width\\\",\\\"min-width\\\",\\\"max-width\\\",\\\"height\\\",\\\"min-height\\\",\\\"max-height\\\",\\\"device-width\\\",\\\"min-device-width\\\",\\\"max-device-width\\\",\\\"device-height\\\",\\\"min-device-height\\\",\\\"max-device-height\\\",\\\"aspect-ratio\\\",\\\"min-aspect-ratio\\\",\\\"max-aspect-ratio\\\",\\\"device-aspect-ratio\\\",\\\"min-device-aspect-ratio\\\",\\\"max-device-aspect-ratio\\\",\\\"color\\\",\\\"min-color\\\",\\\"max-color\\\",\\\"color-index\\\",\\\"min-color-index\\\",\\\"max-color-index\\\",\\\"monochrome\\\",\\\"min-monochrome\\\",\\\"max-monochrome\\\",\\\"resolution\\\",\\\"min-resolution\\\",\\\"max-resolution\\\",\\\"scan\\\",\\\"grid\\\",\\\"orientation\\\",\\\"device-pixel-ratio\\\",\\\"min-device-pixel-ratio\\\",\\\"max-device-pixel-ratio\\\",\\\"pointer\\\",\\\"any-pointer\\\",\\\"hover\\\",\\\"any-hover\\\",\\\"prefers-color-scheme\\\"],n=e(a),l=[\\\"landscape\\\",\\\"portrait\\\",\\\"none\\\",\\\"coarse\\\",\\\"fine\\\",\\\"on-demand\\\",\\\"hover\\\",\\\"interlace\\\",\\\"progressive\\\",\\\"dark\\\",\\\"light\\\"],s=e(l),d=[\\\"align-content\\\",\\\"align-items\\\",\\\"align-self\\\",\\\"alignment-adjust\\\",\\\"alignment-baseline\\\",\\\"all\\\",\\\"anchor-point\\\",\\\"animation\\\",\\\"animation-delay\\\",\\\"animation-direction\\\",\\\"animation-duration\\\",\\\"animation-fill-mode\\\",\\\"animation-iteration-count\\\",\\\"animation-name\\\",\\\"animation-play-state\\\",\\\"animation-timing-function\\\",\\\"appearance\\\",\\\"azimuth\\\",\\\"backdrop-filter\\\",\\\"backface-visibility\\\",\\\"background\\\",\\\"background-attachment\\\",\\\"background-blend-mode\\\",\\\"background-clip\\\",\\\"background-color\\\",\\\"background-image\\\",\\\"background-origin\\\",\\\"background-position\\\",\\\"background-position-x\\\",\\\"background-position-y\\\",\\\"background-repeat\\\",\\\"background-size\\\",\\\"baseline-shift\\\",\\\"binding\\\",\\\"bleed\\\",\\\"block-size\\\",\\\"bookmark-label\\\",\\\"bookmark-level\\\",\\\"bookmark-state\\\",\\\"bookmark-target\\\",\\\"border\\\",\\\"border-bottom\\\",\\\"border-bottom-color\\\",\\\"border-bottom-left-radius\\\",\\\"border-bottom-right-radius\\\",\\\"border-bottom-style\\\",\\\"border-bottom-width\\\",\\\"border-collapse\\\",\\\"border-color\\\",\\\"border-image\\\",\\\"border-image-outset\\\",\\\"border-image-repeat\\\",\\\"border-image-slice\\\",\\\"border-image-source\\\",\\\"border-image-width\\\",\\\"border-left\\\",\\\"border-left-color\\\",\\\"border-left-style\\\",\\\"border-left-width\\\",\\\"border-radius\\\",\\\"border-right\\\",\\\"border-right-color\\\",\\\"border-right-style\\\",\\\"border-right-width\\\",\\\"border-spacing\\\",\\\"border-style\\\",\\\"border-top\\\",\\\"border-top-color\\\",\\\"border-top-left-radius\\\",\\\"border-top-right-radius\\\",\\\"border-top-style\\\",\\\"border-top-width\\\",\\\"border-width\\\",\\\"bottom\\\",\\\"box-decoration-break\\\",\\\"box-shadow\\\",\\\"box-sizing\\\",\\\"break-after\\\",\\\"break-before\\\",\\\"break-inside\\\",\\\"caption-side\\\",\\\"caret-color\\\",\\\"clear\\\",\\\"clip\\\",\\\"color\\\",\\\"color-profile\\\",\\\"column-count\\\",\\\"column-fill\\\",\\\"column-gap\\\",\\\"column-rule\\\",\\\"column-rule-color\\\",\\\"column-rule-style\\\",\\\"column-rule-width\\\",\\\"column-span\\\",\\\"column-width\\\",\\\"columns\\\",\\\"contain\\\",\\\"content\\\",\\\"counter-increment\\\",\\\"counter-reset\\\",\\\"crop\\\",\\\"cue\\\",\\\"cue-after\\\",\\\"cue-before\\\",\\\"cursor\\\",\\\"direction\\\",\\\"display\\\",\\\"dominant-baseline\\\",\\\"drop-initial-after-adjust\\\",\\\"drop-initial-after-align\\\",\\\"drop-initial-before-adjust\\\",\\\"drop-initial-before-align\\\",\\\"drop-initial-size\\\",\\\"drop-initial-value\\\",\\\"elevation\\\",\\\"empty-cells\\\",\\\"fit\\\",\\\"fit-position\\\",\\\"flex\\\",\\\"flex-basis\\\",\\\"flex-direction\\\",\\\"flex-flow\\\",\\\"flex-grow\\\",\\\"flex-shrink\\\",\\\"flex-wrap\\\",\\\"float\\\",\\\"float-offset\\\",\\\"flow-from\\\",\\\"flow-into\\\",\\\"font\\\",\\\"font-family\\\",\\\"font-feature-settings\\\",\\\"font-kerning\\\",\\\"font-language-override\\\",\\\"font-optical-sizing\\\",\\\"font-size\\\",\\\"font-size-adjust\\\",\\\"font-stretch\\\",\\\"font-style\\\",\\\"font-synthesis\\\",\\\"font-variant\\\",\\\"font-variant-alternates\\\",\\\"font-variant-caps\\\",\\\"font-variant-east-asian\\\",\\\"font-variant-ligatures\\\",\\\"font-variant-numeric\\\",\\\"font-variant-position\\\",\\\"font-variation-settings\\\",\\\"font-weight\\\",\\\"gap\\\",\\\"grid\\\",\\\"grid-area\\\",\\\"grid-auto-columns\\\",\\\"grid-auto-flow\\\",\\\"grid-auto-rows\\\",\\\"grid-column\\\",\\\"grid-column-end\\\",\\\"grid-column-gap\\\",\\\"grid-column-start\\\",\\\"grid-gap\\\",\\\"grid-row\\\",\\\"grid-row-end\\\",\\\"grid-row-gap\\\",\\\"grid-row-start\\\",\\\"grid-template\\\",\\\"grid-template-areas\\\",\\\"grid-template-columns\\\",\\\"grid-template-rows\\\",\\\"hanging-punctuation\\\",\\\"height\\\",\\\"hyphens\\\",\\\"icon\\\",\\\"image-orientation\\\",\\\"image-rendering\\\",\\\"image-resolution\\\",\\\"inline-box-align\\\",\\\"inset\\\",\\\"inset-block\\\",\\\"inset-block-end\\\",\\\"inset-block-start\\\",\\\"inset-inline\\\",\\\"inset-inline-end\\\",\\\"inset-inline-start\\\",\\\"isolation\\\",\\\"justify-content\\\",\\\"justify-items\\\",\\\"justify-self\\\",\\\"left\\\",\\\"letter-spacing\\\",\\\"line-break\\\",\\\"line-height\\\",\\\"line-height-step\\\",\\\"line-stacking\\\",\\\"line-stacking-ruby\\\",\\\"line-stacking-shift\\\",\\\"line-stacking-strategy\\\",\\\"list-style\\\",\\\"list-style-image\\\",\\\"list-style-position\\\",\\\"list-style-type\\\",\\\"margin\\\",\\\"margin-bottom\\\",\\\"margin-left\\\",\\\"margin-right\\\",\\\"margin-top\\\",\\\"marks\\\",\\\"marquee-direction\\\",\\\"marquee-loop\\\",\\\"marquee-play-count\\\",\\\"marquee-speed\\\",\\\"marquee-style\\\",\\\"mask-clip\\\",\\\"mask-composite\\\",\\\"mask-image\\\",\\\"mask-mode\\\",\\\"mask-origin\\\",\\\"mask-position\\\",\\\"mask-repeat\\\",\\\"mask-size\\\",\\\"mask-type\\\",\\\"max-block-size\\\",\\\"max-height\\\",\\\"max-inline-size\\\",\\\"max-width\\\",\\\"min-block-size\\\",\\\"min-height\\\",\\\"min-inline-size\\\",\\\"min-width\\\",\\\"mix-blend-mode\\\",\\\"move-to\\\",\\\"nav-down\\\",\\\"nav-index\\\",\\\"nav-left\\\",\\\"nav-right\\\",\\\"nav-up\\\",\\\"object-fit\\\",\\\"object-position\\\",\\\"offset\\\",\\\"offset-anchor\\\",\\\"offset-distance\\\",\\\"offset-path\\\",\\\"offset-position\\\",\\\"offset-rotate\\\",\\\"opacity\\\",\\\"order\\\",\\\"orphans\\\",\\\"outline\\\",\\\"outline-color\\\",\\\"outline-offset\\\",\\\"outline-style\\\",\\\"outline-width\\\",\\\"overflow\\\",\\\"overflow-style\\\",\\\"overflow-wrap\\\",\\\"overflow-x\\\",\\\"overflow-y\\\",\\\"padding\\\",\\\"padding-bottom\\\",\\\"padding-left\\\",\\\"padding-right\\\",\\\"padding-top\\\",\\\"page\\\",\\\"page-break-after\\\",\\\"page-break-before\\\",\\\"page-break-inside\\\",\\\"page-policy\\\",\\\"pause\\\",\\\"pause-after\\\",\\\"pause-before\\\",\\\"perspective\\\",\\\"perspective-origin\\\",\\\"pitch\\\",\\\"pitch-range\\\",\\\"place-content\\\",\\\"place-items\\\",\\\"place-self\\\",\\\"play-during\\\",\\\"position\\\",\\\"presentation-level\\\",\\\"punctuation-trim\\\",\\\"quotes\\\",\\\"region-break-after\\\",\\\"region-break-before\\\",\\\"region-break-inside\\\",\\\"region-fragment\\\",\\\"rendering-intent\\\",\\\"resize\\\",\\\"rest\\\",\\\"rest-after\\\",\\\"rest-before\\\",\\\"richness\\\",\\\"right\\\",\\\"rotate\\\",\\\"rotation\\\",\\\"rotation-point\\\",\\\"row-gap\\\",\\\"ruby-align\\\",\\\"ruby-overhang\\\",\\\"ruby-position\\\",\\\"ruby-span\\\",\\\"scale\\\",\\\"scroll-behavior\\\",\\\"scroll-margin\\\",\\\"scroll-margin-block\\\",\\\"scroll-margin-block-end\\\",\\\"scroll-margin-block-start\\\",\\\"scroll-margin-bottom\\\",\\\"scroll-margin-inline\\\",\\\"scroll-margin-inline-end\\\",\\\"scroll-margin-inline-start\\\",\\\"scroll-margin-left\\\",\\\"scroll-margin-right\\\",\\\"scroll-margin-top\\\",\\\"scroll-padding\\\",\\\"scroll-padding-block\\\",\\\"scroll-padding-block-end\\\",\\\"scroll-padding-block-start\\\",\\\"scroll-padding-bottom\\\",\\\"scroll-padding-inline\\\",\\\"scroll-padding-inline-end\\\",\\\"scroll-padding-inline-start\\\",\\\"scroll-padding-left\\\",\\\"scroll-padding-right\\\",\\\"scroll-padding-top\\\",\\\"scroll-snap-align\\\",\\\"scroll-snap-type\\\",\\\"shape-image-threshold\\\",\\\"shape-inside\\\",\\\"shape-margin\\\",\\\"shape-outside\\\",\\\"size\\\",\\\"speak\\\",\\\"speak-as\\\",\\\"speak-header\\\",\\\"speak-numeral\\\",\\\"speak-punctuation\\\",\\\"speech-rate\\\",\\\"stress\\\",\\\"string-set\\\",\\\"tab-size\\\",\\\"table-layout\\\",\\\"target\\\",\\\"target-name\\\",\\\"target-new\\\",\\\"target-position\\\",\\\"text-align\\\",\\\"text-align-last\\\",\\\"text-combine-upright\\\",\\\"text-decoration\\\",\\\"text-decoration-color\\\",\\\"text-decoration-line\\\",\\\"text-decoration-skip\\\",\\\"text-decoration-skip-ink\\\",\\\"text-decoration-style\\\",\\\"text-emphasis\\\",\\\"text-emphasis-color\\\",\\\"text-emphasis-position\\\",\\\"text-emphasis-style\\\",\\\"text-height\\\",\\\"text-indent\\\",\\\"text-justify\\\",\\\"text-orientation\\\",\\\"text-outline\\\",\\\"text-overflow\\\",\\\"text-rendering\\\",\\\"text-shadow\\\",\\\"text-size-adjust\\\",\\\"text-space-collapse\\\",\\\"text-transform\\\",\\\"text-underline-position\\\",\\\"text-wrap\\\",\\\"top\\\",\\\"touch-action\\\",\\\"transform\\\",\\\"transform-origin\\\",\\\"transform-style\\\",\\\"transition\\\",\\\"transition-delay\\\",\\\"transition-duration\\\",\\\"transition-property\\\",\\\"transition-timing-function\\\",\\\"translate\\\",\\\"unicode-bidi\\\",\\\"user-select\\\",\\\"vertical-align\\\",\\\"visibility\\\",\\\"voice-balance\\\",\\\"voice-duration\\\",\\\"voice-family\\\",\\\"voice-pitch\\\",\\\"voice-range\\\",\\\"voice-rate\\\",\\\"voice-stress\\\",\\\"voice-volume\\\",\\\"volume\\\",\\\"white-space\\\",\\\"widows\\\",\\\"width\\\",\\\"will-change\\\",\\\"word-break\\\",\\\"word-spacing\\\",\\\"word-wrap\\\",\\\"writing-mode\\\",\\\"z-index\\\",\\\"clip-path\\\",\\\"clip-rule\\\",\\\"mask\\\",\\\"enable-background\\\",\\\"filter\\\",\\\"flood-color\\\",\\\"flood-opacity\\\",\\\"lighting-color\\\",\\\"stop-color\\\",\\\"stop-opacity\\\",\\\"pointer-events\\\",\\\"color-interpolation\\\",\\\"color-interpolation-filters\\\",\\\"color-rendering\\\",\\\"fill\\\",\\\"fill-opacity\\\",\\\"fill-rule\\\",\\\"image-rendering\\\",\\\"marker\\\",\\\"marker-end\\\",\\\"marker-mid\\\",\\\"marker-start\\\",\\\"paint-order\\\",\\\"shape-rendering\\\",\\\"stroke\\\",\\\"stroke-dasharray\\\",\\\"stroke-dashoffset\\\",\\\"stroke-linecap\\\",\\\"stroke-linejoin\\\",\\\"stroke-miterlimit\\\",\\\"stroke-opacity\\\",\\\"stroke-width\\\",\\\"text-rendering\\\",\\\"baseline-shift\\\",\\\"dominant-baseline\\\",\\\"glyph-orientation-horizontal\\\",\\\"glyph-orientation-vertical\\\",\\\"text-anchor\\\",\\\"writing-mode\\\"],c=e(d),p=[\\\"border-block\\\",\\\"border-block-color\\\",\\\"border-block-end\\\",\\\"border-block-end-color\\\",\\\"border-block-end-style\\\",\\\"border-block-end-width\\\",\\\"border-block-start\\\",\\\"border-block-start-color\\\",\\\"border-block-start-style\\\",\\\"border-block-start-width\\\",\\\"border-block-style\\\",\\\"border-block-width\\\",\\\"border-inline\\\",\\\"border-inline-color\\\",\\\"border-inline-end\\\",\\\"border-inline-end-color\\\",\\\"border-inline-end-style\\\",\\\"border-inline-end-width\\\",\\\"border-inline-start\\\",\\\"border-inline-start-color\\\",\\\"border-inline-start-style\\\",\\\"border-inline-start-width\\\",\\\"border-inline-style\\\",\\\"border-inline-width\\\",\\\"margin-block\\\",\\\"margin-block-end\\\",\\\"margin-block-start\\\",\\\"margin-inline\\\",\\\"margin-inline-end\\\",\\\"margin-inline-start\\\",\\\"padding-block\\\",\\\"padding-block-end\\\",\\\"padding-block-start\\\",\\\"padding-inline\\\",\\\"padding-inline-end\\\",\\\"padding-inline-start\\\",\\\"scroll-snap-stop\\\",\\\"scrollbar-3d-light-color\\\",\\\"scrollbar-arrow-color\\\",\\\"scrollbar-base-color\\\",\\\"scrollbar-dark-shadow-color\\\",\\\"scrollbar-face-color\\\",\\\"scrollbar-highlight-color\\\",\\\"scrollbar-shadow-color\\\",\\\"scrollbar-track-color\\\",\\\"searchfield-cancel-button\\\",\\\"searchfield-decoration\\\",\\\"searchfield-results-button\\\",\\\"searchfield-results-decoration\\\",\\\"shape-inside\\\",\\\"zoom\\\"],u=e(p),m=e([\\\"font-display\\\",\\\"font-family\\\",\\\"src\\\",\\\"unicode-range\\\",\\\"font-variant\\\",\\\"font-feature-settings\\\",\\\"font-stretch\\\",\\\"font-weight\\\",\\\"font-style\\\"]),b=e([\\\"additive-symbols\\\",\\\"fallback\\\",\\\"negative\\\",\\\"pad\\\",\\\"prefix\\\",\\\"range\\\",\\\"speak-as\\\",\\\"suffix\\\",\\\"symbols\\\",\\\"system\\\"]),g=[\\\"aliceblue\\\",\\\"antiquewhite\\\",\\\"aqua\\\",\\\"aquamarine\\\",\\\"azure\\\",\\\"beige\\\",\\\"bisque\\\",\\\"black\\\",\\\"blanchedalmond\\\",\\\"blue\\\",\\\"blueviolet\\\",\\\"brown\\\",\\\"burlywood\\\",\\\"cadetblue\\\",\\\"chartreuse\\\",\\\"chocolate\\\",\\\"coral\\\",\\\"cornflowerblue\\\",\\\"cornsilk\\\",\\\"crimson\\\",\\\"cyan\\\",\\\"darkblue\\\",\\\"darkcyan\\\",\\\"darkgoldenrod\\\",\\\"darkgray\\\",\\\"darkgreen\\\",\\\"darkkhaki\\\",\\\"darkmagenta\\\",\\\"darkolivegreen\\\",\\\"darkorange\\\",\\\"darkorchid\\\",\\\"darkred\\\",\\\"darksalmon\\\",\\\"darkseagreen\\\",\\\"darkslateblue\\\",\\\"darkslategray\\\",\\\"darkturquoise\\\",\\\"darkviolet\\\",\\\"deeppink\\\",\\\"deepskyblue\\\",\\\"dimgray\\\",\\\"dodgerblue\\\",\\\"firebrick\\\",\\\"floralwhite\\\",\\\"forestgreen\\\",\\\"fuchsia\\\",\\\"gainsboro\\\",\\\"ghostwhite\\\",\\\"gold\\\",\\\"goldenrod\\\",\\\"gray\\\",\\\"grey\\\",\\\"green\\\",\\\"greenyellow\\\",\\\"honeydew\\\",\\\"hotpink\\\",\\\"indianred\\\",\\\"indigo\\\",\\\"ivory\\\",\\\"khaki\\\",\\\"lavender\\\",\\\"lavenderblush\\\",\\\"lawngreen\\\",\\\"lemonchiffon\\\",\\\"lightblue\\\",\\\"lightcoral\\\",\\\"lightcyan\\\",\\\"lightgoldenrodyellow\\\",\\\"lightgray\\\",\\\"lightgreen\\\",\\\"lightpink\\\",\\\"lightsalmon\\\",\\\"lightseagreen\\\",\\\"lightskyblue\\\",\\\"lightslategray\\\",\\\"lightsteelblue\\\",\\\"lightyellow\\\",\\\"lime\\\",\\\"limegreen\\\",\\\"linen\\\",\\\"magenta\\\",\\\"maroon\\\",\\\"mediumaquamarine\\\",\\\"mediumblue\\\",\\\"mediumorchid\\\",\\\"mediumpurple\\\",\\\"mediumseagreen\\\",\\\"mediumslateblue\\\",\\\"mediumspringgreen\\\",\\\"mediumturquoise\\\",\\\"mediumvioletred\\\",\\\"midnightblue\\\",\\\"mintcream\\\",\\\"mistyrose\\\",\\\"moccasin\\\",\\\"navajowhite\\\",\\\"navy\\\",\\\"oldlace\\\",\\\"olive\\\",\\\"olivedrab\\\",\\\"orange\\\",\\\"orangered\\\",\\\"orchid\\\",\\\"palegoldenrod\\\",\\\"palegreen\\\",\\\"paleturquoise\\\",\\\"palevioletred\\\",\\\"papayawhip\\\",\\\"peachpuff\\\",\\\"peru\\\",\\\"pink\\\",\\\"plum\\\",\\\"powderblue\\\",\\\"purple\\\",\\\"rebeccapurple\\\",\\\"red\\\",\\\"rosybrown\\\",\\\"royalblue\\\",\\\"saddlebrown\\\",\\\"salmon\\\",\\\"sandybrown\\\",\\\"seagreen\\\",\\\"seashell\\\",\\\"sienna\\\",\\\"silver\\\",\\\"skyblue\\\",\\\"slateblue\\\",\\\"slategray\\\",\\\"snow\\\",\\\"springgreen\\\",\\\"steelblue\\\",\\\"tan\\\",\\\"teal\\\",\\\"thistle\\\",\\\"tomato\\\",\\\"turquoise\\\",\\\"violet\\\",\\\"wheat\\\",\\\"white\\\",\\\"whitesmoke\\\",\\\"yellow\\\",\\\"yellowgreen\\\"],h=e(g),f=[\\\"above\\\",\\\"absolute\\\",\\\"activeborder\\\",\\\"additive\\\",\\\"activecaption\\\",\\\"afar\\\",\\\"after-white-space\\\",\\\"ahead\\\",\\\"alias\\\",\\\"all\\\",\\\"all-scroll\\\",\\\"alphabetic\\\",\\\"alternate\\\",\\\"always\\\",\\\"amharic\\\",\\\"amharic-abegede\\\",\\\"antialiased\\\",\\\"appworkspace\\\",\\\"arabic-indic\\\",\\\"armenian\\\",\\\"asterisks\\\",\\\"attr\\\",\\\"auto\\\",\\\"auto-flow\\\",\\\"avoid\\\",\\\"avoid-column\\\",\\\"avoid-page\\\",\\\"avoid-region\\\",\\\"axis-pan\\\",\\\"background\\\",\\\"backwards\\\",\\\"baseline\\\",\\\"below\\\",\\\"bidi-override\\\",\\\"binary\\\",\\\"bengali\\\",\\\"blink\\\",\\\"block\\\",\\\"block-axis\\\",\\\"bold\\\",\\\"bolder\\\",\\\"border\\\",\\\"border-box\\\",\\\"both\\\",\\\"bottom\\\",\\\"break\\\",\\\"break-all\\\",\\\"break-word\\\",\\\"bullets\\\",\\\"button\\\",\\\"button-bevel\\\",\\\"buttonface\\\",\\\"buttonhighlight\\\",\\\"buttonshadow\\\",\\\"buttontext\\\",\\\"calc\\\",\\\"cambodian\\\",\\\"capitalize\\\",\\\"caps-lock-indicator\\\",\\\"caption\\\",\\\"captiontext\\\",\\\"caret\\\",\\\"cell\\\",\\\"center\\\",\\\"checkbox\\\",\\\"circle\\\",\\\"cjk-decimal\\\",\\\"cjk-earthly-branch\\\",\\\"cjk-heavenly-stem\\\",\\\"cjk-ideographic\\\",\\\"clear\\\",\\\"clip\\\",\\\"close-quote\\\",\\\"col-resize\\\",\\\"collapse\\\",\\\"color\\\",\\\"color-burn\\\",\\\"color-dodge\\\",\\\"column\\\",\\\"column-reverse\\\",\\\"compact\\\",\\\"condensed\\\",\\\"contain\\\",\\\"content\\\",\\\"contents\\\",\\\"content-box\\\",\\\"context-menu\\\",\\\"continuous\\\",\\\"copy\\\",\\\"counter\\\",\\\"counters\\\",\\\"cover\\\",\\\"crop\\\",\\\"cross\\\",\\\"crosshair\\\",\\\"currentcolor\\\",\\\"cursive\\\",\\\"cyclic\\\",\\\"darken\\\",\\\"dashed\\\",\\\"decimal\\\",\\\"decimal-leading-zero\\\",\\\"default\\\",\\\"default-button\\\",\\\"dense\\\",\\\"destination-atop\\\",\\\"destination-in\\\",\\\"destination-out\\\",\\\"destination-over\\\",\\\"devanagari\\\",\\\"difference\\\",\\\"disc\\\",\\\"discard\\\",\\\"disclosure-closed\\\",\\\"disclosure-open\\\",\\\"document\\\",\\\"dot-dash\\\",\\\"dot-dot-dash\\\",\\\"dotted\\\",\\\"double\\\",\\\"down\\\",\\\"e-resize\\\",\\\"ease\\\",\\\"ease-in\\\",\\\"ease-in-out\\\",\\\"ease-out\\\",\\\"element\\\",\\\"ellipse\\\",\\\"ellipsis\\\",\\\"embed\\\",\\\"end\\\",\\\"ethiopic\\\",\\\"ethiopic-abegede\\\",\\\"ethiopic-abegede-am-et\\\",\\\"ethiopic-abegede-gez\\\",\\\"ethiopic-abegede-ti-er\\\",\\\"ethiopic-abegede-ti-et\\\",\\\"ethiopic-halehame-aa-er\\\",\\\"ethiopic-halehame-aa-et\\\",\\\"ethiopic-halehame-am-et\\\",\\\"ethiopic-halehame-gez\\\",\\\"ethiopic-halehame-om-et\\\",\\\"ethiopic-halehame-sid-et\\\",\\\"ethiopic-halehame-so-et\\\",\\\"ethiopic-halehame-ti-er\\\",\\\"ethiopic-halehame-ti-et\\\",\\\"ethiopic-halehame-tig\\\",\\\"ethiopic-numeric\\\",\\\"ew-resize\\\",\\\"exclusion\\\",\\\"expanded\\\",\\\"extends\\\",\\\"extra-condensed\\\",\\\"extra-expanded\\\",\\\"fantasy\\\",\\\"fast\\\",\\\"fill\\\",\\\"fill-box\\\",\\\"fixed\\\",\\\"flat\\\",\\\"flex\\\",\\\"flex-end\\\",\\\"flex-start\\\",\\\"footnotes\\\",\\\"forwards\\\",\\\"from\\\",\\\"geometricPrecision\\\",\\\"georgian\\\",\\\"graytext\\\",\\\"grid\\\",\\\"groove\\\",\\\"gujarati\\\",\\\"gurmukhi\\\",\\\"hand\\\",\\\"hangul\\\",\\\"hangul-consonant\\\",\\\"hard-light\\\",\\\"hebrew\\\",\\\"help\\\",\\\"hidden\\\",\\\"hide\\\",\\\"higher\\\",\\\"highlight\\\",\\\"highlighttext\\\",\\\"hiragana\\\",\\\"hiragana-iroha\\\",\\\"horizontal\\\",\\\"hsl\\\",\\\"hsla\\\",\\\"hue\\\",\\\"icon\\\",\\\"ignore\\\",\\\"inactiveborder\\\",\\\"inactivecaption\\\",\\\"inactivecaptiontext\\\",\\\"infinite\\\",\\\"infobackground\\\",\\\"infotext\\\",\\\"inherit\\\",\\\"initial\\\",\\\"inline\\\",\\\"inline-axis\\\",\\\"inline-block\\\",\\\"inline-flex\\\",\\\"inline-grid\\\",\\\"inline-table\\\",\\\"inset\\\",\\\"inside\\\",\\\"intrinsic\\\",\\\"invert\\\",\\\"italic\\\",\\\"japanese-formal\\\",\\\"japanese-informal\\\",\\\"justify\\\",\\\"kannada\\\",\\\"katakana\\\",\\\"katakana-iroha\\\",\\\"keep-all\\\",\\\"khmer\\\",\\\"korean-hangul-formal\\\",\\\"korean-hanja-formal\\\",\\\"korean-hanja-informal\\\",\\\"landscape\\\",\\\"lao\\\",\\\"large\\\",\\\"larger\\\",\\\"left\\\",\\\"level\\\",\\\"lighter\\\",\\\"lighten\\\",\\\"line-through\\\",\\\"linear\\\",\\\"linear-gradient\\\",\\\"lines\\\",\\\"list-item\\\",\\\"listbox\\\",\\\"listitem\\\",\\\"local\\\",\\\"logical\\\",\\\"loud\\\",\\\"lower\\\",\\\"lower-alpha\\\",\\\"lower-armenian\\\",\\\"lower-greek\\\",\\\"lower-hexadecimal\\\",\\\"lower-latin\\\",\\\"lower-norwegian\\\",\\\"lower-roman\\\",\\\"lowercase\\\",\\\"ltr\\\",\\\"luminosity\\\",\\\"malayalam\\\",\\\"manipulation\\\",\\\"match\\\",\\\"matrix\\\",\\\"matrix3d\\\",\\\"media-controls-background\\\",\\\"media-current-time-display\\\",\\\"media-fullscreen-button\\\",\\\"media-mute-button\\\",\\\"media-play-button\\\",\\\"media-return-to-realtime-button\\\",\\\"media-rewind-button\\\",\\\"media-seek-back-button\\\",\\\"media-seek-forward-button\\\",\\\"media-slider\\\",\\\"media-sliderthumb\\\",\\\"media-time-remaining-display\\\",\\\"media-volume-slider\\\",\\\"media-volume-slider-container\\\",\\\"media-volume-sliderthumb\\\",\\\"medium\\\",\\\"menu\\\",\\\"menulist\\\",\\\"menulist-button\\\",\\\"menulist-text\\\",\\\"menulist-textfield\\\",\\\"menutext\\\",\\\"message-box\\\",\\\"middle\\\",\\\"min-intrinsic\\\",\\\"mix\\\",\\\"mongolian\\\",\\\"monospace\\\",\\\"move\\\",\\\"multiple\\\",\\\"multiple_mask_images\\\",\\\"multiply\\\",\\\"myanmar\\\",\\\"n-resize\\\",\\\"narrower\\\",\\\"ne-resize\\\",\\\"nesw-resize\\\",\\\"no-close-quote\\\",\\\"no-drop\\\",\\\"no-open-quote\\\",\\\"no-repeat\\\",\\\"none\\\",\\\"normal\\\",\\\"not-allowed\\\",\\\"nowrap\\\",\\\"ns-resize\\\",\\\"numbers\\\",\\\"numeric\\\",\\\"nw-resize\\\",\\\"nwse-resize\\\",\\\"oblique\\\",\\\"octal\\\",\\\"opacity\\\",\\\"open-quote\\\",\\\"optimizeLegibility\\\",\\\"optimizeSpeed\\\",\\\"oriya\\\",\\\"oromo\\\",\\\"outset\\\",\\\"outside\\\",\\\"outside-shape\\\",\\\"overlay\\\",\\\"overline\\\",\\\"padding\\\",\\\"padding-box\\\",\\\"painted\\\",\\\"page\\\",\\\"paused\\\",\\\"persian\\\",\\\"perspective\\\",\\\"pinch-zoom\\\",\\\"plus-darker\\\",\\\"plus-lighter\\\",\\\"pointer\\\",\\\"polygon\\\",\\\"portrait\\\",\\\"pre\\\",\\\"pre-line\\\",\\\"pre-wrap\\\",\\\"preserve-3d\\\",\\\"progress\\\",\\\"push-button\\\",\\\"radial-gradient\\\",\\\"radio\\\",\\\"read-only\\\",\\\"read-write\\\",\\\"read-write-plaintext-only\\\",\\\"rectangle\\\",\\\"region\\\",\\\"relative\\\",\\\"repeat\\\",\\\"repeating-linear-gradient\\\",\\\"repeating-radial-gradient\\\",\\\"repeat-x\\\",\\\"repeat-y\\\",\\\"reset\\\",\\\"reverse\\\",\\\"rgb\\\",\\\"rgba\\\",\\\"ridge\\\",\\\"right\\\",\\\"rotate\\\",\\\"rotate3d\\\",\\\"rotateX\\\",\\\"rotateY\\\",\\\"rotateZ\\\",\\\"round\\\",\\\"row\\\",\\\"row-resize\\\",\\\"row-reverse\\\",\\\"rtl\\\",\\\"run-in\\\",\\\"running\\\",\\\"s-resize\\\",\\\"sans-serif\\\",\\\"saturation\\\",\\\"scale\\\",\\\"scale3d\\\",\\\"scaleX\\\",\\\"scaleY\\\",\\\"scaleZ\\\",\\\"screen\\\",\\\"scroll\\\",\\\"scrollbar\\\",\\\"scroll-position\\\",\\\"se-resize\\\",\\\"searchfield\\\",\\\"searchfield-cancel-button\\\",\\\"searchfield-decoration\\\",\\\"searchfield-results-button\\\",\\\"searchfield-results-decoration\\\",\\\"self-start\\\",\\\"self-end\\\",\\\"semi-condensed\\\",\\\"semi-expanded\\\",\\\"separate\\\",\\\"serif\\\",\\\"show\\\",\\\"sidama\\\",\\\"simp-chinese-formal\\\",\\\"simp-chinese-informal\\\",\\\"single\\\",\\\"skew\\\",\\\"skewX\\\",\\\"skewY\\\",\\\"skip-white-space\\\",\\\"slide\\\",\\\"slider-horizontal\\\",\\\"slider-vertical\\\",\\\"sliderthumb-horizontal\\\",\\\"sliderthumb-vertical\\\",\\\"slow\\\",\\\"small\\\",\\\"small-caps\\\",\\\"small-caption\\\",\\\"smaller\\\",\\\"soft-light\\\",\\\"solid\\\",\\\"somali\\\",\\\"source-atop\\\",\\\"source-in\\\",\\\"source-out\\\",\\\"source-over\\\",\\\"space\\\",\\\"space-around\\\",\\\"space-between\\\",\\\"space-evenly\\\",\\\"spell-out\\\",\\\"square\\\",\\\"square-button\\\",\\\"start\\\",\\\"static\\\",\\\"status-bar\\\",\\\"stretch\\\",\\\"stroke\\\",\\\"stroke-box\\\",\\\"sub\\\",\\\"subpixel-antialiased\\\",\\\"svg_masks\\\",\\\"super\\\",\\\"sw-resize\\\",\\\"symbolic\\\",\\\"symbols\\\",\\\"system-ui\\\",\\\"table\\\",\\\"table-caption\\\",\\\"table-cell\\\",\\\"table-column\\\",\\\"table-column-group\\\",\\\"table-footer-group\\\",\\\"table-header-group\\\",\\\"table-row\\\",\\\"table-row-group\\\",\\\"tamil\\\",\\\"telugu\\\",\\\"text\\\",\\\"text-bottom\\\",\\\"text-top\\\",\\\"textarea\\\",\\\"textfield\\\",\\\"thai\\\",\\\"thick\\\",\\\"thin\\\",\\\"threeddarkshadow\\\",\\\"threedface\\\",\\\"threedhighlight\\\",\\\"threedlightshadow\\\",\\\"threedshadow\\\",\\\"tibetan\\\",\\\"tigre\\\",\\\"tigrinya-er\\\",\\\"tigrinya-er-abegede\\\",\\\"tigrinya-et\\\",\\\"tigrinya-et-abegede\\\",\\\"to\\\",\\\"top\\\",\\\"trad-chinese-formal\\\",\\\"trad-chinese-informal\\\",\\\"transform\\\",\\\"translate\\\",\\\"translate3d\\\",\\\"translateX\\\",\\\"translateY\\\",\\\"translateZ\\\",\\\"transparent\\\",\\\"ultra-condensed\\\",\\\"ultra-expanded\\\",\\\"underline\\\",\\\"unidirectional-pan\\\",\\\"unset\\\",\\\"up\\\",\\\"upper-alpha\\\",\\\"upper-armenian\\\",\\\"upper-greek\\\",\\\"upper-hexadecimal\\\",\\\"upper-latin\\\",\\\"upper-norwegian\\\",\\\"upper-roman\\\",\\\"uppercase\\\",\\\"urdu\\\",\\\"url\\\",\\\"var\\\",\\\"vertical\\\",\\\"vertical-text\\\",\\\"view-box\\\",\\\"visible\\\",\\\"visibleFill\\\",\\\"visiblePainted\\\",\\\"visibleStroke\\\",\\\"visual\\\",\\\"w-resize\\\",\\\"wait\\\",\\\"wave\\\",\\\"wider\\\",\\\"window\\\",\\\"windowframe\\\",\\\"windowtext\\\",\\\"words\\\",\\\"wrap\\\",\\\"wrap-reverse\\\",\\\"x-large\\\",\\\"x-small\\\",\\\"xor\\\",\\\"xx-large\\\",\\\"xx-small\\\"],k=e(f),y=t.concat(o).concat(a).concat(l).concat(d).concat(p).concat(g).concat(f);function w(e,t){for(var r,o=!1;null!=(r=e.next());){if(o&&\\\"/\\\"==r){t.tokenize=null;break}o=\\\"*\\\"==r}return[\\\"comment\\\",\\\"comment\\\"]}T.registerHelper(\\\"hintWords\\\",\\\"css\\\",y),T.defineMIME(\\\"text/css\\\",{documentTypes:r,mediaTypes:i,mediaFeatures:n,mediaValueKeywords:s,propertyKeywords:c,nonStandardPropertyKeywords:u,fontProperties:m,counterDescriptors:b,colorKeywords:h,valueKeywords:k,tokenHooks:{\\\"/\\\":function(e,t){return!!e.eat(\\\"*\\\")&&(t.tokenize=w)(e,t)}},name:\\\"css\\\"}),T.defineMIME(\\\"text/x-scss\\\",{mediaTypes:i,mediaFeatures:n,mediaValueKeywords:s,propertyKeywords:c,nonStandardPropertyKeywords:u,colorKeywords:h,valueKeywords:k,fontProperties:m,allowNested:!0,lineComment:\\\"//\\\",tokenHooks:{\\\"/\\\":function(e,t){return e.eat(\\\"/\\\")?(e.skipToEnd(),[\\\"comment\\\",\\\"comment\\\"]):e.eat(\\\"*\\\")?(t.tokenize=w)(e,t):[\\\"operator\\\",\\\"operator\\\"]},\\\":\\\":function(e){return!!e.match(/\\\\s*\\\\{/,!1)&&[null,null]},$:function(e){return e.match(/^[\\\\w-]+/),e.match(/^\\\\s*:/,!1)?[\\\"variable-2\\\",\\\"variable-definition\\\"]:[\\\"variable-2\\\",\\\"variable\\\"]},\\\"#\\\":function(e){return!!e.eat(\\\"{\\\")&&[null,\\\"interpolation\\\"]}},name:\\\"css\\\",helperType:\\\"scss\\\"}),T.defineMIME(\\\"text/x-less\\\",{mediaTypes:i,mediaFeatures:n,mediaValueKeywords:s,propertyKeywords:c,nonStandardPropertyKeywords:u,colorKeywords:h,valueKeywords:k,fontProperties:m,allowNested:!0,lineComment:\\\"//\\\",tokenHooks:{\\\"/\\\":function(e,t){return e.eat(\\\"/\\\")?(e.skipToEnd(),[\\\"comment\\\",\\\"comment\\\"]):e.eat(\\\"*\\\")?(t.tokenize=w)(e,t):[\\\"operator\\\",\\\"operator\\\"]},\\\"@\\\":function(e){return e.eat(\\\"{\\\")?[null,\\\"interpolation\\\"]:!e.match(/^(charset|document|font-face|import|(-(moz|ms|o|webkit)-)?keyframes|media|namespace|page|supports)\\\\b/i,!1)&&(e.eatWhile(/[\\\\w\\\\\\\\\\\\-]/),e.match(/^\\\\s*:/,!1)?[\\\"variable-2\\\",\\\"variable-definition\\\"]:[\\\"variable-2\\\",\\\"variable\\\"])},\\\"&\\\":function(){return[\\\"atom\\\",\\\"atom\\\"]}},name:\\\"css\\\",helperType:\\\"less\\\"}),T.defineMIME(\\\"text/x-gss\\\",{documentTypes:r,mediaTypes:i,mediaFeatures:n,propertyKeywords:c,nonStandardPropertyKeywords:u,fontProperties:m,counterDescriptors:b,colorKeywords:h,valueKeywords:k,supportsAtComponent:!0,tokenHooks:{\\\"/\\\":function(e,t){return!!e.eat(\\\"*\\\")&&(t.tokenize=w)(e,t)}},name:\\\"css\\\",helperType:\\\"gss\\\"})});\\n\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/tiddlywiki/codemirror/mode/css/css.js\",\"module-type\":\"codemirror\"},\"$:/plugins/tiddlywiki/codemirror-mode-css/readme\":{\"title\":\"$:/plugins/tiddlywiki/codemirror-mode-css/readme\",\"text\":\"This plugin adds Syntax Highlighting for CSS tiddlers (text/css) to the [[CodeMirror|http://codemirror.net]] text editor. It needs the latest [[CodeMirror plugin|$:/plugins/tiddlywiki/codemirror]] to be installed\\n\\n\\n\"}}}"},
{"title":"$:/plugins/tiddlywiki/codemirror-mode-javascript","name":"CodeMirror Mode JavaScript","description":"JavaScript highlighting mode for CodeMirror","parent-plugin":"$:/plugins/tiddlywiki/codemirror","list":"readme","version":"5.2.3","plugin-type":"plugin","dependents":"","type":"application/json","text":"{\"tiddlers\":{\"$:/plugins/tiddlywiki/codemirror/mode/javascript/javascript.js\":{\"text\":\"// CodeMirror, copyright (c) by Marijn Haverbeke and others\\n// Distributed under an MIT license: https://codemirror.net/LICENSE\\n!function(e){\\\"object\\\"==typeof exports&&\\\"object\\\"==typeof module?e(require(\\\"../../lib/codemirror\\\")):\\\"function\\\"==typeof define&&define.amd?define([\\\"../../lib/codemirror\\\"],e):e(CodeMirror)}(function(tt){\\\"use strict\\\";tt.defineMode(\\\"javascript\\\",function(e,l){var t,r,n,a,i,o,d=e.indentUnit,p=l.statementIndent,c=l.jsonld,s=l.json||c,u=l.typescript,f=l.wordCharacters||/[\\\\w$\\\\xa1-\\\\uffff]/,m=(t=v(\\\"keyword a\\\"),r=v(\\\"keyword b\\\"),n=v(\\\"keyword c\\\"),a=v(\\\"keyword d\\\"),i=v(\\\"operator\\\"),{if:v(\\\"if\\\"),while:t,with:t,else:r,do:r,try:r,finally:r,return:a,break:a,continue:a,new:v(\\\"new\\\"),delete:n,void:n,throw:n,debugger:v(\\\"debugger\\\"),var:v(\\\"var\\\"),const:v(\\\"var\\\"),let:v(\\\"var\\\"),function:v(\\\"function\\\"),catch:v(\\\"catch\\\"),for:v(\\\"for\\\"),switch:v(\\\"switch\\\"),case:v(\\\"case\\\"),default:v(\\\"default\\\"),in:i,typeof:i,instanceof:i,true:o={type:\\\"atom\\\",style:\\\"atom\\\"},false:o,null:o,undefined:o,NaN:o,Infinity:o,this:v(\\\"this\\\"),class:v(\\\"class\\\"),super:v(\\\"atom\\\"),yield:n,export:v(\\\"export\\\"),import:v(\\\"import\\\"),extends:n,await:n});function v(e){return{type:e,style:\\\"keyword\\\"}}var k,y,w=/[+\\\\-*&%=\u003C>!?|~^@]/,b=/^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)\\\"/;function x(e,t,r){return k=e,y=r,t}function h(e,t){var a,r=e.next();if('\\\"'==r||\\\"'\\\"==r)return t.tokenize=(a=r,function(e,t){var r,n=!1;if(c&&\\\"@\\\"==e.peek()&&e.match(b))return t.tokenize=h,x(\\\"jsonld-keyword\\\",\\\"meta\\\");for(;null!=(r=e.next())&&(r!=a||n);)n=!n&&\\\"\\\\\\\\\\\"==r;return n||(t.tokenize=h),x(\\\"string\\\",\\\"string\\\")}),t.tokenize(e,t);if(\\\".\\\"==r&&e.match(/^\\\\d[\\\\d_]*(?:[eE][+\\\\-]?[\\\\d_]+)?/))return x(\\\"number\\\",\\\"number\\\");if(\\\".\\\"==r&&e.match(\\\"..\\\"))return x(\\\"spread\\\",\\\"meta\\\");if(/[\\\\[\\\\]{}\\\\(\\\\),;\\\\:\\\\.]/.test(r))return x(r);if(\\\"=\\\"==r&&e.eat(\\\">\\\"))return x(\\\"=>\\\",\\\"operator\\\");if(\\\"0\\\"==r&&e.match(/^(?:x[\\\\dA-Fa-f_]+|o[0-7_]+|b[01_]+)n?/))return x(\\\"number\\\",\\\"number\\\");if(/\\\\d/.test(r))return e.match(/^[\\\\d_]*(?:n|(?:\\\\.[\\\\d_]*)?(?:[eE][+\\\\-]?[\\\\d_]+)?)?/),x(\\\"number\\\",\\\"number\\\");if(\\\"/\\\"==r)return e.eat(\\\"*\\\")?(t.tokenize=g)(e,t):e.eat(\\\"/\\\")?(e.skipToEnd(),x(\\\"comment\\\",\\\"comment\\\")):et(e,t,1)?(function(e){for(var t,r=!1,n=!1;null!=(t=e.next());){if(!r){if(\\\"/\\\"==t&&!n)return;\\\"[\\\"==t?n=!0:n&&\\\"]\\\"==t&&(n=!1)}r=!r&&\\\"\\\\\\\\\\\"==t}}(e),e.match(/^\\\\b(([gimyus])(?![gimyus]*\\\\2))+\\\\b/),x(\\\"regexp\\\",\\\"string-2\\\")):(e.eat(\\\"=\\\"),x(\\\"operator\\\",\\\"operator\\\",e.current()));if(\\\"`\\\"==r)return(t.tokenize=j)(e,t);if(\\\"#\\\"==r&&\\\"!\\\"==e.peek())return e.skipToEnd(),x(\\\"meta\\\",\\\"meta\\\");if(\\\"#\\\"==r&&e.eatWhile(f))return x(\\\"variable\\\",\\\"property\\\");if(\\\"\u003C\\\"==r&&e.match(\\\"!--\\\")||\\\"-\\\"==r&&e.match(\\\"->\\\")&&!/\\\\S/.test(e.string.slice(0,e.start)))return e.skipToEnd(),x(\\\"comment\\\",\\\"comment\\\");if(w.test(r))return\\\">\\\"==r&&t.lexical&&\\\">\\\"==t.lexical.type||(e.eat(\\\"=\\\")?\\\"!\\\"!=r&&\\\"=\\\"!=r||e.eat(\\\"=\\\"):/[\u003C>*+\\\\-|&?]/.test(r)&&(e.eat(r),\\\">\\\"==r&&e.eat(r))),\\\"?\\\"==r&&e.eat(\\\".\\\")?x(\\\".\\\"):x(\\\"operator\\\",\\\"operator\\\",e.current());if(f.test(r)){e.eatWhile(f);var n=e.current();if(\\\".\\\"!=t.lastType){if(m.propertyIsEnumerable(n)){var i=m[n];return x(i.type,i.style,n)}if(\\\"async\\\"==n&&e.match(/^(\\\\s|\\\\/\\\\*([^*]|\\\\*(?!\\\\/))*?\\\\*\\\\/)*[\\\\[\\\\(\\\\w]/,!1))return x(\\\"async\\\",\\\"keyword\\\",n)}return x(\\\"variable\\\",\\\"variable\\\",n)}}function g(e,t){for(var r,n=!1;r=e.next();){if(\\\"/\\\"==r&&n){t.tokenize=h;break}n=\\\"*\\\"==r}return x(\\\"comment\\\",\\\"comment\\\")}function j(e,t){for(var r,n=!1;null!=(r=e.next());){if(!n&&(\\\"`\\\"==r||\\\"$\\\"==r&&e.eat(\\\"{\\\"))){t.tokenize=h;break}n=!n&&\\\"\\\\\\\\\\\"==r}return x(\\\"quasi\\\",\\\"string-2\\\",e.current())}var M=\\\"([{}])\\\";function A(e,t){t.fatArrowAt&&(t.fatArrowAt=null);var r,n=e.string.indexOf(\\\"=>\\\",e.start);if(!(n\u003C0)){!u||(r=/:\\\\s*(?:\\\\w+(?:\u003C[^>]*>|\\\\[\\\\])?|\\\\{[^}]*\\\\})\\\\s*$/.exec(e.string.slice(e.start,n)))&&(n=r.index);for(var a=0,i=!1,o=n-1;0\u003C=o;--o){var c=e.string.charAt(o),s=M.indexOf(c);if(0\u003C=s&&s\u003C3){if(!a){++o;break}if(0==--a){\\\"(\\\"==c&&(i=!0);break}}else if(3\u003C=s&&s\u003C6)++a;else if(f.test(c))i=!0;else if(/[\\\"'\\\\/`]/.test(c))for(;;--o){if(0==o)return;if(e.string.charAt(o-1)==c&&\\\"\\\\\\\\\\\"!=e.string.charAt(o-2)){o--;break}}else if(i&&!a){++o;break}}i&&!a&&(t.fatArrowAt=o)}}var V={atom:!0,number:!0,variable:!0,string:!0,regexp:!0,this:!0,\\\"jsonld-keyword\\\":!0};function E(e,t,r,n,a,i){this.indented=e,this.column=t,this.type=r,this.prev=a,this.info=i,null!=n&&(this.align=n)}function z(e,t,r,n,a){var i=e.cc;for(I.state=e,I.stream=a,I.marked=null,I.cc=i,I.style=t,e.lexical.hasOwnProperty(\\\"align\\\")||(e.lexical.align=!0);;){if((i.length?i.pop():s?J:D)(r,n)){for(;i.length&&i[i.length-1].lex;)i.pop()();return I.marked?I.marked:\\\"variable\\\"==r&&function(e,t){for(var r=e.localVars;r;r=r.next)if(r.name==t)return 1;for(var n=e.context;n;n=n.prev)for(r=n.vars;r;r=r.next)if(r.name==t)return 1}(e,n)?\\\"variable-2\\\":t}}}var I={state:null,column:null,marked:null,cc:null};function T(){for(var e=arguments.length-1;0\u003C=e;e--)I.cc.push(arguments[e])}function $(){return T.apply(null,arguments),!0}function C(e,t){for(var r=t;r;r=r.next)if(r.name==e)return 1}function _(e){var t=I.state;if(I.marked=\\\"def\\\",t.context)if(\\\"var\\\"==t.lexical.info&&t.context&&t.context.block){var r=function e(t,r){{if(r){if(r.block){var n=e(t,r.prev);return n?n==r.prev?r:new q(n,r.vars,!0):null}return C(t,r.vars)?r:new q(r.prev,new S(t,r.vars),!1)}return null}}(e,t.context);if(null!=r)return void(t.context=r)}else if(!C(e,t.localVars))return void(t.localVars=new S(e,t.localVars));l.globalVars&&!C(e,t.globalVars)&&(t.globalVars=new S(e,t.globalVars))}function O(e){return\\\"public\\\"==e||\\\"private\\\"==e||\\\"protected\\\"==e||\\\"abstract\\\"==e||\\\"readonly\\\"==e}function q(e,t,r){this.prev=e,this.vars=t,this.block=r}function S(e,t){this.name=e,this.next=t}var P=new S(\\\"this\\\",new S(\\\"arguments\\\",null));function N(){I.state.context=new q(I.state.context,I.state.localVars,!1),I.state.localVars=P}function U(){I.state.context=new q(I.state.context,I.state.localVars,!0),I.state.localVars=null}function W(){I.state.localVars=I.state.context.vars,I.state.context=I.state.context.prev}function B(n,a){function e(){var e=I.state,t=e.indented;if(\\\"stat\\\"==e.lexical.type)t=e.lexical.indented;else for(var r=e.lexical;r&&\\\")\\\"==r.type&&r.align;r=r.prev)t=r.indented;e.lexical=new E(t,I.stream.column(),n,null,e.lexical,a)}return e.lex=!0,e}function F(){var e=I.state;e.lexical.prev&&(\\\")\\\"==e.lexical.type&&(e.indented=e.lexical.indented),e.lexical=e.lexical.prev)}function H(r){return function e(t){return t==r?$():\\\";\\\"==r||\\\"}\\\"==t||\\\")\\\"==t||\\\"]\\\"==t?T():$(e)}}function D(e,t){return\\\"var\\\"==e?$(B(\\\"vardef\\\",t),Ae,H(\\\";\\\"),F):\\\"keyword a\\\"==e?$(B(\\\"form\\\"),L,D,F):\\\"keyword b\\\"==e?$(B(\\\"form\\\"),D,F):\\\"keyword d\\\"==e?I.stream.match(/^\\\\s*$/,!1)?$():$(B(\\\"stat\\\"),R,H(\\\";\\\"),F):\\\"debugger\\\"==e?$(H(\\\";\\\")):\\\"{\\\"==e?$(B(\\\"}\\\"),U,de,F,W):\\\";\\\"==e?$():\\\"if\\\"==e?(\\\"else\\\"==I.state.lexical.info&&I.state.cc[I.state.cc.length-1]==F&&I.state.cc.pop()(),$(B(\\\"form\\\"),L,D,F,$e)):\\\"function\\\"==e?$(qe):\\\"for\\\"==e?$(B(\\\"form\\\"),Ce,D,F):\\\"class\\\"==e||u&&\\\"interface\\\"==t?(I.marked=\\\"keyword\\\",$(B(\\\"form\\\",\\\"class\\\"==e?e:t),We,F)):\\\"variable\\\"==e?u&&\\\"declare\\\"==t?(I.marked=\\\"keyword\\\",$(D)):u&&(\\\"module\\\"==t||\\\"enum\\\"==t||\\\"type\\\"==t)&&I.stream.match(/^\\\\s*\\\\w/,!1)?(I.marked=\\\"keyword\\\",\\\"enum\\\"==t?$(Ye):\\\"type\\\"==t?$(Pe,H(\\\"operator\\\"),ye,H(\\\";\\\")):$(B(\\\"form\\\"),Ve,H(\\\"{\\\"),B(\\\"}\\\"),de,F,F)):u&&\\\"namespace\\\"==t?(I.marked=\\\"keyword\\\",$(B(\\\"form\\\"),J,D,F)):u&&\\\"abstract\\\"==t?(I.marked=\\\"keyword\\\",$(D)):$(B(\\\"stat\\\"),ie):\\\"switch\\\"==e?$(B(\\\"form\\\"),L,H(\\\"{\\\"),B(\\\"}\\\",\\\"switch\\\"),U,de,F,F,W):\\\"case\\\"==e?$(J,H(\\\":\\\")):\\\"default\\\"==e?$(H(\\\":\\\")):\\\"catch\\\"==e?$(B(\\\"form\\\"),N,G,D,F,W):\\\"export\\\"==e?$(B(\\\"stat\\\"),De,F):\\\"import\\\"==e?$(B(\\\"stat\\\"),Je,F):\\\"async\\\"==e?$(D):\\\"@\\\"==t?$(J,D):T(B(\\\"stat\\\"),J,H(\\\";\\\"),F)}function G(e){if(\\\"(\\\"==e)return $(Ne,H(\\\")\\\"))}function J(e,t){return Q(e,t,!1)}function K(e,t){return Q(e,t,!0)}function L(e){return\\\"(\\\"!=e?T():$(B(\\\")\\\"),R,H(\\\")\\\"),F)}function Q(e,t,r){if(I.state.fatArrowAt==I.stream.start){var n=r?re:te;if(\\\"(\\\"==e)return $(N,B(\\\")\\\"),fe(Ne,\\\")\\\"),F,H(\\\"=>\\\"),n,W);if(\\\"variable\\\"==e)return T(N,Ve,H(\\\"=>\\\"),n,W)}var a,i=r?Y:X;return V.hasOwnProperty(e)?$(i):\\\"function\\\"==e?$(qe,i):\\\"class\\\"==e||u&&\\\"interface\\\"==t?(I.marked=\\\"keyword\\\",$(B(\\\"form\\\"),Ue,F)):\\\"keyword c\\\"==e||\\\"async\\\"==e?$(r?K:J):\\\"(\\\"==e?$(B(\\\")\\\"),R,H(\\\")\\\"),F,i):\\\"operator\\\"==e||\\\"spread\\\"==e?$(r?K:J):\\\"[\\\"==e?$(B(\\\"]\\\"),Xe,F,i):\\\"{\\\"==e?le(ce,\\\"}\\\",null,i):\\\"quasi\\\"==e?T(Z,i):\\\"new\\\"==e?$((a=r,function(e){return\\\".\\\"==e?$(a?ae:ne):\\\"variable\\\"==e&&u?$(ge,a?Y:X):T(a?K:J)})):\\\"import\\\"==e?$(J):$()}function R(e){return e.match(/[;\\\\}\\\\)\\\\],]/)?T():T(J)}function X(e,t){return\\\",\\\"==e?$(R):Y(e,t,!1)}function Y(e,t,r){var n=0==r?X:Y,a=0==r?J:K;return\\\"=>\\\"==e?$(N,r?re:te,W):\\\"operator\\\"==e?/\\\\+\\\\+|--/.test(t)||u&&\\\"!\\\"==t?$(n):u&&\\\"\u003C\\\"==t&&I.stream.match(/^([^\u003C>]|\u003C[^\u003C>]*>)*>\\\\s*\\\\(/,!1)?$(B(\\\">\\\"),fe(ye,\\\">\\\"),F,n):\\\"?\\\"==t?$(J,H(\\\":\\\"),a):$(a):\\\"quasi\\\"==e?T(Z,n):\\\";\\\"!=e?\\\"(\\\"==e?le(K,\\\")\\\",\\\"call\\\",n):\\\".\\\"==e?$(oe,n):\\\"[\\\"==e?$(B(\\\"]\\\"),R,H(\\\"]\\\"),F,n):u&&\\\"as\\\"==t?(I.marked=\\\"keyword\\\",$(ye,n)):\\\"regexp\\\"==e?(I.state.lastType=I.marked=\\\"operator\\\",I.stream.backUp(I.stream.pos-I.stream.start-1),$(a)):void 0:void 0}function Z(e,t){return\\\"quasi\\\"!=e?T():\\\"${\\\"!=t.slice(t.length-2)?$(Z):$(J,ee)}function ee(e){if(\\\"}\\\"==e)return I.marked=\\\"string-2\\\",I.state.tokenize=j,$(Z)}function te(e){return A(I.stream,I.state),T(\\\"{\\\"==e?D:J)}function re(e){return A(I.stream,I.state),T(\\\"{\\\"==e?D:K)}function ne(e,t){if(\\\"target\\\"==t)return I.marked=\\\"keyword\\\",$(X)}function ae(e,t){if(\\\"target\\\"==t)return I.marked=\\\"keyword\\\",$(Y)}function ie(e){return\\\":\\\"==e?$(F,D):T(X,H(\\\";\\\"),F)}function oe(e){if(\\\"variable\\\"==e)return I.marked=\\\"property\\\",$()}function ce(e,t){if(\\\"async\\\"==e)return I.marked=\\\"property\\\",$(ce);if(\\\"variable\\\"==e||\\\"keyword\\\"==I.style){return(I.marked=\\\"property\\\",\\\"get\\\"==t||\\\"set\\\"==t)?$(se):(u&&I.state.fatArrowAt==I.stream.start&&(r=I.stream.match(/^\\\\s*:\\\\s*/,!1))&&(I.state.fatArrowAt=I.stream.pos+r[0].length),$(ue));var r}else{if(\\\"number\\\"==e||\\\"string\\\"==e)return I.marked=c?\\\"property\\\":I.style+\\\" property\\\",$(ue);if(\\\"jsonld-keyword\\\"==e)return $(ue);if(u&&O(t))return I.marked=\\\"keyword\\\",$(ce);if(\\\"[\\\"==e)return $(J,pe,H(\\\"]\\\"),ue);if(\\\"spread\\\"==e)return $(K,ue);if(\\\"*\\\"==t)return I.marked=\\\"keyword\\\",$(ce);if(\\\":\\\"==e)return T(ue)}}function se(e){return\\\"variable\\\"!=e?T(ue):(I.marked=\\\"property\\\",$(qe))}function ue(e){return\\\":\\\"==e?$(K):\\\"(\\\"==e?T(qe):void 0}function fe(n,a,i){function o(e,t){if(i?-1\u003Ci.indexOf(e):\\\",\\\"==e){var r=I.state.lexical;return\\\"call\\\"==r.info&&(r.pos=(r.pos||0)+1),$(function(e,t){return e==a||t==a?T():T(n)},o)}return e==a||t==a?$():i&&-1\u003Ci.indexOf(\\\";\\\")?T(n):$(H(a))}return function(e,t){return e==a||t==a?$():T(n,o)}}function le(e,t,r){for(var n=3;n\u003Carguments.length;n++)I.cc.push(arguments[n]);return $(B(t,r),fe(e,t),F)}function de(e){return\\\"}\\\"==e?$():T(D,de)}function pe(e,t){if(u){if(\\\":\\\"==e)return $(ye);if(\\\"?\\\"==t)return $(pe)}}function me(e,t){if(u&&(\\\":\\\"==e||\\\"in\\\"==t))return $(ye)}function ve(e){if(u&&\\\":\\\"==e)return I.stream.match(/^\\\\s*\\\\w+\\\\s+is\\\\b/,!1)?$(J,ke,ye):$(ye)}function ke(e,t){if(\\\"is\\\"==t)return I.marked=\\\"keyword\\\",$()}function ye(e,t){return\\\"keyof\\\"==t||\\\"typeof\\\"==t||\\\"infer\\\"==t?(I.marked=\\\"keyword\\\",$(\\\"typeof\\\"==t?K:ye)):\\\"variable\\\"==e||\\\"void\\\"==t?(I.marked=\\\"type\\\",$(he)):\\\"|\\\"==t||\\\"&\\\"==t?$(ye):\\\"string\\\"==e||\\\"number\\\"==e||\\\"atom\\\"==e?$(he):\\\"[\\\"==e?$(B(\\\"]\\\"),fe(ye,\\\"]\\\",\\\",\\\"),F,he):\\\"{\\\"==e?$(B(\\\"}\\\"),fe(be,\\\"}\\\",\\\",;\\\"),F,he):\\\"(\\\"==e?$(fe(xe,\\\")\\\"),we,he):\\\"\u003C\\\"==e?$(fe(ye,\\\">\\\"),ye):void 0}function we(e){if(\\\"=>\\\"==e)return $(ye)}function be(e,t){return\\\"variable\\\"==e||\\\"keyword\\\"==I.style?(I.marked=\\\"property\\\",$(be)):\\\"?\\\"==t||\\\"number\\\"==e||\\\"string\\\"==e?$(be):\\\":\\\"==e?$(ye):\\\"[\\\"==e?$(H(\\\"variable\\\"),me,H(\\\"]\\\"),be):\\\"(\\\"==e?T(Se,be):void 0}function xe(e,t){return\\\"variable\\\"==e&&I.stream.match(/^\\\\s*[?:]/,!1)||\\\"?\\\"==t?$(xe):\\\":\\\"==e?$(ye):\\\"spread\\\"==e?$(xe):T(ye)}function he(e,t){return\\\"\u003C\\\"==t?$(B(\\\">\\\"),fe(ye,\\\">\\\"),F,he):\\\"|\\\"==t||\\\".\\\"==e||\\\"&\\\"==t?$(ye):\\\"[\\\"==e?$(ye,H(\\\"]\\\"),he):\\\"extends\\\"==t||\\\"implements\\\"==t?(I.marked=\\\"keyword\\\",$(ye)):\\\"?\\\"==t?$(ye,H(\\\":\\\"),ye):void 0}function ge(e,t){if(\\\"\u003C\\\"==t)return $(B(\\\">\\\"),fe(ye,\\\">\\\"),F,he)}function je(){return T(ye,Me)}function Me(e,t){if(\\\"=\\\"==t)return $(ye)}function Ae(e,t){return\\\"enum\\\"==t?(I.marked=\\\"keyword\\\",$(Ye)):T(Ve,pe,Ie,Te)}function Ve(e,t){return u&&O(t)?(I.marked=\\\"keyword\\\",$(Ve)):\\\"variable\\\"==e?(_(t),$()):\\\"spread\\\"==e?$(Ve):\\\"[\\\"==e?le(ze,\\\"]\\\"):\\\"{\\\"==e?le(Ee,\\\"}\\\"):void 0}function Ee(e,t){return\\\"variable\\\"!=e||I.stream.match(/^\\\\s*:/,!1)?(\\\"variable\\\"==e&&(I.marked=\\\"property\\\"),\\\"spread\\\"==e?$(Ve):\\\"}\\\"==e?T():\\\"[\\\"==e?$(J,H(\\\"]\\\"),H(\\\":\\\"),Ee):$(H(\\\":\\\"),Ve,Ie)):(_(t),$(Ie))}function ze(){return T(Ve,Ie)}function Ie(e,t){if(\\\"=\\\"==t)return $(K)}function Te(e){if(\\\",\\\"==e)return $(Ae)}function $e(e,t){if(\\\"keyword b\\\"==e&&\\\"else\\\"==t)return $(B(\\\"form\\\",\\\"else\\\"),D,F)}function Ce(e,t){return\\\"await\\\"==t?$(Ce):\\\"(\\\"==e?$(B(\\\")\\\"),_e,F):void 0}function _e(e){return\\\"var\\\"==e?$(Ae,Oe):(\\\"variable\\\"==e?$:T)(Oe)}function Oe(e,t){return\\\")\\\"==e?$():\\\";\\\"==e?$(Oe):\\\"in\\\"==t||\\\"of\\\"==t?(I.marked=\\\"keyword\\\",$(J,Oe)):T(J,Oe)}function qe(e,t){return\\\"*\\\"==t?(I.marked=\\\"keyword\\\",$(qe)):\\\"variable\\\"==e?(_(t),$(qe)):\\\"(\\\"==e?$(N,B(\\\")\\\"),fe(Ne,\\\")\\\"),F,ve,D,W):u&&\\\"\u003C\\\"==t?$(B(\\\">\\\"),fe(je,\\\">\\\"),F,qe):void 0}function Se(e,t){return\\\"*\\\"==t?(I.marked=\\\"keyword\\\",$(Se)):\\\"variable\\\"==e?(_(t),$(Se)):\\\"(\\\"==e?$(N,B(\\\")\\\"),fe(Ne,\\\")\\\"),F,ve,W):u&&\\\"\u003C\\\"==t?$(B(\\\">\\\"),fe(je,\\\">\\\"),F,Se):void 0}function Pe(e,t){return\\\"keyword\\\"==e||\\\"variable\\\"==e?(I.marked=\\\"type\\\",$(Pe)):\\\"\u003C\\\"==t?$(B(\\\">\\\"),fe(je,\\\">\\\"),F):void 0}function Ne(e,t){return\\\"@\\\"==t&&$(J,Ne),\\\"spread\\\"==e?$(Ne):u&&O(t)?(I.marked=\\\"keyword\\\",$(Ne)):u&&\\\"this\\\"==e?$(pe,Ie):T(Ve,pe,Ie)}function Ue(e,t){return(\\\"variable\\\"==e?We:Be)(e,t)}function We(e,t){if(\\\"variable\\\"==e)return _(t),$(Be)}function Be(e,t){return\\\"\u003C\\\"==t?$(B(\\\">\\\"),fe(je,\\\">\\\"),F,Be):\\\"extends\\\"==t||\\\"implements\\\"==t||u&&\\\",\\\"==e?(\\\"implements\\\"==t&&(I.marked=\\\"keyword\\\"),$(u?ye:J,Be)):\\\"{\\\"==e?$(B(\\\"}\\\"),Fe,F):void 0}function Fe(e,t){return\\\"async\\\"==e||\\\"variable\\\"==e&&(\\\"static\\\"==t||\\\"get\\\"==t||\\\"set\\\"==t||u&&O(t))&&I.stream.match(/^\\\\s+[\\\\w$\\\\xa1-\\\\uffff]/,!1)?(I.marked=\\\"keyword\\\",$(Fe)):\\\"variable\\\"==e||\\\"keyword\\\"==I.style?(I.marked=\\\"property\\\",$(He,Fe)):\\\"number\\\"==e||\\\"string\\\"==e?$(He,Fe):\\\"[\\\"==e?$(J,pe,H(\\\"]\\\"),He,Fe):\\\"*\\\"==t?(I.marked=\\\"keyword\\\",$(Fe)):u&&\\\"(\\\"==e?T(Se,Fe):\\\";\\\"==e||\\\",\\\"==e?$(Fe):\\\"}\\\"==e?$():\\\"@\\\"==t?$(J,Fe):void 0}function He(e,t){if(\\\"?\\\"==t)return $(He);if(\\\":\\\"==e)return $(ye,Ie);if(\\\"=\\\"==t)return $(K);var r=I.state.lexical.prev;return T(r&&\\\"interface\\\"==r.info?Se:qe)}function De(e,t){return\\\"*\\\"==t?(I.marked=\\\"keyword\\\",$(Re,H(\\\";\\\"))):\\\"default\\\"==t?(I.marked=\\\"keyword\\\",$(J,H(\\\";\\\"))):\\\"{\\\"==e?$(fe(Ge,\\\"}\\\"),Re,H(\\\";\\\")):T(D)}function Ge(e,t){return\\\"as\\\"==t?(I.marked=\\\"keyword\\\",$(H(\\\"variable\\\"))):\\\"variable\\\"==e?T(K,Ge):void 0}function Je(e){return\\\"string\\\"==e?$():\\\"(\\\"==e?T(J):T(Ke,Le,Re)}function Ke(e,t){return\\\"{\\\"==e?le(Ke,\\\"}\\\"):(\\\"variable\\\"==e&&_(t),\\\"*\\\"==t&&(I.marked=\\\"keyword\\\"),$(Qe))}function Le(e){if(\\\",\\\"==e)return $(Ke,Le)}function Qe(e,t){if(\\\"as\\\"==t)return I.marked=\\\"keyword\\\",$(Ke)}function Re(e,t){if(\\\"from\\\"==t)return I.marked=\\\"keyword\\\",$(J)}function Xe(e){return\\\"]\\\"==e?$():T(fe(K,\\\"]\\\"))}function Ye(){return T(B(\\\"form\\\"),Ve,H(\\\"{\\\"),B(\\\"}\\\"),fe(Ze,\\\"}\\\"),F,F)}function Ze(){return T(Ve,Ie)}function et(e,t,r){return t.tokenize==h&&/^(?:operator|sof|keyword [bcd]|case|new|export|default|spread|[\\\\[{}\\\\(,;:]|=>)$/.test(t.lastType)||\\\"quasi\\\"==t.lastType&&/\\\\{\\\\s*$/.test(e.string.slice(0,e.pos-(r||0)))}return F.lex=W.lex=!0,{startState:function(e){var t={tokenize:h,lastType:\\\"sof\\\",cc:[],lexical:new E((e||0)-d,0,\\\"block\\\",!1),localVars:l.localVars,context:l.localVars&&new q(null,null,!1),indented:e||0};return l.globalVars&&\\\"object\\\"==typeof l.globalVars&&(t.globalVars=l.globalVars),t},token:function(e,t){if(e.sol()&&(t.lexical.hasOwnProperty(\\\"align\\\")||(t.lexical.align=!1),t.indented=e.indentation(),A(e,t)),t.tokenize!=g&&e.eatSpace())return null;var r=t.tokenize(e,t);return\\\"comment\\\"==k?r:(t.lastType=\\\"operator\\\"!=k||\\\"++\\\"!=y&&\\\"--\\\"!=y?k:\\\"incdec\\\",z(t,r,k,y,e))},indent:function(e,t){if(e.tokenize==g||e.tokenize==j)return tt.Pass;if(e.tokenize!=h)return 0;var r,n=t&&t.charAt(0),a=e.lexical;if(!/^\\\\s*else\\\\b/.test(t))for(var i=e.cc.length-1;0\u003C=i;--i){var o=e.cc[i];if(o==F)a=a.prev;else if(o!=$e)break}for(;(\\\"stat\\\"==a.type||\\\"form\\\"==a.type)&&(\\\"}\\\"==n||(r=e.cc[e.cc.length-1])&&(r==X||r==Y)&&!/^[,\\\\.=+\\\\-*:?[\\\\(]/.test(t));)a=a.prev;p&&\\\")\\\"==a.type&&\\\"stat\\\"==a.prev.type&&(a=a.prev);var c,s,u=a.type,f=n==u;return\\\"vardef\\\"==u?a.indented+(\\\"operator\\\"==e.lastType||\\\",\\\"==e.lastType?a.info.length+1:0):\\\"form\\\"==u&&\\\"{\\\"==n?a.indented:\\\"form\\\"==u?a.indented+d:\\\"stat\\\"==u?a.indented+(s=t,\\\"operator\\\"==(c=e).lastType||\\\",\\\"==c.lastType||w.test(s.charAt(0))||/[,.]/.test(s.charAt(0))?p||d:0):\\\"switch\\\"!=a.info||f||0==l.doubleIndentSwitch?a.align?a.column+(f?0:1):a.indented+(f?0:d):a.indented+(/^(?:case|default)\\\\b/.test(t)?d:2*d)},electricInput:/^\\\\s*(?:case .*?:|default:|\\\\{|\\\\})$/,blockCommentStart:s?null:\\\"/*\\\",blockCommentEnd:s?null:\\\"*/\\\",blockCommentContinue:s?null:\\\" * \\\",lineComment:s?null:\\\"//\\\",fold:\\\"brace\\\",closeBrackets:\\\"()[]{}''\\\\\\\"\\\\\\\"``\\\",helperType:s?\\\"json\\\":\\\"javascript\\\",jsonldMode:c,jsonMode:s,expressionAllowed:et,skipExpression:function(e){var t=e.cc[e.cc.length-1];t!=J&&t!=K||e.cc.pop()}}}),tt.registerHelper(\\\"wordChars\\\",\\\"javascript\\\",/[\\\\w$]/),tt.defineMIME(\\\"text/javascript\\\",\\\"javascript\\\"),tt.defineMIME(\\\"text/ecmascript\\\",\\\"javascript\\\"),tt.defineMIME(\\\"application/javascript\\\",\\\"javascript\\\"),tt.defineMIME(\\\"application/x-javascript\\\",\\\"javascript\\\"),tt.defineMIME(\\\"application/ecmascript\\\",\\\"javascript\\\"),tt.defineMIME(\\\"application/json\\\",{name:\\\"javascript\\\",json:!0}),tt.defineMIME(\\\"application/x-json\\\",{name:\\\"javascript\\\",json:!0}),tt.defineMIME(\\\"application/ld+json\\\",{name:\\\"javascript\\\",jsonld:!0}),tt.defineMIME(\\\"text/typescript\\\",{name:\\\"javascript\\\",typescript:!0}),tt.defineMIME(\\\"application/typescript\\\",{name:\\\"javascript\\\",typescript:!0})});\\n\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/tiddlywiki/codemirror/mode/javascript/javascript.js\",\"module-type\":\"codemirror\"},\"$:/plugins/tiddlywiki/codemirror-mode-javascript/readme\":{\"title\":\"$:/plugins/tiddlywiki/codemirror-mode-javascript/readme\",\"text\":\"This plugin adds Syntax Highlighting for Javascript tiddlers (application/javascript) to the [[CodeMirror|http://codemirror.net]] text editor. It needs the latest [[CodeMirror plugin|$:/plugins/tiddlywiki/codemirror]] to be installed\\n\\n\"}}}"},
{"title":"$:/plugins/tiddlywiki/codemirror-mode-markdown","name":"CodeMirror Mode Markdown","description":"Markdown highlighting mode for CodeMirror","parent-plugin":"$:/plugins/tiddlywiki/codemirror","dependents":"$:/plugins/tiddlywiki/codemirror-mode-xml","list":"readme","version":"5.2.3","plugin-type":"plugin","type":"application/json","text":"{\"tiddlers\":{\"$:/plugins/tiddlywiki/codemirror/mode/markdown/markdown.js\":{\"text\":\"// CodeMirror, copyright (c) by Marijn Haverbeke and others\\n// Distributed under an MIT license: https://codemirror.net/LICENSE\\n!function(t){\\\"object\\\"==typeof exports&&\\\"object\\\"==typeof module?t(require(\\\"../../lib/codemirror\\\"),require(\\\"../xml/xml\\\"),require(\\\"../tw-meta\\\")):\\\"function\\\"==typeof define&&define.amd?define([\\\"../../lib/codemirror\\\",\\\"../xml/xml\\\",\\\"../tw-meta\\\"],t):t(CodeMirror)}(function(j){\\\"use strict\\\";j.defineMode(\\\"markdown\\\",function(c,x){var A=j.getMode(c,\\\"text/html\\\"),u=\\\"null\\\"==A.name;void 0===x.highlightFormatting&&(x.highlightFormatting=!1),void 0===x.maxBlockquoteDepth&&(x.maxBlockquoteDepth=0),void 0===x.taskLists&&(x.taskLists=!1),void 0===x.strikethrough&&(x.strikethrough=!1),void 0===x.emoji&&(x.emoji=!1),void 0===x.fencedCodeBlockHighlighting&&(x.fencedCodeBlockHighlighting=!0),void 0===x.fencedCodeBlockDefaultMode&&(x.fencedCodeBlockDefaultMode=\\\"text/plain\\\"),void 0===x.xml&&(x.xml=!0),void 0===x.tokenTypeOverrides&&(x.tokenTypeOverrides={});var C={header:\\\"header\\\",code:\\\"comment\\\",quote:\\\"quote\\\",list1:\\\"variable-2\\\",list2:\\\"variable-3\\\",list3:\\\"keyword\\\",hr:\\\"hr\\\",image:\\\"image\\\",imageAltText:\\\"image-alt-text\\\",imageMarker:\\\"image-marker\\\",formatting:\\\"formatting\\\",linkInline:\\\"link\\\",linkEmail:\\\"link\\\",linkText:\\\"link\\\",linkHref:\\\"string\\\",em:\\\"em\\\",strong:\\\"strong\\\",strikethrough:\\\"strikethrough\\\",emoji:\\\"builtin\\\"};for(var t in C)C.hasOwnProperty(t)&&x.tokenTypeOverrides[t]&&(C[t]=x.tokenTypeOverrides[t]);var f=/^([*\\\\-_])(?:\\\\s*\\\\1){2,}\\\\s*$/,k=/^(?:[*\\\\-+]|^[0-9]+([.)]))\\\\s+/,S=/^\\\\[(x| )\\\\](?=\\\\s)/i,F=x.allowAtxHeaderWithoutSpace?/^(#+)/:/^(#+)(?: |$)/,D=/^ {0,3}(?:\\\\={1,}|-{2,})\\\\s*$/,i=/^[^#!\\\\[\\\\]*_\\\\\\\\\u003C>` \\\"'(~:]+/,p=/^(~~~+|```+)[ \\\\t]*([\\\\w\\\\/+#-]*)[^\\\\n`]*$/,E=/^\\\\s*\\\\[[^\\\\]]+?\\\\]:.*$/,v=/[!\\\"#$%&'()*+,\\\\-.\\\\/:;\u003C=>?@\\\\[\\\\\\\\\\\\]^_`{|}~\\\\xA1\\\\xA7\\\\xAB\\\\xB6\\\\xB7\\\\xBB\\\\xBF\\\\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\\\\u0AF0\\\\u0DF4\\\\u0E4F\\\\u0E5A\\\\u0E5B\\\\u0F04-\\\\u0F12\\\\u0F14\\\\u0F3A-\\\\u0F3D\\\\u0F85\\\\u0FD0-\\\\u0FD4\\\\u0FD9\\\\u0FDA\\\\u104A-\\\\u104F\\\\u10FB\\\\u1360-\\\\u1368\\\\u1400\\\\u166D\\\\u166E\\\\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\\\\u2010-\\\\u2027\\\\u2030-\\\\u2043\\\\u2045-\\\\u2051\\\\u2053-\\\\u205E\\\\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-\\\\u2E42\\\\u3001-\\\\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]|\\\\uD800[\\\\uDD00-\\\\uDD02\\\\uDF9F\\\\uDFD0]|\\\\uD801\\\\uDD6F|\\\\uD802[\\\\uDC57\\\\uDD1F\\\\uDD3F\\\\uDE50-\\\\uDE58\\\\uDE7F\\\\uDEF0-\\\\uDEF6\\\\uDF39-\\\\uDF3F\\\\uDF99-\\\\uDF9C]|\\\\uD804[\\\\uDC47-\\\\uDC4D\\\\uDCBB\\\\uDCBC\\\\uDCBE-\\\\uDCC1\\\\uDD40-\\\\uDD43\\\\uDD74\\\\uDD75\\\\uDDC5-\\\\uDDC9\\\\uDDCD\\\\uDDDB\\\\uDDDD-\\\\uDDDF\\\\uDE38-\\\\uDE3D\\\\uDEA9]|\\\\uD805[\\\\uDCC6\\\\uDDC1-\\\\uDDD7\\\\uDE41-\\\\uDE43\\\\uDF3C-\\\\uDF3E]|\\\\uD809[\\\\uDC70-\\\\uDC74]|\\\\uD81A[\\\\uDE6E\\\\uDE6F\\\\uDEF5\\\\uDF37-\\\\uDF3B\\\\uDF44]|\\\\uD82F\\\\uDC9F|\\\\uD836[\\\\uDE87-\\\\uDE8B]/;function B(t,e,i){return(e.f=e.inline=i)(t,e)}function L(t,e,i){return(e.f=e.block=i)(t,e)}function n(t){var e,i;return t.linkTitle=!1,t.linkHref=!1,t.linkText=!1,t.em=!1,t.strong=!1,t.strikethrough=!1,t.quote=0,t.indentedCode=!1,t.f==T&&((i=u)||(i=\\\"xml\\\"==(e=j.innerMode(A,t.htmlState)).mode.name&&null===e.state.tagStart&&!e.state.context&&e.state.tokenize.isInText),i&&(t.f=b,t.block=a,t.htmlState=null)),t.trailingSpace=0,t.trailingSpaceNewLine=!1,t.prevLine=t.thisLine,t.thisLine={stream:null},null}function a(t,e){var i,n=t.column()===e.indentation,u=!(i=e.prevLine.stream)||!/\\\\S/.test(i.string),r=e.indentedCode,a=e.prevLine.hr,o=!1!==e.list,l=(e.listStack[e.listStack.length-1]||0)+3;e.indentedCode=!1;var h=e.indentation;if(null===e.indentationDiff&&(e.indentationDiff=e.indentation,o)){for(e.list=null;h\u003Ce.listStack[e.listStack.length-1];)e.listStack.pop(),e.listStack.length?e.indentation=e.listStack[e.listStack.length-1]:e.list=!1;!1!==e.list&&(e.indentationDiff=h-e.listStack[e.listStack.length-1])}var s=!(u||a||e.prevLine.header||o&&r||e.prevLine.fencedCodeEnd),g=(!1===e.list||a||u)&&e.indentation\u003C=l&&t.match(f),m=null;if(4\u003C=e.indentationDiff&&(r||e.prevLine.fencedCodeEnd||e.prevLine.header||u))return t.skipToEnd(),e.indentedCode=!0,C.code;if(t.eatSpace())return null;if(n&&e.indentation\u003C=l&&(m=t.match(F))&&m[1].length\u003C=6)return e.quote=0,e.header=m[1].length,e.thisLine.header=!0,x.highlightFormatting&&(e.formatting=\\\"header\\\"),e.f=e.inline,q(e);if(e.indentation\u003C=l&&t.eat(\\\">\\\"))return e.quote=n?1:e.quote+1,x.highlightFormatting&&(e.formatting=\\\"quote\\\"),t.eatSpace(),q(e);if(!g&&!e.setext&&n&&e.indentation\u003C=l&&(m=t.match(k))){var d=m[1]?\\\"ol\\\":\\\"ul\\\";return e.indentation=h+t.current().length,e.list=!0,e.quote=0,e.listStack.push(e.indentation),e.em=!1,e.strong=!1,e.code=!1,e.strikethrough=!1,x.taskLists&&t.match(S,!1)&&(e.taskList=!0),e.f=e.inline,x.highlightFormatting&&(e.formatting=[\\\"list\\\",\\\"list-\\\"+d]),q(e)}return n&&e.indentation\u003C=l&&(m=t.match(p,!0))?(e.quote=0,e.fencedEndRE=new RegExp(m[1]+\\\"+ *$\\\"),e.localMode=x.fencedCodeBlockHighlighting&&function(t){var e;!j.findModeByName||(e=j.findModeByName(t))&&(t=e.mime||e.mimes[0]);var i=j.getMode(c,t);return\\\"null\\\"==i.name?null:i}(m[2]||x.fencedCodeBlockDefaultMode),e.localMode&&(e.localState=j.startState(e.localMode)),e.f=e.block=M,x.highlightFormatting&&(e.formatting=\\\"code-block\\\"),e.code=-1,q(e)):e.setext||!(s&&o||e.quote||!1!==e.list||e.code||g||E.test(t.string))&&(m=t.lookAhead(1))&&(m=m.match(D))?(e.setext?(e.header=e.setext,e.setext=0,t.skipToEnd(),x.highlightFormatting&&(e.formatting=\\\"header\\\")):(e.header=\\\"=\\\"==m[0].charAt(0)?1:2,e.setext=e.header),e.thisLine.header=!0,e.f=e.inline,q(e)):g?(t.skipToEnd(),e.hr=!0,e.thisLine.hr=!0,C.hr):\\\"[\\\"===t.peek()?B(t,e,H):B(t,e,e.inline)}function T(t,e){var i,n=A.token(t,e.htmlState);return u||(\\\"xml\\\"==(i=j.innerMode(A,e.htmlState)).mode.name&&null===i.state.tagStart&&!i.state.context&&i.state.tokenize.isInText||e.md_inside&&-1\u003Ct.current().indexOf(\\\">\\\"))&&(e.f=b,e.block=a,e.htmlState=null),n}function M(t,e){var i,n=e.listStack[e.listStack.length-1]||0,u=e.indentation\u003Cn,r=n+3;return e.fencedEndRE&&e.indentation\u003C=r&&(u||t.match(e.fencedEndRE))?(x.highlightFormatting&&(e.formatting=\\\"code-block\\\"),u||(i=q(e)),e.localMode=e.localState=null,e.block=a,e.f=b,e.fencedEndRE=null,e.code=0,e.thisLine.fencedCodeEnd=!0,u?L(t,e,e.block):i):e.localMode?e.localMode.token(t,e.localState):(t.skipToEnd(),C.code)}function q(t){var e,i=[];if(t.formatting){i.push(C.formatting),\\\"string\\\"==typeof t.formatting&&(t.formatting=[t.formatting]);for(var n=0;n\u003Ct.formatting.length;n++)i.push(C.formatting+\\\"-\\\"+t.formatting[n]),\\\"header\\\"===t.formatting[n]&&i.push(C.formatting+\\\"-\\\"+t.formatting[n]+\\\"-\\\"+t.header),\\\"quote\\\"===t.formatting[n]&&(!x.maxBlockquoteDepth||x.maxBlockquoteDepth>=t.quote?i.push(C.formatting+\\\"-\\\"+t.formatting[n]+\\\"-\\\"+t.quote):i.push(\\\"error\\\"))}return t.taskOpen?i.push(\\\"meta\\\"):t.taskClosed?i.push(\\\"property\\\"):(t.linkHref?i.push(C.linkHref,\\\"url\\\"):(t.strong&&i.push(C.strong),t.em&&i.push(C.em),t.strikethrough&&i.push(C.strikethrough),t.emoji&&i.push(C.emoji),t.linkText&&i.push(C.linkText),t.code&&i.push(C.code),t.image&&i.push(C.image),t.imageAltText&&i.push(C.imageAltText,\\\"link\\\"),t.imageMarker&&i.push(C.imageMarker)),t.header&&i.push(C.header,C.header+\\\"-\\\"+t.header),t.quote&&(i.push(C.quote),!x.maxBlockquoteDepth||x.maxBlockquoteDepth>=t.quote?i.push(C.quote+\\\"-\\\"+t.quote):i.push(C.quote+\\\"-\\\"+x.maxBlockquoteDepth)),!1!==t.list&&((e=(t.listStack.length-1)%3)?1==e?i.push(C.list2):i.push(C.list3):i.push(C.list1)),t.trailingSpaceNewLine?i.push(\\\"trailing-space-new-line\\\"):t.trailingSpace&&i.push(\\\"trailing-space-\\\"+(t.trailingSpace%2?\\\"a\\\":\\\"b\\\"))),i.length?i.join(\\\" \\\"):null}function e(t,e){if(t.match(i,!0))return q(e)}function b(t,e){var i=e.text(t,e);if(void 0!==i)return i;if(e.list)return e.list=null,q(e);if(e.taskList)return\\\" \\\"===t.match(S,!0)[1]?e.taskOpen=!0:e.taskClosed=!0,x.highlightFormatting&&(e.formatting=\\\"task\\\"),e.taskList=!1,q(e);if(e.taskOpen=!1,e.taskClosed=!1,e.header&&t.match(/^#+$/,!0))return x.highlightFormatting&&(e.formatting=\\\"header\\\"),q(e);var n=t.next();if(e.linkTitle){e.linkTitle=!1;var u=\\\"(\\\"===n?\\\")\\\":n,r=\\\"^\\\\\\\\s*(?:[^\\\"+(u=(u+\\\"\\\").replace(/([.?*+^\\\\[\\\\]\\\\\\\\(){}|-])/g,\\\"\\\\\\\\$1\\\"))+\\\"\\\\\\\\\\\\\\\\]+|\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\|\\\\\\\\\\\\\\\\.)\\\"+u;if(t.match(new RegExp(r),!0))return C.linkHref}if(\\\"`\\\"===n){var a=e.formatting;x.highlightFormatting&&(e.formatting=\\\"code\\\"),t.eatWhile(\\\"`\\\");var o=t.current().length;if(0!=e.code||e.quote&&1!=o){if(o!=e.code)return e.formatting=a,q(e);var l=q(e);return e.code=0,l}return e.code=o,q(e)}if(e.code)return q(e);if(\\\"\\\\\\\\\\\"===n&&(t.next(),x.highlightFormatting)){var h=q(e),s=C.formatting+\\\"-escape\\\";return h?h+\\\" \\\"+s:s}if(\\\"!\\\"===n&&t.match(/\\\\[[^\\\\]]*\\\\] ?(?:\\\\(|\\\\[)/,!1))return e.imageMarker=!0,e.image=!0,x.highlightFormatting&&(e.formatting=\\\"image\\\"),q(e);if(\\\"[\\\"===n&&e.imageMarker&&t.match(/[^\\\\]]*\\\\](\\\\(.*?\\\\)| ?\\\\[.*?\\\\])/,!1))return e.imageMarker=!1,e.imageAltText=!0,x.highlightFormatting&&(e.formatting=\\\"image\\\"),q(e);if(\\\"]\\\"===n&&e.imageAltText){x.highlightFormatting&&(e.formatting=\\\"image\\\");var h=q(e);return e.imageAltText=!1,e.image=!1,e.inline=e.f=y,h}if(\\\"[\\\"===n&&!e.image)return e.linkText&&t.match(/^.*?\\\\]/)||(e.linkText=!0,x.highlightFormatting&&(e.formatting=\\\"link\\\")),q(e);if(\\\"]\\\"===n&&e.linkText){x.highlightFormatting&&(e.formatting=\\\"link\\\");var h=q(e);return e.linkText=!1,e.inline=e.f=t.match(/\\\\(.*?\\\\)| ?\\\\[.*?\\\\]/,!1)?y:b,h}if(\\\"\u003C\\\"===n&&t.match(/^(https?|ftps?):\\\\/\\\\/(?:[^\\\\\\\\>]|\\\\\\\\.)+>/,!1))return e.f=e.inline=w,x.highlightFormatting&&(e.formatting=\\\"link\\\"),(h=q(e))?h+=\\\" \\\":h=\\\"\\\",h+C.linkInline;if(\\\"\u003C\\\"===n&&t.match(/^[^> \\\\\\\\]+@(?:[^\\\\\\\\>]|\\\\\\\\.)+>/,!1))return e.f=e.inline=w,x.highlightFormatting&&(e.formatting=\\\"link\\\"),(h=q(e))?h+=\\\" \\\":h=\\\"\\\",h+C.linkEmail;if(x.xml&&\\\"\u003C\\\"===n&&t.match(/^(!--|\\\\?|!\\\\[CDATA\\\\[|[a-z][a-z0-9-]*(?:\\\\s+[a-z_:.\\\\-]+(?:\\\\s*=\\\\s*[^>]+)?)*\\\\s*(?:>|$))/i,!1)){var g,m=t.string.indexOf(\\\">\\\",t.pos);return-1!=m&&(g=t.string.substring(t.start,m),/markdown\\\\s*=\\\\s*('|\\\"){0,1}1('|\\\"){0,1}/.test(g)&&(e.md_inside=!0)),t.backUp(1),e.htmlState=j.startState(A),L(t,e,T)}if(x.xml&&\\\"\u003C\\\"===n&&t.match(/^\\\\/\\\\w*?>/))return e.md_inside=!1,\\\"tag\\\";if(\\\"*\\\"===n||\\\"_\\\"===n){for(var d=1,c=1==t.pos?\\\" \\\":t.string.charAt(t.pos-2);d\u003C3&&t.eat(n);)d++;var f=t.peek()||\\\" \\\",k=!/\\\\s/.test(f)&&(!v.test(f)||/\\\\s/.test(c)||v.test(c)),F=!/\\\\s/.test(c)&&(!v.test(c)||/\\\\s/.test(f)||v.test(f)),D=null,p=null;if(d%2&&(e.em||!k||\\\"*\\\"!==n&&F&&!v.test(c)?e.em!=n||!F||\\\"*\\\"!==n&&k&&!v.test(f)||(D=!1):D=!0),1\u003Cd&&(e.strong||!k||\\\"*\\\"!==n&&F&&!v.test(c)?e.strong!=n||!F||\\\"*\\\"!==n&&k&&!v.test(f)||(p=!1):p=!0),null!=p||null!=D){x.highlightFormatting&&(e.formatting=null==D?\\\"strong\\\":null==p?\\\"em\\\":\\\"strong em\\\"),!0===D&&(e.em=n),!0===p&&(e.strong=n);l=q(e);return!1===D&&(e.em=!1),!1===p&&(e.strong=!1),l}}else if(\\\" \\\"===n&&(t.eat(\\\"*\\\")||t.eat(\\\"_\\\"))){if(\\\" \\\"===t.peek())return q(e);t.backUp(1)}if(x.strikethrough)if(\\\"~\\\"===n&&t.eatWhile(n)){if(e.strikethrough){x.highlightFormatting&&(e.formatting=\\\"strikethrough\\\");l=q(e);return e.strikethrough=!1,l}if(t.match(/^[^\\\\s]/,!1))return e.strikethrough=!0,x.highlightFormatting&&(e.formatting=\\\"strikethrough\\\"),q(e)}else if(\\\" \\\"===n&&t.match(/^~~/,!0)){if(\\\" \\\"===t.peek())return q(e);t.backUp(2)}if(x.emoji&&\\\":\\\"===n&&t.match(/^(?:[a-z_\\\\d+][a-z_\\\\d+-]*|\\\\-[a-z_\\\\d+][a-z_\\\\d+-]*):/)){e.emoji=!0,x.highlightFormatting&&(e.formatting=\\\"emoji\\\");var E=q(e);return e.emoji=!1,E}return\\\" \\\"===n&&(t.match(/^ +$/,!1)?e.trailingSpace++:e.trailingSpace&&(e.trailingSpaceNewLine=!0)),q(e)}function w(t,e){if(\\\">\\\"!==t.next())return t.match(/^[^>]+/,!0),C.linkInline;e.f=e.inline=b,x.highlightFormatting&&(e.formatting=\\\"link\\\");var i=q(e);return i?i+=\\\" \\\":i=\\\"\\\",i+C.linkInline}function y(t,e){if(t.eatSpace())return null;var n,i=t.next();return\\\"(\\\"===i||\\\"[\\\"===i?(e.f=e.inline=(n=\\\"(\\\"===i?\\\")\\\":\\\"]\\\",function(t,e){if(t.next()!==n)return t.match(r[n]),e.linkHref=!0,q(e);e.f=e.inline=b,x.highlightFormatting&&(e.formatting=\\\"link-string\\\");var i=q(e);return e.linkHref=!1,i}),x.highlightFormatting&&(e.formatting=\\\"link-string\\\"),e.linkHref=!0,q(e)):\\\"error\\\"}var r={\\\")\\\":/^(?:[^\\\\\\\\\\\\(\\\\)]|\\\\\\\\.|\\\\((?:[^\\\\\\\\\\\\(\\\\)]|\\\\\\\\.)*\\\\))*?(?=\\\\))/,\\\"]\\\":/^(?:[^\\\\\\\\\\\\[\\\\]]|\\\\\\\\.|\\\\[(?:[^\\\\\\\\\\\\[\\\\]]|\\\\\\\\.)*\\\\])*?(?=\\\\])/};function H(t,e){return t.match(/^([^\\\\]\\\\\\\\]|\\\\\\\\.)*\\\\]:/,!1)?(e.f=o,t.next(),x.highlightFormatting&&(e.formatting=\\\"link\\\"),e.linkText=!0,q(e)):B(t,e,b)}function o(t,e){if(t.match(/^\\\\]:/,!0)){e.f=e.inline=l,x.highlightFormatting&&(e.formatting=\\\"link\\\");var i=q(e);return e.linkText=!1,i}return t.match(/^([^\\\\]\\\\\\\\]|\\\\\\\\.)+/,!0),C.linkText}function l(t,e){return t.eatSpace()?null:(t.match(/^[^\\\\s]+/,!0),void 0===t.peek()?e.linkTitle=!0:t.match(/^(?:\\\\s+(?:\\\"(?:[^\\\"\\\\\\\\]|\\\\\\\\\\\\\\\\|\\\\\\\\.)+\\\"|'(?:[^'\\\\\\\\]|\\\\\\\\\\\\\\\\|\\\\\\\\.)+'|\\\\((?:[^)\\\\\\\\]|\\\\\\\\\\\\\\\\|\\\\\\\\.)+\\\\)))?/,!0),e.f=e.inline=b,C.linkHref+\\\" url\\\")}var h={startState:function(){return{f:a,prevLine:{stream:null},thisLine:{stream:null},block:a,htmlState:null,indentation:0,inline:b,text:e,formatting:!1,linkText:!1,linkHref:!1,linkTitle:!1,code:0,em:!1,strong:!1,header:0,setext:0,hr:!1,taskList:!1,list:!1,listStack:[],quote:0,trailingSpace:0,trailingSpaceNewLine:!1,strikethrough:!1,emoji:!1,fencedEndRE:null}},copyState:function(t){return{f:t.f,prevLine:t.prevLine,thisLine:t.thisLine,block:t.block,htmlState:t.htmlState&&j.copyState(A,t.htmlState),indentation:t.indentation,localMode:t.localMode,localState:t.localMode?j.copyState(t.localMode,t.localState):null,inline:t.inline,text:t.text,formatting:!1,linkText:t.linkText,linkTitle:t.linkTitle,linkHref:t.linkHref,code:t.code,em:t.em,strong:t.strong,strikethrough:t.strikethrough,emoji:t.emoji,header:t.header,setext:t.setext,hr:t.hr,taskList:t.taskList,list:t.list,listStack:t.listStack.slice(0),quote:t.quote,indentedCode:t.indentedCode,trailingSpace:t.trailingSpace,trailingSpaceNewLine:t.trailingSpaceNewLine,md_inside:t.md_inside,fencedEndRE:t.fencedEndRE}},token:function(t,e){if(e.formatting=!1,t!=e.thisLine.stream){if(e.header=0,e.hr=!1,t.match(/^\\\\s*$/,!0))return n(e),null;if(e.prevLine=e.thisLine,e.thisLine={stream:t},e.taskList=!1,e.trailingSpace=0,e.trailingSpaceNewLine=!1,!e.localState&&(e.f=e.block,e.f!=T)){var i=t.match(/^\\\\s*/,!0)[0].replace(/\\\\t/g,\\\" \\\").length;if(e.indentation=i,e.indentationDiff=null,0\u003Ci)return null}}return e.f(t,e)},innerMode:function(t){return t.block==T?{state:t.htmlState,mode:A}:t.localState?{state:t.localState,mode:t.localMode}:{state:t,mode:h}},indent:function(t,e,i){return t.block==T&&A.indent?A.indent(t.htmlState,e,i):t.localState&&t.localMode.indent?t.localMode.indent(t.localState,e,i):j.Pass},blankLine:n,getType:q,blockCommentStart:\\\"\\\\x3c!--\\\",blockCommentEnd:\\\"--\\\\x3e\\\",closeBrackets:\\\"()[]{}''\\\\\\\"\\\\\\\"``\\\",fold:\\\"markdown\\\"};return h},\\\"xml\\\"),j.defineMIME(\\\"text/markdown\\\",\\\"markdown\\\"),j.defineMIME(\\\"text/x-markdown\\\",\\\"markdown\\\")});\\n\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/tiddlywiki/codemirror/mode/markdown/markdown.js\",\"module-type\":\"codemirror\"},\"$:/plugins/tiddlywiki/codemirror-mode-markdown/readme\":{\"title\":\"$:/plugins/tiddlywiki/codemirror-mode-markdown/readme\",\"text\":\"This plugin adds Syntax Highlighting for Markdown tiddlers (text/x-markdown) to the [[CodeMirror|http://codemirror.net]] text editor. It needs the latest [[CodeMirror plugin|$:/plugins/tiddlywiki/codemirror]] to be installed\\n\\n\"}}}"},
{"title":"$:/plugins/tiddlywiki/codemirror-mode-xml","name":"CodeMirror Mode XML","description":"XML highlighting mode for CodeMirror","parent-plugin":"$:/plugins/tiddlywiki/codemirror","list":"readme","version":"5.2.3","plugin-type":"plugin","dependents":"","type":"application/json","text":"{\"tiddlers\":{\"$:/plugins/tiddlywiki/codemirror/mode/xml/xml.js\":{\"text\":\"// CodeMirror, copyright (c) by Marijn Haverbeke and others\\n// Distributed under an MIT license: https://codemirror.net/LICENSE\\n!function(t){\\\"object\\\"==typeof exports&&\\\"object\\\"==typeof module?t(require(\\\"../../lib/codemirror\\\")):\\\"function\\\"==typeof define&&define.amd?define([\\\"../../lib/codemirror\\\"],t):t(CodeMirror)}(function(N){\\\"use strict\\\";var y={autoSelfClosers:{area:!0,base:!0,br:!0,col:!0,command:!0,embed:!0,frame:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0,menuitem:!0},implicitlyClosed:{dd:!0,li:!0,optgroup:!0,option:!0,p:!0,rp:!0,rt:!0,tbody:!0,td:!0,tfoot:!0,th:!0,tr:!0},contextGrabbers:{dd:{dd:!0,dt:!0},dt:{dd:!0,dt:!0},li:{li:!0},option:{option:!0,optgroup:!0},optgroup:{optgroup:!0},p:{address:!0,article:!0,aside:!0,blockquote:!0,dir:!0,div:!0,dl:!0,fieldset:!0,footer:!0,form:!0,h1:!0,h2:!0,h3:!0,h4:!0,h5:!0,h6:!0,header:!0,hgroup:!0,hr:!0,menu:!0,nav:!0,ol:!0,p:!0,pre:!0,section:!0,table:!0,ul:!0},rp:{rp:!0,rt:!0},rt:{rp:!0,rt:!0},tbody:{tbody:!0,tfoot:!0},td:{td:!0,th:!0},tfoot:{tbody:!0},th:{td:!0,th:!0},thead:{tbody:!0,tfoot:!0},tr:{tr:!0}},doNotIndent:{pre:!0},allowUnquoted:!0,allowMissing:!0,caseFold:!0},z={autoSelfClosers:{},implicitlyClosed:{},contextGrabbers:{},doNotIndent:{},allowUnquoted:!1,allowMissing:!1,allowMissingTagName:!1,caseFold:!1};N.defineMode(\\\"xml\\\",function(t,e){var i,a,l=t.indentUnit,u={},n=e.htmlMode?y:z;for(var r in n)u[r]=n[r];for(var r in e)u[r]=e[r];function c(e,n){function t(t){return(n.tokenize=t)(e,n)}var r=e.next();if(\\\"\u003C\\\"==r)return e.eat(\\\"!\\\")?e.eat(\\\"[\\\")?e.match(\\\"CDATA[\\\")?t(s(\\\"atom\\\",\\\"]]>\\\")):null:e.match(\\\"--\\\")?t(s(\\\"comment\\\",\\\"--\\\\x3e\\\")):e.match(\\\"DOCTYPE\\\",!0,!0)?(e.eatWhile(/[\\\\w\\\\._\\\\-]/),t(function r(o){return function(t,e){for(var n;null!=(n=t.next());){if(\\\"\u003C\\\"==n)return e.tokenize=r(o+1),e.tokenize(t,e);if(\\\">\\\"==n){if(1!=o)return e.tokenize=r(o-1),e.tokenize(t,e);e.tokenize=c;break}}return\\\"meta\\\"}}(1))):null:e.eat(\\\"?\\\")?(e.eatWhile(/[\\\\w\\\\._\\\\-]/),n.tokenize=s(\\\"meta\\\",\\\"?>\\\"),\\\"meta\\\"):(i=e.eat(\\\"/\\\")?\\\"closeTag\\\":\\\"openTag\\\",n.tokenize=d,\\\"tag bracket\\\");if(\\\"&\\\"!=r)return e.eatWhile(/[^&\u003C]/),null;var o=e.eat(\\\"#\\\")?e.eat(\\\"x\\\")?e.eatWhile(/[a-fA-F\\\\d]/)&&e.eat(\\\";\\\"):e.eatWhile(/[\\\\d]/)&&e.eat(\\\";\\\"):e.eatWhile(/[\\\\w\\\\.\\\\-:]/)&&e.eat(\\\";\\\");return o?\\\"atom\\\":\\\"error\\\"}function d(t,e){var n=t.next();if(\\\">\\\"==n||\\\"/\\\"==n&&t.eat(\\\">\\\"))return e.tokenize=c,i=\\\">\\\"==n?\\\"endTag\\\":\\\"selfcloseTag\\\",\\\"tag bracket\\\";if(\\\"=\\\"==n)return i=\\\"equals\\\",null;if(\\\"\u003C\\\"!=n)return/[\\\\'\\\\\\\"]/.test(n)?(e.tokenize=(r=n,a.isInAttribute=!0,a),e.stringStartCol=t.column(),e.tokenize(t,e)):(t.match(/^[^\\\\s\\\\u00a0=\u003C>\\\\\\\"\\\\']*[^\\\\s\\\\u00a0=\u003C>\\\\\\\"\\\\'\\\\/]/),\\\"word\\\");e.tokenize=c,e.state=g,e.tagName=e.tagStart=null;var r,o=e.tokenize(t,e);return o?o+\\\" tag error\\\":\\\"tag error\\\";function a(t,e){for(;!t.eol();)if(t.next()==r){e.tokenize=d;break}return\\\"string\\\"}}function s(n,r){return function(t,e){for(;!t.eol();){if(t.match(r)){e.tokenize=c;break}t.next()}return n}}function f(t,e,n){this.prev=t.context,this.tagName=e||\\\"\\\",this.indent=t.indented,this.startOfLine=n,(u.doNotIndent.hasOwnProperty(e)||t.context&&t.context.noIndent)&&(this.noIndent=!0)}function o(t){t.context&&(t.context=t.context.prev)}function m(t,e){for(var n;;){if(!t.context)return;if(n=t.context.tagName,!u.contextGrabbers.hasOwnProperty(n)||!u.contextGrabbers[n].hasOwnProperty(e))return;o(t)}}function g(t,e,n){return\\\"openTag\\\"==t?(n.tagStart=e.column(),p):\\\"closeTag\\\"==t?h:g}function p(t,e,n){return\\\"word\\\"==t?(n.tagName=e.current(),a=\\\"tag\\\",k):u.allowMissingTagName&&\\\"endTag\\\"==t?(a=\\\"tag bracket\\\",k(t,0,n)):(a=\\\"error\\\",p)}function h(t,e,n){if(\\\"word\\\"!=t)return u.allowMissingTagName&&\\\"endTag\\\"==t?(a=\\\"tag bracket\\\",x(t,0,n)):(a=\\\"error\\\",b);var r=e.current();return n.context&&n.context.tagName!=r&&u.implicitlyClosed.hasOwnProperty(n.context.tagName)&&o(n),n.context&&n.context.tagName==r||!1===u.matchClosing?(a=\\\"tag\\\",x):(a=\\\"tag error\\\",b)}function x(t,e,n){return\\\"endTag\\\"!=t?(a=\\\"error\\\",x):(o(n),g)}function b(t,e,n){return a=\\\"error\\\",x(t,0,n)}function k(t,e,n){if(\\\"word\\\"==t)return a=\\\"attribute\\\",v;if(\\\"endTag\\\"!=t&&\\\"selfcloseTag\\\"!=t)return a=\\\"error\\\",k;var r=n.tagName,o=n.tagStart;return n.tagName=n.tagStart=null,\\\"selfcloseTag\\\"==t||u.autoSelfClosers.hasOwnProperty(r)?m(n,r):(m(n,r),n.context=new f(n,r,o==n.indented)),g}function v(t,e,n){return\\\"equals\\\"==t?w:(u.allowMissing||(a=\\\"error\\\"),k(t,0,n))}function w(t,e,n){return\\\"string\\\"==t?T:\\\"word\\\"==t&&u.allowUnquoted?(a=\\\"string\\\",k):(a=\\\"error\\\",k(t,0,n))}function T(t,e,n){return\\\"string\\\"==t?T:k(t,0,n)}return c.isInText=!0,{startState:function(t){var e={tokenize:c,state:g,indented:t||0,tagName:null,tagStart:null,context:null};return null!=t&&(e.baseIndent=t),e},token:function(t,e){if(!e.tagName&&t.sol()&&(e.indented=t.indentation()),t.eatSpace())return null;i=null;var n=e.tokenize(t,e);return(n||i)&&\\\"comment\\\"!=n&&(a=null,e.state=e.state(i||n,t,e),a&&(n=\\\"error\\\"==a?n+\\\" error\\\":a)),n},indent:function(t,e,n){var r=t.context;if(t.tokenize.isInAttribute)return t.tagStart==t.indented?t.stringStartCol+1:t.indented+l;if(r&&r.noIndent)return N.Pass;if(t.tokenize!=d&&t.tokenize!=c)return n?n.match(/^(\\\\s*)/)[0].length:0;if(t.tagName)return!1!==u.multilineTagIndentPastTag?t.tagStart+t.tagName.length+2:t.tagStart+l*(u.multilineTagIndentFactor||1);if(u.alignCDATA&&/\u003C!\\\\[CDATA\\\\[/.test(e))return 0;var o=e&&/^\u003C(\\\\/)?([\\\\w_:\\\\.-]*)/.exec(e);if(o&&o[1])for(;r;){if(r.tagName==o[2]){r=r.prev;break}if(!u.implicitlyClosed.hasOwnProperty(r.tagName))break;r=r.prev}else if(o)for(;r;){var a=u.contextGrabbers[r.tagName];if(!a||!a.hasOwnProperty(o[2]))break;r=r.prev}for(;r&&r.prev&&!r.startOfLine;)r=r.prev;return r?r.indent+l:t.baseIndent||0},electricInput:/\u003C\\\\/[\\\\s\\\\w:]+>$/,blockCommentStart:\\\"\\\\x3c!--\\\",blockCommentEnd:\\\"--\\\\x3e\\\",configuration:u.htmlMode?\\\"html\\\":\\\"xml\\\",helperType:u.htmlMode?\\\"html\\\":\\\"xml\\\",skipAttribute:function(t){t.state==w&&(t.state=k)},xmlCurrentTag:function(t){return t.tagName?{name:t.tagName,close:\\\"closeTag\\\"==t.type}:null},xmlCurrentContext:function(t){for(var e=[],n=t.context;n;n=n.prev)e.push(n.tagName);return e.reverse()}}}),N.defineMIME(\\\"text/xml\\\",\\\"xml\\\"),N.defineMIME(\\\"application/xml\\\",\\\"xml\\\"),N.mimeModes.hasOwnProperty(\\\"text/html\\\")||N.defineMIME(\\\"text/html\\\",{name:\\\"xml\\\",htmlMode:!0})});\\n\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/tiddlywiki/codemirror/mode/xml/xml.js\",\"module-type\":\"codemirror\"},\"$:/plugins/tiddlywiki/codemirror-mode-xml/readme\":{\"title\":\"$:/plugins/tiddlywiki/codemirror-mode-xml/readme\",\"text\":\"This plugin is a requirement for other Syntax-highlighting plugins and adds Highlighting for XML tiddlers (application/xml) to the [[CodeMirror|http://codemirror.net]] text editor. It needs the latest [[CodeMirror plugin|$:/plugins/tiddlywiki/codemirror]] to be installed\\n\\n\"}}}"},
{"title":"$:/plugins/tiddlywiki/codemirror-search-replace","name":"CodeMirror Search and Replace","description":"Search and replace for CodeMirror","parent-plugin":"$:/plugins/tiddlywiki/codemirror","list":"readme","version":"5.2.3","plugin-type":"plugin","dependents":"","type":"application/json","text":"{\"tiddlers\":{\"$:/plugins/tiddlywiki/codemirror/addon/search/search.js\":{\"text\":\"// CodeMirror, copyright (c) by Marijn Haverbeke and others\\n// Distributed under an MIT license: https://codemirror.net/LICENSE\\n!function(e){\\\"object\\\"==typeof exports&&\\\"object\\\"==typeof module?e(require(\\\"../../lib/codemirror\\\"),require(\\\"./searchcursor\\\"),require(\\\"../dialog/dialog\\\")):\\\"function\\\"==typeof define&&define.amd?define([\\\"../../lib/codemirror\\\",\\\"./searchcursor\\\",\\\"../dialog/dialog\\\"],e):e(CodeMirror)}(function(d){\\\"use strict\\\";function o(){this.posFrom=this.posTo=this.lastQuery=this.query=null,this.overlay=null}function m(e){return e.state.search||(e.state.search=new o)}function a(e){return\\\"string\\\"==typeof e&&e==e.toLowerCase()}function y(e,o,n){return e.getSearchCursor(o,n,{caseFold:a(o),multiline:!0})}function h(e,o,n,r,t){e.openDialog?e.openDialog(o,t,{value:r,selectValueOnOpen:!0,bottom:e.options.search.bottom}):t(prompt(n,r))}function r(e){return e.replace(/\\\\\\\\([nrt\\\\\\\\])/g,function(e,o){return\\\"n\\\"==o?\\\"\\\\n\\\":\\\"r\\\"==o?\\\"\\\\r\\\":\\\"t\\\"==o?\\\"\\\\t\\\":\\\"\\\\\\\\\\\"==o?\\\"\\\\\\\\\\\":e})}function s(e){var o=e.match(/^\\\\/(.*)\\\\/([a-z]*)$/);if(o)try{e=new RegExp(o[1],-1==o[2].indexOf(\\\"i\\\")?\\\"\\\":\\\"i\\\")}catch(e){}else e=r(e);return(\\\"string\\\"==typeof e?\\\"\\\"==e:e.test(\\\"\\\"))&&(e=/x^/),e}function g(e,o,n){var r,t;o.queryText=n,o.query=s(n),e.removeOverlay(o.overlay,a(o.query)),o.overlay=(r=o.query,t=a(o.query),\\\"string\\\"==typeof r?r=new RegExp(r.replace(/[\\\\-\\\\[\\\\]\\\\/\\\\{\\\\}\\\\(\\\\)\\\\*\\\\+\\\\?\\\\.\\\\\\\\\\\\^\\\\$\\\\|]/g,\\\"\\\\\\\\$&\\\"),t?\\\"gi\\\":\\\"g\\\"):r.global||(r=new RegExp(r.source,r.ignoreCase?\\\"gi\\\":\\\"g\\\")),{token:function(e){r.lastIndex=e.pos;var o=r.exec(e.string);if(o&&o.index==e.pos)return e.pos+=o[0].length||1,\\\"searching\\\";o?e.pos=o.index:e.skipToEnd()}}),e.addOverlay(o.overlay),e.showMatchesOnScrollbar&&(o.annotate&&(o.annotate.clear(),o.annotate=null),o.annotate=e.showMatchesOnScrollbar(o.query,a(o.query)))}function n(a,o,e,n){var r=m(a);if(r.query)return x(a,o);var t,s,i,c,l,u,p,f=a.getSelection()||r.lastQuery;f instanceof RegExp&&\\\"x^\\\"==f.source&&(f=null),e&&a.openDialog?(t=null,s=function(e,o){d.e_stop(o),e&&(e!=r.queryText&&(g(a,r,e),r.posFrom=r.posTo=a.getCursor()),t&&(t.style.opacity=1),x(a,o.shiftKey,function(e,o){var n;o.line\u003C3&&document.querySelector&&(n=a.display.wrapper.querySelector(\\\".CodeMirror-dialog\\\"))&&n.getBoundingClientRect().bottom-4>a.cursorCoords(o,\\\"window\\\").top&&((t=n).style.opacity=.4)}))},c=b(i=a),l=f,u=s,p=function(e,o){var n=d.keyName(e),r=a.getOption(\\\"extraKeys\\\"),t=r&&r[n]||d.keyMap[a.getOption(\\\"keyMap\\\")][n];\\\"findNext\\\"==t||\\\"findPrev\\\"==t||\\\"findPersistentNext\\\"==t||\\\"findPersistentPrev\\\"==t?(d.e_stop(e),g(a,m(a),o),a.execCommand(t)):\\\"find\\\"!=t&&\\\"findPersistent\\\"!=t||(d.e_stop(e),s(o,e))},i.openDialog(c,u,{value:l,selectValueOnOpen:!0,closeOnEnter:!1,onClose:function(){v(i)},onKeyDown:p,bottom:i.options.search.bottom}),n&&f&&(g(a,r,f),x(a,o))):h(a,b(a),\\\"Search for:\\\",f,function(e){e&&!r.query&&a.operation(function(){g(a,r,e),r.posFrom=r.posTo=a.getCursor(),x(a,o)})})}function x(n,r,t){n.operation(function(){var e=m(n),o=y(n,e.query,r?e.posFrom:e.posTo);(o.find(r)||(o=y(n,e.query,r?d.Pos(n.lastLine()):d.Pos(n.firstLine(),0))).find(r))&&(n.setSelection(o.from(),o.to()),n.scrollIntoView({from:o.from(),to:o.to()},20),e.posFrom=o.from(),e.posTo=o.to(),t&&t(o.from(),o.to()))})}function v(o){o.operation(function(){var e=m(o);e.lastQuery=e.query,e.query&&(e.query=e.queryText=null,o.removeOverlay(e.overlay),e.annotate&&(e.annotate.clear(),e.annotate=null))})}function b(e){return'\u003Cspan class=\\\"CodeMirror-search-label\\\">'+e.phrase(\\\"Search:\\\")+'\u003C/span> \u003Cinput type=\\\"text\\\" style=\\\"width: 10em\\\" class=\\\"CodeMirror-search-field\\\"/> \u003Cspan style=\\\"color: #888\\\" class=\\\"CodeMirror-search-hint\\\">'+e.phrase(\\\"(Use /re/ syntax for regexp search)\\\")+\\\"\u003C/span>\\\"}function C(o,r,t){o.operation(function(){for(var n,e=y(o,r);e.findNext();){\\\"string\\\"!=typeof r?(n=o.getRange(e.from(),e.to()).match(r),e.replace(t.replace(/\\\\$(\\\\d)/g,function(e,o){return n[o]}))):e.replace(t)}})}function t(f,e){var o,n;f.getOption(\\\"readOnly\\\")||(o=f.getSelection()||m(f).lastQuery,n='\u003Cspan class=\\\"CodeMirror-search-label\\\">'+(e?f.phrase(\\\"Replace all:\\\"):f.phrase(\\\"Replace:\\\"))+\\\"\u003C/span>\\\",h(f,n+(' \u003Cinput type=\\\"text\\\" style=\\\"width: 10em\\\" class=\\\"CodeMirror-search-field\\\"/> \u003Cspan style=\\\"color: #888\\\" class=\\\"CodeMirror-search-hint\\\">'+f.phrase(\\\"(Use /re/ syntax for regexp search)\\\")+\\\"\u003C/span>\\\"),n,o,function(p){p&&(p=s(p),h(f,'\u003Cspan class=\\\"CodeMirror-search-label\\\">'+f.phrase(\\\"With:\\\")+'\u003C/span> \u003Cinput type=\\\"text\\\" style=\\\"width: 10em\\\" class=\\\"CodeMirror-search-field\\\"/>',f.phrase(\\\"Replace with:\\\"),\\\"\\\",function(i){var c,l,u;i=r(i),e?C(f,p,i):(v(f),c=y(f,p,f.getCursor(\\\"from\\\")),l=function(){var e,o,n,r,t,a,s=c.from();!(e=c.findNext())&&(c=y(f,p),!(e=c.findNext())||s&&c.from().line==s.line&&c.from().ch==s.ch)||(f.setSelection(c.from(),c.to()),f.scrollIntoView({from:c.from(),to:c.to()}),n='\u003Cspan class=\\\"CodeMirror-search-label\\\">'+(a=o=f).phrase(\\\"Replace?\\\")+\\\"\u003C/span> \u003Cbutton>\\\"+a.phrase(\\\"Yes\\\")+\\\"\u003C/button> \u003Cbutton>\\\"+a.phrase(\\\"No\\\")+\\\"\u003C/button> \u003Cbutton>\\\"+a.phrase(\\\"All\\\")+\\\"\u003C/button> \u003Cbutton>\\\"+a.phrase(\\\"Stop\\\")+\\\"\u003C/button> \\\",r=f.phrase(\\\"Replace?\\\"),t=[function(){u(e)},l,function(){C(f,p,i)}],o.openConfirm?o.openConfirm(n,t):confirm(r)&&t[0]())},u=function(n){c.replace(\\\"string\\\"==typeof p?i:i.replace(/\\\\$(\\\\d)/g,function(e,o){return n[o]})),l()},l())}))}))}d.defineOption(\\\"search\\\",{bottom:!1}),d.commands.find=function(e){v(e),n(e)},d.commands.findPersistent=function(e){v(e),n(e,!1,!0)},d.commands.findPersistentNext=function(e){n(e,!1,!0,!0)},d.commands.findPersistentPrev=function(e){n(e,!0,!0,!0)},d.commands.findNext=n,d.commands.findPrev=function(e){n(e,!0)},d.commands.clearSearch=v,d.commands.replace=t,d.commands.replaceAll=function(e){t(e,!0)}});\\n\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/tiddlywiki/codemirror/addon/search/search.js\",\"module-type\":\"codemirror\"},\"$:/plugins/tiddlywiki/codemirror/addon/search/jump-to-line.js\":{\"text\":\"// CodeMirror, copyright (c) by Marijn Haverbeke and others\\n// Distributed under an MIT license: https://codemirror.net/LICENSE\\n!function(e){\\\"object\\\"==typeof exports&&\\\"object\\\"==typeof module?e(require(\\\"../../lib/codemirror\\\"),require(\\\"../dialog/dialog\\\")):\\\"function\\\"==typeof define&&define.amd?define([\\\"../../lib/codemirror\\\",\\\"../dialog/dialog\\\"],e):e(CodeMirror)}(function(e){\\\"use strict\\\";function u(e,o){var r=Number(o);return/^[-+]/.test(o)?e.getCursor().line+r:r-1}e.defineOption(\\\"search\\\",{bottom:!1}),e.commands.jumpToLine=function(t){var e,o,r,s,i,n,l=t.getCursor();o=(n=e=t).phrase(\\\"Jump to line:\\\")+' \u003Cinput type=\\\"text\\\" style=\\\"width: 10em\\\" class=\\\"CodeMirror-search-field\\\"/> \u003Cspan style=\\\"color: #888\\\" class=\\\"CodeMirror-search-hint\\\">'+n.phrase(\\\"(Use line:column or scroll% syntax)\\\")+\\\"\u003C/span>\\\",r=t.phrase(\\\"Jump to line:\\\"),s=l.line+1+\\\":\\\"+l.ch,i=function(e){var o,r;e&&((o=/^\\\\s*([\\\\+\\\\-]?\\\\d+)\\\\s*\\\\:\\\\s*(\\\\d+)\\\\s*$/.exec(e))?t.setCursor(u(t,o[1]),Number(o[2])):(o=/^\\\\s*([\\\\+\\\\-]?\\\\d+(\\\\.\\\\d+)?)\\\\%\\\\s*/.exec(e))?(r=Math.round(t.lineCount()*Number(o[1])/100),/^[-+]/.test(o[1])&&(r=l.line+r+1),t.setCursor(r-1,l.ch)):(o=/^\\\\s*\\\\:?\\\\s*([\\\\+\\\\-]?\\\\d+)\\\\s*/.exec(e))&&t.setCursor(u(t,o[1]),l.ch))},e.openDialog?e.openDialog(o,i,{value:s,selectValueOnOpen:!0,bottom:e.options.search.bottom}):i(prompt(r,s))},e.keyMap.default[\\\"Alt-G\\\"]=\\\"jumpToLine\\\"});\\n\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/tiddlywiki/codemirror/addon/search/jump-to-line.js\",\"module-type\":\"codemirror\"},\"$:/plugins/tiddlywiki/codemirror/addon/search/searchcursor.js\":{\"text\":\"// CodeMirror, copyright (c) by Marijn Haverbeke and others\\n// Distributed under an MIT license: https://codemirror.net/LICENSE\\n!function(t){\\\"object\\\"==typeof exports&&\\\"object\\\"==typeof module?t(require(\\\"../../lib/codemirror\\\")):\\\"function\\\"==typeof define&&define.amd?define([\\\"../../lib/codemirror\\\"],t):t(CodeMirror)}(function(i){\\\"use strict\\\";var p,x,L=i.Pos;function d(t,e){for(var n,r,i=null!=(r=(n=t).flags)?r:(n.ignoreCase?\\\"i\\\":\\\"\\\")+(n.global?\\\"g\\\":\\\"\\\")+(n.multiline?\\\"m\\\":\\\"\\\"),o=i,l=0;l\u003Ce.length;l++)-1==o.indexOf(e.charAt(l))&&(o+=e.charAt(l));return i==o?t:new RegExp(t.source,o)}function v(t){return/\\\\\\\\s|\\\\\\\\n|\\\\n|\\\\\\\\W|\\\\\\\\D|\\\\[\\\\^/.test(t.source)}function m(t,e,n){e=d(e,\\\"g\\\");for(var r=n.line,i=n.ch,o=t.lastLine();r\u003C=o;r++,i=0){e.lastIndex=i;var l=t.getLine(r),h=e.exec(l);if(h)return{from:L(r,h.index),to:L(r,h.index+h[0].length),match:h}}}function C(t,e,n){for(var r,i=0;i\u003C=t.length;){e.lastIndex=i;var o=e.exec(t);if(!o)break;var l=o.index+o[0].length;if(l>t.length-n)break;(!r||l>r.index+r[0].length)&&(r=o),i=o.index+1}return r}function O(t,e,n){e=d(e,\\\"g\\\");for(var r=n.line,i=n.ch,o=t.firstLine();o\u003C=r;r--,i=-1){var l=t.getLine(r),h=C(l,e,i\u003C0?0:l.length-i);if(h)return{from:L(r,h.index),to:L(r,h.index+h[0].length),match:h}}}function b(t,e,n,r){if(t.length==e.length)return n;for(var i=0,o=n+Math.max(0,t.length-e.length);;){if(i==o)return i;var l=i+o>>1,h=r(t.slice(0,l)).length;if(h==n)return l;n\u003Ch?o=l:i=1+l}}function r(n,r,t,e){var i;this.atOccurrence=!1,this.doc=n,t=t?n.clipPos(t):L(0,0),this.pos={from:t,to:t},\\\"object\\\"==typeof e?i=e.caseFold:(i=e,e=null),\\\"string\\\"==typeof r?(null==i&&(i=!1),this.matches=function(t,e){return(t?function(t,e,n,r){if(!e.length)return null;var i=r?p:x,o=i(e).split(/\\\\r|\\\\n\\\\r?/);t:for(var l=n.line,h=n.ch,s=t.firstLine()-1+o.length;s\u003C=l;l--,h=-1){var c=t.getLine(l);-1\u003Ch&&(c=c.slice(0,h));var f=i(c);if(1==o.length){var u=f.lastIndexOf(o[0]);if(-1==u)continue t;return{from:L(l,b(c,f,u,i)),to:L(l,b(c,f,u+o[0].length,i))}}var g=o[o.length-1];if(f.slice(0,g.length)==g){for(var a=1,n=l-o.length+1;a\u003Co.length-1;a++)if(i(t.getLine(n+a))!=o[a])continue t;var m=t.getLine(l+1-o.length),d=i(m);if(d.slice(d.length-o[0].length)==o[0])return{from:L(l+1-o.length,b(m,d,m.length-o[0].length,i)),to:L(l,b(c,f,g.length,i))}}}}:function(t,e,n,r){if(!e.length)return null;var i=r?p:x,o=i(e).split(/\\\\r|\\\\n\\\\r?/);t:for(var l=n.line,h=n.ch,s=t.lastLine()+1-o.length;l\u003C=s;l++,h=0){var c=t.getLine(l).slice(h),f=i(c);if(1==o.length){var u=f.indexOf(o[0]);if(-1==u)continue t;n=b(c,f,u,i)+h;return{from:L(l,b(c,f,u,i)+h),to:L(l,b(c,f,u+o[0].length,i)+h)}}var g=f.length-o[0].length;if(f.slice(g)==o[0]){for(var a=1;a\u003Co.length-1;a++)if(i(t.getLine(l+a))!=o[a])continue t;var m=t.getLine(l+o.length-1),d=i(m),v=o[o.length-1];if(d.slice(0,v.length)==v)return{from:L(l,b(c,f,g,i)+h),to:L(l+o.length-1,b(m,d,v.length,i))}}}})(n,r,e,i)}):(r=d(r,\\\"gm\\\"),e&&!1===e.multiline?this.matches=function(t,e){return(t?O:m)(n,r,e)}:this.matches=function(t,e){return(t?function(t,e,n){if(!v(e))return O(t,e,n);e=d(e,\\\"gm\\\");for(var r=1,i=t.getLine(n.line).length-n.ch,o=n.line,l=t.firstLine();l\u003C=o;){for(var h=0;h\u003Cr&&l\u003C=o;h++)var s=t.getLine(o--),c=null==c?s:s+\\\"\\\\n\\\"+c;r*=2;var f=C(c,e,i);if(f){var u=c.slice(0,f.index).split(\\\"\\\\n\\\"),g=f[0].split(\\\"\\\\n\\\"),a=o+u.length,m=u[u.length-1].length;return{from:L(a,m),to:L(a+g.length-1,1==g.length?m+g[0].length:g[g.length-1].length),match:f}}}}:function(t,e,n){if(!v(e))return m(t,e,n);e=d(e,\\\"gm\\\");for(var r=1,i=n.line,o=t.lastLine();i\u003C=o;){for(var l=0;l\u003Cr&&!(o\u003Ci);l++)var h=t.getLine(i++),s=null==s?h:s+\\\"\\\\n\\\"+h;r*=2,e.lastIndex=n.ch;var c=e.exec(s);if(c){var f=s.slice(0,c.index).split(\\\"\\\\n\\\"),u=c[0].split(\\\"\\\\n\\\"),g=n.line+f.length-1,a=f[f.length-1].length;return{from:L(g,a),to:L(g+u.length-1,1==u.length?a+u[0].length:u[u.length-1].length),match:c}}}})(n,r,e)})}x=String.prototype.normalize?(p=function(t){return t.normalize(\\\"NFD\\\").toLowerCase()},function(t){return t.normalize(\\\"NFD\\\")}):(p=function(t){return t.toLowerCase()},function(t){return t}),r.prototype={findNext:function(){return this.find(!1)},findPrevious:function(){return this.find(!0)},find:function(t){for(var e=this.matches(t,this.doc.clipPos(t?this.pos.from:this.pos.to));e&&0==i.cmpPos(e.from,e.to);)t?e.from.ch?e.from=L(e.from.line,e.from.ch-1):e=e.from.line==this.doc.firstLine()?null:this.matches(t,this.doc.clipPos(L(e.from.line-1))):e.to.ch\u003Cthis.doc.getLine(e.to.line).length?e.to=L(e.to.line,e.to.ch+1):e=e.to.line==this.doc.lastLine()?null:this.matches(t,L(e.to.line+1,0));if(e)return this.pos=e,this.atOccurrence=!0,this.pos.match||!0;var n=L(t?this.doc.firstLine():this.doc.lastLine()+1,0);return this.pos={from:n,to:n},this.atOccurrence=!1},from:function(){if(this.atOccurrence)return this.pos.from},to:function(){if(this.atOccurrence)return this.pos.to},replace:function(t,e){var n;this.atOccurrence&&(n=i.splitLines(t),this.doc.replaceRange(n,this.pos.from,this.pos.to,e),this.pos.to=L(this.pos.from.line+n.length-1,n[n.length-1].length+(1==n.length?this.pos.from.ch:0)))}},i.defineExtension(\\\"getSearchCursor\\\",function(t,e,n){return new r(this.doc,t,e,n)}),i.defineDocExtension(\\\"getSearchCursor\\\",function(t,e,n){return new r(this,t,e,n)}),i.defineExtension(\\\"selectMatches\\\",function(t,e){for(var n=[],r=this.getSearchCursor(t,this.getCursor(\\\"from\\\"),e);r.findNext()&&!(0\u003Ci.cmpPos(r.to(),this.getCursor(\\\"to\\\")));)n.push({anchor:r.from(),head:r.to()});n.length&&this.setSelections(n,0)})});\\n\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/tiddlywiki/codemirror/addon/search/searchcursor.js\",\"module-type\":\"codemirror\"},\"$:/plugins/tiddlywiki/codemirror-search-replace/readme\":{\"title\":\"$:/plugins/tiddlywiki/codemirror-search-replace/readme\",\"text\":\"This plugin enhances the [[CodeMirror|http://codemirror.net]] text editor with Search and Replace functionality. It needs the latest [[CodeMirror plugin|$:/plugins/tiddlywiki/codemirror]] to be installed\\n\\nIt adds these Keyboard Shortcuts to ~CodeMirror:\\n\\n|Shortcut |Function |h\\n|Ctrl-F / Cmd-F |Start searching |\\n|Ctrl-G / Cmd-G / Shift-F3 |Find next |\\n|Shift-Ctrl-G / Shift-Cmd-G / F3 |Find previous |\\n|Shift-Ctrl-F / Cmd-Option-F |Replace |\\n|Shift-Ctrl-R / Shift-Cmd-Option-F |Replace all |\\n|Alt-F |Persistent search (dialog doesn't autoclose, enter to find next, Shift-Enter to find previous) |\\n|Alt-G |Jump to line |\\n\\n\"}}}"},
{"title":"$:/plugins/tiddlywiki/highlight","name":"Highlight","description":"Highlight.js syntax highlighting","author":"Joao Bolila","list":"readme usage license","version":"5.2.5","plugin-type":"plugin","dependents":"","type":"application/json","text":"{\"tiddlers\":{\"$:/config/HighlightPlugin/TypeMappings/application/javascript\":{\"text\":\"javascript\"},\"$:/config/HighlightPlugin/TypeMappings/application/json\":{\"text\":\"json\"},\"$:/config/HighlightPlugin/TypeMappings/text/css\":{\"text\":\"css\"},\"$:/config/HighlightPlugin/TypeMappings/text/html\":{\"text\":\"html\"},\"$:/config/HighlightPlugin/TypeMappings/image/svg+xml\":{\"text\":\"xml\"},\"$:/config/HighlightPlugin/TypeMappings/text/x-markdown\":{\"text\":\"markdown\"},\"$:/plugins/tiddlywiki/highlight/highlight.js\":{\"text\":\"var e,n=require('$:/plugins/tiddlywiki/highlight/highlight.js'),n=function(){'use strict';var e={exports:{}};function t(n){return n instanceof Map?n.clear=n.delete=n.set=()=>{throw Error('map is read-only')}:n instanceof Set&&(n.add=n.clear=n.delete=()=>{throw Error('set is read-only')}),Object.freeze(n),Object.getOwnPropertyNames(n).forEach(e=>{e=n[e];'object'!=typeof e||Object.isFrozen(e)||t(e)}),n}e.exports=t,e.exports.default=t;var $=e.exports;class O{constructor(e){void 0===e.data&&(e.data={}),this.data=e.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}}function n(e){return e.replace(/&/g,'&amp;').replace(/\u003C/g,'&lt;').replace(/>/g,'&gt;').replace(/\\\"/g,'&quot;').replace(/'/g,'&#x27;')}function l(e,...n){const t=Object.create(null);for(const n in e)t[n]=e[n];return n.forEach(e=>{for(const n in e)t[n]=e[n]}),t}const i=e=>!!e.kind;class x{constructor(e,n){this.buffer='',this.classPrefix=n.classPrefix,e.walk(this)}addText(e){this.buffer+=n(e)}openNode(e){var n,t,a;i(e)&&(a=e.kind,a=e.sublanguage?'language-'+a:([e,n]=[a,{prefix:this.classPrefix}['prefix']],e.includes('.')?[''+n+(t=e.split('.')).shift(),...t.map((e,n)=>''+e+'_'.repeat(n+1))].join(' '):''+n+e),this.span(a))}closeNode(e){i(e)&&(this.buffer+='\u003C/span>')}value(){return this.buffer}span(e){this.buffer+=`\u003Cspan class=\\\"${e}\\\">`}}class a{constructor(){this.rootNode={children:[]},this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(e){this.top.children.push(e)}openNode(e){e={kind:e,children:[]};this.add(e),this.stack.push(e)}closeNode(){if(1\u003Cthis.stack.length)return this.stack.pop()}closeAllNodes(){for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(e){return this.constructor._walk(e,this.rootNode)}static _walk(n,e){return'string'==typeof e?n.addText(e):e.children&&(n.openNode(e),e.children.forEach(e=>this._walk(n,e)),n.closeNode(e)),n}static _collapse(e){'string'!=typeof e&&e.children&&(e.children.every(e=>'string'==typeof e)?e.children=[e.children.join('')]:e.children.forEach(e=>{a._collapse(e)}))}}class F extends a{constructor(e){super(),this.options=e}addKeyword(e,n){''!==e&&(this.openNode(n),this.addText(e),this.closeNode())}addText(e){''!==e&&this.add(e)}addSublanguage(e,n){e=e.root;e.kind=n,e.sublanguage=!0,this.add(e)}toHTML(){return new x(this,this.options).value()}finalize(){return!0}}function c(e){return e?'string'==typeof e?e:e.source:null}function r(e){return s('(?=',e,')')}function U(e){return s('(?:',e,')*')}function j(e){return s('(?:',e,')?')}function s(...e){return e.map(e=>c(e)).join('')}function d(...e){var n,t='object'==typeof(n=(t=e)[t.length-1])&&n.constructor===Object?(t.splice(t.length-1,1),n):{};return'('+(t.capture?'':'?:')+e.map(e=>c(e)).join('|')+')'}function g(e){return RegExp(e.toString()+'|').exec('').length-1}const k=/\\\\[(?:[^\\\\\\\\\\\\]]|\\\\\\\\.)*\\\\]|\\\\(\\\\??|\\\\\\\\([1-9][0-9]*)|\\\\\\\\./;function u(e,{joinWith:n}){let i=0;return e.map(e=>{var n=i+=1;let t=c(e),a='';for(;0\u003Ct.length;){const e=k.exec(t);if(!e){a+=t;break}a+=t.substring(0,e.index),t=t.substring(e.index+e[0].length),'\\\\\\\\'===e[0][0]&&e[1]?a+='\\\\\\\\'+(Number(e[1])+n):(a+=e[0],'('===e[0]&&i++)}return a}).map(e=>`(${e})`).join(n)}var e='[a-zA-Z]\\\\\\\\w*',o='[a-zA-Z_]\\\\\\\\w*',b='\\\\\\\\b\\\\\\\\d+(\\\\\\\\.\\\\\\\\d+)?',m='(-?)(\\\\\\\\b0[xX][a-fA-F0-9]+|(\\\\\\\\b\\\\\\\\d+(\\\\\\\\.\\\\\\\\d*)?|\\\\\\\\.\\\\\\\\d+)([eE][-+]?\\\\\\\\d+)?)',p='\\\\\\\\b(0b[01]+)',_={begin:'\\\\\\\\\\\\\\\\[\\\\\\\\s\\\\\\\\S]',relevance:0},P={scope:'string',begin:'\\\\'',end:'\\\\'',illegal:'\\\\\\\\n',contains:[_]},q={scope:'string',begin:'\\\"',end:'\\\"',illegal:'\\\\\\\\n',contains:[_]},h=(e,n,t={})=>{e=l({scope:'comment',begin:e,end:n,contains:[]},t),e.contains.push({scope:'doctag',begin:'[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)',end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0}),n=d('I','a','is','so','us','to','at','if','in','it','on',/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/);return e.contains.push({begin:s(/[ ]+/,'(',n,/[.]?[:]?([.][ ]|[ ])/,'){3}')}),e},K=h('//','$'),H=h('/\\\\\\\\*','\\\\\\\\*/'),Z=h('#','$'),f=Object.freeze({__proto__:null,MATCH_NOTHING_RE:/\\\\b\\\\B/,IDENT_RE:e,UNDERSCORE_IDENT_RE:o,NUMBER_RE:b,C_NUMBER_RE:m,BINARY_NUMBER_RE:p,RE_STARTERS_RE:'!|!=|!==|%|%=|&|&&|&=|\\\\\\\\*|\\\\\\\\*=|\\\\\\\\+|\\\\\\\\+=|,|-|-=|/=|/|:|;|\u003C\u003C|\u003C\u003C=|\u003C=|\u003C|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\\\\\\\?|\\\\\\\\[|\\\\\\\\{|\\\\\\\\(|\\\\\\\\^|\\\\\\\\^=|\\\\\\\\||\\\\\\\\|=|\\\\\\\\|\\\\\\\\||~',SHEBANG:(e={})=>{var n=/^#![ ]*\\\\//;return e.binary&&(e.begin=s(n,/.*\\\\b/,e.binary,/\\\\b.*/)),l({scope:'meta',begin:n,end:/$/,relevance:0,'on:begin':(e,n)=>{0!==e.index&&n.ignoreMatch()}},e)},BACKSLASH_ESCAPE:_,APOS_STRING_MODE:P,QUOTE_STRING_MODE:q,PHRASAL_WORDS_MODE:{begin:/\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b/},COMMENT:h,C_LINE_COMMENT_MODE:K,C_BLOCK_COMMENT_MODE:H,HASH_COMMENT_MODE:Z,NUMBER_MODE:{scope:'number',begin:b,relevance:0},C_NUMBER_MODE:{scope:'number',begin:m,relevance:0},BINARY_NUMBER_MODE:{scope:'number',begin:p,relevance:0},REGEXP_MODE:{begin:/(?=\\\\/[^/\\\\n]*\\\\/)/,contains:[{scope:'regexp',begin:/\\\\//,end:/\\\\/[gimuy]*/,illegal:/\\\\n/,contains:[_,{begin:/\\\\[/,end:/\\\\]/,relevance:0,contains:[_]}]}]},TITLE_MODE:{scope:'title',begin:e,relevance:0},UNDERSCORE_TITLE_MODE:{scope:'title',begin:o,relevance:0},METHOD_GUARD:{begin:'\\\\\\\\.\\\\\\\\s*[a-zA-Z_]\\\\\\\\w*',relevance:0},END_SAME_AS_BEGIN:e=>Object.assign(e,{'on:begin':(e,n)=>{n.data._beginMatch=e[1]},'on:end':(e,n)=>{n.data._beginMatch!==e[1]&&n.ignoreMatch()}})});function G(e,n){'.'===e.input[e.index-1]&&n.ignoreMatch()}const W=(n,e)=>{if(n.beforeMatch){if(n.starts)throw Error('beforeMatch cannot be used with starts');var t=Object.assign({},n);Object.keys(n).forEach(e=>{delete n[e]}),n.keywords=t.keywords,n.begin=s(t.beforeMatch,r(t.begin)),n.starts={relevance:0,contains:[Object.assign(t,{endsParent:!0})]},n.relevance=0,delete t.beforeMatch}},Q=['of','and','for','in','not','or','if','then','parent','list','value'];function X(n,a,e='keyword'){const i=Object.create(null);return'string'==typeof n?t(e,n.split(' ')):Array.isArray(n)?t(e,n):Object.keys(n).forEach(e=>{Object.assign(i,X(n[e],a,e))}),i;function t(t,e){(e=a?e.map(e=>e.toLowerCase()):e).forEach(e=>{var n,e=e.split('|');i[e[0]]=[t,(n=e[0],(e=e[1])?Number(e):(e=>Q.includes(e.toLowerCase()))(n)?0:1)]})}}const V={},M=e=>{console.error(e)},J=(e,...n)=>{console.log('WARN: '+e,...n)},E=(e,n)=>{V[e+'/'+n]||(console.log(`Deprecated as of ${e}. `+n),V[e+'/'+n]=!0)},v=Error();function Y(e,n,{key:t}){let a=0;var i=e[t],r={},s={};for(let e=1;e\u003C=n.length;e++)s[e+a]=i[e],r[e+a]=!0,a+=g(n[e-1]);e[t]=s,e[t]._emit=r,e[t]._multi=!0}function ee(r){function s(e,n){return RegExp(c(e),'m'+(r.case_insensitive?'i':'')+(r.unicodeRegex?'u':'')+(n?'g':''))}class n{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(e,n){n.position=this.position++,this.matchIndexes[this.matchAt]=n,this.regexes.push([n,e]),this.matchAt+=g(e)+1}compile(){0===this.regexes.length&&(this.exec=()=>null);var e=this.regexes.map(e=>e[1]);this.matcherRe=s(u(e,{joinWith:'|'}),!0),this.lastIndex=0}exec(e){this.matcherRe.lastIndex=this.lastIndex;var n,t,e=this.matcherRe.exec(e);return e?(n=e.findIndex((e,n)=>0\u003Cn&&void 0!==e),t=this.matchIndexes[n],e.splice(0,n),Object.assign(e,t)):null}}class o{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(e){if(this.multiRegexes[e])return this.multiRegexes[e];const t=new n;return this.rules.slice(e).forEach(([e,n])=>t.addRule(e,n)),t.compile(),this.multiRegexes[e]=t}resumingScanAtSamePosition(){return 0!==this.regexIndex}considerAll(){this.regexIndex=0}addRule(e,n){this.rules.push([e,n]),'begin'===n.type&&this.count++}exec(e){const n=this.getMatcher(this.regexIndex);n.lastIndex=this.lastIndex;let t=n.exec(e);if(this.resumingScanAtSamePosition()&&(!t||t.index!==this.lastIndex)){const n=this.getMatcher(0);n.lastIndex=this.lastIndex+1,t=n.exec(e)}return t&&(this.regexIndex+=t.position+1,this.regexIndex===this.count)&&this.considerAll(),t}}if(r.compilerExtensions||(r.compilerExtensions=[]),r.contains&&r.contains.includes('self'))throw Error('ERR: contains `self` is not supported at the top-level of a language. See documentation.');return r.classNameAliases=l(r.classNameAliases||{}),function n(t,a){const i=t;if(!t.isCompiled){[function(e,n){void 0!==e.className&&(e.scope=e.className,delete e.className)},function(e,n){if(e.match){if(e.begin||e.end)throw Error('begin & end are not supported with match');e.begin=e.match,delete e.match}},function(e){if((n=e).scope&&'object'==typeof n.scope&&null!==n.scope&&(n.beginScope=n.scope,delete n.scope),'string'==typeof e.beginScope&&(e.beginScope={_wrap:e.beginScope}),'string'==typeof e.endScope&&(e.endScope={_wrap:e.endScope}),n=e,Array.isArray(n.begin)){if(n.skip||n.excludeBegin||n.returnBegin)throw M('skip, excludeBegin, returnBegin not compatible with beginScope: {}'),v;if('object'!=typeof n.beginScope||null===n.beginScope)throw M('beginScope must be object'),v;Y(n,n.begin,{key:'beginScope'}),n.begin=u(n.begin,{joinWith:''})}var n=e;if(Array.isArray(n.end)){if(n.skip||n.excludeEnd||n.returnEnd)throw M('skip, excludeEnd, returnEnd not compatible with endScope: {}'),v;if('object'!=typeof n.endScope||null===n.endScope)throw M('endScope must be object'),v;Y(n,n.end,{key:'endScope'}),n.end=u(n.end,{joinWith:''})}},W].forEach(e=>e(t,a)),r.compilerExtensions.forEach(e=>e(t,a)),t.__beforeBegin=null,[function(e,n){n&&e.beginKeywords&&(e.begin='\\\\\\\\b('+e.beginKeywords.split(' ').join('|')+')(?!\\\\\\\\.)(?=\\\\\\\\b|\\\\\\\\s)',e.__beforeBegin=G,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords,void 0===e.relevance)&&(e.relevance=0)},function(e,n){Array.isArray(e.illegal)&&(e.illegal=d(...e.illegal))},function(e,n){void 0===e.relevance&&(e.relevance=1)}].forEach(e=>e(t,a)),t.isCompiled=!0;let e=null;'object'==typeof t.keywords&&t.keywords.$pattern&&(t.keywords=Object.assign({},t.keywords),e=t.keywords.$pattern,delete t.keywords.$pattern),e=e||/\\\\w+/,t.keywords&&(t.keywords=X(t.keywords,r.case_insensitive)),i.keywordPatternRe=s(e,!0),a&&(t.begin||(t.begin=/\\\\B|\\\\b/),i.beginRe=s(i.begin),t.end||t.endsWithParent||(t.end=/\\\\B|\\\\b/),t.end&&(i.endRe=s(i.end)),i.terminatorEnd=c(i.end)||'',t.endsWithParent)&&a.terminatorEnd&&(i.terminatorEnd+=(t.end?'|':'')+a.terminatorEnd),t.illegal&&(i.illegalRe=s(t.illegal)),t.contains||(t.contains=[]),t.contains=[].concat(...t.contains.map(e=>{return(n='self'===e?t:e).variants&&!n.cachedVariants&&(n.cachedVariants=n.variants.map(e=>l(n,{variants:null},e))),n.cachedVariants||(function e(n){return!!n&&(n.endsWithParent||e(n.starts))}(n)?l(n,{starts:n.starts?l(n.starts):null}):Object.isFrozen(n)?l(n):n);var n})),t.contains.forEach(e=>{n(e,i)}),t.starts&&n(t.starts,a),i.matcher=(e=>{const n=new o;return e.contains.forEach(e=>n.addRule(e.begin,{rule:e,type:'begin'})),e.terminatorEnd&&n.addRule(e.terminatorEnd,{type:'end'}),e.illegal&&n.addRule(e.illegal,{type:'illegal'}),n})(i)}return i}(r)}class ne extends Error{constructor(e,n){super(e),this.name='HTMLInjectionError',this.html=n}}const A=n,te=l,ae=Symbol('nomatch');{var y={};const D=Object.create(null),I=Object.create(null),L=[];let x=!0;const B='Could not find the language \\\\'{}\\\\', did you forget to load/include a language module?',z={disableAutodetect:!0,name:'Plain text',contains:[]};let k={ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\\\\blang(?:uage)?-([\\\\w-]+)\\\\b/i,classPrefix:'hljs-',cssSelector:'pre code',languages:null,__emitter:F};function ie(e){return k.noHighlightRe.test(e)}function re(e,n,t){let a='',i='';'object'==typeof n?(a=e,t=n.ignoreIllegals,i=n.language):(E('10.7.0','highlight(lang, code, ...args) has been deprecated.'),E('10.7.0','Please use highlight(code, options) instead.\\\\nhttps://github.com/highlightjs/highlight.js/issues/2277'),i=e,a=n),void 0===t&&(t=!0);e={code:a,language:i},R('before:highlight',e),n=e.result||S(e.language,e.code,t);return n.code=e.code,R('after:highlight',n),n}function S(c,d,g,e){const s=Object.create(null);function r(){if(!_.keywords)return h.addText(E);let e=0,n=(_.keywordPatternRe.lastIndex=0,_.keywordPatternRe.exec(E)),t='';for(;n;){t+=E.substring(e,n.index);var a=o.case_insensitive?n[0].toLowerCase():n[0],i=(r=a,_.keywords[r]);if(i){const[e,r]=i;if(h.addText(t),t='',s[a]=(s[a]||0)+1,s[a]\u003C=7&&(v+=r),e.startsWith('_'))t+=n[0];else{const t=o.classNameAliases[e]||e;h.addKeyword(n[0],t)}}else t+=n[0];e=_.keywordPatternRe.lastIndex,n=_.keywordPatternRe.exec(E)}var r;t+=E.substr(e),h.addText(t)}function u(){(null!=_.subLanguage?()=>{if(''!==E){let e=null;if('string'==typeof _.subLanguage){if(!D[_.subLanguage])return void h.addText(E);e=S(_.subLanguage,E,!0,l[_.subLanguage]),l[_.subLanguage]=e._top}else e=C(E,_.subLanguage.length?_.subLanguage:null);0\u003C_.relevance&&(v+=e.relevance),h.addSublanguage(e._emitter,e.language)}}:r)(),E=''}function i(e,n){let t=1;for(;void 0!==n[t];){var a,i;e._emit[t]?(a=o.classNameAliases[e[t]]||e[t],i=n[t],a?h.addKeyword(i,a):(E=i,r(),E=''),t++):t++}}function b(e,n){e.scope&&'string'==typeof e.scope&&h.openNode(o.classNameAliases[e.scope]||e.scope),e.beginScope&&(e.beginScope._wrap?(h.addKeyword(E,o.classNameAliases[e.beginScope._wrap]||e.beginScope._wrap),E=''):e.beginScope._multi&&(i(e.beginScope,n),E='')),_=Object.create(e,{parent:{value:_}})}function m(e){var n=e[0],t=d.substr(e.index),a=function e(n,t,a){let i=(e=>(e=e&&e.exec(a))&&0===e.index)(n.endRe);if(i){if(n['on:end']){const a=new O(n);n['on:end'](t,a),a.isMatchIgnored&&(i=!1)}if(i){for(;n.endsParent&&n.parent;)n=n.parent;return n}}if(n.endsWithParent)return e(n.parent,t,a)}(_,e,t);if(!a)return ae;t=_;for(_.endScope&&_.endScope._wrap?(u(),h.addKeyword(n,_.endScope._wrap)):_.endScope&&_.endScope._multi?(u(),i(_.endScope,e)):t.skip?E+=n:(t.returnEnd||t.excludeEnd||(E+=n),u(),t.excludeEnd&&(E=n));_.scope&&h.closeNode(),_.skip||_.subLanguage||(v+=_.relevance),(_=_.parent)!==a.parent;);return a.starts&&b(a.starts,e),t.returnEnd?0:n.length}let p={};function n(e,n){var t,a=n&&n[0];if(E+=e,null==a)return u(),0;if('begin'===p.type&&'end'===n.type&&p.index===n.index&&''===a){if(E+=d.slice(n.index,n.index+1),x)return 1;{const e=Error(`0 width match regex (${c})`);throw e.languageName=c,e.badRule=p.rule,e}}if('begin'===(p=n).type){var i=n;const r=i[0],s=i.rule,o=new O(s),l=[s.__beforeBegin,s['on:begin']];for(const s of l)if(s&&(s(i,o),o.isMatchIgnored))return t=r,0===_.matcher.regexIndex?(E+=t[0],1):(N=!0,0);return s.skip?E+=r:(s.excludeBegin&&(E+=r),u(),s.returnBegin||s.excludeBegin||(E=r)),b(s,i),s.returnBegin?0:r.length}if('illegal'===n.type&&!g){const c=Error('Illegal lexeme \\\"'+a+'\\\" for mode \\\"'+(_.scope||'\u003Cunnamed>')+'\\\"');throw c.mode=_,c}if('end'===n.type){const c=m(n);if(c!==ae)return c}if('illegal'===n.type&&''===a)return 1;if(1e5\u003Cw&&w>3*n.index)throw Error('potential infinite loop, way more iterations than matches');return E+=a,a.length}const o=T(c);if(!o)throw M(B.replace('{}',c)),Error('Unknown language: \\\"'+c+'\\\"');var t=ee(o);let a='',_=e||t;const l={},h=new k.__emitter(k);var f=[];for(let e=_;e!==o;e=e.parent)e.scope&&f.unshift(e.scope);f.forEach(e=>h.openNode(e));let E='',v=0,y=0,w=0,N=!1;try{for(_.matcher.considerAll();;){w++,N?N=!1:_.matcher.considerAll(),_.matcher.lastIndex=y;const c=_.matcher.exec(d);if(!c)break;const D=n(d.substring(y,c.index),c);y=c.index+D}return n(d.substr(y)),h.closeAllNodes(),h.finalize(),a=h.toHTML(),{language:c,value:a,relevance:v,illegal:!1,_emitter:h,_top:_}}catch(e){if(e.message&&e.message.includes('Illegal'))return{language:c,value:A(d),illegal:!0,relevance:0,_illegalBy:{message:e.message,index:y,context:d.slice(y-100,y+100),mode:e.mode,resultSoFar:a},_emitter:h};if(x)return{language:c,value:A(d),illegal:!1,relevance:0,errorRaised:e,_emitter:h,_top:_};throw e}}function C(n,e){e=e||k.languages||Object.keys(D);t=n,(a={value:A(t),illegal:!1,relevance:0,_top:z,_emitter:new k.__emitter(k)})._emitter.addText(t);var t=a,a=e.filter(T).filter(oe).map(e=>S(e,n,!1)),e=(a.unshift(t),a.sort((e,n)=>{if(e.relevance!==n.relevance)return n.relevance-e.relevance;if(e.language&&n.language){if(T(e.language).supersetOf===n.language)return 1;if(T(n.language).supersetOf===e.language)return-1}return 0})),[t,a]=e,e=t;return e.secondBest=a,e}function w(e){var n=(e=>{let n=e.className+' ';n+=e.parentNode?e.parentNode.className:'';var t=k.languageDetectRe.exec(n);if(t){const n=T(t[1]);return n||(J(B.replace('{}',t[1])),J('Falling back to no-highlight mode for this block.',e)),n?t[1]:'no-highlight'}return n.split(/\\\\s+/).find(e=>ie(e)||T(e))})(e);if(!ie(n)){if(R('before:highlightElement',{el:e,language:n}),0\u003Ce.children.length&&(k.ignoreUnescapedHTML||(console.warn('One of your code blocks includes unescaped HTML. This is a potentially serious security risk.'),console.warn('https://github.com/highlightjs/highlight.js/wiki/security'),console.warn('The element with unescaped HTML:'),console.warn(e)),k.throwUnescapedHTML))throw new ne('One of your code blocks includes unescaped HTML.',e.innerHTML);var t=e.textContent,a=n?re(t,{language:n,ignoreIllegals:!0}):C(t),i=(e.innerHTML=a.value,e),r=a.language;n=n&&I[n]||r,i.classList.add('hljs'),i.classList.add('language-'+n),e.result={language:a.language,re:a.relevance,relevance:a.relevance},a.secondBest&&(e.secondBest={language:a.secondBest.language,relevance:a.secondBest.relevance}),R('after:highlightElement',{el:e,result:a,text:t})}}let e=!1;function N(){'loading'!==document.readyState?document.querySelectorAll(k.cssSelector).forEach(w):e=!0}function T(e){return e=(e||'').toLowerCase(),D[e]||D[I[e]]}function se(e,{languageName:n}){(e='string'==typeof e?[e]:e).forEach(e=>{I[e.toLowerCase()]=n})}function oe(e){e=T(e);return e&&!e.disableAutodetect}function R(e,n){const t=e;L.forEach(e=>{e[t]&&e[t](n)})}'undefined'!=typeof window&&window.addEventListener&&window.addEventListener('DOMContentLoaded',()=>{e&&N()},!1),Object.assign(y,{highlight:re,highlightAuto:C,highlightAll:N,highlightElement:w,highlightBlock:e=>(E('10.7.0','highlightBlock will be removed entirely in v12.0'),E('10.7.0','Please use highlightElement now.'),w(e)),configure:e=>{k=te(k,e)},initHighlighting:()=>{N(),E('10.6.0','initHighlighting() deprecated. Use highlightAll() now.')},initHighlightingOnLoad:()=>{N(),E('10.6.0','initHighlightingOnLoad() deprecated. Use highlightAll() now.')},registerLanguage:(n,e)=>{let t=null;try{t=e(y)}catch(e){if(M('Language definition for \\\\'{}\\\\' could not be registered.'.replace('{}',n)),!x)throw e;M(e),t=z}t.name||(t.name=n),(D[n]=t).rawDefinition=e.bind(null,y),t.aliases&&se(t.aliases,{languageName:n})},unregisterLanguage:e=>{delete D[e];for(const D of Object.keys(I))I[D]===e&&delete I[D]},listLanguages:()=>Object.keys(D),getLanguage:T,registerAliases:se,autoDetection:oe,inherit:te,addPlugin:e=>{var n;(n=e)['before:highlightBlock']&&!n['before:highlightElement']&&(n['before:highlightElement']=e=>{n['before:highlightBlock'](Object.assign({block:e.el},e))}),n['after:highlightBlock']&&!n['after:highlightElement']&&(n['after:highlightElement']=e=>{n['after:highlightBlock'](Object.assign({block:e.el},e))}),L.push(e)}}),y.debugMode=()=>{x=!1},y.safeMode=()=>{x=!0},y.versionString='11.4.0',y.regex={concat:s,lookahead:r,either:d,optional:j,anyNumberOfTimes:U};for(const y in f)'object'==typeof f[y]&&$(f[y]);return Object.assign(y,f),y}}();'object'==typeof exports&&'undefined'!=typeof module&&(module.exports=n),n.registerLanguage('c',e=>{var n=e.regex,t=e.COMMENT('//','$',{contains:[{begin:/\\\\\\\\\\\\n/}]}),a='[a-zA-Z_]\\\\\\\\w*::',i='(decltype\\\\\\\\(auto\\\\\\\\)|'+n.optional(a)+'[a-zA-Z_]\\\\\\\\w*'+n.optional('\u003C[^\u003C>]+>')+')',r={className:'type',variants:[{begin:'\\\\\\\\b[a-z\\\\\\\\d_]*_t\\\\\\\\b'},{match:/\\\\batomic_[a-z]{3,6}\\\\b/}]},s={className:'string',variants:[{begin:'(u8?|U|L)?\\\"',end:'\\\"',illegal:'\\\\\\\\n',contains:[e.BACKSLASH_ESCAPE]},{begin:'(u8?|U|L)?\\\\'(\\\\\\\\\\\\\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\\\\\\\S)|.)',end:'\\\\'',illegal:'.'},e.END_SAME_AS_BEGIN({begin:/(?:u8?|U|L)?R\\\"([^()\\\\\\\\ ]{0,16})\\\\(/,end:/\\\\)([^()\\\\\\\\ ]{0,16})\\\"/})]},o={className:'number',variants:[{begin:'\\\\\\\\b(0b[01\\\\']+)'},{begin:'(-?)\\\\\\\\b([\\\\\\\\d\\\\']+(\\\\\\\\.[\\\\\\\\d\\\\']*)?|\\\\\\\\.[\\\\\\\\d\\\\']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)'},{begin:'(-?)(\\\\\\\\b0[xX][a-fA-F0-9\\\\']+|(\\\\\\\\b[\\\\\\\\d\\\\']+(\\\\\\\\.[\\\\\\\\d\\\\']*)?|\\\\\\\\.[\\\\\\\\d\\\\']+)([eE][-+]?[\\\\\\\\d\\\\']+)?)'}],relevance:0},l={className:'meta',begin:/#\\\\s*[a-z]+\\\\b/,end:/$/,keywords:{keyword:'if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include'},contains:[{begin:/\\\\\\\\\\\\n/,relevance:0},e.inherit(s,{className:'string'}),{className:'string',begin:/\u003C.*?>/},t,e.C_BLOCK_COMMENT_MODE]},c={className:'title',begin:n.optional(a)+e.IDENT_RE,relevance:0},n=n.optional(a)+e.IDENT_RE+'\\\\\\\\s*\\\\\\\\(',a={keyword:['asm','auto','break','case','continue','default','do','else','enum','extern','for','fortran','goto','if','inline','register','restrict','return','sizeof','struct','switch','typedef','union','volatile','while','_Alignas','_Alignof','_Atomic','_Generic','_Noreturn','_Static_assert','_Thread_local','alignas','alignof','noreturn','static_assert','thread_local','_Pragma'],type:['float','double','signed','unsigned','int','short','long','char','void','_Bool','_Complex','_Imaginary','_Decimal32','_Decimal64','_Decimal128','const','static','complex','bool','imaginary'],literal:'true false NULL',built_in:'std string wstring cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set pair bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap priority_queue make_pair array shared_ptr abort terminate abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf future isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf endl initializer_list unique_ptr'},d=[l,r,t,e.C_BLOCK_COMMENT_MODE,o,s],g={variants:[{begin:/=/,end:/;/},{begin:/\\\\(/,end:/\\\\)/},{beginKeywords:'new throw return else',end:/;/}],keywords:a,contains:d.concat([{begin:/\\\\(/,end:/\\\\)/,keywords:a,contains:d.concat(['self']),relevance:0}]),relevance:0},i={begin:'('+i+'[\\\\\\\\*&\\\\\\\\s]+)+'+n,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:a,illegal:/[^\\\\w\\\\s\\\\*&:\u003C>.]/,contains:[{begin:'decltype\\\\\\\\(auto\\\\\\\\)',keywords:a,relevance:0},{begin:n,returnBegin:!0,contains:[e.inherit(c,{className:'title.function'})],relevance:0},{relevance:0,match:/,/},{className:'params',begin:/\\\\(/,end:/\\\\)/,keywords:a,relevance:0,contains:[t,e.C_BLOCK_COMMENT_MODE,s,o,r,{begin:/\\\\(/,end:/\\\\)/,keywords:a,relevance:0,contains:['self',t,e.C_BLOCK_COMMENT_MODE,s,o,r]}]},r,t,e.C_BLOCK_COMMENT_MODE,l]};return{name:'C',aliases:['h'],keywords:a,disableAutodetect:!0,illegal:'\u003C/',contains:[].concat(g,i,d,[l,{begin:e.IDENT_RE+'::',keywords:a},{className:'class',beginKeywords:'enum class struct union',end:/[{;:\u003C>=]/,contains:[{beginKeywords:'final class struct'},e.TITLE_MODE]}]),exports:{preprocessor:l,strings:s,keywords:a}}}),n.registerLanguage('xml',e=>{var n=e.regex,t=n.concat(/[A-Z_]/,n.optional(/[A-Z0-9_.-]*:/),/[A-Z0-9_.-]*/),a={className:'symbol',begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},i={begin:/\\\\s/,contains:[{className:'keyword',begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\\\\n/}]},r=e.inherit(i,{begin:/\\\\(/,end:/\\\\)/}),s=e.inherit(e.APOS_STRING_MODE,{className:'string'}),o=e.inherit(e.QUOTE_STRING_MODE,{className:'string'}),l={endsWithParent:!0,illegal:/\u003C/,relevance:0,contains:[{className:'attr',begin:/[A-Za-z0-9._:-]+/,relevance:0},{begin:/=\\\\s*/,relevance:0,contains:[{className:'string',endsParent:!0,variants:[{begin:/\\\"/,end:/\\\"/,contains:[a]},{begin:/'/,end:/'/,contains:[a]},{begin:/[^\\\\s\\\"'=\u003C>`]+/}]}]}]};return{name:'HTML, XML',aliases:['html','xhtml','rss','atom','xjb','xsd','xsl','plist','wsf','svg'],case_insensitive:!0,contains:[{className:'meta',begin:/\u003C![a-z]/,end:/>/,relevance:10,contains:[i,o,s,r,{begin:/\\\\[/,end:/\\\\]/,contains:[{className:'meta',begin:/\u003C![a-z]/,end:/>/,contains:[i,r,o,s]}]}]},e.COMMENT(/\u003C!--/,/-->/,{relevance:10}),{begin:/\u003C!\\\\[CDATA\\\\[/,end:/\\\\]\\\\]>/,relevance:10},a,{className:'meta',begin:/\u003C\\\\?xml/,end:/\\\\?>/,relevance:10},{className:'tag',begin:/\u003Cstyle(?=\\\\s|>)/,end:/>/,keywords:{name:'style'},contains:[l],starts:{end:/\u003C\\\\/style>/,returnEnd:!0,subLanguage:['css','xml']}},{className:'tag',begin:/\u003Cscript(?=\\\\s|>)/,end:/>/,keywords:{name:'script'},contains:[l],starts:{end:/\u003C\\\\/script>/,returnEnd:!0,subLanguage:['javascript','handlebars','xml']}},{className:'tag',begin:/\u003C>|\u003C\\\\/>/},{className:'tag',begin:n.concat(/\u003C/,n.lookahead(n.concat(t,n.either(/\\\\/>/,/>/,/\\\\s/)))),end:/\\\\/?>/,contains:[{className:'name',begin:t,relevance:0,starts:l}]},{className:'tag',begin:n.concat(/\u003C\\\\//,n.lookahead(n.concat(t,/>/))),contains:[{className:'name',begin:t,relevance:0},{begin:/>/,relevance:0,endsParent:!0}]}]}}),n.registerLanguage('markdown',e=>{var n={begin:/\u003C\\\\/?[A-Za-z_]/,end:'>',subLanguage:'xml',relevance:0},e={variants:[{begin:/\\\\[.+?\\\\]\\\\[.*?\\\\]/,relevance:0},{begin:/\\\\[.+?\\\\]\\\\(((data|javascript|mailto):|(?:http|ftp)s?:\\\\/\\\\/).*?\\\\)/,relevance:2},{begin:e.regex.concat(/\\\\[.+?\\\\]\\\\(/,/[A-Za-z][A-Za-z0-9+.-]*/,/:\\\\/\\\\/.*?\\\\)/),relevance:2},{begin:/\\\\[.+?\\\\]\\\\([./?&#].*?\\\\)/,relevance:1},{begin:/\\\\[.*?\\\\]\\\\(.*?\\\\)/,relevance:0}],returnBegin:!0,contains:[{match:/\\\\[(?=\\\\])/},{className:'string',relevance:0,begin:'\\\\\\\\[',end:'\\\\\\\\]',excludeBegin:!0,returnEnd:!0},{className:'link',relevance:0,begin:'\\\\\\\\]\\\\\\\\(',end:'\\\\\\\\)',excludeBegin:!0,excludeEnd:!0},{className:'symbol',relevance:0,begin:'\\\\\\\\]\\\\\\\\[',end:'\\\\\\\\]',excludeBegin:!0,excludeEnd:!0}]},t={className:'strong',contains:[],variants:[{begin:/_{2}/,end:/_{2}/},{begin:/\\\\*{2}/,end:/\\\\*{2}/}]},a={className:'emphasis',contains:[],variants:[{begin:/\\\\*(?!\\\\*)/,end:/\\\\*/},{begin:/_(?!_)/,end:/_/,relevance:0}]};t.contains.push(a),a.contains.push(t);let i=[n,e];return t.contains=t.contains.concat(i),a.contains=a.contains.concat(i),{name:'Markdown',aliases:['md','mkdown','mkd'],contains:[{className:'section',variants:[{begin:'^#{1,6}',end:'$',contains:i=i.concat(t,a)},{begin:'(?=^.+?\\\\\\\\n[=-]{2,}$)',contains:[{begin:'^[=-]*$'},{begin:'^',end:'\\\\\\\\n',contains:i}]}]},n,{className:'bullet',begin:'^[ \\\\t]*([*+-]|(\\\\\\\\d+\\\\\\\\.))(?=\\\\\\\\s+)',end:'\\\\\\\\s+',excludeEnd:!0},t,a,{className:'quote',begin:'^>\\\\\\\\s+',contains:i,end:'$'},{className:'code',variants:[{begin:'(`{3,})[^`](.|\\\\\\\\n)*?\\\\\\\\1`*[ ]*'},{begin:'(~{3,})[^~](.|\\\\\\\\n)*?\\\\\\\\1~*[ ]*'},{begin:'```',end:'```+[ ]*$'},{begin:'~~~',end:'~~~+[ ]*$'},{begin:'`.+?`'},{begin:'(?=^( {4}|\\\\\\\\t))',contains:[{begin:'^( {4}|\\\\\\\\t)',end:'(\\\\\\\\n)$'}],relevance:0}]},{begin:'^[-\\\\\\\\*]{3,}',end:'$'},e,{begin:/^\\\\[[^\\\\n]+\\\\]:/,returnBegin:!0,contains:[{className:'symbol',begin:/\\\\[/,end:/\\\\]/,excludeBegin:!0,excludeEnd:!0},{className:'link',begin:/:\\\\s*/,end:/$/,excludeBegin:!0}]}]}}),e=(()=>{'use strict';return e=>{var n=e.regex,t={},a={begin:/\\\\$\\\\{/,end:/\\\\}/,contains:['self',{begin:/:-/,contains:[t]}]},n=(Object.assign(t,{className:'variable',variants:[{begin:n.concat(/\\\\$[\\\\w\\\\d#@][\\\\w\\\\d_]*/,'(?![\\\\\\\\w\\\\\\\\d])(?![$])')},a]}),{className:'subst',begin:/\\\\$\\\\(/,end:/\\\\)/,contains:[e.BACKSLASH_ESCAPE]}),a={begin:/\u003C\u003C-?\\\\s*(?=\\\\w+)/,starts:{contains:[e.END_SAME_AS_BEGIN({begin:/(\\\\w+)/,end:/(\\\\w+)/,className:'string'})]}},i={className:'string',begin:/\\\"/,end:/\\\"/,contains:[e.BACKSLASH_ESCAPE,t,n]},n=(n.contains.push(i),{begin:/\\\\$\\\\(\\\\(/,end:/\\\\)\\\\)/,contains:[{begin:/\\\\d+#[0-9a-f]+/,className:'number'},e.NUMBER_MODE,t]}),r=e.SHEBANG({binary:'(fish|bash|zsh|sh|csh|ksh|tcsh|dash|scsh)',relevance:10}),s={className:'function',begin:/\\\\w[\\\\w\\\\d_]*\\\\s*\\\\(\\\\s*\\\\)\\\\s*\\\\{/,returnBegin:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/\\\\w[\\\\w\\\\d_]*/})],relevance:0};return{name:'Bash',aliases:['sh'],keywords:{$pattern:/\\\\b[a-z._-]+\\\\b/,keyword:['if','then','else','elif','fi','for','while','in','do','done','case','esac','function'],literal:['true','false'],built_in:['break','cd','continue','eval','exec','exit','export','getopts','hash','pwd','readonly','return','shift','test','times','trap','umask','unset','alias','bind','builtin','caller','command','declare','echo','enable','help','let','local','logout','mapfile','printf','read','readarray','source','type','typeset','ulimit','unalias','set','shopt','autoload','bg','bindkey','bye','cap','chdir','clone','comparguments','compcall','compctl','compdescribe','compfiles','compgroups','compquote','comptags','comptry','compvalues','dirs','disable','disown','echotc','echoti','emulate','fc','fg','float','functions','getcap','getln','history','integer','jobs','kill','limit','log','noglob','popd','print','pushd','pushln','rehash','sched','setcap','setopt','stat','suspend','ttyctl','unfunction','unhash','unlimit','unsetopt','vared','wait','whence','where','which','zcompile','zformat','zftp','zle','zmodload','zparseopts','zprof','zpty','zregexparse','zsocket','zstyle','ztcp','chcon','chgrp','chown','chmod','cp','dd','df','dir','dircolors','ln','ls','mkdir','mkfifo','mknod','mktemp','mv','realpath','rm','rmdir','shred','sync','touch','truncate','vdir','b2sum','base32','base64','cat','cksum','comm','csplit','cut','expand','fmt','fold','head','join','md5sum','nl','numfmt','od','paste','ptx','pr','sha1sum','sha224sum','sha256sum','sha384sum','sha512sum','shuf','sort','split','sum','tac','tail','tr','tsort','unexpand','uniq','wc','arch','basename','chroot','date','dirname','du','echo','env','expr','factor','groups','hostid','id','link','logname','nice','nohup','nproc','pathchk','pinky','printenv','printf','pwd','readlink','runcon','seq','sleep','stat','stdbuf','stty','tee','test','timeout','tty','uname','unlink','uptime','users','who','whoami','yes']},contains:[r,e.SHEBANG(),s,n,e.HASH_COMMENT_MODE,a,{match:/(\\\\/[a-z._-]+)+/},i,{className:'',begin:/\\\\\\\\\\\"/},{className:'string',begin:/'/,end:/'/},t]}}})(),n.registerLanguage('bash',e),n.registerLanguage('dockerfile',e=>({name:'Dockerfile',aliases:['docker'],case_insensitive:!0,keywords:['from','maintainer','expose','env','arg','user','onbuild','stopsignal'],contains:[e.HASH_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE,{beginKeywords:'run cmd entrypoint volume add copy workdir label healthcheck shell',starts:{end:/[^\\\\\\\\]$/,subLanguage:'bash'}}],illegal:'\u003C/'})),e=(()=>{'use strict';var e='\\\\\\\\.([0-9](_*[0-9])*)',n='[0-9a-fA-F](_*[0-9a-fA-F])*',d={className:'number',variants:[{begin:`(\\\\\\\\b([0-9](_*[0-9])*)((${e})|\\\\\\\\.)?|(${e}))[eE][+-]?([0-9](_*[0-9])*)[fFdD]?\\\\\\\\b`},{begin:`\\\\\\\\b([0-9](_*[0-9])*)((${e})[fFdD]?\\\\\\\\b|\\\\\\\\.([fFdD]\\\\\\\\b)?)`},{begin:`(${e})[fFdD]?\\\\\\\\b`},{begin:'\\\\\\\\b([0-9](_*[0-9])*)[fFdD]\\\\\\\\b'},{begin:`\\\\\\\\b0[xX]((${n})\\\\\\\\.?|(${n})?\\\\\\\\.(${n}))[pP][+-]?([0-9](_*[0-9])*)[fFdD]?\\\\\\\\b`},{begin:'\\\\\\\\b(0|[1-9](_*[0-9])*)[lL]?\\\\\\\\b'},{begin:`\\\\\\\\b0[xX](${n})[lL]?\\\\\\\\b`},{begin:'\\\\\\\\b0(_*[0-7])*[lL]?\\\\\\\\b'},{begin:'\\\\\\\\b0[bB][01](_*[01])*[lL]?\\\\\\\\b'}],relevance:0};return e=>{var n={keyword:'abstract as val var vararg get set class object open private protected public noinline crossinline dynamic final enum if else do while for when throw try catch finally import package is in fun override companion reified inline lateinit init interface annotation data sealed internal infix operator out by constructor super tailrec where const inner suspend typealias external expect actual',built_in:'Byte Short Char Int Long Boolean Float Double Void Unit Nothing',literal:'true false null'},t={className:'symbol',begin:e.UNDERSCORE_IDENT_RE+'@'},a={className:'subst',begin:/\\\\$\\\\{/,end:/\\\\}/,contains:[e.C_NUMBER_MODE]},i={className:'variable',begin:'\\\\\\\\$'+e.UNDERSCORE_IDENT_RE},i={className:'string',variants:[{begin:'\\\"\\\"\\\"',end:'\\\"\\\"\\\"(?=[^\\\"])',contains:[i,a]},{begin:'\\\\'',end:'\\\\'',illegal:/\\\\n/,contains:[e.BACKSLASH_ESCAPE]},{begin:'\\\"',end:'\\\"',illegal:/\\\\n/,contains:[e.BACKSLASH_ESCAPE,i,a]}]},a=(a.contains.push(i),{className:'meta',begin:'@(?:file|property|field|get|set|receiver|param|setparam|delegate)\\\\\\\\s*:(?:\\\\\\\\s*'+e.UNDERSCORE_IDENT_RE+')?'}),r={className:'meta',begin:'@'+e.UNDERSCORE_IDENT_RE,contains:[{begin:/\\\\(/,end:/\\\\)/,contains:[e.inherit(i,{className:'string'})]}]},s=d,o=e.COMMENT('/\\\\\\\\*','\\\\\\\\*/',{contains:[e.C_BLOCK_COMMENT_MODE]}),l={variants:[{className:'type',begin:e.UNDERSCORE_IDENT_RE},{begin:/\\\\(/,end:/\\\\)/,contains:[]}]},c=l;return c.variants[1].contains=[l],l.variants[1].contains=[c],{name:'Kotlin',aliases:['kt','kts'],keywords:n,contains:[e.COMMENT('/\\\\\\\\*\\\\\\\\*','\\\\\\\\*/',{relevance:0,contains:[{className:'doctag',begin:'@[A-Za-z]+'}]}),e.C_LINE_COMMENT_MODE,o,{className:'keyword',begin:/\\\\b(break|continue|return|this)\\\\b/,starts:{contains:[{className:'symbol',begin:/@\\\\w+/}]}},t,a,r,{className:'function',beginKeywords:'fun',end:'[(]|$',returnBegin:!0,excludeEnd:!0,keywords:n,relevance:5,contains:[{begin:e.UNDERSCORE_IDENT_RE+'\\\\\\\\s*\\\\\\\\(',returnBegin:!0,relevance:0,contains:[e.UNDERSCORE_TITLE_MODE]},{className:'type',begin:/\u003C/,end:/>/,keywords:'reified',relevance:0},{className:'params',begin:/\\\\(/,end:/\\\\)/,endsParent:!0,keywords:n,relevance:0,contains:[{begin:/:/,end:/[=,\\\\/]/,endsWithParent:!0,contains:[l,e.C_LINE_COMMENT_MODE,o],relevance:0},e.C_LINE_COMMENT_MODE,o,a,r,i,e.C_NUMBER_MODE]},o]},{className:'class',beginKeywords:'class interface trait',end:/[:\\\\{(]|$/,excludeEnd:!0,illegal:'extends implements',contains:[{beginKeywords:'public protected internal private constructor'},e.UNDERSCORE_TITLE_MODE,{className:'type',begin:/\u003C/,end:/>/,excludeBegin:!0,excludeEnd:!0,relevance:0},{className:'type',begin:/[,:]\\\\s*/,end:/[\u003C\\\\(,]|$/,excludeBegin:!0,returnEnd:!0},a,r]},i,{className:'meta',begin:'^#!/usr/bin/env',end:'$',illegal:'\\\\n'},s]}}})(),n.registerLanguage('kotlin',e),e=(()=>{'use strict';const O='[A-Za-z$_][0-9A-Za-z$_]*',M=['as','in','of','if','for','while','finally','var','new','function','do','return','void','else','break','catch','instanceof','with','throw','case','default','try','switch','continue','typeof','delete','let','yield','const','class','debugger','async','await','static','import','from','export','extends'],A=['true','false','null','undefined','NaN','Infinity'],S=['Object','Function','Boolean','Symbol','Math','Date','Number','BigInt','String','RegExp','Array','Float32Array','Float64Array','Int8Array','Uint8Array','Uint8ClampedArray','Int16Array','Int32Array','Uint16Array','Uint32Array','BigInt64Array','BigUint64Array','Set','Map','WeakSet','WeakMap','ArrayBuffer','SharedArrayBuffer','Atomics','DataView','JSON','Promise','Generator','GeneratorFunction','AsyncFunction','Reflect','Proxy','Intl','WebAssembly'],C=['Error','EvalError','InternalError','RangeError','ReferenceError','SyntaxError','TypeError','URIError'],T=['setInterval','setTimeout','clearInterval','clearTimeout','require','exports','eval','isFinite','isNaN','parseFloat','parseInt','decodeURI','decodeURIComponent','encodeURI','encodeURIComponent','escape','unescape'],R=['arguments','this','super','console','window','document','localStorage','module','global'],D=[].concat(T,S,C);function o(e){const n=e.regex,t=O,a=/\u003C[A-Za-z0-9\\\\\\\\._:-]+/,i=/\\\\/[A-Za-z0-9\\\\\\\\._:-]+>|\\\\/>/,r=(e,n)=>{var t,a,i=e[0].length+e.index,r=e.input[i];'\u003C'!==r&&','!==r&&('>'===r&&([r,t]=[e,i],a='\u003C/'+r[0].slice(1),-1===r.input.indexOf(a,t))&&n.ignoreMatch(),!(r=e.input.substr(i).match(/^\\\\s+extends\\\\s+/))||0!==r.index)||n.ignoreMatch()},s={$pattern:O,keyword:M,literal:A,built_in:D,'variable.language':R},o='\\\\\\\\.([0-9](_?[0-9])*)',l='0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*',c={className:'number',variants:[{begin:`(\\\\\\\\b(${l})((${o})|\\\\\\\\.)?|(${o}))[eE][+-]?([0-9](_?[0-9])*)\\\\\\\\b`},{begin:`\\\\\\\\b(${l})\\\\\\\\b((${o})\\\\\\\\b|\\\\\\\\.)?|(${o})\\\\\\\\b`},{begin:'\\\\\\\\b(0|[1-9](_?[0-9])*)n\\\\\\\\b'},{begin:'\\\\\\\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\\\\\\\b'},{begin:'\\\\\\\\b0[bB][0-1](_?[0-1])*n?\\\\\\\\b'},{begin:'\\\\\\\\b0[oO][0-7](_?[0-7])*n?\\\\\\\\b'},{begin:'\\\\\\\\b0[0-7]+n?\\\\\\\\b'}],relevance:0},d={className:'subst',begin:'\\\\\\\\$\\\\\\\\{',end:'\\\\\\\\}',keywords:s,contains:[]},g={begin:'html`',end:'',starts:{end:'`',returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,d],subLanguage:'xml'}},u={begin:'css`',end:'',starts:{end:'`',returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,d],subLanguage:'css'}},b={className:'string',begin:'`',end:'`',contains:[e.BACKSLASH_ESCAPE,d]},m={className:'comment',variants:[e.COMMENT(/\\\\/\\\\*\\\\*(?!\\\\/)/,'\\\\\\\\*/',{relevance:0,contains:[{begin:'(?=@[A-Za-z]+)',relevance:0,contains:[{className:'doctag',begin:'@[A-Za-z]+'},{className:'type',begin:'\\\\\\\\{',end:'\\\\\\\\}',excludeEnd:!0,excludeBegin:!0,relevance:0},{className:'variable',begin:t+'(?=\\\\\\\\s*(-)|$)',endsParent:!0,relevance:0},{begin:/(?=[^\\\\n])\\\\s/,relevance:0}]}]}),e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE]},p=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,g,u,b,c];d.contains=p.concat({begin:/\\\\{/,end:/\\\\}/,keywords:s,contains:['self'].concat(p)});var _=[].concat(m,d.contains),_=_.concat([{begin:/\\\\(/,end:/\\\\)/,keywords:s,contains:['self'].concat(_)}]),h={className:'params',begin:/\\\\(/,end:/\\\\)/,excludeBegin:!0,excludeEnd:!0,keywords:s,contains:_},f={variants:[{match:[/class/,/\\\\s+/,t,/\\\\s+/,/extends/,/\\\\s+/,n.concat(t,'(',n.concat(/\\\\./,t),')*')],scope:{1:'keyword',3:'title.class',5:'keyword',7:'title.class.inherited'}},{match:[/class/,/\\\\s+/,t],scope:{1:'keyword',3:'title.class'}}]},E={relevance:0,match:n.either(/\\\\bJSON/,/\\\\b[A-Z][a-z]+([A-Z][a-z]*|\\\\d)*/,/\\\\b[A-Z]{2,}([A-Z][a-z]+|\\\\d)+([A-Z][a-z]*)*/,/\\\\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\\\\d)*([A-Z][a-z]*)*/),className:'title.class',keywords:{_:[...S,...C]}},v={variants:[{match:[/function/,/\\\\s+/,t,/(?=\\\\s*\\\\()/]},{match:[/function/,/\\\\s*(?=\\\\()/]}],className:{1:'keyword',3:'title.function'},label:'func.def',contains:[h],illegal:/%/},y={match:n.concat(/\\\\b/,(y=[...T,'super'],n.concat('(?!',y.join('|'),')')),t,n.lookahead(/\\\\(/)),className:'title.function',relevance:0},w={begin:n.concat(/\\\\./,n.lookahead(n.concat(t,/(?![0-9A-Za-z$_(])/))),end:t,excludeBegin:!0,keywords:'prototype',className:'property',relevance:0},N={match:[/get|set/,/\\\\s+/,t,/(?=\\\\()/],className:{1:'keyword',3:'title.function'},contains:[{begin:/\\\\(\\\\)/},h]},x='(\\\\\\\\([^()]*(\\\\\\\\([^()]*(\\\\\\\\([^()]*\\\\\\\\)[^()]*)*\\\\\\\\)[^()]*)*\\\\\\\\)|'+e.UNDERSCORE_IDENT_RE+')\\\\\\\\s*=>',k={match:[/const|var|let/,/\\\\s+/,t,/\\\\s*/,/=\\\\s*/,/(async\\\\s*)?/,n.lookahead(x)],keywords:'async',className:{1:'keyword',3:'title.function'},contains:[h]};return{name:'Javascript',aliases:['js','jsx','mjs','cjs'],keywords:s,exports:{PARAMS_CONTAINS:_,CLASS_REFERENCE:E},illegal:/#(?![$_A-z])/,contains:[e.SHEBANG({label:'shebang',binary:'node',relevance:5}),{label:'use_strict',className:'meta',relevance:10,begin:/^\\\\s*['\\\"]use (strict|asm)['\\\"]/},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,g,u,b,m,c,E,{className:'attr',begin:t+n.lookahead(':'),relevance:0},k,{begin:'('+e.RE_STARTERS_RE+'|\\\\\\\\b(case|return|throw)\\\\\\\\b)\\\\\\\\s*',keywords:'return throw case',relevance:0,contains:[m,e.REGEXP_MODE,{className:'function',begin:x,returnBegin:!0,end:'\\\\\\\\s*=>',contains:[{className:'params',variants:[{begin:e.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\\\\(\\\\s*\\\\)/,skip:!0},{begin:/\\\\(/,end:/\\\\)/,excludeBegin:!0,excludeEnd:!0,keywords:s,contains:_}]}]},{begin:/,/,relevance:0},{match:/\\\\s+/,relevance:0},{variants:[{begin:'\u003C>',end:'\u003C/>'},{match:/\u003C[A-Za-z0-9\\\\\\\\._:-]+\\\\s*\\\\/>/},{begin:a,'on:begin':r,end:i}],subLanguage:'xml',contains:[{begin:a,end:i,skip:!0,contains:['self']}]}]},v,{beginKeywords:'while if switch catch for'},{begin:'\\\\\\\\b(?!function)'+e.UNDERSCORE_IDENT_RE+'\\\\\\\\([^()]*(\\\\\\\\([^()]*(\\\\\\\\([^()]*\\\\\\\\)[^()]*)*\\\\\\\\)[^()]*)*\\\\\\\\)\\\\\\\\s*\\\\\\\\{',returnBegin:!0,label:'func.def',contains:[h,e.inherit(e.TITLE_MODE,{begin:t,className:'title.function'})]},{match:/\\\\.\\\\.\\\\./,relevance:0},w,{match:'\\\\\\\\$'+t,relevance:0},{match:[/\\\\bconstructor(?=\\\\s*\\\\()/],className:{1:'title.function'},contains:[h]},y,{relevance:0,match:/\\\\b[A-Z][A-Z_0-9]+\\\\b/,className:'variable.constant'},f,N,{match:/\\\\$[(.]/}]}}return e=>{var n=o(e),t=['any','void','number','boolean','string','object','never','enum'],a={beginKeywords:'namespace',end:/\\\\{/,excludeEnd:!0,contains:[n.exports.CLASS_REFERENCE]},i={beginKeywords:'interface',end:/\\\\{/,excludeEnd:!0,keywords:{keyword:'interface extends',built_in:t},contains:[n.exports.CLASS_REFERENCE]},t={$pattern:O,keyword:M.concat(['type','namespace','typedef','interface','public','private','protected','implements','declare','abstract','readonly']),literal:A,built_in:D.concat(t),'variable.language':R},r={className:'meta',begin:'@[A-Za-z$_][0-9A-Za-z$_]*'},s=(e,n,t)=>{var a=e.contains.findIndex(e=>e.label===n);if(-1===a)throw Error('can not find mode to replace');e.contains.splice(a,1,t)};return Object.assign(n.keywords,t),n.exports.PARAMS_CONTAINS.push(r),n.contains=n.contains.concat([r,a,i]),s(n,'shebang',e.SHEBANG()),s(n,'use_strict',{className:'meta',relevance:10,begin:/^\\\\s*['\\\"]use strict['\\\"]/}),n.contains.find(e=>'func.def'===e.label).relevance=0,Object.assign(n,{name:'TypeScript',aliases:['ts','tsx']}),n}})(),n.registerLanguage('typescript',e),n.registerLanguage('python',e=>{var n=e.regex,t=/[\\\\p{XID_Start}_]\\\\p{XID_Continue}*/u,a=['and','as','assert','async','await','break','class','continue','def','del','elif','else','except','finally','for','from','global','if','import','in','is','lambda','nonlocal|10','not','or','pass','raise','return','try','while','with','yield'],i={$pattern:/[A-Za-z]\\\\w+|__\\\\w+__/,keyword:a,built_in:['__import__','abs','all','any','ascii','bin','bool','breakpoint','bytearray','bytes','callable','chr','classmethod','compile','complex','delattr','dict','dir','divmod','enumerate','eval','exec','filter','float','format','frozenset','getattr','globals','hasattr','hash','help','hex','id','input','int','isinstance','issubclass','iter','len','list','locals','map','max','memoryview','min','next','object','oct','open','ord','pow','print','property','range','repr','reversed','round','set','setattr','slice','sorted','staticmethod','str','sum','super','tuple','type','vars','zip'],literal:['__debug__','Ellipsis','False','None','NotImplemented','True'],type:['Any','Callable','Coroutine','Dict','List','Literal','Generic','Optional','Sequence','Set','Tuple','Type','Union']},r={className:'meta',begin:/^(>>>|\\\\.\\\\.\\\\.) /},s={className:'subst',begin:/\\\\{/,end:/\\\\}/,keywords:i,illegal:/#/},o={begin:/\\\\{\\\\{/,relevance:0},o={className:'string',contains:[e.BACKSLASH_ESCAPE],variants:[{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE,r],relevance:10},{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?\\\"\\\"\\\"/,end:/\\\"\\\"\\\"/,contains:[e.BACKSLASH_ESCAPE,r],relevance:10},{begin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE,r,o,s]},{begin:/([fF][rR]|[rR][fF]|[fF])\\\"\\\"\\\"/,end:/\\\"\\\"\\\"/,contains:[e.BACKSLASH_ESCAPE,r,o,s]},{begin:/([uU]|[rR])'/,end:/'/,relevance:10},{begin:/([uU]|[rR])\\\"/,end:/\\\"/,relevance:10},{begin:/([bB]|[bB][rR]|[rR][bB])'/,end:/'/},{begin:/([bB]|[bB][rR]|[rR][bB])\\\"/,end:/\\\"/},{begin:/([fF][rR]|[rR][fF]|[fF])'/,end:/'/,contains:[e.BACKSLASH_ESCAPE,o,s]},{begin:/([fF][rR]|[rR][fF]|[fF])\\\"/,end:/\\\"/,contains:[e.BACKSLASH_ESCAPE,o,s]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},l='[0-9](_?[0-9])*',c=`(\\\\\\\\b(${l}))?\\\\\\\\.(${l})|\\\\\\\\b(${l})\\\\\\\\.`,a='\\\\\\\\b|'+a.join('|'),c={className:'number',relevance:0,variants:[{begin:`(\\\\\\\\b(${l})|(${c}))[eE][+-]?(${l})[jJ]?(?=${a})`},{begin:`(${c})[jJ]?`},{begin:`\\\\\\\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?(?=${a})`},{begin:`\\\\\\\\b0[bB](_?[01])+[lL]?(?=${a})`},{begin:`\\\\\\\\b0[oO](_?[0-7])+[lL]?(?=${a})`},{begin:`\\\\\\\\b0[xX](_?[0-9a-fA-F])+[lL]?(?=${a})`},{begin:`\\\\\\\\b(${l})[jJ](?=${a})`}]},l={className:'comment',begin:n.lookahead(/# type:/),end:/$/,keywords:i,contains:[{begin:/# type:/},{begin:/#/,end:/\\\\b\\\\B/,endsWithParent:!0}]},a={className:'params',variants:[{className:'',begin:/\\\\(\\\\s*\\\\)/,skip:!0},{begin:/\\\\(/,end:/\\\\)/,excludeBegin:!0,excludeEnd:!0,keywords:i,contains:['self',r,c,o,e.HASH_COMMENT_MODE]}]};return s.contains=[o,c,r],{name:'Python',aliases:['py','gyp','ipython'],unicodeRegex:!0,keywords:i,illegal:/(\u003C\\\\/|->|\\\\?)|=>/,contains:[r,c,{begin:/\\\\bself\\\\b/},{beginKeywords:'if',relevance:0},o,l,e.HASH_COMMENT_MODE,{match:[/\\\\bdef/,/\\\\s+/,t],scope:{1:'keyword',3:'title.function'},contains:[a]},{variants:[{match:[/\\\\bclass/,/\\\\s+/,t,/\\\\s*/,/\\\\(\\\\s*/,t,/\\\\s*\\\\)/]},{match:[/\\\\bclass/,/\\\\s+/,t]}],scope:{1:'keyword',3:'title.class',6:'title.class.inherited'}},{className:'meta',begin:/^[\\\\t ]*@/,end:/(?=#)|$/,contains:[c,a,o]}]}}),n.registerLanguage('python-repl',e=>({aliases:['pycon'],contains:[{className:'meta',starts:{end:/ |$/,starts:{end:'$',subLanguage:'python'}},variants:[{begin:/^>>>(?=[ ]|$)/},{begin:/^\\\\.\\\\.\\\\.(?=[ ]|$)/}]}]})),n.registerLanguage('php',e=>{var n=e.regex,t='[a-zA-Z0-9_-ÿ]*(?![A-Za-z0-9])(?![$]))',a=n.concat('([a-zA-Z_\\\\\\\\x7f-\\\\\\\\xff]',t),t=n.concat('([A-Z]',t),i={scope:'variable',match:'\\\\\\\\$+'+a},r={scope:'subst',variants:[{begin:/\\\\$\\\\w+/},{begin:/\\\\{\\\\$/,end:/\\\\}/}]},s=e.inherit(e.APOS_STRING_MODE,{illegal:null}),o='[ \\\\t\\\\n]',s={scope:'string',variants:[e.inherit(e.QUOTE_STRING_MODE,{illegal:null,contains:e.QUOTE_STRING_MODE.contains.concat(r)}),s,e.END_SAME_AS_BEGIN({begin:/\u003C\u003C\u003C[ \\\\t]*(\\\\w+)\\\\n/,end:/[ \\\\t]*(\\\\w+)\\\\b/,contains:e.QUOTE_STRING_MODE.contains.concat(r)})]},r={scope:'number',variants:[{begin:'\\\\\\\\b0[bB][01]+(?:_[01]+)*\\\\\\\\b'},{begin:'\\\\\\\\b0[oO][0-7]+(?:_[0-7]+)*\\\\\\\\b'},{begin:'\\\\\\\\b0[xX][\\\\\\\\da-fA-F]+(?:_[\\\\\\\\da-fA-F]+)*\\\\\\\\b'},{begin:'(?:\\\\\\\\b\\\\\\\\d+(?:_\\\\\\\\d+)*(\\\\\\\\.(?:\\\\\\\\d+(?:_\\\\\\\\d+)*))?|\\\\\\\\B\\\\\\\\.\\\\\\\\d+)(?:[eE][+-]?\\\\\\\\d+)?'}],relevance:0},l=['__CLASS__','__DIR__','__FILE__','__FUNCTION__','__COMPILER_HALT_OFFSET__','__LINE__','__METHOD__','__NAMESPACE__','__TRAIT__','die','echo','exit','include','include_once','print','require','require_once','array','abstract','and','as','binary','bool','boolean','break','callable','case','catch','class','clone','const','continue','declare','default','do','double','else','elseif','empty','enddeclare','endfor','endforeach','endif','endswitch','endwhile','enum','eval','extends','final','finally','float','for','foreach','from','global','goto','if','implements','instanceof','insteadof','int','integer','interface','isset','iterable','list','match|0','mixed','new','never','object','or','private','protected','public','readonly','real','return','string','switch','throw','trait','try','unset','use','var','void','while','xor','yield'],c=['Error|0','AppendIterator','ArgumentCountError','ArithmeticError','ArrayIterator','ArrayObject','AssertionError','BadFunctionCallException','BadMethodCallException','CachingIterator','CallbackFilterIterator','CompileError','Countable','DirectoryIterator','DivisionByZeroError','DomainException','EmptyIterator','ErrorException','Exception','FilesystemIterator','FilterIterator','GlobIterator','InfiniteIterator','InvalidArgumentException','IteratorIterator','LengthException','LimitIterator','LogicException','MultipleIterator','NoRewindIterator','OutOfBoundsException','OutOfRangeException','OuterIterator','OverflowException','ParentIterator','ParseError','RangeException','RecursiveArrayIterator','RecursiveCachingIterator','RecursiveCallbackFilterIterator','RecursiveDirectoryIterator','RecursiveFilterIterator','RecursiveIterator','RecursiveIteratorIterator','RecursiveRegexIterator','RecursiveTreeIterator','RegexIterator','RuntimeException','SeekableIterator','SplDoublyLinkedList','SplFileInfo','SplFileObject','SplFixedArray','SplHeap','SplMaxHeap','SplMinHeap','SplObjectStorage','SplObserver','SplPriorityQueue','SplQueue','SplStack','SplSubject','SplTempFileObject','TypeError','UnderflowException','UnexpectedValueException','UnhandledMatchError','ArrayAccess','BackedEnum','Closure','Fiber','Generator','Iterator','IteratorAggregate','Serializable','Stringable','Throwable','Traversable','UnitEnum','WeakReference','WeakMap','Directory','__PHP_Incomplete_Class','parent','php_user_filter','self','static','stdClass'],d={keyword:l,literal:(()=>{const n=[];return['false','null','true'].forEach(e=>{n.push(e),e.toLowerCase()===e?n.push(e.toUpperCase()):n.push(e.toLowerCase())}),n})(),built_in:c},g=e=>e.map(e=>e.replace(/\\\\|\\\\d+$/,'')),u={variants:[{match:[/new/,n.concat(o,'+'),n.concat('(?!',g(c).join('\\\\\\\\b|'),'\\\\\\\\b)'),n.concat(/\\\\\\\\?/,a),n.concat(o,'*',/\\\\(/)],scope:{1:'keyword',4:'title.class'}}]},l={relevance:0,match:[/\\\\b/,n.concat('(?!fn\\\\\\\\b|function\\\\\\\\b|',g(l).join('\\\\\\\\b|'),'|',g(c).join('\\\\\\\\b|'),'\\\\\\\\b)'),a,n.concat(o,'*'),n.lookahead(/(?=\\\\()/)],scope:{3:'title.function.invoke'}},g=n.concat(a,'\\\\\\\\b(?!\\\\\\\\()'),c={variants:[{match:[n.concat(/::/,n.lookahead(/(?!class\\\\b)/)),g],scope:{2:'variable.constant'}},{match:[/::/,/class/],scope:{2:'variable.language'}},{match:[t,n.concat('::',n.lookahead(/(?!class\\\\b)/))],scope:{1:'title.class'}},{match:[t,/::/,/class/],scope:{1:'title.class',3:'variable.language'}}]};return{case_insensitive:!1,keywords:d,contains:[e.HASH_COMMENT_MODE,e.COMMENT('//','$'),e.COMMENT('/\\\\\\\\*','\\\\\\\\*/',{contains:[{scope:'doctag',match:'@[A-Za-z]+'}]}),{match:/__halt_compiler\\\\(\\\\);/,keywords:'__halt_compiler',starts:{scope:'comment',end:e.MATCH_NOTHING_RE,contains:[{match:/\\\\?>/,scope:'meta',endsParent:!0}]}},{scope:'meta',variants:[{begin:/\u003C\\\\?php/,relevance:10},{begin:/\u003C\\\\?[=]?/},{begin:/\\\\?>/}]},{scope:'variable.language',match:/\\\\$this\\\\b/},i,l,c,{match:[/const/,/\\\\s/,a,/\\\\s*=/],scope:{1:'keyword',3:'variable.constant'}},u,{scope:'function',relevance:0,beginKeywords:'fn function',end:/[;{]/,excludeEnd:!0,illegal:'[$%\\\\\\\\[]',contains:[{beginKeywords:'use'},e.UNDERSCORE_TITLE_MODE,{begin:'=>',endsParent:!0},{scope:'params',begin:'\\\\\\\\(',end:'\\\\\\\\)',excludeBegin:!0,excludeEnd:!0,keywords:d,contains:['self',i,c,e.C_BLOCK_COMMENT_MODE,s,r]}]},{scope:'class',variants:[{beginKeywords:'enum',illegal:/[($\\\"]/},{beginKeywords:'class interface trait',illegal:/[:($\\\"]/}],relevance:0,end:/\\\\{/,excludeEnd:!0,contains:[{beginKeywords:'extends implements'},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:'namespace',relevance:0,end:';',illegal:/[.']/,contains:[e.inherit(e.UNDERSCORE_TITLE_MODE,{scope:'title.class'})]},{beginKeywords:'use',relevance:0,end:';',contains:[{match:/\\\\b(as|const|function)\\\\b/,scope:'keyword'},e.UNDERSCORE_TITLE_MODE]},s,r]}}),e=(()=>{'use strict';const s=['a','abbr','address','article','aside','audio','b','blockquote','body','button','canvas','caption','cite','code','dd','del','details','dfn','div','dl','dt','em','fieldset','figcaption','figure','footer','form','h1','h2','h3','h4','h5','h6','header','hgroup','html','i','iframe','img','input','ins','kbd','label','legend','li','main','mark','menu','nav','object','ol','p','q','quote','samp','section','span','strong','summary','sup','table','tbody','td','textarea','tfoot','th','thead','time','tr','ul','var','video'],o=['any-hover','any-pointer','aspect-ratio','color','color-gamut','color-index','device-aspect-ratio','device-height','device-width','display-mode','forced-colors','grid','height','hover','inverted-colors','monochrome','orientation','overflow-block','overflow-inline','pointer','prefers-color-scheme','prefers-contrast','prefers-reduced-motion','prefers-reduced-transparency','resolution','scan','scripting','update','width','min-width','max-width','min-height','max-height'],l=['active','any-link','blank','checked','current','default','defined','dir','disabled','drop','empty','enabled','first','first-child','first-of-type','fullscreen','future','focus','focus-visible','focus-within','has','host','host-context','hover','indeterminate','in-range','invalid','is','lang','last-child','last-of-type','left','link','local-link','not','nth-child','nth-col','nth-last-child','nth-last-col','nth-last-of-type','nth-of-type','only-child','only-of-type','optional','out-of-range','past','placeholder-shown','read-only','read-write','required','right','root','scope','target','target-within','user-invalid','valid','visited','where'],c=['after','backdrop','before','cue','cue-region','first-letter','first-line','grammar-error','marker','part','placeholder','selection','slotted','spelling-error'],d=['align-content','align-items','align-self','all','animation','animation-delay','animation-direction','animation-duration','animation-fill-mode','animation-iteration-count','animation-name','animation-play-state','animation-timing-function','backface-visibility','background','background-attachment','background-clip','background-color','background-image','background-origin','background-position','background-repeat','background-size','border','border-bottom','border-bottom-color','border-bottom-left-radius','border-bottom-right-radius','border-bottom-style','border-bottom-width','border-collapse','border-color','border-image','border-image-outset','border-image-repeat','border-image-slice','border-image-source','border-image-width','border-left','border-left-color','border-left-style','border-left-width','border-radius','border-right','border-right-color','border-right-style','border-right-width','border-spacing','border-style','border-top','border-top-color','border-top-left-radius','border-top-right-radius','border-top-style','border-top-width','border-width','bottom','box-decoration-break','box-shadow','box-sizing','break-after','break-before','break-inside','caption-side','caret-color','clear','clip','clip-path','clip-rule','color','column-count','column-fill','column-gap','column-rule','column-rule-color','column-rule-style','column-rule-width','column-span','column-width','columns','contain','content','content-visibility','counter-increment','counter-reset','cue','cue-after','cue-before','cursor','direction','display','empty-cells','filter','flex','flex-basis','flex-direction','flex-flow','flex-grow','flex-shrink','flex-wrap','float','flow','font','font-display','font-family','font-feature-settings','font-kerning','font-language-override','font-size','font-size-adjust','font-smoothing','font-stretch','font-style','font-synthesis','font-variant','font-variant-caps','font-variant-east-asian','font-variant-ligatures','font-variant-numeric','font-variant-position','font-variation-settings','font-weight','gap','glyph-orientation-vertical','grid','grid-area','grid-auto-columns','grid-auto-flow','grid-auto-rows','grid-column','grid-column-end','grid-column-start','grid-gap','grid-row','grid-row-end','grid-row-start','grid-template','grid-template-areas','grid-template-columns','grid-template-rows','hanging-punctuation','height','hyphens','icon','image-orientation','image-rendering','image-resolution','ime-mode','isolation','justify-content','left','letter-spacing','line-break','line-height','list-style','list-style-image','list-style-position','list-style-type','margin','margin-bottom','margin-left','margin-right','margin-top','marks','mask','mask-border','mask-border-mode','mask-border-outset','mask-border-repeat','mask-border-slice','mask-border-source','mask-border-width','mask-clip','mask-composite','mask-image','mask-mode','mask-origin','mask-position','mask-repeat','mask-size','mask-type','max-height','max-width','min-height','min-width','mix-blend-mode','nav-down','nav-index','nav-left','nav-right','nav-up','none','normal','object-fit','object-position','opacity','order','orphans','outline','outline-color','outline-offset','outline-style','outline-width','overflow','overflow-wrap','overflow-x','overflow-y','padding','padding-bottom','padding-left','padding-right','padding-top','page-break-after','page-break-before','page-break-inside','pause','pause-after','pause-before','perspective','perspective-origin','pointer-events','position','quotes','resize','rest','rest-after','rest-before','right','row-gap','scroll-margin','scroll-margin-block','scroll-margin-block-end','scroll-margin-block-start','scroll-margin-bottom','scroll-margin-inline','scroll-margin-inline-end','scroll-margin-inline-start','scroll-margin-left','scroll-margin-right','scroll-margin-top','scroll-padding','scroll-padding-block','scroll-padding-block-end','scroll-padding-block-start','scroll-padding-bottom','scroll-padding-inline','scroll-padding-inline-end','scroll-padding-inline-start','scroll-padding-left','scroll-padding-right','scroll-padding-top','scroll-snap-align','scroll-snap-stop','scroll-snap-type','shape-image-threshold','shape-margin','shape-outside','speak','speak-as','src','tab-size','table-layout','text-align','text-align-all','text-align-last','text-combine-upright','text-decoration','text-decoration-color','text-decoration-line','text-decoration-style','text-emphasis','text-emphasis-color','text-emphasis-position','text-emphasis-style','text-indent','text-justify','text-orientation','text-overflow','text-rendering','text-shadow','text-transform','text-underline-position','top','transform','transform-box','transform-origin','transform-style','transition','transition-delay','transition-duration','transition-property','transition-timing-function','unicode-bidi','vertical-align','visibility','voice-balance','voice-duration','voice-family','voice-pitch','voice-range','voice-rate','voice-stress','voice-volume','white-space','widows','width','will-change','word-break','word-spacing','word-wrap','writing-mode','z-index'].reverse();return e=>{var n={IMPORTANT:{scope:'meta',begin:'!important'},BLOCK_COMMENT:e.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:'number',begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\\\\b/},FUNCTION_DISPATCH:{className:'built_in',begin:/[\\\\w-]+(?=\\\\()/},ATTRIBUTE_SELECTOR_MODE:{scope:'selector-attr',begin:/\\\\[/,end:/\\\\]/,illegal:'$',contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{scope:'number',begin:e.NUMBER_RE+'(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?',relevance:0},CSS_VARIABLE:{className:'attr',begin:/--[A-Za-z][A-Za-z0-9_-]*/}},t=c,a=l,i='@[a-z-]+',r={className:'variable',begin:'(\\\\\\\\$[a-zA-Z-][a-zA-Z0-9_-]*)\\\\\\\\b'};return{name:'SCSS',case_insensitive:!0,illegal:'[=/|\\\\']',contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,n.CSS_NUMBER_MODE,{className:'selector-id',begin:'#[A-Za-z0-9_-]+',relevance:0},{className:'selector-class',begin:'\\\\\\\\.[A-Za-z0-9_-]+',relevance:0},n.ATTRIBUTE_SELECTOR_MODE,{className:'selector-tag',begin:'\\\\\\\\b('+s.join('|')+')\\\\\\\\b',relevance:0},{className:'selector-pseudo',begin:':('+a.join('|')+')'},{className:'selector-pseudo',begin:':(:)?('+t.join('|')+')'},r,{begin:/\\\\(/,end:/\\\\)/,contains:[n.CSS_NUMBER_MODE]},n.CSS_VARIABLE,{className:'attribute',begin:'\\\\\\\\b('+d.join('|')+')\\\\\\\\b'},{begin:'\\\\\\\\b(whitespace|wait|w-resize|visible|vertical-text|vertical-ideographic|uppercase|upper-roman|upper-alpha|underline|transparent|top|thin|thick|text|text-top|text-bottom|tb-rl|table-header-group|table-footer-group|sw-resize|super|strict|static|square|solid|small-caps|separate|se-resize|scroll|s-resize|rtl|row-resize|ridge|right|repeat|repeat-y|repeat-x|relative|progress|pointer|overline|outside|outset|oblique|nowrap|not-allowed|normal|none|nw-resize|no-repeat|no-drop|newspaper|ne-resize|n-resize|move|middle|medium|ltr|lr-tb|lowercase|lower-roman|lower-alpha|loose|list-item|line|line-through|line-edge|lighter|left|keep-all|justify|italic|inter-word|inter-ideograph|inside|inset|inline|inline-block|inherit|inactive|ideograph-space|ideograph-parenthesis|ideograph-numeric|ideograph-alpha|horizontal|hidden|help|hand|groove|fixed|ellipsis|e-resize|double|dotted|distribute|distribute-space|distribute-letter|distribute-all-lines|disc|disabled|default|decimal|dashed|crosshair|collapse|col-resize|circle|char|center|capitalize|break-word|break-all|bottom|both|bolder|bold|block|bidi-override|below|baseline|auto|always|all-scroll|absolute|table|table-cell)\\\\\\\\b'},{begin:/:/,end:/[;}{]/,contains:[n.BLOCK_COMMENT,r,n.HEXCOLOR,n.CSS_NUMBER_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,n.IMPORTANT]},{begin:'@(page|font-face)',keywords:{$pattern:i,keyword:'@page @font-face'}},{begin:'@',end:'[{;]',returnBegin:!0,keywords:{$pattern:/[a-z-]+/,keyword:'and or not only',attribute:o.join(' ')},contains:[{begin:i,className:'keyword'},{begin:/[a-z-]+(?=:)/,className:'attribute'},r,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,n.HEXCOLOR,n.CSS_NUMBER_MODE]},n.FUNCTION_DISPATCH]}}})(),n.registerLanguage('scss',e),e=(()=>{'use strict';return t=>{const e=[{begin:/\\\\^{6}[0-9a-f]{6}/},{begin:/\\\\^{5}[0-9a-f]{5}/},{begin:/\\\\^{4}[0-9a-f]{4}/},{begin:/\\\\^{3}[0-9a-f]{3}/},{begin:/\\\\^{2}[0-9a-f]{2}/},{begin:/\\\\^{2}[\\\\u0000-\\\\u007f]/}],n=[{className:'keyword',begin:/\\\\\\\\/,relevance:0,contains:[{endsParent:!0,begin:t.regex.either(...['(?:NeedsTeXFormat|RequirePackage|GetIdInfo)','Provides(?:Expl)?(?:Package|Class|File)','(?:DeclareOption|ProcessOptions)','(?:documentclass|usepackage|input|include)','makeat(?:letter|other)','ExplSyntax(?:On|Off)','(?:new|renew|provide)?command','(?:re)newenvironment','(?:New|Renew|Provide|Declare)(?:Expandable)?DocumentCommand','(?:New|Renew|Provide|Declare)DocumentEnvironment','(?:(?:e|g|x)?def|let)','(?:begin|end)','(?:part|chapter|(?:sub){0,2}section|(?:sub)?paragraph)','caption','(?:label|(?:eq|page|name)?ref|(?:paren|foot|super)?cite)','(?:alpha|beta|[Gg]amma|[Dd]elta|(?:var)?epsilon|zeta|eta|[Tt]heta|vartheta)','(?:iota|(?:var)?kappa|[Ll]ambda|mu|nu|[Xx]i|[Pp]i|varpi|(?:var)rho)','(?:[Ss]igma|varsigma|tau|[Uu]psilon|[Pp]hi|varphi|chi|[Pp]si|[Oo]mega)','(?:frac|sum|prod|lim|infty|times|sqrt|leq|geq|left|right|middle|[bB]igg?)','(?:[lr]angle|q?quad|[lcvdi]?dots|d?dot|hat|tilde|bar)'].map(e=>e+'(?![a-zA-Z@:_])'))},{endsParent:!0,begin:RegExp(['(?:__)?[a-zA-Z]{2,}_[a-zA-Z](?:_?[a-zA-Z])+:[a-zA-Z]*','[lgc]__?[a-zA-Z](?:_?[a-zA-Z])*_[a-zA-Z]{2,}','[qs]__?[a-zA-Z](?:_?[a-zA-Z])+','use(?:_i)?:[a-zA-Z]*','(?:else|fi|or):','(?:if|cs|exp):w','(?:hbox|vbox):n','::[a-zA-Z]_unbraced','::[a-zA-Z:]'].map(e=>e+'(?![a-zA-Z:_])').join('|'))},{endsParent:!0,variants:e},{endsParent:!0,relevance:0,variants:[{begin:/[a-zA-Z@]+/},{begin:/[^a-zA-Z@]?/}]}]},{className:'params',relevance:0,begin:/#+\\\\d?/},{variants:e},{className:'built_in',relevance:0,begin:/[$&^_]/},{className:'meta',begin:/% ?!(T[eE]X|tex|BIB|bib)/,end:'$',relevance:10},t.COMMENT('%','$',{relevance:0})],a={begin:/\\\\{/,end:/\\\\}/,relevance:0,contains:['self',...n]},i=t.inherit(a,{relevance:0,endsParent:!0,contains:[a,...n]}),r={begin:/\\\\[/,end:/\\\\]/,endsParent:!0,relevance:0,contains:[a,...n]},s={begin:/\\\\s+/,relevance:0},o=[i],l=[r],c=(e,n)=>({contains:[s],starts:{relevance:0,contains:e,starts:n}}),d=(e,n)=>({begin:'\\\\\\\\\\\\\\\\'+e+'(?![a-zA-Z@:_])',keywords:{$pattern:/\\\\\\\\[a-zA-Z]+/,keyword:'\\\\\\\\'+e},relevance:0,contains:[s],starts:n}),g=(e,n)=>t.inherit({begin:'\\\\\\\\\\\\\\\\begin(?=[ \\\\t]*(\\\\\\\\r?\\\\\\\\n[ \\\\t]*)?\\\\\\\\{'+e+'\\\\\\\\})',keywords:{$pattern:/\\\\\\\\[a-zA-Z]+/,keyword:'\\\\\\\\begin'},relevance:0},c(o,n)),u=(e='string')=>t.END_SAME_AS_BEGIN({className:e,begin:/(.|\\\\r?\\\\n)/,end:/(.|\\\\r?\\\\n)/,excludeBegin:!0,excludeEnd:!0,endsParent:!0}),b=e=>({className:'string',end:'(?=\\\\\\\\\\\\\\\\end\\\\\\\\{'+e+'\\\\\\\\})'}),m=(e='string')=>({relevance:0,begin:/\\\\{/,starts:{endsParent:!0,contains:[{className:e,end:/(?=\\\\})/,endsParent:!0,contains:[{begin:/\\\\{/,end:/\\\\}/,relevance:0,contains:['self']}]}]}});return{name:'LaTeX',aliases:['tex'],contains:[...['verb','lstinline'].map(e=>d(e,{contains:[u()]})),d('mint',c(o,{contains:[u()]})),d('mintinline',c(o,{contains:[m(),u()]})),d('url',{contains:[m('link'),m('link')]}),d('hyperref',{contains:[m('link')]}),d('href',c(l,{contains:[m('link')]})),...[].concat(...['','\\\\\\\\*'].map(n=>[g('verbatim'+n,b('verbatim'+n)),g('filecontents'+n,c(o,b('filecontents'+n))),...['','B','L'].map(e=>g(e+'Verbatim'+n,c(l,b(e+'Verbatim'+n))))])),g('minted',c(l,c(o,b('minted')))),...n]}}})(),n.registerLanguage('latex',e),n.registerLanguage('vbnet',e=>{var n=e.regex,t=/\\\\d{1,2}\\\\/\\\\d{1,2}\\\\/\\\\d{4}/,a=/\\\\d{4}-\\\\d{1,2}-\\\\d{1,2}/,i=/(\\\\d|1[012])(:\\\\d+){0,2} *(AM|PM)/,r=/\\\\d{1,2}(:\\\\d{1,2}){1,2}/,a={className:'literal',variants:[{begin:n.concat(/# */,n.either(a,t),/ *#/)},{begin:n.concat(/# */,r,/ *#/)},{begin:n.concat(/# */,i,/ *#/)},{begin:n.concat(/# */,n.either(a,t),/ +/,n.either(i,r),/ *#/)}]},t=e.COMMENT(/'''/,/$/,{contains:[{className:'doctag',begin:/\u003C\\\\/?/,end:/>/}]}),n=e.COMMENT(null,/$/,{variants:[{begin:/'/},{begin:/([\\\\t ]|^)REM(?=\\\\s)/}]});return{name:'Visual Basic .NET',aliases:['vb'],case_insensitive:!0,classNameAliases:{label:'symbol'},keywords:{keyword:'addhandler alias aggregate ansi as async assembly auto binary by byref byval call case catch class compare const continue custom declare default delegate dim distinct do each equals else elseif end enum erase error event exit explicit finally for friend from function get global goto group handles if implements imports in inherits interface into iterator join key let lib loop me mid module mustinherit mustoverride mybase myclass namespace narrowing new next notinheritable notoverridable of off on operator option optional order overloads overridable overrides paramarray partial preserve private property protected public raiseevent readonly redim removehandler resume return select set shadows shared skip static step stop structure strict sub synclock take text then throw to try unicode until using when where while widening with withevents writeonly yield',built_in:'addressof and andalso await directcast gettype getxmlnamespace is isfalse isnot istrue like mod nameof new not or orelse trycast typeof xor cbool cbyte cchar cdate cdbl cdec cint clng cobj csbyte cshort csng cstr cuint culng cushort',type:'boolean byte char date decimal double integer long object sbyte short single string uinteger ulong ushort',literal:'true false nothing'},illegal:'//|\\\\\\\\{|\\\\\\\\}|endif|gosub|variant|wend|^\\\\\\\\$ ',contains:[{className:'string',begin:/\\\"(\\\"\\\"|[^/n])\\\"C\\\\b/},{className:'string',begin:/\\\"/,end:/\\\"/,illegal:/\\\\n/,contains:[{begin:/\\\"\\\"/}]},a,{className:'number',relevance:0,variants:[{begin:/\\\\b\\\\d[\\\\d_]*((\\\\.[\\\\d_]+(E[+-]?[\\\\d_]+)?)|(E[+-]?[\\\\d_]+))[RFD@!#]?/},{begin:/\\\\b\\\\d[\\\\d_]*((U?[SIL])|[%&])?/},{begin:/&H[\\\\dA-F_]+((U?[SIL])|[%&])?/},{begin:/&O[0-7_]+((U?[SIL])|[%&])?/},{begin:/&B[01_]+((U?[SIL])|[%&])?/}]},{className:'label',begin:/^\\\\w+:/},t,n,{className:'meta',begin:/[\\\\t ]*#(const|disable|else|elseif|enable|end|externalsource|if|region)\\\\b/,end:/$/,keywords:{keyword:'const disable else elseif enable end externalsource if region then'},contains:[n]}]}}),n.registerLanguage('diff',e=>{e=e.regex;return{name:'Diff',aliases:['patch'],contains:[{className:'meta',relevance:10,match:e.either(/^@@ +-\\\\d+,\\\\d+ +\\\\+\\\\d+,\\\\d+ +@@/,/^\\\\*\\\\*\\\\* +\\\\d+,\\\\d+ +\\\\*\\\\*\\\\*\\\\*$/,/^--- +\\\\d+,\\\\d+ +----$/)},{className:'comment',variants:[{begin:e.either(/Index: /,/^index/,/={3,}/,/^-{3}/,/^\\\\*{3} /,/^\\\\+{3}/,/^diff --git/),end:/$/},{match:/^\\\\*{15}$/}]},{className:'addition',begin:/^\\\\+/,end:/$/},{className:'deletion',begin:/^-/,end:/$/},{className:'addition',begin:/^!/,end:/$/}]}}),n.registerLanguage('makefile',e=>{var n={className:'variable',variants:[{begin:'\\\\\\\\$\\\\\\\\('+e.UNDERSCORE_IDENT_RE+'\\\\\\\\)',contains:[e.BACKSLASH_ESCAPE]},{begin:/\\\\$[@%\u003C?\\\\^\\\\+\\\\*]/}]},t={className:'string',begin:/\\\"/,end:/\\\"/,contains:[e.BACKSLASH_ESCAPE,n]},a={begin:'^'+e.UNDERSCORE_IDENT_RE+'\\\\\\\\s*(?=[:+?]?=)'};return{name:'Makefile',aliases:['mk','mak','make'],keywords:{$pattern:/[\\\\w-]+/,keyword:'define endef undefine ifdef ifndef ifeq ifneq else endif include -include sinclude override export unexport private vpath'},contains:[e.HASH_COMMENT_MODE,n,t,{className:'variable',begin:/\\\\$\\\\([\\\\w-]+\\\\s/,end:/\\\\)/,keywords:{built_in:'subst patsubst strip findstring filter filter-out sort word wordlist firstword lastword dir notdir suffix basename addsuffix addprefix join wildcard realpath abspath error warning shell origin flavor foreach if or and call eval file value'},contains:[n]},a,{className:'meta',begin:/^\\\\.PHONY:/,end:/$/,keywords:{$pattern:/[\\\\.\\\\w]+/,keyword:'.PHONY'}},{className:'section',begin:/^[^\\\\s]+:/,end:/$/,contains:[n]}]}}),n.registerLanguage('lua',e=>{var n='\\\\\\\\[=*\\\\\\\\[',t='\\\\\\\\]=*\\\\\\\\]',a={begin:n,end:t,contains:['self']},i=[e.COMMENT('--(?!\\\\\\\\[=*\\\\\\\\[)','$'),e.COMMENT('--\\\\\\\\[=*\\\\\\\\[',t,{contains:[a],relevance:10})];return{name:'Lua',keywords:{$pattern:e.UNDERSCORE_IDENT_RE,literal:'true false nil',keyword:'and break do else elseif end for goto if in local not or repeat return then until while',built_in:'_G _ENV _VERSION __index __newindex __mode __call __metatable __tostring __len __gc __add __sub __mul __div __mod __pow __concat __unm __eq __lt __le assert collectgarbage dofile error getfenv getmetatable ipairs load loadfile loadstring module next pairs pcall print rawequal rawget rawset require select setfenv setmetatable tonumber tostring type unpack xpcall arg self coroutine resume yield status wrap create running debug getupvalue debug sethook getmetatable gethook setmetatable setlocal traceback setfenv getinfo setupvalue getlocal getregistry getfenv io lines write close flush open output type read stderr stdin input stdout popen tmpfile math log max acos huge ldexp pi cos tanh pow deg tan cosh sinh random randomseed frexp ceil floor rad abs sqrt modf asin min mod fmod log10 atan2 exp sin atan os exit setlocale date getenv difftime remove time clock tmpname rename execute package preload loadlib loaded loaders cpath config path seeall string sub upper len gfind rep find match char dump gmatch reverse byte format gsub lower table setn insert getn foreachi maxn foreach concat sort remove'},contains:i.concat([{className:'function',beginKeywords:'function',end:'\\\\\\\\)',contains:[e.inherit(e.TITLE_MODE,{begin:'([_a-zA-Z]\\\\\\\\w*\\\\\\\\.)*([_a-zA-Z]\\\\\\\\w*:)?[_a-zA-Z]\\\\\\\\w*'}),{className:'params',begin:'\\\\\\\\(',endsWithParent:!0,contains:i}].concat(i)},e.C_NUMBER_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:'string',begin:n,end:t,contains:[a],relevance:5}])}}),n.registerLanguage('csharp',e=>{var n={keyword:['abstract','as','base','break','case','catch','class','const','continue','do','else','event','explicit','extern','finally','fixed','for','foreach','goto','if','implicit','in','interface','internal','is','lock','namespace','new','operator','out','override','params','private','protected','public','readonly','record','ref','return','sealed','sizeof','stackalloc','static','struct','switch','this','throw','try','typeof','unchecked','unsafe','using','virtual','void','volatile','while'].concat(['add','alias','and','ascending','async','await','by','descending','equals','from','get','global','group','init','into','join','let','nameof','not','notnull','on','or','orderby','partial','remove','select','set','unmanaged','value|0','var','when','where','with','yield']),built_in:['bool','byte','char','decimal','delegate','double','dynamic','enum','float','int','long','nint','nuint','object','sbyte','short','string','ulong','uint','ushort'],literal:['default','false','null','true']},t=e.inherit(e.TITLE_MODE,{begin:'[a-zA-Z](\\\\\\\\.?\\\\\\\\w)*'}),a={className:'number',variants:[{begin:'\\\\\\\\b(0b[01\\\\']+)'},{begin:'(-?)\\\\\\\\b([\\\\\\\\d\\\\']+(\\\\\\\\.[\\\\\\\\d\\\\']*)?|\\\\\\\\.[\\\\\\\\d\\\\']+)(u|U|l|L|ul|UL|f|F|b|B)'},{begin:'(-?)(\\\\\\\\b0[xX][a-fA-F0-9\\\\']+|(\\\\\\\\b[\\\\\\\\d\\\\']+(\\\\\\\\.[\\\\\\\\d\\\\']*)?|\\\\\\\\.[\\\\\\\\d\\\\']+)([eE][-+]?[\\\\\\\\d\\\\']+)?)'}],relevance:0},i={className:'string',begin:'@\\\"',end:'\\\"',contains:[{begin:'\\\"\\\"'}]},r=e.inherit(i,{illegal:/\\\\n/}),s={className:'subst',begin:/\\\\{/,end:/\\\\}/,keywords:n},o=e.inherit(s,{illegal:/\\\\n/}),l={className:'string',begin:/\\\\$\\\"/,end:'\\\"',illegal:/\\\\n/,contains:[{begin:/\\\\{\\\\{/},{begin:/\\\\}\\\\}/},e.BACKSLASH_ESCAPE,o]},c={className:'string',begin:/\\\\$@\\\"/,end:'\\\"',contains:[{begin:/\\\\{\\\\{/},{begin:/\\\\}\\\\}/},{begin:'\\\"\\\"'},s]},d=e.inherit(c,{illegal:/\\\\n/,contains:[{begin:/\\\\{\\\\{/},{begin:/\\\\}\\\\}/},{begin:'\\\"\\\"'},o]}),s=(s.contains=[c,l,i,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,a,e.C_BLOCK_COMMENT_MODE],o.contains=[d,l,r,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,a,e.inherit(e.C_BLOCK_COMMENT_MODE,{illegal:/\\\\n/})],{variants:[c,l,i,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]}),o={begin:'\u003C',end:'>',contains:[{beginKeywords:'in out'},t]},d=e.IDENT_RE+'(\u003C'+e.IDENT_RE+'(\\\\\\\\s*,\\\\\\\\s*'+e.IDENT_RE+')*>)?(\\\\\\\\[\\\\\\\\])?',r={begin:'@'+e.IDENT_RE,relevance:0};return{name:'C#',aliases:['cs','c#'],keywords:n,illegal:/::/,contains:[e.COMMENT('///','$',{returnBegin:!0,contains:[{className:'doctag',variants:[{begin:'///',relevance:0},{begin:'\\\\x3c!--|--\\\\x3e'},{begin:'\u003C/?',end:'>'}]}]}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:'meta',begin:'#',end:'$',keywords:{keyword:'if else elif endif define undef warning error line region endregion pragma checksum'}},s,a,{beginKeywords:'class interface',relevance:0,end:/[{;=]/,illegal:/[^\\\\s:,]/,contains:[{beginKeywords:'where class'},t,o,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:'namespace',relevance:0,end:/[{;=]/,illegal:/[^\\\\s:]/,contains:[t,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:'record',relevance:0,end:/[{;=]/,illegal:/[^\\\\s:]/,contains:[t,o,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:'meta',begin:'^\\\\\\\\s*\\\\\\\\[(?=[\\\\\\\\w])',excludeBegin:!0,end:'\\\\\\\\]',excludeEnd:!0,contains:[{className:'string',begin:/\\\"/,end:/\\\"/}]},{beginKeywords:'new return throw await else',relevance:0},{className:'function',begin:'('+d+'\\\\\\\\s+)+'+e.IDENT_RE+'\\\\\\\\s*(\u003C[^=]+>\\\\\\\\s*)?\\\\\\\\(',returnBegin:!0,end:/\\\\s*[{;=]/,excludeEnd:!0,keywords:n,contains:[{beginKeywords:'public private protected static internal protected abstract async extern override unsafe virtual new sealed partial',relevance:0},{begin:e.IDENT_RE+'\\\\\\\\s*(\u003C[^=]+>\\\\\\\\s*)?\\\\\\\\(',returnBegin:!0,contains:[e.TITLE_MODE,o],relevance:0},{match:/\\\\(\\\\)/},{className:'params',begin:/\\\\(/,end:/\\\\)/,excludeBegin:!0,excludeEnd:!0,keywords:n,relevance:0,contains:[s,a,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},r]}}),n.registerLanguage('json',e=>({name:'JSON',contains:[{className:'attr',begin:/\\\"(\\\\\\\\.|[^\\\\\\\\\\\"\\\\r\\\\n])*\\\"(?=\\\\s*:)/,relevance:1.01},{match:/[{}[\\\\],:]/,className:'punctuation',relevance:0},e.QUOTE_STRING_MODE,{beginKeywords:'true false null'},e.C_NUMBER_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE],illegal:'\\\\\\\\S'})),n.registerLanguage('nginx',e=>{var n=e.regex,t={className:'variable',variants:[{begin:/\\\\$\\\\d+/},{begin:/\\\\$\\\\{\\\\w+\\\\}/},{begin:n.concat(/[$@]/,e.UNDERSCORE_IDENT_RE)}]},t={endsWithParent:!0,keywords:{$pattern:/[a-z_]{2,}|\\\\/dev\\\\/poll/,literal:['on','off','yes','no','true','false','none','blocked','debug','info','notice','warn','error','crit','select','break','last','permanent','redirect','kqueue','rtsig','epoll','poll','/dev/poll']},relevance:0,illegal:'=>',contains:[e.HASH_COMMENT_MODE,{className:'string',contains:[e.BACKSLASH_ESCAPE,t],variants:[{begin:/\\\"/,end:/\\\"/},{begin:/'/,end:/'/}]},{begin:'([a-z]+):/',end:'\\\\\\\\s',endsWithParent:!0,excludeEnd:!0,contains:[t]},{className:'regexp',contains:[e.BACKSLASH_ESCAPE,t],variants:[{begin:'\\\\\\\\s\\\\\\\\^',end:'\\\\\\\\s|\\\\\\\\{|;',returnEnd:!0},{begin:'~\\\\\\\\*?\\\\\\\\s+',end:'\\\\\\\\s|\\\\\\\\{|;',returnEnd:!0},{begin:'\\\\\\\\*(\\\\\\\\.[a-z\\\\\\\\-]+)+'},{begin:'([a-z\\\\\\\\-]+\\\\\\\\.)+\\\\\\\\*'}]},{className:'number',begin:'\\\\\\\\b\\\\\\\\d{1,3}\\\\\\\\.\\\\\\\\d{1,3}\\\\\\\\.\\\\\\\\d{1,3}\\\\\\\\.\\\\\\\\d{1,3}(:\\\\\\\\d{1,5})?\\\\\\\\b'},{className:'number',begin:'\\\\\\\\b\\\\\\\\d+[kKmMgGdshdwy]?\\\\\\\\b',relevance:0},t]};return{name:'Nginx config',aliases:['nginxconf'],contains:[e.HASH_COMMENT_MODE,{beginKeywords:'upstream location',end:/;|\\\\{/,contains:t.contains,keywords:{section:'upstream location'}},{className:'section',begin:n.concat(e.UNDERSCORE_IDENT_RE+n.lookahead(/\\\\s+\\\\{/)),relevance:0},{begin:n.lookahead(e.UNDERSCORE_IDENT_RE+'\\\\\\\\s'),end:';|\\\\\\\\{',contains:[{className:'attribute',begin:e.UNDERSCORE_IDENT_RE,starts:t}],relevance:0}],illegal:'[^\\\\\\\\s\\\\\\\\}\\\\\\\\{]'}}),n.registerLanguage('ruby',e=>{var n=e.regex,t='([a-zA-Z_]\\\\\\\\w*[!?=]?|[-+~]@|\u003C\u003C|>>|=~|===?|\u003C=>|[\u003C>]=?|\\\\\\\\*\\\\\\\\*|[-/+%^&*~`|]|\\\\\\\\[\\\\\\\\]=?)',a={keyword:'and then defined module in return redo if BEGIN retry end for self when next until do begin unless END rescue else break undef not super class case require yield alias while ensure elsif or include attr_reader attr_writer attr_accessor __FILE__',built_in:'proc lambda',literal:'true false nil'},i={className:'doctag',begin:'@[A-Za-z]+'},r={begin:'#\u003C',end:'>'},i=[e.COMMENT('#','$',{contains:[i]}),e.COMMENT('^=begin','^=end',{contains:[i],relevance:10}),e.COMMENT('^__END__','\\\\\\\\n$')],s={className:'subst',begin:/#\\\\{/,end:/\\\\}/,keywords:a},o={className:'string',contains:[e.BACKSLASH_ESCAPE,s],variants:[{begin:/'/,end:/'/},{begin:/\\\"/,end:/\\\"/},{begin:/`/,end:/`/},{begin:/%[qQwWx]?\\\\(/,end:/\\\\)/},{begin:/%[qQwWx]?\\\\[/,end:/\\\\]/},{begin:/%[qQwWx]?\\\\{/,end:/\\\\}/},{begin:/%[qQwWx]?\u003C/,end:/>/},{begin:/%[qQwWx]?\\\\//,end:/\\\\//},{begin:/%[qQwWx]?%/,end:/%/},{begin:/%[qQwWx]?-/,end:/-/},{begin:/%[qQwWx]?\\\\|/,end:/\\\\|/},{begin:/\\\\B\\\\?(\\\\\\\\\\\\d{1,3})/},{begin:/\\\\B\\\\?(\\\\\\\\x[A-Fa-f0-9]{1,2})/},{begin:/\\\\B\\\\?(\\\\\\\\u\\\\{?[A-Fa-f0-9]{1,6}\\\\}?)/},{begin:/\\\\B\\\\?(\\\\\\\\M-\\\\\\\\C-|\\\\\\\\M-\\\\\\\\c|\\\\\\\\c\\\\\\\\M-|\\\\\\\\M-|\\\\\\\\C-\\\\\\\\M-)[\\\\x20-\\\\x7e]/},{begin:/\\\\B\\\\?\\\\\\\\(c|C-)[\\\\x20-\\\\x7e]/},{begin:/\\\\B\\\\?\\\\\\\\?\\\\S/},{begin:n.concat(/\u003C\u003C[-~]?'?/,n.lookahead(/(\\\\w+)(?=\\\\W)[^\\\\n]*\\\\n(?:[^\\\\n]*\\\\n)*?\\\\s*\\\\1\\\\b/)),contains:[e.END_SAME_AS_BEGIN({begin:/(\\\\w+)/,end:/(\\\\w+)/,contains:[e.BACKSLASH_ESCAPE,s]})]}]},l='[0-9](_?[0-9])*',l={className:'number',relevance:0,variants:[{begin:`\\\\\\\\b([1-9](_?[0-9])*|0)(\\\\\\\\.(${l}))?([eE][+-]?(${l})|r)?i?\\\\\\\\b`},{begin:'\\\\\\\\b0[dD][0-9](_?[0-9])*r?i?\\\\\\\\b'},{begin:'\\\\\\\\b0[bB][0-1](_?[0-1])*r?i?\\\\\\\\b'},{begin:'\\\\\\\\b0[oO][0-7](_?[0-7])*r?i?\\\\\\\\b'},{begin:'\\\\\\\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*r?i?\\\\\\\\b'},{begin:'\\\\\\\\b0(_?[0-7])+r?i?\\\\\\\\b'}]},c={className:'params',begin:'\\\\\\\\(',end:'\\\\\\\\)',endsParent:!0,keywords:a},n=[o,{className:'class',beginKeywords:'class module',end:'$|;',illegal:/=/,contains:[e.inherit(e.TITLE_MODE,{begin:'[A-Za-z_]\\\\\\\\w*(::\\\\\\\\w+)*(\\\\\\\\?|!)?'}),{begin:'\u003C\\\\\\\\s*',contains:[{begin:'('+e.IDENT_RE+'::)?'+e.IDENT_RE,relevance:0}]}].concat(i)},{className:'function',begin:n.concat(/def\\\\s+/,n.lookahead(t+'\\\\\\\\s*(\\\\\\\\(|;|$)')),relevance:0,keywords:'def',end:'$|;',contains:[e.inherit(e.TITLE_MODE,{begin:t}),c].concat(i)},{begin:e.IDENT_RE+'::'},{className:'symbol',begin:e.UNDERSCORE_IDENT_RE+'(!|\\\\\\\\?)?:',relevance:0},{className:'symbol',begin:':(?!\\\\\\\\s)',contains:[o,{begin:t}],relevance:0},l,{className:'variable',begin:'(\\\\\\\\$\\\\\\\\W)|((\\\\\\\\$|@@?)(\\\\\\\\w+))(?=[^@$?])(?![A-Za-z])(?![@$?\\\\'])'},{className:'params',begin:/\\\\|/,end:/\\\\|/,relevance:0,keywords:a},{begin:'('+e.RE_STARTERS_RE+'|unless)\\\\\\\\s*',keywords:'unless',contains:[{className:'regexp',contains:[e.BACKSLASH_ESCAPE,s],illegal:/\\\\n/,variants:[{begin:'/',end:'/[a-z]*'},{begin:/%r\\\\{/,end:/\\\\}[a-z]*/},{begin:'%r\\\\\\\\(',end:'\\\\\\\\)[a-z]*'},{begin:'%r!',end:'![a-z]*'},{begin:'%r\\\\\\\\[',end:'\\\\\\\\][a-z]*'}]}].concat(r,i),relevance:0}].concat(r,i),o=(s.contains=n,[{begin:/^\\\\s*=>/,starts:{end:'$',contains:c.contains=n}},{className:'meta',begin:'^([>?]>|[\\\\\\\\w#]+\\\\\\\\(\\\\\\\\w+\\\\\\\\):\\\\\\\\d+:\\\\\\\\d+>|(\\\\\\\\w+-)?\\\\\\\\d+\\\\\\\\.\\\\\\\\d+\\\\\\\\.\\\\\\\\d+(p\\\\\\\\d+)?[^\\\\\\\\d][^>]+>)(?=[ ])',starts:{end:'$',contains:n}}]);return i.unshift(r),{name:'Ruby',aliases:['rb','gemspec','podspec','thor','irb'],keywords:a,illegal:/\\\\/\\\\*/,contains:[e.SHEBANG({binary:'ruby'})].concat(o).concat(i).concat(n)}}),n.registerLanguage('yaml',e=>{var n='true false yes no null',t='[\\\\\\\\w#;/?:@&=+$,.~*\\\\'()[\\\\\\\\]]+',a={className:'string',relevance:0,variants:[{begin:/'/,end:/'/},{begin:/\\\"/,end:/\\\"/},{begin:/\\\\S+/}],contains:[e.BACKSLASH_ESCAPE,{className:'template-variable',variants:[{begin:/\\\\{\\\\{/,end:/\\\\}\\\\}/},{begin:/%\\\\{/,end:/\\\\}/}]}]},i=e.inherit(a,{variants:[{begin:/'/,end:/'/},{begin:/\\\"/,end:/\\\"/},{begin:/[^\\\\s,{}[\\\\]]+/}]}),r={end:',',endsWithParent:!0,excludeEnd:!0,keywords:n,relevance:0},t=[{className:'attr',variants:[{begin:'\\\\\\\\w[\\\\\\\\w :\\\\\\\\/.-]*:(?=[ \\\\t]|$)'},{begin:'\\\"\\\\\\\\w[\\\\\\\\w :\\\\\\\\/.-]*\\\":(?=[ \\\\t]|$)'},{begin:'\\\\'\\\\\\\\w[\\\\\\\\w :\\\\\\\\/.-]*\\\\':(?=[ \\\\t]|$)'}]},{className:'meta',begin:'^---\\\\\\\\s*$',relevance:10},{className:'string',begin:'[\\\\\\\\|>]([1-9]?[+-])?[ ]*\\\\\\\\n( +)[^ ][^\\\\\\\\n]*\\\\\\\\n(\\\\\\\\2[^\\\\\\\\n]+\\\\\\\\n?)*'},{begin:'\u003C%[%=-]?',end:'[%-]?%>',subLanguage:'ruby',excludeBegin:!0,excludeEnd:!0,relevance:0},{className:'type',begin:'!\\\\\\\\w+!'+t},{className:'type',begin:'!\u003C'+t+'>'},{className:'type',begin:'!'+t},{className:'type',begin:'!!'+t},{className:'meta',begin:'&'+e.UNDERSCORE_IDENT_RE+'$'},{className:'meta',begin:'\\\\\\\\*'+e.UNDERSCORE_IDENT_RE+'$'},{className:'bullet',begin:'-(?=[ ]|$)',relevance:0},e.HASH_COMMENT_MODE,{beginKeywords:n,keywords:{literal:n}},{className:'number',begin:'\\\\\\\\b[0-9]{4}(-[0-9][0-9]){0,2}([Tt \\\\\\\\t][0-9][0-9]?(:[0-9][0-9]){2})?(\\\\\\\\.[0-9]*)?([ \\\\\\\\t])*(Z|[-+][0-9][0-9]?(:[0-9][0-9])?)?\\\\\\\\b'},{className:'number',begin:e.C_NUMBER_RE+'\\\\\\\\b',relevance:0},{begin:/\\\\{/,end:/\\\\}/,contains:[r],illegal:'\\\\\\\\n',relevance:0},{begin:'\\\\\\\\[',end:'\\\\\\\\]',contains:[r],illegal:'\\\\\\\\n',relevance:0},a],n=[...t];return n.pop(),n.push(i),r.contains=n,{name:'YAML',case_insensitive:!0,aliases:['yml'],contains:t}}),n.registerLanguage('php-template',e=>({name:'PHP template',subLanguage:'xml',contains:[{begin:/\u003C\\\\?(php|=)?/,end:/\\\\?>/,subLanguage:'php',contains:[{begin:'/\\\\\\\\*',end:'\\\\\\\\*/',skip:!0},{begin:'b\\\"',end:'\\\"',skip:!0},{begin:'b\\\\'',end:'\\\\'',skip:!0},e.inherit(e.APOS_STRING_MODE,{illegal:null,className:null,contains:null,skip:!0}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null,className:null,contains:null,skip:!0})]}]})),n.registerLanguage('sql',e=>{const n=e.regex,t=e.COMMENT('--','$'),a=['true','false','unknown'],i=['bigint','binary','blob','boolean','char','character','clob','date','dec','decfloat','decimal','float','int','integer','interval','nchar','nclob','national','numeric','real','row','smallint','time','timestamp','varchar','varying','varbinary'],r=['abs','acos','array_agg','asin','atan','avg','cast','ceil','ceiling','coalesce','corr','cos','cosh','count','covar_pop','covar_samp','cume_dist','dense_rank','deref','element','exp','extract','first_value','floor','json_array','json_arrayagg','json_exists','json_object','json_objectagg','json_query','json_table','json_table_primitive','json_value','lag','last_value','lead','listagg','ln','log','log10','lower','max','min','mod','nth_value','ntile','nullif','percent_rank','percentile_cont','percentile_disc','position','position_regex','power','rank','regr_avgx','regr_avgy','regr_count','regr_intercept','regr_r2','regr_slope','regr_sxx','regr_sxy','regr_syy','row_number','sin','sinh','sqrt','stddev_pop','stddev_samp','substring','substring_regex','sum','tan','tanh','translate','translate_regex','treat','trim','trim_array','unnest','upper','value_of','var_pop','var_samp','width_bucket'],s=['create table','insert into','primary key','foreign key','not null','alter table','add constraint','grouping sets','on overflow','character set','respect nulls','ignore nulls','nulls first','nulls last','depth first','breadth first'],o=r,l=['abs','acos','all','allocate','alter','and','any','are','array','array_agg','array_max_cardinality','as','asensitive','asin','asymmetric','at','atan','atomic','authorization','avg','begin','begin_frame','begin_partition','between','bigint','binary','blob','boolean','both','by','call','called','cardinality','cascaded','case','cast','ceil','ceiling','char','char_length','character','character_length','check','classifier','clob','close','coalesce','collate','collect','column','commit','condition','connect','constraint','contains','convert','copy','corr','corresponding','cos','cosh','count','covar_pop','covar_samp','create','cross','cube','cume_dist','current','current_catalog','current_date','current_default_transform_group','current_path','current_role','current_row','current_schema','current_time','current_timestamp','current_path','current_role','current_transform_group_for_type','current_user','cursor','cycle','date','day','deallocate','dec','decimal','decfloat','declare','default','define','delete','dense_rank','deref','describe','deterministic','disconnect','distinct','double','drop','dynamic','each','element','else','empty','end','end_frame','end_partition','end-exec','equals','escape','every','except','exec','execute','exists','exp','external','extract','false','fetch','filter','first_value','float','floor','for','foreign','frame_row','free','from','full','function','fusion','get','global','grant','group','grouping','groups','having','hold','hour','identity','in','indicator','initial','inner','inout','insensitive','insert','int','integer','intersect','intersection','interval','into','is','join','json_array','json_arrayagg','json_exists','json_object','json_objectagg','json_query','json_table','json_table_primitive','json_value','lag','language','large','last_value','lateral','lead','leading','left','like','like_regex','listagg','ln','local','localtime','localtimestamp','log','log10','lower','match','match_number','match_recognize','matches','max','member','merge','method','min','minute','mod','modifies','module','month','multiset','national','natural','nchar','nclob','new','no','none','normalize','not','nth_value','ntile','null','nullif','numeric','octet_length','occurrences_regex','of','offset','old','omit','on','one','only','open','or','order','out','outer','over','overlaps','overlay','parameter','partition','pattern','per','percent','percent_rank','percentile_cont','percentile_disc','period','portion','position','position_regex','power','precedes','precision','prepare','primary','procedure','ptf','range','rank','reads','real','recursive','ref','references','referencing','regr_avgx','regr_avgy','regr_count','regr_intercept','regr_r2','regr_slope','regr_sxx','regr_sxy','regr_syy','release','result','return','returns','revoke','right','rollback','rollup','row','row_number','rows','running','savepoint','scope','scroll','search','second','seek','select','sensitive','session_user','set','show','similar','sin','sinh','skip','smallint','some','specific','specifictype','sql','sqlexception','sqlstate','sqlwarning','sqrt','start','static','stddev_pop','stddev_samp','submultiset','subset','substring','substring_regex','succeeds','sum','symmetric','system','system_time','system_user','table','tablesample','tan','tanh','then','time','timestamp','timezone_hour','timezone_minute','to','trailing','translate','translate_regex','translation','treat','trigger','trim','trim_array','true','truncate','uescape','union','unique','unknown','unnest','update','upper','user','using','value','values','value_of','var_pop','var_samp','varbinary','varchar','varying','versioning','when','whenever','where','width_bucket','window','with','within','without','year','add','asc','collation','desc','final','first','last','view'].filter(e=>!r.includes(e)),c={begin:n.concat(/\\\\b/,n.either(...o),/\\\\s*\\\\(/),relevance:0,keywords:{built_in:o}};return{name:'SQL',case_insensitive:!0,illegal:/[{}]|\u003C\\\\//,keywords:{$pattern:/\\\\b[\\\\w\\\\.]+/,keyword:(({exceptions:n,when:e})=>{const t=e;return n=n||[],l.map(e=>!e.match(/\\\\|\\\\d+$/)&&!n.includes(e)&&t(e)?e+'|0':e)})({when:e=>e.length\u003C3}),literal:a,type:i,built_in:['current_catalog','current_date','current_default_transform_group','current_path','current_role','current_schema','current_transform_group_for_type','current_user','session_user','system_time','system_user','current_time','localtime','current_timestamp','localtimestamp']},contains:[{begin:n.either(...s),relevance:0,keywords:{$pattern:/[\\\\w\\\\.]+/,keyword:l.concat(s),literal:a,type:i}},{className:'type',begin:n.either('double precision','large object','with timezone','without timezone')},c,{className:'variable',begin:/@[a-z0-9]+/},{className:'string',variants:[{begin:/'/,end:/'/,contains:[{begin:/''/}]}]},{begin:/\\\"/,end:/\\\"/,contains:[{begin:/\\\"\\\"/}]},e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE,t,{className:'operator',begin:/[-+*/=%^~]|&&?|\\\\|\\\\|?|!=?|\u003C(?:=>?|\u003C|>)?|>[>=]?/,relevance:0}]}}),n.registerLanguage('objectivec',e=>{var n=/[a-zA-Z@][a-zA-Z0-9_]*/,t={$pattern:n,keyword:['@interface','@class','@protocol','@implementation']};return{name:'Objective-C',aliases:['mm','objc','obj-c','obj-c++','objective-c++'],keywords:{$pattern:n,keyword:['int','float','while','char','export','sizeof','typedef','const','struct','for','union','unsigned','long','volatile','static','bool','mutable','if','do','return','goto','void','enum','else','break','extern','asm','case','short','default','double','register','explicit','signed','typename','this','switch','continue','wchar_t','inline','readonly','assign','readwrite','self','@synchronized','id','typeof','nonatomic','super','unichar','IBOutlet','IBAction','strong','weak','copy','in','out','inout','bycopy','byref','oneway','__strong','__weak','__block','__autoreleasing','@private','@protected','@public','@try','@property','@end','@throw','@catch','@finally','@autoreleasepool','@synthesize','@dynamic','@selector','@optional','@required','@encode','@package','@import','@defs','@compatibility_alias','__bridge','__bridge_transfer','__bridge_retained','__bridge_retain','__covariant','__contravariant','__kindof','_Nonnull','_Nullable','_Null_unspecified','__FUNCTION__','__PRETTY_FUNCTION__','__attribute__','getter','setter','retain','unsafe_unretained','nonnull','nullable','null_unspecified','null_resettable','class','instancetype','NS_DESIGNATED_INITIALIZER','NS_UNAVAILABLE','NS_REQUIRES_SUPER','NS_RETURNS_INNER_POINTER','NS_INLINE','NS_AVAILABLE','NS_DEPRECATED','NS_ENUM','NS_OPTIONS','NS_SWIFT_UNAVAILABLE','NS_ASSUME_NONNULL_BEGIN','NS_ASSUME_NONNULL_END','NS_REFINED_FOR_SWIFT','NS_SWIFT_NAME','NS_SWIFT_NOTHROW','NS_DURING','NS_HANDLER','NS_ENDHANDLER','NS_VALUERETURN','NS_VOIDRETURN'],literal:['false','true','FALSE','TRUE','nil','YES','NO','NULL'],built_in:['BOOL','dispatch_once_t','dispatch_queue_t','dispatch_sync','dispatch_async','dispatch_once']},illegal:'\u003C/',contains:[{className:'built_in',begin:'\\\\\\\\b(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)\\\\\\\\w+'},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.C_NUMBER_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,{className:'string',variants:[{begin:'@\\\"',end:'\\\"',illegal:'\\\\\\\\n',contains:[e.BACKSLASH_ESCAPE]}]},{className:'meta',begin:/#\\\\s*[a-z]+\\\\b/,end:/$/,keywords:{keyword:'if else elif endif define undef warning error line pragma ifdef ifndef include'},contains:[{begin:/\\\\\\\\\\\\n/,relevance:0},e.inherit(e.QUOTE_STRING_MODE,{className:'string'}),{className:'string',begin:/\u003C.*?>/,end:/$/,illegal:'\\\\\\\\n'},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:'class',begin:'('+t.keyword.join('|')+')\\\\\\\\b',end:/(\\\\{|$)/,excludeEnd:!0,keywords:t,contains:[e.UNDERSCORE_TITLE_MODE]},{begin:'\\\\\\\\.'+e.UNDERSCORE_IDENT_RE,relevance:0}]}}),n.registerLanguage('cpp',e=>{var n=e.regex,t=e.COMMENT('//','$',{contains:[{begin:/\\\\\\\\\\\\n/}]}),a='[a-zA-Z_]\\\\\\\\w*::',i='(?!struct)(decltype\\\\\\\\(auto\\\\\\\\)|'+n.optional(a)+'[a-zA-Z_]\\\\\\\\w*'+n.optional('\u003C[^\u003C>]+>')+')',r={className:'type',begin:'\\\\\\\\b[a-z\\\\\\\\d_]*_t\\\\\\\\b'},s={className:'string',variants:[{begin:'(u8?|U|L)?\\\"',end:'\\\"',illegal:'\\\\\\\\n',contains:[e.BACKSLASH_ESCAPE]},{begin:'(u8?|U|L)?\\\\'(\\\\\\\\\\\\\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\\\\\\\S)|.)',end:'\\\\'',illegal:'.'},e.END_SAME_AS_BEGIN({begin:/(?:u8?|U|L)?R\\\"([^()\\\\\\\\ ]{0,16})\\\\(/,end:/\\\\)([^()\\\\\\\\ ]{0,16})\\\"/})]},o={className:'number',variants:[{begin:'\\\\\\\\b(0b[01\\\\']+)'},{begin:'(-?)\\\\\\\\b([\\\\\\\\d\\\\']+(\\\\\\\\.[\\\\\\\\d\\\\']*)?|\\\\\\\\.[\\\\\\\\d\\\\']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)'},{begin:'(-?)(\\\\\\\\b0[xX][a-fA-F0-9\\\\']+|(\\\\\\\\b[\\\\\\\\d\\\\']+(\\\\\\\\.[\\\\\\\\d\\\\']*)?|\\\\\\\\.[\\\\\\\\d\\\\']+)([eE][-+]?[\\\\\\\\d\\\\']+)?)'}],relevance:0},l={className:'meta',begin:/#\\\\s*[a-z]+\\\\b/,end:/$/,keywords:{keyword:'if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include'},contains:[{begin:/\\\\\\\\\\\\n/,relevance:0},e.inherit(s,{className:'string'}),{className:'string',begin:/\u003C.*?>/},t,e.C_BLOCK_COMMENT_MODE]},c={className:'title',begin:n.optional(a)+e.IDENT_RE,relevance:0},a=n.optional(a)+e.IDENT_RE+'\\\\\\\\s*\\\\\\\\(',d={type:['bool','char','char16_t','char32_t','char8_t','double','float','int','long','short','void','wchar_t','unsigned','signed','const','static'],keyword:['alignas','alignof','and','and_eq','asm','atomic_cancel','atomic_commit','atomic_noexcept','auto','bitand','bitor','break','case','catch','class','co_await','co_return','co_yield','compl','concept','const_cast|10','consteval','constexpr','constinit','continue','decltype','default','delete','do','dynamic_cast|10','else','enum','explicit','export','extern','false','final','for','friend','goto','if','import','inline','module','mutable','namespace','new','noexcept','not','not_eq','nullptr','operator','or','or_eq','override','private','protected','public','reflexpr','register','reinterpret_cast|10','requires','return','sizeof','static_assert','static_cast|10','struct','switch','synchronized','template','this','thread_local','throw','transaction_safe','transaction_safe_dynamic','true','try','typedef','typeid','typename','union','using','virtual','volatile','while','xor','xor_eq'],literal:['NULL','false','nullopt','nullptr','true'],built_in:['_Pragma'],_type_hints:['any','auto_ptr','barrier','binary_semaphore','bitset','complex','condition_variable','condition_variable_any','counting_semaphore','deque','false_type','future','imaginary','initializer_list','istringstream','jthread','latch','lock_guard','multimap','multiset','mutex','optional','ostringstream','packaged_task','pair','promise','priority_queue','queue','recursive_mutex','recursive_timed_mutex','scoped_lock','set','shared_future','shared_lock','shared_mutex','shared_timed_mutex','shared_ptr','stack','string_view','stringstream','timed_mutex','thread','true_type','tuple','unique_lock','unique_ptr','unordered_map','unordered_multimap','unordered_multiset','unordered_set','variant','vector','weak_ptr','wstring','wstring_view']},n={className:'function.dispatch',relevance:0,keywords:{_hint:['abort','abs','acos','apply','as_const','asin','atan','atan2','calloc','ceil','cerr','cin','clog','cos','cosh','cout','declval','endl','exchange','exit','exp','fabs','floor','fmod','forward','fprintf','fputs','free','frexp','fscanf','future','invoke','isalnum','isalpha','iscntrl','isdigit','isgraph','islower','isprint','ispunct','isspace','isupper','isxdigit','labs','launder','ldexp','log','log10','make_pair','make_shared','make_shared_for_overwrite','make_tuple','make_unique','malloc','memchr','memcmp','memcpy','memset','modf','move','pow','printf','putchar','puts','realloc','scanf','sin','sinh','snprintf','sprintf','sqrt','sscanf','std','stderr','stdin','stdout','strcat','strchr','strcmp','strcpy','strcspn','strlen','strncat','strncmp','strncpy','strpbrk','strrchr','strspn','strstr','swap','tan','tanh','terminate','to_underlying','tolower','toupper','vfprintf','visit','vprintf','vsprintf']},begin:n.concat(/\\\\b/,/(?!decltype)/,/(?!if)/,/(?!for)/,/(?!switch)/,/(?!while)/,e.IDENT_RE,n.lookahead(/(\u003C[^\u003C>]+>|)\\\\s*\\\\(/))},g=[n,l,r,t,e.C_BLOCK_COMMENT_MODE,o,s],u={variants:[{begin:/=/,end:/;/},{begin:/\\\\(/,end:/\\\\)/},{beginKeywords:'new throw return else',end:/;/}],keywords:d,contains:g.concat([{begin:/\\\\(/,end:/\\\\)/,keywords:d,contains:g.concat(['self']),relevance:0}]),relevance:0},i={className:'function',begin:'('+i+'[\\\\\\\\*&\\\\\\\\s]+)+'+a,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:d,illegal:/[^\\\\w\\\\s\\\\*&:\u003C>.]/,contains:[{begin:'decltype\\\\\\\\(auto\\\\\\\\)',keywords:d,relevance:0},{begin:a,returnBegin:!0,contains:[c],relevance:0},{begin:/::/,relevance:0},{begin:/:/,endsWithParent:!0,contains:[s,o]},{relevance:0,match:/,/},{className:'params',begin:/\\\\(/,end:/\\\\)/,keywords:d,relevance:0,contains:[t,e.C_BLOCK_COMMENT_MODE,s,o,r,{begin:/\\\\(/,end:/\\\\)/,keywords:d,relevance:0,contains:['self',t,e.C_BLOCK_COMMENT_MODE,s,o,r]}]},r,t,e.C_BLOCK_COMMENT_MODE,l]};return{name:'C++',aliases:['cc','c++','h++','hpp','hh','hxx','cxx'],keywords:d,illegal:'\u003C/',classNameAliases:{'function.dispatch':'built_in'},contains:[].concat(u,i,n,g,[l,{begin:'\\\\\\\\b(deque|list|queue|priority_queue|pair|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array|tuple|optional|variant|function)\\\\\\\\s*\u003C(?!\u003C)',end:'>',keywords:d,contains:['self',r]},{begin:e.IDENT_RE+'::',keywords:d},{match:[/\\\\b(?:enum(?:\\\\s+(?:class|struct))?|class|struct|union)/,/\\\\s+/,/\\\\w+/],className:{1:'keyword',3:'title.class'}}])}}),n.registerLanguage('apache',e=>{var n={className:'number',begin:/\\\\d{1,3}\\\\.\\\\d{1,3}\\\\.\\\\d{1,3}\\\\.\\\\d{1,3}(:\\\\d{1,5})?/};return{name:'Apache config',aliases:['apacheconf'],case_insensitive:!0,contains:[e.HASH_COMMENT_MODE,{className:'section',begin:/\u003C\\\\/?/,end:/>/,contains:[n,{className:'number',begin:/:\\\\d{1,5}/},e.inherit(e.QUOTE_STRING_MODE,{relevance:0})]},{className:'attribute',begin:/\\\\w+/,relevance:0,keywords:{_:['order','deny','allow','setenv','rewriterule','rewriteengine','rewritecond','documentroot','sethandler','errordocument','loadmodule','options','header','listen','serverroot','servername']},starts:{end:/$/,relevance:0,keywords:{literal:'on off all deny allow'},contains:[{className:'meta',begin:/\\\\s\\\\[/,end:/\\\\]$/},{className:'variable',begin:/[\\\\$%]\\\\{/,end:/\\\\}/,contains:['self',{className:'number',begin:/[$%]\\\\d+/}]},n,{className:'number',begin:/\\\\b\\\\d+/},e.QUOTE_STRING_MODE]}}],illegal:/\\\\S/}}),n.registerLanguage('plaintext',e=>({name:'Plain text',aliases:['text','txt'],disableAutodetect:!0})),n.registerLanguage('shell',e=>({name:'Shell Session',aliases:['console','shellsession'],contains:[{className:'meta',begin:/^\\\\s{0,3}[/~\\\\w\\\\d[\\\\]()@-]*[>%$#][ ]?/,starts:{end:/[^\\\\\\\\](?=\\\\s*$)/,subLanguage:'bash'}}]})),n.registerLanguage('r',e=>{var n=e.regex,t=/(?:(?:[a-zA-Z]|\\\\.[._a-zA-Z])[._a-zA-Z0-9]*)|\\\\.(?!\\\\d)/,a=n.either(/0[xX][0-9a-fA-F]+\\\\.[0-9a-fA-F]*[pP][+-]?\\\\d+i?/,/0[xX][0-9a-fA-F]+(?:[pP][+-]?\\\\d+)?[Li]?/,/(?:\\\\d+(?:\\\\.\\\\d*)?|\\\\.\\\\d+)(?:[eE][+-]?\\\\d+)?[Li]?/),i=/[=!\u003C>:]=|\\\\|\\\\||&&|:::?|\u003C-|\u003C\u003C-|->>|->|\\\\|>|[-+*\\\\/?!$&|:\u003C=>@^~]|\\\\*\\\\*/,r=n.either(/[()]/,/[{}]/,/\\\\[\\\\[/,/[[\\\\]]/,/\\\\\\\\/,/,/);return{name:'R',keywords:{$pattern:t,keyword:'function if in break next repeat else for while',literal:'NULL NA TRUE FALSE Inf NaN NA_integer_|10 NA_real_|10 NA_character_|10 NA_complex_|10',built_in:'LETTERS letters month.abb month.name pi T F abs acos acosh all any anyNA Arg as.call as.character as.complex as.double as.environment as.integer as.logical as.null.default as.numeric as.raw asin asinh atan atanh attr attributes baseenv browser c call ceiling class Conj cos cosh cospi cummax cummin cumprod cumsum digamma dim dimnames emptyenv exp expression floor forceAndCall gamma gc.time globalenv Im interactive invisible is.array is.atomic is.call is.character is.complex is.double is.environment is.expression is.finite is.function is.infinite is.integer is.language is.list is.logical is.matrix is.na is.name is.nan is.null is.numeric is.object is.pairlist is.raw is.recursive is.single is.symbol lazyLoadDBfetch length lgamma list log max min missing Mod names nargs nzchar oldClass on.exit pos.to.env proc.time prod quote range Re rep retracemem return round seq_along seq_len seq.int sign signif sin sinh sinpi sqrt standardGeneric substitute sum switch tan tanh tanpi tracemem trigamma trunc unclass untracemem UseMethod xtfrm'},contains:[e.COMMENT(/#'/,/$/,{contains:[{scope:'doctag',match:/@examples/,starts:{end:n.lookahead(n.either(/\\\\n^#'\\\\s*(?=@[a-zA-Z]+)/,/\\\\n^(?!#')/)),endsParent:!0}},{scope:'doctag',begin:'@param',end:/$/,contains:[{scope:'variable',variants:[{match:t},{match:/`(?:\\\\\\\\.|[^`\\\\\\\\])+`/}],endsParent:!0}]},{scope:'doctag',match:/@[a-zA-Z]+/},{scope:'keyword',match:/\\\\\\\\[a-zA-Z]+/}]}),e.HASH_COMMENT_MODE,{scope:'string',contains:[e.BACKSLASH_ESCAPE],variants:[e.END_SAME_AS_BEGIN({begin:/[rR]\\\"(-*)\\\\(/,end:/\\\\)(-*)\\\"/}),e.END_SAME_AS_BEGIN({begin:/[rR]\\\"(-*)\\\\{/,end:/\\\\}(-*)\\\"/}),e.END_SAME_AS_BEGIN({begin:/[rR]\\\"(-*)\\\\[/,end:/\\\\](-*)\\\"/}),e.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\\\\(/,end:/\\\\)(-*)'/}),e.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\\\\{/,end:/\\\\}(-*)'/}),e.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\\\\[/,end:/\\\\](-*)'/}),{begin:'\\\"',end:'\\\"',relevance:0},{begin:'\\\\'',end:'\\\\'',relevance:0}]},{relevance:0,variants:[{scope:{1:'operator',2:'number'},match:[i,a]},{scope:{1:'operator',2:'number'},match:[/%[^%]*%/,a]},{scope:{1:'punctuation',2:'number'},match:[r,a]},{scope:{2:'number'},match:[/[^a-zA-Z0-9._]|^/,a]}]},{scope:{3:'operator'},match:[t,/\\\\s+/,/\u003C-/,/\\\\s+/]},{scope:'operator',relevance:0,variants:[{match:i},{match:/%[^%]*%/}]},{scope:'punctuation',relevance:0,match:r},{begin:'`',end:'`',contains:[{begin:/\\\\\\\\./}]}]}}),n.registerLanguage('ini',e=>{var n=e.regex,t={className:'number',relevance:0,variants:[{begin:/([+-]+)?[\\\\d]+_[\\\\d_]+/},{begin:e.NUMBER_RE}]},a=e.COMMENT(),i=(a.variants=[{begin:/;/,end:/$/},{begin:/#/,end:/$/}],{className:'variable',variants:[{begin:/\\\\$[\\\\w\\\\d\\\"][\\\\w\\\\d_]*/},{begin:/\\\\$\\\\{(.*?)\\\\}/}]}),r={className:'literal',begin:/\\\\bon|off|true|false|yes|no\\\\b/},e={className:'string',contains:[e.BACKSLASH_ESCAPE],variants:[{begin:'\\\\'\\\\'\\\\'',end:'\\\\'\\\\'\\\\'',relevance:10},{begin:'\\\"\\\"\\\"',end:'\\\"\\\"\\\"',relevance:10},{begin:'\\\"',end:'\\\"'},{begin:'\\\\'',end:'\\\\''}]},s={begin:/\\\\[/,end:/\\\\]/,contains:[a,r,i,e,t,'self'],relevance:0},o=n.either(/[A-Za-z0-9_-]+/,/\\\"(\\\\\\\\\\\"|[^\\\"])*\\\"/,/'[^']*'/);return{name:'TOML, also INI',aliases:['toml'],case_insensitive:!0,illegal:/\\\\S/,contains:[a,{className:'section',begin:/\\\\[+/,end:/\\\\]+/},{begin:n.concat(o,'(\\\\\\\\s*\\\\\\\\.\\\\\\\\s*',o,')*',n.lookahead(/\\\\s*=\\\\s*[^#\\\\s]/)),className:'attr',starts:{end:/$/,contains:[a,s,r,i,e,t]}}]}}),e=(()=>{'use strict';const g=['a','abbr','address','article','aside','audio','b','blockquote','body','button','canvas','caption','cite','code','dd','del','details','dfn','div','dl','dt','em','fieldset','figcaption','figure','footer','form','h1','h2','h3','h4','h5','h6','header','hgroup','html','i','iframe','img','input','ins','kbd','label','legend','li','main','mark','menu','nav','object','ol','p','q','quote','samp','section','span','strong','summary','sup','table','tbody','td','textarea','tfoot','th','thead','time','tr','ul','var','video'],u=['any-hover','any-pointer','aspect-ratio','color','color-gamut','color-index','device-aspect-ratio','device-height','device-width','display-mode','forced-colors','grid','height','hover','inverted-colors','monochrome','orientation','overflow-block','overflow-inline','pointer','prefers-color-scheme','prefers-contrast','prefers-reduced-motion','prefers-reduced-transparency','resolution','scan','scripting','update','width','min-width','max-width','min-height','max-height'],b=['active','any-link','blank','checked','current','default','defined','dir','disabled','drop','empty','enabled','first','first-child','first-of-type','fullscreen','future','focus','focus-visible','focus-within','has','host','host-context','hover','indeterminate','in-range','invalid','is','lang','last-child','last-of-type','left','link','local-link','not','nth-child','nth-col','nth-last-child','nth-last-col','nth-last-of-type','nth-of-type','only-child','only-of-type','optional','out-of-range','past','placeholder-shown','read-only','read-write','required','right','root','scope','target','target-within','user-invalid','valid','visited','where'],m=['after','backdrop','before','cue','cue-region','first-letter','first-line','grammar-error','marker','part','placeholder','selection','slotted','spelling-error'],p=['align-content','align-items','align-self','all','animation','animation-delay','animation-direction','animation-duration','animation-fill-mode','animation-iteration-count','animation-name','animation-play-state','animation-timing-function','backface-visibility','background','background-attachment','background-clip','background-color','background-image','background-origin','background-position','background-repeat','background-size','border','border-bottom','border-bottom-color','border-bottom-left-radius','border-bottom-right-radius','border-bottom-style','border-bottom-width','border-collapse','border-color','border-image','border-image-outset','border-image-repeat','border-image-slice','border-image-source','border-image-width','border-left','border-left-color','border-left-style','border-left-width','border-radius','border-right','border-right-color','border-right-style','border-right-width','border-spacing','border-style','border-top','border-top-color','border-top-left-radius','border-top-right-radius','border-top-style','border-top-width','border-width','bottom','box-decoration-break','box-shadow','box-sizing','break-after','break-before','break-inside','caption-side','caret-color','clear','clip','clip-path','clip-rule','color','column-count','column-fill','column-gap','column-rule','column-rule-color','column-rule-style','column-rule-width','column-span','column-width','columns','contain','content','content-visibility','counter-increment','counter-reset','cue','cue-after','cue-before','cursor','direction','display','empty-cells','filter','flex','flex-basis','flex-direction','flex-flow','flex-grow','flex-shrink','flex-wrap','float','flow','font','font-display','font-family','font-feature-settings','font-kerning','font-language-override','font-size','font-size-adjust','font-smoothing','font-stretch','font-style','font-synthesis','font-variant','font-variant-caps','font-variant-east-asian','font-variant-ligatures','font-variant-numeric','font-variant-position','font-variation-settings','font-weight','gap','glyph-orientation-vertical','grid','grid-area','grid-auto-columns','grid-auto-flow','grid-auto-rows','grid-column','grid-column-end','grid-column-start','grid-gap','grid-row','grid-row-end','grid-row-start','grid-template','grid-template-areas','grid-template-columns','grid-template-rows','hanging-punctuation','height','hyphens','icon','image-orientation','image-rendering','image-resolution','ime-mode','isolation','justify-content','left','letter-spacing','line-break','line-height','list-style','list-style-image','list-style-position','list-style-type','margin','margin-bottom','margin-left','margin-right','margin-top','marks','mask','mask-border','mask-border-mode','mask-border-outset','mask-border-repeat','mask-border-slice','mask-border-source','mask-border-width','mask-clip','mask-composite','mask-image','mask-mode','mask-origin','mask-position','mask-repeat','mask-size','mask-type','max-height','max-width','min-height','min-width','mix-blend-mode','nav-down','nav-index','nav-left','nav-right','nav-up','none','normal','object-fit','object-position','opacity','order','orphans','outline','outline-color','outline-offset','outline-style','outline-width','overflow','overflow-wrap','overflow-x','overflow-y','padding','padding-bottom','padding-left','padding-right','padding-top','page-break-after','page-break-before','page-break-inside','pause','pause-after','pause-before','perspective','perspective-origin','pointer-events','position','quotes','resize','rest','rest-after','rest-before','right','row-gap','scroll-margin','scroll-margin-block','scroll-margin-block-end','scroll-margin-block-start','scroll-margin-bottom','scroll-margin-inline','scroll-margin-inline-end','scroll-margin-inline-start','scroll-margin-left','scroll-margin-right','scroll-margin-top','scroll-padding','scroll-padding-block','scroll-padding-block-end','scroll-padding-block-start','scroll-padding-bottom','scroll-padding-inline','scroll-padding-inline-end','scroll-padding-inline-start','scroll-padding-left','scroll-padding-right','scroll-padding-top','scroll-snap-align','scroll-snap-stop','scroll-snap-type','shape-image-threshold','shape-margin','shape-outside','speak','speak-as','src','tab-size','table-layout','text-align','text-align-all','text-align-last','text-combine-upright','text-decoration','text-decoration-color','text-decoration-line','text-decoration-style','text-emphasis','text-emphasis-color','text-emphasis-position','text-emphasis-style','text-indent','text-justify','text-orientation','text-overflow','text-rendering','text-shadow','text-transform','text-underline-position','top','transform','transform-box','transform-origin','transform-style','transition','transition-delay','transition-duration','transition-property','transition-timing-function','unicode-bidi','vertical-align','visibility','voice-balance','voice-duration','voice-family','voice-pitch','voice-range','voice-rate','voice-stress','voice-volume','white-space','widows','width','will-change','word-break','word-spacing','word-wrap','writing-mode','z-index'].reverse(),_=b.concat(m);return e=>{var n={IMPORTANT:{scope:'meta',begin:'!important'},BLOCK_COMMENT:e.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:'number',begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\\\\b/},FUNCTION_DISPATCH:{className:'built_in',begin:/[\\\\w-]+(?=\\\\()/},ATTRIBUTE_SELECTOR_MODE:{scope:'selector-attr',begin:/\\\\[/,end:/\\\\]/,illegal:'$',contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{scope:'number',begin:e.NUMBER_RE+'(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?',relevance:0},CSS_VARIABLE:{className:'attr',begin:/--[A-Za-z][A-Za-z0-9_-]*/}},t=_,a='([\\\\\\\\w-]+|@\\\\\\\\{[\\\\\\\\w-]+\\\\\\\\})',i=[],r=[],s=e=>({className:'string',begin:'~?'+e+'.*?'+e}),o=(e,n,t)=>({className:e,begin:n,relevance:t}),l={$pattern:/[a-z-]+/,keyword:'and or not only',attribute:u.join(' ')},s=(r.push(e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,s('\\\\''),s('\\\"'),n.CSS_NUMBER_MODE,{begin:'(url|data-uri)\\\\\\\\(',starts:{className:'string',end:'[\\\\\\\\)\\\\\\\\n]',excludeEnd:!0}},n.HEXCOLOR,{begin:'\\\\\\\\(',end:'\\\\\\\\)',contains:r,keywords:l,relevance:0},o('variable','@@?[\\\\\\\\w-]+',10),o('variable','@\\\\\\\\{[\\\\\\\\w-]+\\\\\\\\}'),o('built_in','~?`[^`]*?`'),{className:'attribute',begin:'[\\\\\\\\w-]+\\\\\\\\s*:',end:':',returnBegin:!0,excludeEnd:!0},n.IMPORTANT),r.concat({begin:/\\\\{/,end:/\\\\}/,contains:i})),c={beginKeywords:'when',endsWithParent:!0,contains:[{beginKeywords:'and not'}].concat(r)},d={begin:a+'\\\\\\\\s*:',returnBegin:!0,end:/[;}]/,relevance:0,contains:[{begin:/-(webkit|moz|ms|o)-/},n.CSS_VARIABLE,{className:'attribute',begin:'\\\\\\\\b('+p.join('|')+')\\\\\\\\b',end:/(?=:)/,starts:{endsWithParent:!0,illegal:'[\u003C=$]',relevance:0,contains:r}}]},l={className:'keyword',begin:'@(import|media|charset|font-face|(-[a-z]+-)?keyframes|supports|document|namespace|page|viewport|host)\\\\\\\\b',starts:{end:'[;{}]',keywords:l,returnEnd:!0,contains:r,relevance:0}},r={className:'variable',variants:[{begin:'@[\\\\\\\\w-]+\\\\\\\\s*:',relevance:15},{begin:'@[\\\\\\\\w-]+'}],starts:{end:'[;}]',returnEnd:!0,contains:s}},c={variants:[{begin:'[\\\\\\\\.#:&\\\\\\\\[>]',end:'[;{}]'},{begin:a,end:/\\\\{/}],returnBegin:!0,returnEnd:!0,illegal:'[\u003C=\\\\'$\\\"]',relevance:0,contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,c,o('keyword','all\\\\\\\\b'),o('variable','@\\\\\\\\{[\\\\\\\\w-]+\\\\\\\\}'),{begin:'\\\\\\\\b('+g.join('|')+')\\\\\\\\b',className:'selector-tag'},n.CSS_NUMBER_MODE,o('selector-tag',a,0),o('selector-id','#'+a),o('selector-class','\\\\\\\\.'+a,0),o('selector-tag','&',0),n.ATTRIBUTE_SELECTOR_MODE,{className:'selector-pseudo',begin:':('+b.join('|')+')'},{className:'selector-pseudo',begin:':(:)?('+m.join('|')+')'},{begin:/\\\\(/,end:/\\\\)/,relevance:0,contains:s},{begin:'!important'},n.FUNCTION_DISPATCH]},a={begin:`[\\\\\\\\w-]+:(:)?(${t.join('|')})`,returnBegin:!0,contains:[c]};return i.push(e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,l,r,a,d,c),{name:'Less',case_insensitive:!0,illegal:'[=>\\\\'/\u003C($\\\"]',contains:i}}})(),n.registerLanguage('less',e),n.registerLanguage('fortran',e=>{var n=e.regex,t={variants:[e.COMMENT('!','$',{relevance:0}),e.COMMENT('^C[ ]','$',{relevance:0}),e.COMMENT('^C$','$',{relevance:0})]},a=/(_[a-z_\\\\d]+)?/,i=/([de][+-]?\\\\d+)?/,n={className:'number',variants:[{begin:n.concat(/\\\\b\\\\d+/,/\\\\.(\\\\d*)/,i,a)},{begin:n.concat(/\\\\b\\\\d+/,i,a)},{begin:n.concat(/\\\\.\\\\d+/,i,a)}],relevance:0},i={className:'function',beginKeywords:'subroutine function program',illegal:'[${=\\\\\\\\n]',contains:[e.UNDERSCORE_TITLE_MODE,{className:'params',begin:'\\\\\\\\(',end:'\\\\\\\\)'}]};return{name:'Fortran',case_insensitive:!0,aliases:['f90','f95'],keywords:{keyword:['kind','do','concurrent','local','shared','while','private','call','intrinsic','where','elsewhere','type','endtype','endmodule','endselect','endinterface','end','enddo','endif','if','forall','endforall','only','contains','default','return','stop','then','block','endblock','endassociate','public','subroutine|10','function','program','.and.','.or.','.not.','.le.','.eq.','.ge.','.gt.','.lt.','goto','save','else','use','module','select','case','access','blank','direct','exist','file','fmt','form','formatted','iostat','name','named','nextrec','number','opened','rec','recl','sequential','status','unformatted','unit','continue','format','pause','cycle','exit','c_null_char','c_alert','c_backspace','c_form_feed','flush','wait','decimal','round','iomsg','synchronous','nopass','non_overridable','pass','protected','volatile','abstract','extends','import','non_intrinsic','value','deferred','generic','final','enumerator','class','associate','bind','enum','c_int','c_short','c_long','c_long_long','c_signed_char','c_size_t','c_int8_t','c_int16_t','c_int32_t','c_int64_t','c_int_least8_t','c_int_least16_t','c_int_least32_t','c_int_least64_t','c_int_fast8_t','c_int_fast16_t','c_int_fast32_t','c_int_fast64_t','c_intmax_t','C_intptr_t','c_float','c_double','c_long_double','c_float_complex','c_double_complex','c_long_double_complex','c_bool','c_char','c_null_ptr','c_null_funptr','c_new_line','c_carriage_return','c_horizontal_tab','c_vertical_tab','iso_c_binding','c_loc','c_funloc','c_associated','c_f_pointer','c_ptr','c_funptr','iso_fortran_env','character_storage_size','error_unit','file_storage_size','input_unit','iostat_end','iostat_eor','numeric_storage_size','output_unit','c_f_procpointer','ieee_arithmetic','ieee_support_underflow_control','ieee_get_underflow_mode','ieee_set_underflow_mode','newunit','contiguous','recursive','pad','position','action','delim','readwrite','eor','advance','nml','interface','procedure','namelist','include','sequence','elemental','pure','impure','integer','real','character','complex','logical','codimension','dimension','allocatable|10','parameter','external','implicit|10','none','double','precision','assign','intent','optional','pointer','target','in','out','common','equivalence','data'],literal:['.False.','.True.'],built_in:['alog','alog10','amax0','amax1','amin0','amin1','amod','cabs','ccos','cexp','clog','csin','csqrt','dabs','dacos','dasin','datan','datan2','dcos','dcosh','ddim','dexp','dint','dlog','dlog10','dmax1','dmin1','dmod','dnint','dsign','dsin','dsinh','dsqrt','dtan','dtanh','float','iabs','idim','idint','idnint','ifix','isign','max0','max1','min0','min1','sngl','algama','cdabs','cdcos','cdexp','cdlog','cdsin','cdsqrt','cqabs','cqcos','cqexp','cqlog','cqsin','cqsqrt','dcmplx','dconjg','derf','derfc','dfloat','dgamma','dimag','dlgama','iqint','qabs','qacos','qasin','qatan','qatan2','qcmplx','qconjg','qcos','qcosh','qdim','qerf','qerfc','qexp','qgamma','qimag','qlgama','qlog','qlog10','qmax1','qmin1','qmod','qnint','qsign','qsin','qsinh','qsqrt','qtan','qtanh','abs','acos','aimag','aint','anint','asin','atan','atan2','char','cmplx','conjg','cos','cosh','exp','ichar','index','int','log','log10','max','min','nint','sign','sin','sinh','sqrt','tan','tanh','print','write','dim','lge','lgt','lle','llt','mod','nullify','allocate','deallocate','adjustl','adjustr','all','allocated','any','associated','bit_size','btest','ceiling','count','cshift','date_and_time','digits','dot_product','eoshift','epsilon','exponent','floor','fraction','huge','iand','ibclr','ibits','ibset','ieor','ior','ishft','ishftc','lbound','len_trim','matmul','maxexponent','maxloc','maxval','merge','minexponent','minloc','minval','modulo','mvbits','nearest','pack','present','product','radix','random_number','random_seed','range','repeat','reshape','rrspacing','scale','scan','selected_int_kind','selected_real_kind','set_exponent','shape','size','spacing','spread','sum','system_clock','tiny','transpose','trim','ubound','unpack','verify','achar','iachar','transfer','dble','entry','dprod','cpu_time','command_argument_count','get_command','get_command_argument','get_environment_variable','is_iostat_end','ieee_arithmetic','ieee_support_underflow_control','ieee_get_underflow_mode','ieee_set_underflow_mode','is_iostat_eor','move_alloc','new_line','selected_char_kind','same_type_as','extends_type_of','acosh','asinh','atanh','bessel_j0','bessel_j1','bessel_jn','bessel_y0','bessel_y1','bessel_yn','erf','erfc','erfc_scaled','gamma','log_gamma','hypot','norm2','atomic_define','atomic_ref','execute_command_line','leadz','trailz','storage_size','merge_bits','bge','bgt','ble','blt','dshiftl','dshiftr','findloc','iall','iany','iparity','image_index','lcobound','ucobound','maskl','maskr','num_images','parity','popcnt','poppar','shifta','shiftl','shiftr','this_image','sync','change','team','co_broadcast','co_max','co_min','co_sum','co_reduce']},illegal:/\\\\/\\\\*/,contains:[{className:'string',relevance:0,variants:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},i,{begin:/^C\\\\s*=(?!=)/,relevance:0},t,n]}}),e=(()=>{'use strict';const a=['a','abbr','address','article','aside','audio','b','blockquote','body','button','canvas','caption','cite','code','dd','del','details','dfn','div','dl','dt','em','fieldset','figcaption','figure','footer','form','h1','h2','h3','h4','h5','h6','header','hgroup','html','i','iframe','img','input','ins','kbd','label','legend','li','main','mark','menu','nav','object','ol','p','q','quote','samp','section','span','strong','summary','sup','table','tbody','td','textarea','tfoot','th','thead','time','tr','ul','var','video'],i=['any-hover','any-pointer','aspect-ratio','color','color-gamut','color-index','device-aspect-ratio','device-height','device-width','display-mode','forced-colors','grid','height','hover','inverted-colors','monochrome','orientation','overflow-block','overflow-inline','pointer','prefers-color-scheme','prefers-contrast','prefers-reduced-motion','prefers-reduced-transparency','resolution','scan','scripting','update','width','min-width','max-width','min-height','max-height'],r=['active','any-link','blank','checked','current','default','defined','dir','disabled','drop','empty','enabled','first','first-child','first-of-type','fullscreen','future','focus','focus-visible','focus-within','has','host','host-context','hover','indeterminate','in-range','invalid','is','lang','last-child','last-of-type','left','link','local-link','not','nth-child','nth-col','nth-last-child','nth-last-col','nth-last-of-type','nth-of-type','only-child','only-of-type','optional','out-of-range','past','placeholder-shown','read-only','read-write','required','right','root','scope','target','target-within','user-invalid','valid','visited','where'],s=['after','backdrop','before','cue','cue-region','first-letter','first-line','grammar-error','marker','part','placeholder','selection','slotted','spelling-error'],o=['align-content','align-items','align-self','all','animation','animation-delay','animation-direction','animation-duration','animation-fill-mode','animation-iteration-count','animation-name','animation-play-state','animation-timing-function','backface-visibility','background','background-attachment','background-clip','background-color','background-image','background-origin','background-position','background-repeat','background-size','border','border-bottom','border-bottom-color','border-bottom-left-radius','border-bottom-right-radius','border-bottom-style','border-bottom-width','border-collapse','border-color','border-image','border-image-outset','border-image-repeat','border-image-slice','border-image-source','border-image-width','border-left','border-left-color','border-left-style','border-left-width','border-radius','border-right','border-right-color','border-right-style','border-right-width','border-spacing','border-style','border-top','border-top-color','border-top-left-radius','border-top-right-radius','border-top-style','border-top-width','border-width','bottom','box-decoration-break','box-shadow','box-sizing','break-after','break-before','break-inside','caption-side','caret-color','clear','clip','clip-path','clip-rule','color','column-count','column-fill','column-gap','column-rule','column-rule-color','column-rule-style','column-rule-width','column-span','column-width','columns','contain','content','content-visibility','counter-increment','counter-reset','cue','cue-after','cue-before','cursor','direction','display','empty-cells','filter','flex','flex-basis','flex-direction','flex-flow','flex-grow','flex-shrink','flex-wrap','float','flow','font','font-display','font-family','font-feature-settings','font-kerning','font-language-override','font-size','font-size-adjust','font-smoothing','font-stretch','font-style','font-synthesis','font-variant','font-variant-caps','font-variant-east-asian','font-variant-ligatures','font-variant-numeric','font-variant-position','font-variation-settings','font-weight','gap','glyph-orientation-vertical','grid','grid-area','grid-auto-columns','grid-auto-flow','grid-auto-rows','grid-column','grid-column-end','grid-column-start','grid-gap','grid-row','grid-row-end','grid-row-start','grid-template','grid-template-areas','grid-template-columns','grid-template-rows','hanging-punctuation','height','hyphens','icon','image-orientation','image-rendering','image-resolution','ime-mode','isolation','justify-content','left','letter-spacing','line-break','line-height','list-style','list-style-image','list-style-position','list-style-type','margin','margin-bottom','margin-left','margin-right','margin-top','marks','mask','mask-border','mask-border-mode','mask-border-outset','mask-border-repeat','mask-border-slice','mask-border-source','mask-border-width','mask-clip','mask-composite','mask-image','mask-mode','mask-origin','mask-position','mask-repeat','mask-size','mask-type','max-height','max-width','min-height','min-width','mix-blend-mode','nav-down','nav-index','nav-left','nav-right','nav-up','none','normal','object-fit','object-position','opacity','order','orphans','outline','outline-color','outline-offset','outline-style','outline-width','overflow','overflow-wrap','overflow-x','overflow-y','padding','padding-bottom','padding-left','padding-right','padding-top','page-break-after','page-break-before','page-break-inside','pause','pause-after','pause-before','perspective','perspective-origin','pointer-events','position','quotes','resize','rest','rest-after','rest-before','right','row-gap','scroll-margin','scroll-margin-block','scroll-margin-block-end','scroll-margin-block-start','scroll-margin-bottom','scroll-margin-inline','scroll-margin-inline-end','scroll-margin-inline-start','scroll-margin-left','scroll-margin-right','scroll-margin-top','scroll-padding','scroll-padding-block','scroll-padding-block-end','scroll-padding-block-start','scroll-padding-bottom','scroll-padding-inline','scroll-padding-inline-end','scroll-padding-inline-start','scroll-padding-left','scroll-padding-right','scroll-padding-top','scroll-snap-align','scroll-snap-stop','scroll-snap-type','shape-image-threshold','shape-margin','shape-outside','speak','speak-as','src','tab-size','table-layout','text-align','text-align-all','text-align-last','text-combine-upright','text-decoration','text-decoration-color','text-decoration-line','text-decoration-style','text-emphasis','text-emphasis-color','text-emphasis-position','text-emphasis-style','text-indent','text-justify','text-orientation','text-overflow','text-rendering','text-shadow','text-transform','text-underline-position','top','transform','transform-box','transform-origin','transform-style','transition','transition-delay','transition-duration','transition-property','transition-timing-function','unicode-bidi','vertical-align','visibility','voice-balance','voice-duration','voice-family','voice-pitch','voice-range','voice-rate','voice-stress','voice-volume','white-space','widows','width','will-change','word-break','word-spacing','word-wrap','writing-mode','z-index'].reverse();return e=>{var n=e.regex,t={IMPORTANT:{scope:'meta',begin:'!important'},BLOCK_COMMENT:e.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:'number',begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\\\\b/},FUNCTION_DISPATCH:{className:'built_in',begin:/[\\\\w-]+(?=\\\\()/},ATTRIBUTE_SELECTOR_MODE:{scope:'selector-attr',begin:/\\\\[/,end:/\\\\]/,illegal:'$',contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{scope:'number',begin:e.NUMBER_RE+'(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?',relevance:0},CSS_VARIABLE:{className:'attr',begin:/--[A-Za-z][A-Za-z0-9_-]*/}},e=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE];return{name:'CSS',case_insensitive:!0,illegal:/[=|'\\\\$]/,keywords:{keyframePosition:'from to'},classNameAliases:{keyframePosition:'selector-tag'},contains:[t.BLOCK_COMMENT,{begin:/-(webkit|moz|ms|o)-(?=[a-z])/},t.CSS_NUMBER_MODE,{className:'selector-id',begin:/#[A-Za-z0-9_-]+/,relevance:0},{className:'selector-class',begin:'\\\\\\\\.[a-zA-Z-][a-zA-Z0-9_-]*',relevance:0},t.ATTRIBUTE_SELECTOR_MODE,{className:'selector-pseudo',variants:[{begin:':('+r.join('|')+')'},{begin:':(:)?('+s.join('|')+')'}]},t.CSS_VARIABLE,{className:'attribute',begin:'\\\\\\\\b('+o.join('|')+')\\\\\\\\b'},{begin:/:/,end:/[;}{]/,contains:[t.BLOCK_COMMENT,t.HEXCOLOR,t.IMPORTANT,t.CSS_NUMBER_MODE,...e,{begin:/(url|data-uri)\\\\(/,end:/\\\\)/,relevance:0,keywords:{built_in:'url data-uri'},contains:[{className:'string',begin:/[^)]/,endsWithParent:!0,excludeEnd:!0}]},t.FUNCTION_DISPATCH]},{begin:n.lookahead(/@/),end:'[{;]',relevance:0,illegal:/:/,contains:[{className:'keyword',begin:/@-?\\\\w[\\\\w]*(-\\\\w+)*/},{begin:/\\\\s/,endsWithParent:!0,excludeEnd:!0,relevance:0,keywords:{$pattern:/[a-z-]+/,keyword:'and or not only',attribute:i.join(' ')},contains:[{begin:/[a-z-]+(?=:)/,className:'attribute'},...e,t.CSS_NUMBER_MODE]}]},{className:'selector-tag',begin:'\\\\\\\\b('+a.join('|')+')\\\\\\\\b'}]}}})(),n.registerLanguage('css',e),n.registerLanguage('perl',e=>{const i=e.regex,r=/[dualxmsipngr]{0,12}/,n={$pattern:/[\\\\w.]+/,keyword:'abs accept alarm and atan2 bind binmode bless break caller chdir chmod chomp chop chown chr chroot close closedir connect continue cos crypt dbmclose dbmopen defined delete die do dump each else elsif endgrent endhostent endnetent endprotoent endpwent endservent eof eval exec exists exit exp fcntl fileno flock for foreach fork format formline getc getgrent getgrgid getgrnam gethostbyaddr gethostbyname gethostent getlogin getnetbyaddr getnetbyname getnetent getpeername getpgrp getpriority getprotobyname getprotobynumber getprotoent getpwent getpwnam getpwuid getservbyname getservbyport getservent getsockname getsockopt given glob gmtime goto grep gt hex if index int ioctl join keys kill last lc lcfirst length link listen local localtime log lstat lt ma map mkdir msgctl msgget msgrcv msgsnd my ne next no not oct open opendir or ord our pack package pipe pop pos print printf prototype push q|0 qq quotemeta qw qx rand read readdir readline readlink readpipe recv redo ref rename require reset return reverse rewinddir rindex rmdir say scalar seek seekdir select semctl semget semop send setgrent sethostent setnetent setpgrp setpriority setprotoent setpwent setservent setsockopt shift shmctl shmget shmread shmwrite shutdown sin sleep socket socketpair sort splice split sprintf sqrt srand stat state study sub substr symlink syscall sysopen sysread sysseek system syswrite tell telldir tie tied time times tr truncate uc ucfirst umask undef unless unlink unpack unshift untie until use utime values vec wait waitpid wantarray warn when while write x|0 xor y|0'},t={className:'subst',begin:'[$@]\\\\\\\\{',end:'\\\\\\\\}',keywords:n},a={begin:/->\\\\{/,end:/\\\\}/},s={variants:[{begin:/\\\\$\\\\d/},{begin:i.concat(/[$%@](\\\\^\\\\w\\\\b|#\\\\w+(::\\\\w+)*|\\\\{\\\\w+\\\\}|\\\\w+(::\\\\w*)*)/,'(?![A-Za-z])(?![@$%])')},{begin:/[$%@][^\\\\s\\\\w{]/,relevance:0}]},o=[e.BACKSLASH_ESCAPE,t,s],l=[/!/,/\\\\//,/\\\\|/,/\\\\?/,/'/,/\\\"/,/#/],c=(e,n,t='\\\\\\\\1')=>{var a='\\\\\\\\1'===t?t:i.concat(t,n);return i.concat(i.concat('(?:',e,')'),n,/(?:\\\\\\\\.|[^\\\\\\\\\\\\/])*?/,a,/(?:\\\\\\\\.|[^\\\\\\\\\\\\/])*?/,t,r)},d=(e,n,t)=>i.concat(i.concat('(?:',e,')'),n,/(?:\\\\\\\\.|[^\\\\\\\\\\\\/])*?/,t,r),g=[s,e.HASH_COMMENT_MODE,e.COMMENT(/^=\\\\w/,/=cut/,{endsWithParent:!0}),a,{className:'string',contains:o,variants:[{begin:'q[qwxr]?\\\\\\\\s*\\\\\\\\(',end:'\\\\\\\\)',relevance:5},{begin:'q[qwxr]?\\\\\\\\s*\\\\\\\\[',end:'\\\\\\\\]',relevance:5},{begin:'q[qwxr]?\\\\\\\\s*\\\\\\\\{',end:'\\\\\\\\}',relevance:5},{begin:'q[qwxr]?\\\\\\\\s*\\\\\\\\|',end:'\\\\\\\\|',relevance:5},{begin:'q[qwxr]?\\\\\\\\s*\u003C',end:'>',relevance:5},{begin:'qw\\\\\\\\s+q',end:'q',relevance:5},{begin:'\\\\'',end:'\\\\'',contains:[e.BACKSLASH_ESCAPE]},{begin:'\\\"',end:'\\\"'},{begin:'`',end:'`',contains:[e.BACKSLASH_ESCAPE]},{begin:/\\\\{\\\\w+\\\\}/,relevance:0},{begin:'-?\\\\\\\\w+\\\\\\\\s*=>',relevance:0}]},{className:'number',begin:'(\\\\\\\\b0[0-7_]+)|(\\\\\\\\b0x[0-9a-fA-F_]+)|(\\\\\\\\b[1-9][0-9_]*(\\\\\\\\.[0-9_]+)?)|[0_]\\\\\\\\b',relevance:0},{begin:'(\\\\\\\\/\\\\\\\\/|'+e.RE_STARTERS_RE+'|\\\\\\\\b(split|return|print|reverse|grep)\\\\\\\\b)\\\\\\\\s*',keywords:'split return print reverse grep',relevance:0,contains:[e.HASH_COMMENT_MODE,{className:'regexp',variants:[{begin:c('s|tr|y',i.either(...l,{capture:!0}))},{begin:c('s|tr|y','\\\\\\\\(','\\\\\\\\)')},{begin:c('s|tr|y','\\\\\\\\[','\\\\\\\\]')},{begin:c('s|tr|y','\\\\\\\\{','\\\\\\\\}')}],relevance:2},{className:'regexp',variants:[{begin:/(m|qr)\\\\/\\\\//,relevance:0},{begin:d('(?:m|qr)?',/\\\\//,/\\\\//)},{begin:d('m|qr',i.either(...l,{capture:!0}),/\\\\1/)},{begin:d('m|qr',/\\\\(/,/\\\\)/)},{begin:d('m|qr',/\\\\[/,/\\\\]/)},{begin:d('m|qr',/\\\\{/,/\\\\}/)}]}]},{className:'function',beginKeywords:'sub',end:'(\\\\\\\\s*\\\\\\\\(.*?\\\\\\\\))?[;{]',excludeEnd:!0,relevance:5,contains:[e.TITLE_MODE]},{begin:'-\\\\\\\\w\\\\\\\\b',relevance:0},{begin:'^__DATA__$',end:'^__END__$',subLanguage:'mojolicious',contains:[{begin:'^@@.*',end:'$',className:'comment'}]}];return t.contains=g,{name:'Perl',aliases:['pl','pm'],keywords:n,contains:a.contains=g}}),e=(()=>{'use strict';function a(e){return e?'string'==typeof e?e:e.source:null}function C(e){return T('(?=',e,')')}function T(...e){return e.map(e=>a(e)).join('')}function R(...e){var n,t='object'==typeof(n=(t=e)[t.length-1])&&n.constructor===Object?(t.splice(t.length-1,1),n):{};return'('+(t.capture?'':'?:')+e.map(e=>a(e)).join('|')+')'}const D=e=>T(/\\\\b/,e,/\\\\w$/.test(e)?/\\\\b/:/\\\\B/),I=['Protocol','Type'].map(D),L=['init','self'].map(D),B=['Any','Self'],z=['actor','associatedtype','async','await',/as\\\\?/,/as!/,'as','break','case','catch','class','continue','convenience','default','defer','deinit','didSet','do','dynamic','else','enum','extension','fallthrough',/fileprivate\\\\(set\\\\)/,'fileprivate','final','for','func','get','guard','if','import','indirect','infix',/init\\\\?/,/init!/,'inout',/internal\\\\(set\\\\)/,'internal','in','is','isolated','nonisolated','lazy','let','mutating','nonmutating',/open\\\\(set\\\\)/,'open','operator','optional','override','postfix','precedencegroup','prefix',/private\\\\(set\\\\)/,'private','protocol',/public\\\\(set\\\\)/,'public','repeat','required','rethrows','return','set','some','static','struct','subscript','super','switch','throws','throw',/try\\\\?/,/try!/,'try','typealias',/unowned\\\\(safe\\\\)/,/unowned\\\\(unsafe\\\\)/,'unowned','var','weak','where','while','willSet'],$=['false','nil','true'],F=['assignment','associativity','higherThan','left','lowerThan','none','right'],U=['#colorLiteral','#column','#dsohandle','#else','#elseif','#endif','#error','#file','#fileID','#fileLiteral','#filePath','#function','#if','#imageLiteral','#keyPath','#line','#selector','#sourceLocation','#warn_unqualified_access','#warning'],j=['abs','all','any','assert','assertionFailure','debugPrint','dump','fatalError','getVaList','isKnownUniquelyReferenced','max','min','numericCast','pointwiseMax','pointwiseMin','precondition','preconditionFailure','print','readLine','repeatElement','sequence','stride','swap','swift_unboxFromSwiftValueWithType','transcode','type','unsafeBitCast','unsafeDowncast','withExtendedLifetime','withUnsafeMutablePointer','withUnsafePointer','withVaList','withoutActuallyEscaping','zip'],e=R(/[/=\\\\-+!*%\u003C>&|^~?]/,/[\\\\u00A1-\\\\u00A7]/,/[\\\\u00A9\\\\u00AB]/,/[\\\\u00AC\\\\u00AE]/,/[\\\\u00B0\\\\u00B1]/,/[\\\\u00B6\\\\u00BB\\\\u00BF\\\\u00D7\\\\u00F7]/,/[\\\\u2016-\\\\u2017]/,/[\\\\u2020-\\\\u2027]/,/[\\\\u2030-\\\\u203E]/,/[\\\\u2041-\\\\u2053]/,/[\\\\u2055-\\\\u205E]/,/[\\\\u2190-\\\\u23FF]/,/[\\\\u2500-\\\\u2775]/,/[\\\\u2794-\\\\u2BFF]/,/[\\\\u2E00-\\\\u2E7F]/,/[\\\\u3001-\\\\u3003]/,/[\\\\u3008-\\\\u3020]/,/[\\\\u3030]/),P=R(e,/[\\\\u0300-\\\\u036F]/,/[\\\\u1DC0-\\\\u1DFF]/,/[\\\\u20D0-\\\\u20FF]/,/[\\\\uFE00-\\\\uFE0F]/,/[\\\\uFE20-\\\\uFE2F]/),q=T(e,P,'*'),n=R(/[a-zA-Z_]/,/[\\\\u00A8\\\\u00AA\\\\u00AD\\\\u00AF\\\\u00B2-\\\\u00B5\\\\u00B7-\\\\u00BA]/,/[\\\\u00BC-\\\\u00BE\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u00FF]/,/[\\\\u0100-\\\\u02FF\\\\u0370-\\\\u167F\\\\u1681-\\\\u180D\\\\u180F-\\\\u1DBF]/,/[\\\\u1E00-\\\\u1FFF]/,/[\\\\u200B-\\\\u200D\\\\u202A-\\\\u202E\\\\u203F-\\\\u2040\\\\u2054\\\\u2060-\\\\u206F]/,/[\\\\u2070-\\\\u20CF\\\\u2100-\\\\u218F\\\\u2460-\\\\u24FF\\\\u2776-\\\\u2793]/,/[\\\\u2C00-\\\\u2DFF\\\\u2E80-\\\\u2FFF]/,/[\\\\u3004-\\\\u3007\\\\u3021-\\\\u302F\\\\u3031-\\\\u303F\\\\u3040-\\\\uD7FF]/,/[\\\\uF900-\\\\uFD3D\\\\uFD40-\\\\uFDCF\\\\uFDF0-\\\\uFE1F\\\\uFE30-\\\\uFE44]/,/[\\\\uFE47-\\\\uFEFE\\\\uFF00-\\\\uFFFD]/),K=R(n,/\\\\d/,/[\\\\u0300-\\\\u036F\\\\u1DC0-\\\\u1DFF\\\\u20D0-\\\\u20FF\\\\uFE20-\\\\uFE2F]/),H=T(n,K,'*'),Z=T(/[A-Z]/,K,'*'),G=['autoclosure',T(/convention\\\\(/,R('swift','block','c'),/\\\\)/),'discardableResult','dynamicCallable','dynamicMemberLookup','escaping','frozen','GKInspectable','IBAction','IBDesignable','IBInspectable','IBOutlet','IBSegueAction','inlinable','main','nonobjc','NSApplicationMain','NSCopying','NSManaged',T(/objc\\\\(/,H,/\\\\)/),'objc','objcMembers','propertyWrapper','requires_stored_property_inits','resultBuilder','testable','UIApplicationMain','unknown','usableFromInline'],W=['iOS','iOSApplicationExtension','macOS','macOSApplicationExtension','macCatalyst','macCatalystApplicationExtension','watchOS','watchOSApplicationExtension','tvOS','tvOSApplicationExtension','swift'];return e=>{const n={match:/\\\\s+/,relevance:0},t=e.COMMENT('/\\\\\\\\*','\\\\\\\\*/',{contains:['self']}),a=[e.C_LINE_COMMENT_MODE,t],i={match:[/\\\\./,R(...I,...L)],className:{2:'keyword'}},r={match:T(/\\\\./,R(...z)),relevance:0},s=z.filter(e=>'string'==typeof e).concat(['_|0']),o={variants:[{className:'keyword',match:R(...z.filter(e=>'string'!=typeof e).concat(B).map(D),...L)}]},l={$pattern:R(/\\\\b\\\\w+/,/#\\\\w+/),keyword:s.concat(U),literal:$},c=[i,r,o],d=[{match:T(/\\\\./,R(...j)),relevance:0},{className:'built_in',match:T(/\\\\b/,R(...j),/(?=\\\\()/)}],g={match:/->/,relevance:0},u=[g,{className:'operator',relevance:0,variants:[{match:q},{match:`\\\\\\\\.(\\\\\\\\.|${P})+`}]}],b='([0-9a-fA-F]_*)+',m={className:'number',relevance:0,variants:[{match:'\\\\\\\\b(([0-9]_*)+)(\\\\\\\\.(([0-9]_*)+))?([eE][+-]?(([0-9]_*)+))?\\\\\\\\b'},{match:`\\\\\\\\b0x(${b})(\\\\\\\\.(${b}))?([pP][+-]?(([0-9]_*)+))?\\\\\\\\b`},{match:/\\\\b0o([0-7]_*)+\\\\b/},{match:/\\\\b0b([01]_*)+\\\\b/}]},p=(e='')=>({className:'subst',variants:[{match:T(/\\\\\\\\/,e,/[0\\\\\\\\tnr\\\"']/)},{match:T(/\\\\\\\\/,e,/u\\\\{[0-9a-fA-F]{1,8}\\\\}/)}]}),_=(e='')=>({className:'subst',label:'interpol',begin:T(/\\\\\\\\/,e,/\\\\(/),end:/\\\\)/}),h=(e='')=>{return{begin:T(e,/\\\"\\\"\\\"/),end:T(/\\\"\\\"\\\"/,e),contains:[p(e),([n='']=[e],{className:'subst',match:T(/\\\\\\\\/,n,/[\\\\t ]*(?:[\\\\r\\\\n]|\\\\r\\\\n)/)}),_(e)]};var n},f=(e='')=>({begin:T(e,/\\\"/),end:T(/\\\"/,e),contains:[p(e),_(e)]}),E={className:'string',variants:[h(),h('#'),h('##'),h('###'),f(),f('#'),f('##'),f('###')]},v={match:T(/`/,H,/`/)},y=[v,{className:'variable',match:/\\\\$\\\\d+/},{className:'variable',match:`\\\\\\\\$${K}+`}],w=[{match:/(@|#(un)?)available/,className:'keyword',starts:{contains:[{begin:/\\\\(/,end:/\\\\)/,keywords:W,contains:[...u,m,E]}]}},{className:'keyword',match:T(/@/,R(...G))},{className:'meta',match:T(/@/,H)}],N={match:C(/\\\\b[A-Z]/),relevance:0,contains:[{className:'type',match:T(/(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)/,K,'+')},{className:'type',match:Z,relevance:0},{match:/[?!]+/,relevance:0},{match:/\\\\.\\\\.\\\\./,relevance:0},{match:T(/\\\\s+&\\\\s+/,C(Z)),relevance:0}]},x={begin:/\u003C/,end:/>/,keywords:l,contains:[...a,...c,...w,g,N]};N.contains.push(x);var k={begin:/\\\\(/,end:/\\\\)/,relevance:0,keywords:l,contains:['self',{match:T(H,/\\\\s*:/),keywords:'_|0',relevance:0},...a,...c,...d,...u,m,E,...y,...w,N]},O={begin:/\u003C/,end:/>/,contains:[...a,N]},M={begin:/\\\\(/,end:/\\\\)/,keywords:l,contains:[{begin:R(C(T(H,/\\\\s*:/)),C(T(H,/\\\\s+/,H,/\\\\s*:/))),end:/:/,relevance:0,contains:[{className:'keyword',match:/\\\\b_\\\\b/},{className:'params',match:H}]},...a,...c,...u,m,E,...w,N,k],endsParent:!0,illegal:/[\\\"']/},A={match:[/func/,/\\\\s+/,R(v.match,H,q)],className:{1:'keyword',3:'title.function'},contains:[O,M,n],illegal:[/\\\\[/,/%/]},O={match:[/\\\\b(?:subscript|init[?!]?)/,/\\\\s*(?=[\u003C(])/],className:{1:'keyword'},contains:[O,M,n],illegal:/\\\\[|%/},M={match:[/operator/,/\\\\s+/,q],className:{1:'keyword',3:'title'}},S={begin:[/precedencegroup/,/\\\\s+/,Z],className:{1:'keyword',3:'title'},contains:[N],keywords:[...F,...$],end:/}/};for(const e of E.variants){const C=e.contains.find(e=>'interpol'===e.label),T=(C.keywords=l,[...c,...d,...u,m,E,...y]);C.contains=[...T,{begin:/\\\\(/,end:/\\\\)/,contains:['self',...T]}]}return{name:'Swift',keywords:l,contains:[...a,A,O,{beginKeywords:'struct protocol class extension enum actor',end:'\\\\\\\\{',excludeEnd:!0,keywords:l,contains:[e.inherit(e.TITLE_MODE,{className:'title.class',begin:/[A-Za-z$_][\\\\u00C0-\\\\u02B80-9A-Za-z$_]*/}),...c]},M,S,{beginKeywords:'import',end:/$/,contains:[...a],relevance:0},...c,...d,...u,m,E,...y,...w,N,k]}}})(),n.registerLanguage('swift',e),n.registerLanguage('go',e=>{var n={keyword:['break','case','chan','const','continue','default','defer','else','fallthrough','for','func','go','goto','if','import','interface','map','package','range','return','select','struct','switch','type','var'],type:['bool','byte','complex64','complex128','error','float32','float64','int8','int16','int32','int64','string','uint8','uint16','uint32','uint64','int','uint','uintptr','rune'],literal:['true','false','iota','nil'],built_in:['append','cap','close','complex','copy','imag','len','make','new','panic','print','println','real','recover','delete']};return{name:'Go',aliases:['golang'],keywords:n,illegal:'\u003C/',contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:'string',variants:[e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,{begin:'`',end:'`'}]},{className:'number',variants:[{begin:e.C_NUMBER_RE+'[i]',relevance:1},e.C_NUMBER_MODE]},{begin:/:=/},{className:'function',beginKeywords:'func',end:'\\\\\\\\s*(\\\\\\\\{|$)',excludeEnd:!0,contains:[e.TITLE_MODE,{className:'params',begin:/\\\\(/,end:/\\\\)/,endsParent:!0,keywords:n,illegal:/[\\\"']/}]}]}}),e=(()=>{'use strict';const O='[A-Za-z$_][0-9A-Za-z$_]*',M=['as','in','of','if','for','while','finally','var','new','function','do','return','void','else','break','catch','instanceof','with','throw','case','default','try','switch','continue','typeof','delete','let','yield','const','class','debugger','async','await','static','import','from','export','extends'],A=['true','false','null','undefined','NaN','Infinity'],S=['Object','Function','Boolean','Symbol','Math','Date','Number','BigInt','String','RegExp','Array','Float32Array','Float64Array','Int8Array','Uint8Array','Uint8ClampedArray','Int16Array','Int32Array','Uint16Array','Uint32Array','BigInt64Array','BigUint64Array','Set','Map','WeakSet','WeakMap','ArrayBuffer','SharedArrayBuffer','Atomics','DataView','JSON','Promise','Generator','GeneratorFunction','AsyncFunction','Reflect','Proxy','Intl','WebAssembly'],C=['Error','EvalError','InternalError','RangeError','ReferenceError','SyntaxError','TypeError','URIError'],T=['setInterval','setTimeout','clearInterval','clearTimeout','require','exports','eval','isFinite','isNaN','parseFloat','parseInt','decodeURI','decodeURIComponent','encodeURI','encodeURIComponent','escape','unescape'],R=['arguments','this','super','console','window','document','localStorage','module','global'],D=[].concat(T,S,C);return e=>{const n=e.regex,t=O,a=/\u003C[A-Za-z0-9\\\\\\\\._:-]+/,i=/\\\\/[A-Za-z0-9\\\\\\\\._:-]+>|\\\\/>/,r=(e,n)=>{var t,a,i=e[0].length+e.index,r=e.input[i];'\u003C'!==r&&','!==r&&('>'===r&&([r,t]=[e,i],a='\u003C/'+r[0].slice(1),-1===r.input.indexOf(a,t))&&n.ignoreMatch(),!(r=e.input.substr(i).match(/^\\\\s+extends\\\\s+/))||0!==r.index)||n.ignoreMatch()},s={$pattern:O,keyword:M,literal:A,built_in:D,'variable.language':R},o='\\\\\\\\.([0-9](_?[0-9])*)',l='0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*',c={className:'number',variants:[{begin:`(\\\\\\\\b(${l})((${o})|\\\\\\\\.)?|(${o}))[eE][+-]?([0-9](_?[0-9])*)\\\\\\\\b`},{begin:`\\\\\\\\b(${l})\\\\\\\\b((${o})\\\\\\\\b|\\\\\\\\.)?|(${o})\\\\\\\\b`},{begin:'\\\\\\\\b(0|[1-9](_?[0-9])*)n\\\\\\\\b'},{begin:'\\\\\\\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\\\\\\\b'},{begin:'\\\\\\\\b0[bB][0-1](_?[0-1])*n?\\\\\\\\b'},{begin:'\\\\\\\\b0[oO][0-7](_?[0-7])*n?\\\\\\\\b'},{begin:'\\\\\\\\b0[0-7]+n?\\\\\\\\b'}],relevance:0},d={className:'subst',begin:'\\\\\\\\$\\\\\\\\{',end:'\\\\\\\\}',keywords:s,contains:[]},g={begin:'html`',end:'',starts:{end:'`',returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,d],subLanguage:'xml'}},u={begin:'css`',end:'',starts:{end:'`',returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,d],subLanguage:'css'}},b={className:'string',begin:'`',end:'`',contains:[e.BACKSLASH_ESCAPE,d]},m={className:'comment',variants:[e.COMMENT(/\\\\/\\\\*\\\\*(?!\\\\/)/,'\\\\\\\\*/',{relevance:0,contains:[{begin:'(?=@[A-Za-z]+)',relevance:0,contains:[{className:'doctag',begin:'@[A-Za-z]+'},{className:'type',begin:'\\\\\\\\{',end:'\\\\\\\\}',excludeEnd:!0,excludeBegin:!0,relevance:0},{className:'variable',begin:t+'(?=\\\\\\\\s*(-)|$)',endsParent:!0,relevance:0},{begin:/(?=[^\\\\n])\\\\s/,relevance:0}]}]}),e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE]},p=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,g,u,b,c];d.contains=p.concat({begin:/\\\\{/,end:/\\\\}/,keywords:s,contains:['self'].concat(p)});var _=[].concat(m,d.contains),_=_.concat([{begin:/\\\\(/,end:/\\\\)/,keywords:s,contains:['self'].concat(_)}]),h={className:'params',begin:/\\\\(/,end:/\\\\)/,excludeBegin:!0,excludeEnd:!0,keywords:s,contains:_},f={variants:[{match:[/class/,/\\\\s+/,t,/\\\\s+/,/extends/,/\\\\s+/,n.concat(t,'(',n.concat(/\\\\./,t),')*')],scope:{1:'keyword',3:'title.class',5:'keyword',7:'title.class.inherited'}},{match:[/class/,/\\\\s+/,t],scope:{1:'keyword',3:'title.class'}}]},E={relevance:0,match:n.either(/\\\\bJSON/,/\\\\b[A-Z][a-z]+([A-Z][a-z]*|\\\\d)*/,/\\\\b[A-Z]{2,}([A-Z][a-z]+|\\\\d)+([A-Z][a-z]*)*/,/\\\\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\\\\d)*([A-Z][a-z]*)*/),className:'title.class',keywords:{_:[...S,...C]}},v={variants:[{match:[/function/,/\\\\s+/,t,/(?=\\\\s*\\\\()/]},{match:[/function/,/\\\\s*(?=\\\\()/]}],className:{1:'keyword',3:'title.function'},label:'func.def',contains:[h],illegal:/%/},y={match:n.concat(/\\\\b/,(y=[...T,'super'],n.concat('(?!',y.join('|'),')')),t,n.lookahead(/\\\\(/)),className:'title.function',relevance:0},w={begin:n.concat(/\\\\./,n.lookahead(n.concat(t,/(?![0-9A-Za-z$_(])/))),end:t,excludeBegin:!0,keywords:'prototype',className:'property',relevance:0},N={match:[/get|set/,/\\\\s+/,t,/(?=\\\\()/],className:{1:'keyword',3:'title.function'},contains:[{begin:/\\\\(\\\\)/},h]},x='(\\\\\\\\([^()]*(\\\\\\\\([^()]*(\\\\\\\\([^()]*\\\\\\\\)[^()]*)*\\\\\\\\)[^()]*)*\\\\\\\\)|'+e.UNDERSCORE_IDENT_RE+')\\\\\\\\s*=>',k={match:[/const|var|let/,/\\\\s+/,t,/\\\\s*/,/=\\\\s*/,/(async\\\\s*)?/,n.lookahead(x)],keywords:'async',className:{1:'keyword',3:'title.function'},contains:[h]};return{name:'Javascript',aliases:['js','jsx','mjs','cjs'],keywords:s,exports:{PARAMS_CONTAINS:_,CLASS_REFERENCE:E},illegal:/#(?![$_A-z])/,contains:[e.SHEBANG({label:'shebang',binary:'node',relevance:5}),{label:'use_strict',className:'meta',relevance:10,begin:/^\\\\s*['\\\"]use (strict|asm)['\\\"]/},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,g,u,b,m,c,E,{className:'attr',begin:t+n.lookahead(':'),relevance:0},k,{begin:'('+e.RE_STARTERS_RE+'|\\\\\\\\b(case|return|throw)\\\\\\\\b)\\\\\\\\s*',keywords:'return throw case',relevance:0,contains:[m,e.REGEXP_MODE,{className:'function',begin:x,returnBegin:!0,end:'\\\\\\\\s*=>',contains:[{className:'params',variants:[{begin:e.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\\\\(\\\\s*\\\\)/,skip:!0},{begin:/\\\\(/,end:/\\\\)/,excludeBegin:!0,excludeEnd:!0,keywords:s,contains:_}]}]},{begin:/,/,relevance:0},{match:/\\\\s+/,relevance:0},{variants:[{begin:'\u003C>',end:'\u003C/>'},{match:/\u003C[A-Za-z0-9\\\\\\\\._:-]+\\\\s*\\\\/>/},{begin:a,'on:begin':r,end:i}],subLanguage:'xml',contains:[{begin:a,end:i,skip:!0,contains:['self']}]}]},v,{beginKeywords:'while if switch catch for'},{begin:'\\\\\\\\b(?!function)'+e.UNDERSCORE_IDENT_RE+'\\\\\\\\([^()]*(\\\\\\\\([^()]*(\\\\\\\\([^()]*\\\\\\\\)[^()]*)*\\\\\\\\)[^()]*)*\\\\\\\\)\\\\\\\\s*\\\\\\\\{',returnBegin:!0,label:'func.def',contains:[h,e.inherit(e.TITLE_MODE,{begin:t,className:'title.function'})]},{match:/\\\\.\\\\.\\\\./,relevance:0},w,{match:'\\\\\\\\$'+t,relevance:0},{match:[/\\\\bconstructor(?=\\\\s*\\\\()/],className:{1:'title.function'},contains:[h]},y,{relevance:0,match:/\\\\b[A-Z][A-Z_0-9]+\\\\b/,className:'variable.constant'},f,N,{match:/\\\\$[(.]/}]}}})(),n.registerLanguage('javascript',e),n.registerLanguage('rust',e=>{var n=e.regex,n={className:'title.function.invoke',relevance:0,begin:n.concat(/\\\\b/,/(?!let\\\\b)/,e.IDENT_RE,n.lookahead(/\\\\s*\\\\(/))},t='([ui](8|16|32|64|128|size)|f(32|64))?',a=['drop ','Copy','Send','Sized','Sync','Drop','Fn','FnMut','FnOnce','ToOwned','Clone','Debug','PartialEq','PartialOrd','Eq','Ord','AsRef','AsMut','Into','From','Default','Iterator','Extend','IntoIterator','DoubleEndedIterator','ExactSizeIterator','SliceConcatExt','ToString','assert!','assert_eq!','bitflags!','bytes!','cfg!','col!','concat!','concat_idents!','debug_assert!','debug_assert_eq!','env!','panic!','file!','format!','format_args!','include_bin!','include_str!','line!','local_data_key!','module_path!','option_env!','print!','println!','select!','stringify!','try!','unimplemented!','unreachable!','vec!','write!','writeln!','macro_rules!','assert_ne!','debug_assert_ne!'];return{name:'Rust',aliases:['rs'],keywords:{$pattern:e.IDENT_RE+'!?',type:['i8','i16','i32','i64','i128','isize','u8','u16','u32','u64','u128','usize','f32','f64','str','char','bool','Box','Option','Result','String','Vec'],keyword:['abstract','as','async','await','become','box','break','const','continue','crate','do','dyn','else','enum','extern','false','final','fn','for','if','impl','in','let','loop','macro','match','mod','move','mut','override','priv','pub','ref','return','self','Self','static','struct','super','trait','true','try','type','typeof','unsafe','unsized','use','virtual','where','while','yield'],literal:['true','false','Some','None','Ok','Err'],built_in:a},illegal:'\u003C/',contains:[e.C_LINE_COMMENT_MODE,e.COMMENT('/\\\\\\\\*','\\\\\\\\*/',{contains:['self']}),e.inherit(e.QUOTE_STRING_MODE,{begin:/b?\\\"/,illegal:null}),{className:'string',variants:[{begin:/b?r(#*)\\\"(.|\\\\n)*?\\\"\\\\1(?!#)/},{begin:/b?'\\\\\\\\?(x\\\\w{2}|u\\\\w{4}|U\\\\w{8}|.)'/}]},{className:'symbol',begin:/'[a-zA-Z_][a-zA-Z0-9_]*/},{className:'number',variants:[{begin:'\\\\\\\\b0b([01_]+)'+t},{begin:'\\\\\\\\b0o([0-7_]+)'+t},{begin:'\\\\\\\\b0x([A-Fa-f0-9_]+)'+t},{begin:'\\\\\\\\b(\\\\\\\\d[\\\\\\\\d_]*(\\\\\\\\.[0-9_]+)?([eE][+-]?[0-9_]+)?)'+t}],relevance:0},{begin:[/fn/,/\\\\s+/,e.UNDERSCORE_IDENT_RE],className:{1:'keyword',3:'title.function'}},{className:'meta',begin:'#!?\\\\\\\\[',end:'\\\\\\\\]',contains:[{className:'string',begin:/\\\"/,end:/\\\"/}]},{begin:[/let/,/\\\\s+/,/(?:mut\\\\s+)?/,e.UNDERSCORE_IDENT_RE],className:{1:'keyword',3:'keyword',4:'variable'}},{begin:[/for/,/\\\\s+/,e.UNDERSCORE_IDENT_RE,/\\\\s+/,/in/],className:{1:'keyword',3:'variable',5:'keyword'}},{begin:[/type/,/\\\\s+/,e.UNDERSCORE_IDENT_RE],className:{1:'keyword',3:'title.class'}},{begin:[/(?:trait|enum|struct|union|impl|for)/,/\\\\s+/,e.UNDERSCORE_IDENT_RE],className:{1:'keyword',3:'title.class'}},{begin:e.IDENT_RE+'::',keywords:{keyword:'Self',built_in:a}},{className:'punctuation',begin:'->'},n]}}),e=(()=>{'use strict';var e='\\\\\\\\.([0-9](_*[0-9])*)',n='[0-9a-fA-F](_*[0-9a-fA-F])*',s={className:'number',variants:[{begin:`(\\\\\\\\b([0-9](_*[0-9])*)((${e})|\\\\\\\\.)?|(${e}))[eE][+-]?([0-9](_*[0-9])*)[fFdD]?\\\\\\\\b`},{begin:`\\\\\\\\b([0-9](_*[0-9])*)((${e})[fFdD]?\\\\\\\\b|\\\\\\\\.([fFdD]\\\\\\\\b)?)`},{begin:`(${e})[fFdD]?\\\\\\\\b`},{begin:'\\\\\\\\b([0-9](_*[0-9])*)[fFdD]\\\\\\\\b'},{begin:`\\\\\\\\b0[xX]((${n})\\\\\\\\.?|(${n})?\\\\\\\\.(${n}))[pP][+-]?([0-9](_*[0-9])*)[fFdD]?\\\\\\\\b`},{begin:'\\\\\\\\b(0|[1-9](_*[0-9])*)[lL]?\\\\\\\\b'},{begin:`\\\\\\\\b0[xX](${n})[lL]?\\\\\\\\b`},{begin:'\\\\\\\\b0(_*[0-7])*[lL]?\\\\\\\\b'},{begin:'\\\\\\\\b0[bB][01](_*[01])*[lL]?\\\\\\\\b'}],relevance:0};return e=>{e.regex;var n='[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*',t=n+function n(t,a,i){return-1===i?'':t.replace(a,e=>n(t,a,i-1))}('(?:\u003C'+n+'~~~(?:\\\\\\\\s*,\\\\\\\\s*'+n+'~~~)*>)?',/~~~/g,2),a={keyword:['synchronized','abstract','private','var','static','if','const ','for','while','strictfp','finally','protected','import','native','final','void','enum','else','break','transient','catch','instanceof','volatile','case','assert','package','default','public','try','switch','continue','throws','protected','public','private','module','requires','exports','do','sealed'],literal:['false','true','null'],type:['char','boolean','long','float','int','byte','short','double'],built_in:['super','this']},i={className:'meta',begin:'@'+n,contains:[{begin:/\\\\(/,end:/\\\\)/,contains:['self']}]},r={className:'params',begin:/\\\\(/,end:/\\\\)/,keywords:a,relevance:0,contains:[e.C_BLOCK_COMMENT_MODE],endsParent:!0};return{name:'Java',aliases:['jsp'],keywords:a,illegal:/\u003C\\\\/|#/,contains:[e.COMMENT('/\\\\\\\\*\\\\\\\\*','\\\\\\\\*/',{relevance:0,contains:[{begin:/\\\\w+@/,relevance:0},{className:'doctag',begin:'@[A-Za-z]+'}]}),{begin:/import java\\\\.[a-z]+\\\\./,keywords:'import',relevance:2},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{begin:/\\\"\\\"\\\"/,end:/\\\"\\\"\\\"/,className:'string',contains:[e.BACKSLASH_ESCAPE]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{match:[/\\\\b(?:class|interface|enum|extends|implements|new)/,/\\\\s+/,n],className:{1:'keyword',3:'title.class'}},{match:/non-sealed/,scope:'keyword'},{begin:[n,/\\\\s+/,n,/\\\\s+/,/=/],className:{1:'type',3:'variable',5:'operator'}},{begin:[/record/,/\\\\s+/,n],className:{1:'keyword',3:'title.class'},contains:[r,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:'new throw return else',relevance:0},{begin:['(?:'+t+'\\\\\\\\s+)',e.UNDERSCORE_IDENT_RE,/\\\\s*(?=\\\\()/],className:{2:'title.function'},keywords:a,contains:[{className:'params',begin:/\\\\(/,end:/\\\\)/,keywords:a,relevance:0,contains:[i,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,s,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},s,i]}}})(),n.registerLanguage('java',e),exports.hljs=n;\",\"type\":\"application/javascript\",\"module-type\":\"library\"},\"$:/plugins/tiddlywiki/highlight/highlight.css\":{\"text\":\"/*!\\n Theme: Default\\n Description: Original highlight.js style\\n Author: (c) Ivan Sagalaev \u003Cmaniac@softwaremaniacs.org>\\n Maintainer: @highlightjs/core-team\\n Website: https://highlightjs.org/\\n License: see project LICENSE\\n Touched: 2021\\n*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{background:#f3f3f3;color:#444}.hljs-comment{color:#697070}.hljs-punctuation,.hljs-tag{color:#444a}.hljs-tag .hljs-attr,.hljs-tag .hljs-name{color:#444}.hljs-attribute,.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-name,.hljs-selector-tag{font-weight:700}.hljs-deletion,.hljs-number,.hljs-quote,.hljs-selector-class,.hljs-selector-id,.hljs-string,.hljs-template-tag,.hljs-type{color:#800}.hljs-section,.hljs-title{color:#800;font-weight:700}.hljs-link,.hljs-operator,.hljs-regexp,.hljs-selector-attr,.hljs-selector-pseudo,.hljs-symbol,.hljs-template-variable,.hljs-variable{color:#ab5656}.hljs-literal{color:#695}.hljs-addition,.hljs-built_in,.hljs-bullet,.hljs-code{color:#397300}.hljs-meta{color:#1f7199}.hljs-meta .hljs-string{color:#38a}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}\",\"type\":\"text/css\",\"tags\":\"[[$:/tags/Stylesheet]]\"},\"$:/plugins/tiddlywiki/highlight/highlightblock.js\":{\"text\":\"!function(){'use strict';var e=require('$:/core/modules/widgets/codeblock.js').codeblock,l=require('$:/plugins/tiddlywiki/highlight/highlight.js');void 0!==l.getLanguage&&($tw.utils.each($tw.modules.types.highlight,function(e,i){$tw.utils.evalSandboxed(e.definition,{hljs:l,exports:{}},i)}),e.prototype.postRender=function(){var e=this.domNodes[0],i=this.language,t=this.wiki.getTiddler('$:/config/HighlightPlugin/TypeMappings/'+i);(i=t?t.fields.text||'':i)&&l.getLanguage(i)&&(e.className='hljs',e.children[0].className=i.toLowerCase()+' hljs',$tw.browser&&!e.isTiddlyWikiFakeDom?l.highlightElement(e.children[0]):(t=e.textContent,e.children[0].innerHTML=l.highlight(t,{language:i,ignoreIllegals:!0}).value,e.isTiddlyWikiFakeDom&&(e.children[0].textInnerHTML=t)))})}();\",\"type\":\"application/javascript\",\"module-type\":\"widget\"},\"$:/plugins/tiddlywiki/highlight/license\":{\"type\":\"text/plain\",\"text\":\"Copyright (c) 2006, Ivan Sagalaev\\nAll rights reserved.\\nRedistribution and use in source and binary forms, with or without\\nmodification, are permitted provided that the following conditions are met:\\n\\n * Redistributions of source code must retain the above copyright\\n notice, this list of conditions and the following disclaimer.\\n * Redistributions in binary form must reproduce the above copyright\\n notice, this list of conditions and the following disclaimer in the\\n documentation and/or other materials provided with the distribution.\\n * Neither the name of highlight.js nor the names of its contributors\\n may be used to endorse or promote products derived from this software\\n without specific prior written permission.\\n\\nTHIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY\\nEXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\\nDISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY\\nDIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\\nON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\\n\"},\"$:/plugins/tiddlywiki/highlight/readme\":{\"text\":\"\\\\define highlightVersion()11.4.0\\nThis plugin provides syntax highlighting of code blocks using version \u003C\u003ChighlightVersion>> of [[highlight.js|https://github.com/isagalaev/highlight.js]] from Ivan Sagalaev. This plugin does not work on browsers that do not fully support ~JavaScript ES6 (2015). If you need highlight.js running on those legacy browsers, you would need to install the \\\"Highlight (Legacy)\\\" plugin instead. Here's a [[ES6 compatibility table|https://caniuse.com/?search=es6]].\\n\\n! Built-in Language Brushes\\n\\nThe plugin includes support for the following common languages (referred to as \\\"brushes\\\" by highlight.js):\\n\\n* bash\\n* c\\n* cpp\\n* csharp\\n* css\\n* diff\\n* go\\n* html, xml\\n* java\\n* javascript\\n* json\\n* kotlin\\n* less\\n* lua\\n* makefile\\n* markdown\\n* objectivec\\n* perl\\n* php\\n* plaintext\\n* python\\n* R\\n* ruby\\n* rust\\n* scss\\n* sql\\n* shell session\\n* swift\\n* toml, ini\\n* typescript\\n* visual basic .net\\n* yaml\\n\\nAnd these additional ones:\\n\\n* apache config\\n* dockerfile\\n* fortran\\n* latex\\n* nginx config\\n\\nThe mapping between a MIME type and a highlight.js language specifier is accomplished via mapping tiddlers whose titles start with `$:/config/HighlightPlugin/TypeMappings/`.\\n\"},\"$:/plugins/tiddlywiki/highlight/styles\":{\"tags\":\"[[$:/tags/Stylesheet]]\",\"text\":\"pre.hljs {\\n padding: 0;\\n}\\n\\npre code.hljs {\\n padding: 0.5em;\\n}\\n\\n.hljs {\\n background: \u003C\u003Ccolour tiddler-editor-background>>;\\n color: \u003C\u003Ccolour foreground>>;\\n -webkit-text-size-adjust:none;\\n}\\n\\n.hljs-comment,\\n.hljs-quote {\\n color: #93a1a1;\\n}\\n\\n/* Solarized Green */\\n.hljs-keyword,\\n.hljs-selector-tag,\\n.hljs-addition {\\n color: #859900;\\n}\\n\\n/* Solarized Cyan */\\n.hljs-number,\\n.hljs-string,\\n.hljs-meta .hljs-string,\\n.hljs-literal,\\n.hljs-doctag,\\n.hljs-regexp {\\n color: #2aa198;\\n}\\n\\n/* Solarized Blue */\\n.hljs-title,\\n.hljs-section,\\n.hljs-name,\\n.hljs-selector-id,\\n.hljs-selector-class {\\n color: #268bd2;\\n}\\n\\n/* Solarized Yellow */\\n.hljs-attribute,\\n.hljs-attr,\\n.hljs-variable,\\n.hljs-template-variable,\\n.hljs-class .hljs-title,\\n.hljs-type {\\n color: #b58900;\\n}\\n\\n/* Solarized Orange */\\n.hljs-symbol,\\n.hljs-bullet,\\n.hljs-subst,\\n.hljs-meta,\\n.hljs-meta .hljs-keyword,\\n.hljs-selector-attr,\\n.hljs-selector-pseudo,\\n.hljs-link {\\n color: #cb4b16;\\n}\\n\\n/* Solarized Red */\\n.hljs-built_in,\\n.hljs-deletion {\\n color: #dc322f;\\n}\\n\\n.hljs-formula {\\n background: #eee8d5;\\n}\\n\\n.hljs-emphasis {\\n font-style: italic;\\n}\\n\\n.hljs-strong {\\n font-weight: bold;\\n}\\n\"},\"$:/plugins/tiddlywiki/highlight/usage\":{\"text\":\"\\\\import $:/plugins/tiddlywiki/highlight/readme\\n\\\\define jsDelivrLink()https://www.jsdelivr.com/package/gh/highlightjs/cdn-release?path=build%2Flanguages&version=$(highlightVersion)$\\n\\\\define unpkgLink()https://unpkg.com/browse/@highlightjs/cdn-assets@$(highlightVersion)$/languages/\\n! Usage\\n\\nSyntax highlighting is triggered when you add language information to code blocks defined with triple backticks or with the `\u003C$codeblock>` widget. For fenced code blocks, specify the code's language immediately after the first set of backticks:\\n\\n```\\n ```js\\n var a = b + c; // Highlighted as JavaScript\\n ```\\n```\\n\\n! Adding Themes\\n\\nYou can add themes from highlight.js by copying the CSS to a new tiddler and tagging it with [[$:/tags/Stylesheet]]. The available themes can be found on GitHub:\\n\\nhttps://github.com/isagalaev/highlight.js/tree/master/src/styles\\n\\n! Supporting Additional Languages\\n\\nThe [[highlight.js|https://github.com/highlightjs/highlight.js]] project supports many languages. Only a subset of these languages are supported by the plugin. You can change the language set using either of the following methods:\\n\\n!! Browser-based Method\\n\\nYou can import language definitions into \u003C$text text=JavaScript/> tiddlers, with their `module-type` set to \\\"highlight\\\".\\n\\nFirst, locate the language file(s) you need. You can fetch the files from the following CDNs:\\n\\n* \u003Ca href=\u003C\u003CjsDelivrLink>>>jsDelivr\u003C/a>\\n* \u003Ca href=\u003C\u003CunpkgLink>>>unpkg\u003C/a>\\n\\nThen, click the button below to create a \\\"highlight\\\" module. Copy and paste the content of a language file into the the text area. Give your tiddler a meaningful title so you can keep track of the languages you've installed. You may choose to either create one tiddler per language or lump all language definitions into one tiddler. Save and reload your wiki.\\n\\n\u003C$button tooltip='add new languages'aria-label='add new languages'>\\n\u003C$action-createtiddler $basetitle=highlight-language.js text=''type='application/javascript'module-type=highlight>\\n\u003C$action-sendmessage $param=\u003C\u003CcreateTiddler-title>>$message=tm-edit-tiddler/>\\n\u003C/$action-createtiddler>\\nAdd New Language(s)\\n\u003C/$button>\\n\\n!!! Keeping Your Language Definitions Up-to-date\\n\\nRemember to update installed languages whenever this plugin is upgraded: \\n\\n\u003Cul>\\n\u003C$list emptyMessage='\u003Cli>(none installed)'filter=[[highlight]modules[]]>\\n\u003Cli>\u003C$link>\u003C\u003CcurrentTiddler>>\u003C/$link>\u003C/li>\\n\u003C/$list>\\n\u003C/ul>\\n\\n!! Via \u003C$text text=\\\"TiddlyWiki\\\"/> on Node.js\\n\\nYou can replace the supplied highlight.js library with a custom version:\\n\\n# Go to the highlight.js project [[download page|https://highlightjs.org/download/]], select the language definitions to include, and press the Download button to download a zip archive containing customised support files for a highlight.js syntax highlighting server.\\n# Locate the `highlight.min.js` file in the highlight plugin -- on a stock Debian 8 system running Tiddlywiki5 under node-js, it is in `/usr/local/lib/node_modules/tiddlywiki/plugins/tiddlywiki/highlight/files/`.\\n# Replace the plugin `highlight.min.js` file located in step 2 with the one from the downloaded archive obtained in step 1.\\n# Restart the ~TiddlyWiki server.\"}}}"},
{"title":"$:/plugins/tiddlywiki/markdown","name":"Markdown","description":"Markdown parser based on remarkable by Jon Schlinkert and remarkable-katex by Brad Howes","list":"readme usage remarkable-license remarkable-katex-license","version":"5.2.5","plugin-type":"plugin","dependents":"","type":"application/json","text":"{\"tiddlers\":{\"$:/plugins/tiddlywiki/markdown/EditorToolbar/bold\":{\"list-after\":\"$:/core/ui/EditorToolbar/bold\",\"tags\":\"$:/tags/EditorToolbar\",\"icon\":\"$:/core/images/bold\",\"caption\":\"{{$:/language/Buttons/Bold/Caption}} (Markdown)\",\"description\":\"{{$:/language/Buttons/Bold/Hint}}\",\"condition\":\"[\u003CtargetTiddler>type[text/x-markdown]]\",\"shortcuts\":\"((bold))\",\"text\":\"\u003C$action-sendmessage $message=tm-edit-text-operation $param=wrap-selection prefix=** suffix=**/>\\n\"},\"$:/plugins/tiddlywiki/markdown/EditorToolbar/heading-1\":{\"list-after\":\"$:/core/ui/EditorToolbar/heading-1\",\"tags\":\"$:/tags/EditorToolbar\",\"icon\":\"$:/core/images/heading-1\",\"caption\":\"{{$:/language/Buttons/Heading1/Caption}} (Markdown)\",\"description\":\"{{$:/language/Buttons/Heading1/Hint}}\",\"condition\":\"[\u003CtargetTiddler>type[text/x-markdown]]\",\"shortcuts\":\"((heading-1))\",\"text\":\"\u003C$action-sendmessage $message=tm-edit-text-operation $param=prefix-lines character=# count=1/>\\n\"},\"$:/plugins/tiddlywiki/markdown/EditorToolbar/heading-2\":{\"list-after\":\"$:/core/ui/EditorToolbar/heading-2\",\"tags\":\"$:/tags/EditorToolbar\",\"icon\":\"$:/core/images/heading-2\",\"caption\":\"{{$:/language/Buttons/Heading2/Caption}} (Markdown)\",\"description\":\"{{$:/language/Buttons/Heading2/Hint}}\",\"condition\":\"[\u003CtargetTiddler>type[text/x-markdown]]\",\"shortcuts\":\"((heading-2))\",\"text\":\"\u003C$action-sendmessage $message=tm-edit-text-operation $param=prefix-lines character=# count=2/>\\n\"},\"$:/plugins/tiddlywiki/markdown/EditorToolbar/heading-3\":{\"list-after\":\"$:/core/ui/EditorToolbar/heading-3\",\"tags\":\"$:/tags/EditorToolbar\",\"icon\":\"$:/core/images/heading-3\",\"caption\":\"{{$:/language/Buttons/Heading3/Caption}} (Markdown)\",\"description\":\"{{$:/language/Buttons/Heading3/Hint}}\",\"condition\":\"[\u003CtargetTiddler>type[text/x-markdown]]\",\"shortcuts\":\"((heading-3))\",\"text\":\"\u003C$action-sendmessage $message=tm-edit-text-operation $param=prefix-lines character=# count=3/>\\n\"},\"$:/plugins/tiddlywiki/markdown/EditorToolbar/heading-4\":{\"list-after\":\"$:/core/ui/EditorToolbar/heading-4\",\"tags\":\"$:/tags/EditorToolbar\",\"icon\":\"$:/core/images/heading-4\",\"caption\":\"{{$:/language/Buttons/Heading4/Caption}} (Markdown)\",\"description\":\"{{$:/language/Buttons/Heading4/Hint}}\",\"condition\":\"[\u003CtargetTiddler>type[text/x-markdown]]\",\"shortcuts\":\"((heading-4))\",\"text\":\"\u003C$action-sendmessage $message=tm-edit-text-operation $param=prefix-lines character=# count=4/>\\n\"},\"$:/plugins/tiddlywiki/markdown/EditorToolbar/heading-5\":{\"list-after\":\"$:/core/ui/EditorToolbar/heading-5\",\"tags\":\"$:/tags/EditorToolbar\",\"icon\":\"$:/core/images/heading-5\",\"caption\":\"{{$:/language/Buttons/Heading5/Caption}} (Markdown)\",\"description\":\"{{$:/language/Buttons/Heading5/Hint}}\",\"condition\":\"[\u003CtargetTiddler>type[text/x-markdown]]\",\"shortcuts\":\"((heading-5))\",\"text\":\"\u003C$action-sendmessage $message=tm-edit-text-operation $param=prefix-lines character=# count=5/>\\n\"},\"$:/plugins/tiddlywiki/markdown/EditorToolbar/heading-6\":{\"list-after\":\"$:/core/ui/EditorToolbar/heading-6\",\"tags\":\"$:/tags/EditorToolbar\",\"icon\":\"$:/core/images/heading-6\",\"caption\":\"{{$:/language/Buttons/Heading6/Caption}} (Markdown)\",\"description\":\"{{$:/language/Buttons/Heading6/Hint}}\",\"condition\":\"[\u003CtargetTiddler>type[text/x-markdown]]\",\"shortcuts\":\"((heading-6))\",\"text\":\"\u003C$action-sendmessage $message=tm-edit-text-operation $param=prefix-lines character=# count=6/>\\n\"},\"$:/plugins/tiddlywiki/markdown/EditorToolbar/italic\":{\"list-after\":\"$:/core/ui/EditorToolbar/italic\",\"tags\":\"$:/tags/EditorToolbar\",\"icon\":\"$:/core/images/italic\",\"caption\":\"{{$:/language/Buttons/Italic/Caption}} (Markdown)\",\"description\":\"{{$:/language/Buttons/Italic/Hint}}\",\"condition\":\"[\u003CtargetTiddler>type[text/x-markdown]]\",\"shortcuts\":\"((italic))\",\"text\":\"\u003C$action-sendmessage $message=tm-edit-text-operation $param=wrap-selection prefix=* suffix=*/>\\n\"},\"$:/plugins/tiddlywiki/markdown/EditorToolbar/link-dropdown\":{\"text\":\"\\\\define lingo-base()$:/language/Buttons/Link/\\n\\\\define add-link-actions()\u003C$action-sendmessage $message=tm-edit-text-operation text={{$(linkTiddler)$}}$param=make-markdown-link/>\u003C$action-deletetiddler $filter=\\\"[\u003Cdropdown-state>] [\u003CsearchTiddler>] [\u003ClinkTiddler>] [\u003CstoreTitle>] [\u003CsearchListState>]\\\"/>\\n\\\\define get-focus-selector()[data-tiddler-title=\\\"$(cssEscapedTitle)$\\\"] .tc-create-wikitext-link input\\n\\\\define cancel-search-actions-inner()\u003C$let userInput={{{[\u003CstoreTitle>get[text]]}}}>\u003C$list filter='[\u003CsearchTiddler>get[text]!match\u003CuserInput>]'emptyMessage=\\\"\u003C$action-deletetiddler $filter='[\u003CsearchTiddler>] [\u003ClinkTiddler>] [\u003CstoreTitle>] [\u003CsearchListState>]'/>\\\">\u003C$action-setfield $tiddler=\u003C\u003CsearchTiddler>>text=\u003C\u003CuserInput>>/>\u003C$action-setfield $tiddler=\u003C\u003CrefreshTitle>>text=yes/>\\n\\\\define cancel-search-actions()\u003C$list filter=\\\"[\u003CstoreTitle>!has[text]\u003CsearchTiddler>!has[text]]\\\"emptyMessage=\\\"\u003C\u003Ccancel-search-actions-inner>>\\\">\u003C$action-sendmessage $message=tm-edit-text-operation $param=focus-editor/>\\n\\\\define external-link()\u003C$button style=\\\"width: auto; display: inline-block; background-colour: inherit;\\\"actions=\u003C\u003Cadd-link-actions>>class=tc-btn-invisible>{{$:/core/images/chevron-right}}\\n\\\\define set-next-input-tab(beforeafter:after)\u003C$macrocall stateTitle='$:/state/tab/search-results/sidebar'tag='$:/tags/SearchResults'beforeafter=\\\"$beforeafter$\\\"defaultState={{$:/config/SearchResults/Default}}actions=\\\"\u003C$action-setfield $tiddler='$:/state/search/currentTab' text=\u003C\u003CnextTab>>/>\\\"$name=change-input-tab/>\\n\\\\define body(config-title)\\n''\u003C\u003Clingo Hint>>''\\n\\n\u003C$vars searchTiddler=\\\"\\\"\\\"$config-title$/search\\\"\\\"\\\"linkTiddler=\\\"\\\"\\\"$config-title$/link\\\"\\\"\\\"linktext=''searchListState=\u003C\u003Cqualify'$:/temp/link-search/selected-item'>>refreshTitle=\u003C\u003Cqualify'$:/temp/link-search/refresh'>>storeTitle=\u003C\u003Cqualify'$:/temp/link-search/input'>>>\\n\\n\u003C$let linkTiddler=\u003C\u003CsearchTiddler>>>\u003C$keyboard actions=\u003C\u003Cset-next-input-tab>>key=((input-tab-right))>\u003C$keyboard key=((input-tab-left)) actions=\u003C\u003Cset-next-input-tab before>>class=tc-create-wikitext-link>\u003C$macrocall $name=keyboard-driven-input tiddler=\u003C\u003CsearchTiddler>>storeTitle=\u003C\u003CstoreTitle>>selectionStateTitle=\u003C\u003CsearchListState>>refreshTitle=\u003C\u003CrefreshTitle>>type=search filterMinLength=1 tag=input focus inputCancelActions=\u003C\u003Ccancel-search-actions>>inputAcceptActions=\u003C\u003Cadd-link-actions>>placeholder={{$:/language/Search/Search}}default=''configTiddlerFilter='[[$:/state/search/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}]'class=tc-popup-handle/>\u003C/$keyboard>\u003C/$keyboard> \u003C$reveal tag=span state=\u003C\u003CstoreTitle>>text=''type=nomatch>\u003C\u003Cexternal-link>> \u003C$button style='width: auto; display: inline-block; background-colour: inherit;'class=tc-btn-invisible>\u003C\u003Ccancel-search-actions>>\u003C$let cssEscapedTitle={{{[\u003CstoryTiddler>escapecss[]]}}}>\u003C$action-sendmessage $param=\u003C\u003Cget-focus-selector>>$message=tm-focus-selector/>\u003C/$let>{{$:/core/images/close-button}}\u003C/$button>\u003C/$reveal>\u003C/$let>\\n\\n\u003C$reveal tag=div state=\u003C\u003CstoreTitle>>text=''type=nomatch>\\n\\n\u003C$linkcatcher actions=\u003C\u003Cadd-link-actions>>to=\u003C\u003ClinkTiddler>>>\\n\\n\u003C$vars userInput={{{[\u003CstoreTitle>get[text]]}}}configTiddler={{{[[$:/state/search/currentTab]!is[missing]get[text]]~[{$:/config/SearchResults/Default}]}}}>\\n\\n{{$:/core/ui/SearchResults}}\\n\\\\end\\n\u003C$macrocall config-title=\u003C\u003Cqualify'$:/state/Link/'>>$name=body/>\\n\"},\"$:/plugins/tiddlywiki/markdown/EditorToolbar/link\":{\"list-after\":\"$:/core/ui/EditorToolbar/link\",\"tags\":\"$:/tags/EditorToolbar\",\"icon\":\"$:/core/images/link\",\"caption\":\"{{$:/language/Buttons/Link/Caption}}\",\"description\":\"{{$:/language/Buttons/Link/Hint}}\",\"condition\":\"[\u003CtargetTiddler>type[text/x-markdown]] [\u003CtargetTiddler>type[text/markdown]]\",\"button-classes\":\"tc-text-editor-toolbar-item-start-group\",\"shortcuts\":\"((link))\",\"dropdown\":\"$:/plugins/tiddlywiki/markdown/EditorToolbar/link-dropdown\",\"text\":\"\"},\"$:/plugins/tiddlywiki/markdown/EditorToolbar/linkify\":{\"caption\":\"{{$:/language/Buttons/Linkify/Caption}} (Markdown)\",\"condition\":\"[\u003CtargetTiddler>type[text/x-markdown]] [\u003CtargetTiddler>type[text/markdown]]\",\"description\":\"{{$:/language/Buttons/Linkify/Hint}}\",\"icon\":\"$:/plugins/tiddlywiki/markdown/images/markdown-linkify\",\"list-after\":\"$:/core/ui/EditorToolbar/linkify\",\"shortcuts\":\"((linkify))\",\"tags\":\"$:/tags/EditorToolbar\",\"text\":\"\u003C$action-sendmessage $message=tm-edit-text-operation $param=wrap-selection prefix=[ suffix=]()/>\\n\"},\"$:/plugins/tiddlywiki/markdown/EditorToolbar/list-bullet\":{\"list-after\":\"$:/core/ui/EditorToolbar/list-bullet\",\"tags\":\"$:/tags/EditorToolbar\",\"icon\":\"$:/core/images/list-bullet\",\"caption\":\"{{$:/language/Buttons/ListBullet/Caption}} (Markdown)\",\"description\":\"{{$:/language/Buttons/ListBullet/Hint}}\",\"condition\":\"[\u003CtargetTiddler>type[text/x-markdown]]\",\"shortcuts\":\"((list-bullet))\",\"text\":\"\u003C$action-sendmessage $message=tm-edit-text-operation $param=prefix-lines character=* count=1/>\\n\"},\"$:/plugins/tiddlywiki/markdown/EditorToolbar/list-number\":{\"list-after\":\"$:/core/ui/EditorToolbar/list-number\",\"tags\":\"$:/tags/EditorToolbar\",\"icon\":\"$:/core/images/list-number\",\"caption\":\"{{$:/language/Buttons/ListNumber/Caption}} (Markdown)\",\"description\":\"{{$:/language/Buttons/ListNumber/Hint}}\",\"condition\":\"[\u003CtargetTiddler>type[text/x-markdown]]\",\"shortcuts\":\"((list-number))\",\"text\":\"\u003C$action-sendmessage $message=tm-edit-text-operation $param=prefix-lines character=1. count=1/>\\n\"},\"$:/plugins/tiddlywiki/markdown/EditorToolbar/mono-block\":{\"list-after\":\"$:/core/ui/EditorToolbar/mono-block\",\"tags\":\"$:/tags/EditorToolbar\",\"icon\":\"$:/core/images/mono-block\",\"caption\":\"{{$:/language/Buttons/MonoBlock/Caption}} (Markdown)\",\"description\":\"{{$:/language/Buttons/MonoBlock/Hint}}\",\"condition\":\"[\u003CtargetTiddler>type[text/x-markdown]] [\u003CtargetTiddler>type[text/markdown]]\",\"button-classes\":\"tc-text-editor-toolbar-item-start-group\",\"shortcuts\":\"((mono-block))\",\"text\":\"\u003C$action-sendmessage $message=tm-edit-text-operation $param=wrap-lines prefix=\\\"\\n```\\\"suffix=```/>\\n\"},\"$:/plugins/tiddlywiki/markdown/EditorToolbar/mono-line\":{\"list-after\":\"$:/core/ui/EditorToolbar/mono-line\",\"tags\":\"$:/tags/EditorToolbar\",\"icon\":\"$:/core/images/mono-line\",\"caption\":\"{{$:/language/Buttons/MonoLine/Caption}} (Markdown)\",\"description\":\"{{$:/language/Buttons/MonoLine/Hint}}\",\"condition\":\"[\u003CtargetTiddler>type[text/x-markdown]]\",\"shortcuts\":\"((mono-line))\",\"text\":\"\u003C$action-sendmessage $message=tm-edit-text-operation $param=wrap-selection prefix=` suffix=`/>\\n\"},\"$:/plugins/tiddlywiki/markdown/EditorToolbar/quote\":{\"list-after\":\"$:/core/ui/EditorToolbar/quote\",\"tags\":\"$:/tags/EditorToolbar\",\"icon\":\"$:/core/images/quote\",\"caption\":\"{{$:/language/Buttons/Quote/Caption}} (Markdown)\",\"description\":\"{{$:/language/Buttons/Quote/Hint}}\",\"condition\":\"[\u003CtargetTiddler>type[text/x-markdown]]\",\"shortcuts\":\"((quote))\",\"text\":\"\u003C$action-sendmessage $message=tm-edit-text-operation $param=prefix-lines character=\\\">\\\"count=1/>\\n\"},\"$:/plugins/tiddlywiki/markdown/KeyboardShortcuts/new-markdown-tiddler\":{\"tags\":\"$:/tags/KeyboardShortcut\",\"key\":\"((new-markdown-tiddler))\",\"text\":\"\u003C$navigator story=\\\"$:/StoryList\\\"history=\\\"$:/HistoryList\\\"openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}}openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromOutsideRiver}}relinkOnRename={{$:/config/RelinkOnRename}}>\u003C$action-sendmessage type=\\\"text/x-markdown\\\"$message=tm-new-tiddler/>\"},\"$:/config/ShortcutInfo/new-markdown-tiddler\":{\"text\":\"{{$:/language/Buttons/NewMarkdown/Hint}}\"},\"$:/config/shortcuts-mac/new-markdown-tiddler\":{\"text\":\"ctrl-M\"},\"$:/config/shortcuts-not-mac/new-markdown-tiddler\":{\"text\":\"alt-M\"},\"$:/config/markdown/breaks\":{\"text\":\"false\"},\"$:/config/markdown/linkNewWindow\":{\"text\":\"true\"},\"$:/config/markdown/linkify\":{\"text\":\"false\"},\"$:/config/markdown/quotes\":{\"text\":\"“”‘’\"},\"$:/config/markdown/renderWikiText\":{\"text\":\"true\"},\"$:/config/markdown/renderWikiTextPragma\":{\"text\":\"\\\\rules only html image macrocallinline syslink transcludeinline wikilink filteredtranscludeblock macrocallblock transcludeblock latex-parser\"},\"$:/config/markdown/typographer\":{\"text\":\"false\"},\"$:/language/Docs/Types/text/x-markdown\":{\"description\":\"Markdown\",\"name\":\"text/x-markdown\",\"group\":\"Text\"},\"$:/plugins/tiddlywiki/markdown/editor-operations/make-markdown-link.js\":{\"text\":\"!function(){'use strict';exports['make-markdown-link']=function(e,t){t.selection?e.paramObject.text.includes('://')?t.replacement='['+t.selection+']('+e.paramObject.text+')':t.replacement='['+t.selection+'](#'+e.paramObject.text.replaceAll(' ','%20')+')':e.paramObject.text.includes('://')?t.replacement='\u003C'+e.paramObject.text+'>':t.replacement='[](#'+e.paramObject.text.replaceAll(' ','%20')+')',t.cutStart=t.selStart,t.cutEnd=t.selEnd,t.newSelStart=t.selStart+t.replacement.length,t.newSelEnd=t.newSelStart}}();\",\"type\":\"application/javascript\",\"module-type\":\"texteditoroperation\"},\"$:/plugins/tiddlywiki/markdown/remarkable.js\":{\"text\":\"var e,t;e=this,t=function(e){'use strict';var N={Aacute:'Á',aacute:'á',Abreve:'Ă',abreve:'ă',ac:'∾',acd:'∿',acE:'∾̳',Acirc:'Â',acirc:'â',acute:'´',Acy:'А',acy:'а',AElig:'Æ',aelig:'æ',af:'',Afr:'𝔄',afr:'𝔞',Agrave:'À',agrave:'à',alefsym:'ℵ',aleph:'ℵ',Alpha:'Α',alpha:'α',Amacr:'Ā',amacr:'ā',amalg:'⨿',AMP:'&',amp:'&',And:'⩓',and:'∧',andand:'⩕',andd:'⩜',andslope:'⩘',andv:'⩚',ang:'∠',ange:'⦤',angle:'∠',angmsd:'∡',angmsdaa:'⦨',angmsdab:'⦩',angmsdac:'⦪',angmsdad:'⦫',angmsdae:'⦬',angmsdaf:'⦭',angmsdag:'⦮',angmsdah:'⦯',angrt:'∟',angrtvb:'⊾',angrtvbd:'⦝',angsph:'∢',angst:'Å',angzarr:'⍼',Aogon:'Ą',aogon:'ą',Aopf:'𝔸',aopf:'𝕒',ap:'≈',apacir:'⩯',apE:'⩰',ape:'≊',apid:'≋',apos:'\\\\'',ApplyFunction:'',approx:'≈',approxeq:'≊',Aring:'Å',aring:'å',Ascr:'𝒜',ascr:'𝒶',Assign:'≔',ast:'*',asymp:'≈',asympeq:'≍',Atilde:'Ã',atilde:'ã',Auml:'Ä',auml:'ä',awconint:'∳',awint:'⨑',backcong:'≌',backepsilon:'϶',backprime:'',backsim:'∽',backsimeq:'⋍',Backslash:'',Barv:'⫧',barvee:'⊽',Barwed:'⌆',barwed:'⌅',barwedge:'⌅',bbrk:'⎵',bbrktbrk:'⎶',bcong:'≌',Bcy:'Б',bcy:'б',bdquo:'„',becaus:'∵',Because:'∵',because:'∵',bemptyv:'⦰',bepsi:'϶',bernou:'',Bernoullis:'',Beta:'Β',beta:'β',beth:'ℶ',between:'≬',Bfr:'𝔅',bfr:'𝔟',bigcap:'⋂',bigcirc:'◯',bigcup:'',bigodot:'⨀',bigoplus:'⨁',bigotimes:'⨂',bigsqcup:'⨆',bigstar:'★',bigtriangledown:'▽',bigtriangleup:'△',biguplus:'⨄',bigvee:'',bigwedge:'⋀',bkarow:'⤍',blacklozenge:'⧫',blacksquare:'▪',blacktriangle:'▴',blacktriangledown:'▾',blacktriangleleft:'◂',blacktriangleright:'▸',blank:'␣',blk12:'▒',blk14:'░',blk34:'▓',block:'█',bne:'=⃥',bnequiv:'≡⃥',bNot:'⫭',bnot:'⌐',Bopf:'𝔹',bopf:'𝕓',bot:'⊥',bottom:'⊥',bowtie:'⋈',boxbox:'⧉',boxDL:'╗',boxDl:'╖',boxdL:'╕',boxdl:'┐',boxDR:'╔',boxDr:'╓',boxdR:'╒',boxdr:'┌',boxH:'═',boxh:'─',boxHD:'╦',boxHd:'╤',boxhD:'╥',boxhd:'┬',boxHU:'╩',boxHu:'╧',boxhU:'╨',boxhu:'┴',boxminus:'⊟',boxplus:'⊞',boxtimes:'⊠',boxUL:'╝',boxUl:'╜',boxuL:'╛',boxul:'┘',boxUR:'╚',boxUr:'╙',boxuR:'╘',boxur:'└',boxV:'║',boxv:'│',boxVH:'╬',boxVh:'╫',boxvH:'╪',boxvh:'┼',boxVL:'╣',boxVl:'╢',boxvL:'╡',boxvl:'┤',boxVR:'╠',boxVr:'╟',boxvR:'╞',boxvr:'├',bprime:'',Breve:'˘',breve:'˘',brvbar:'¦',Bscr:'',bscr:'𝒷',bsemi:'⁏',bsim:'∽',bsime:'⋍',bsol:'\\\\\\\\',bsolb:'⧅',bsolhsub:'⟈',bull:'•',bullet:'•',bump:'≎',bumpE:'⪮',bumpe:'≏',Bumpeq:'≎',bumpeq:'≏',Cacute:'Ć',cacute:'ć',Cap:'⋒',cap:'∩',capand:'⩄',capbrcup:'⩉',capcap:'⩋',capcup:'⩇',capdot:'⩀',CapitalDifferentialD:'',caps:'∩︀',caret:'',caron:'ˇ',Cayleys:'',ccaps:'⩍',Ccaron:'Č',ccaron:'č',Ccedil:'Ç',ccedil:'ç',Ccirc:'Ĉ',ccirc:'ĉ',Cconint:'∰',ccups:'⩌',ccupssm:'⩐',Cdot:'Ċ',cdot:'ċ',cedil:'¸',Cedilla:'¸',cemptyv:'⦲',cent:'¢',CenterDot:'·',centerdot:'·',Cfr:'',cfr:'𝔠',CHcy:'Ч',chcy:'ч',check:'✓',checkmark:'✓',Chi:'Χ',chi:'χ',cir:'○',circ:'ˆ',circeq:'≗',circlearrowleft:'↺',circlearrowright:'↻',circledast:'⊛',circledcirc:'⊚',circleddash:'⊝',CircleDot:'⊙',circledR:'®',circledS:'Ⓢ',CircleMinus:'⊖',CirclePlus:'⊕',CircleTimes:'⊗',cirE:'⧃',cire:'≗',cirfnint:'⨐',cirmid:'⫯',cirscir:'⧂',ClockwiseContourIntegral:'∲',CloseCurlyDoubleQuote:'”',CloseCurlyQuote:'',clubs:'♣',clubsuit:'♣',Colon:'∷',colon:':',Colone:'⩴',colone:'≔',coloneq:'≔',comma:',',commat:'@',comp:'∁',compfn:'∘',complement:'∁',complexes:'',cong:'≅',congdot:'⩭',Congruent:'≡',Conint:'∯',conint:'∮',ContourIntegral:'∮',Copf:'',copf:'𝕔',coprod:'∐',Coproduct:'∐',COPY:'©',copy:'©',copysr:'℗',CounterClockwiseContourIntegral:'∳',crarr:'↵',Cross:'',cross:'✗',Cscr:'𝒞',cscr:'𝒸',csub:'⫏',csube:'⫑',csup:'⫐',csupe:'⫒',ctdot:'⋯',cudarrl:'⤸',cudarrr:'⤵',cuepr:'⋞',cuesc:'⋟',cularr:'↶',cularrp:'⤽',Cup:'⋓',cup:'',cupbrcap:'⩈',CupCap:'≍',cupcap:'⩆',cupcup:'⩊',cupdot:'⊍',cupor:'⩅',cups:'',curarr:'↷',curarrm:'⤼',curlyeqprec:'⋞',curlyeqsucc:'⋟',curlyvee:'⋎',curlywedge:'⋏',curren:'¤',curvearrowleft:'↶',curvearrowright:'↷',cuvee:'⋎',cuwed:'⋏',cwconint:'∲',cwint:'∱',cylcty:'⌭',Dagger:'‡',dagger:'†',daleth:'ℸ',Darr:'↡',dArr:'⇓',darr:'↓',dash:'',Dashv:'⫤',dashv:'⊣',dbkarow:'⤏',dblac:'˝',Dcaron:'Ď',dcaron:'ď',Dcy:'Д',dcy:'д',DD:'',dd:'',ddagger:'‡',ddarr:'⇊',DDotrahd:'⤑',ddotseq:'⩷',deg:'°',Del:'∇',Delta:'Δ',delta:'δ',demptyv:'⦱',dfisht:'⥿',Dfr:'𝔇',dfr:'𝔡',dHar:'⥥',dharl:'⇃',dharr:'⇂',DiacriticalAcute:'´',DiacriticalDot:'˙',DiacriticalDoubleAcute:'˝',DiacriticalGrave:'`',DiacriticalTilde:'˜',diam:'⋄',Diamond:'⋄',diamond:'⋄',diamondsuit:'♦',diams:'♦',die:'¨',DifferentialD:'',digamma:'ϝ',disin:'⋲',div:'÷',divide:'÷',divideontimes:'⋇',divonx:'⋇',DJcy:'Ђ',djcy:'ђ',dlcorn:'⌞',dlcrop:'⌍',dollar:'$',Dopf:'𝔻',dopf:'𝕕',Dot:'¨',dot:'˙',DotDot:'⃜',doteq:'≐',doteqdot:'≑',DotEqual:'≐',dotminus:'∸',dotplus:'∔',dotsquare:'⊡',doublebarwedge:'⌆',DoubleContourIntegral:'∯',DoubleDot:'¨',DoubleDownArrow:'⇓',DoubleLeftArrow:'⇐',DoubleLeftRightArrow:'⇔',DoubleLeftTee:'⫤',DoubleLongLeftArrow:'⟸',DoubleLongLeftRightArrow:'⟺',DoubleLongRightArrow:'⟹',DoubleRightArrow:'⇒',DoubleRightTee:'⊨',DoubleUpArrow:'⇑',DoubleUpDownArrow:'⇕',DoubleVerticalBar:'∥',DownArrow:'↓',Downarrow:'⇓',downarrow:'↓',DownArrowBar:'⤓',DownArrowUpArrow:'⇵',DownBreve:'̑',downdownarrows:'⇊',downharpoonleft:'⇃',downharpoonright:'⇂',DownLeftRightVector:'⥐',DownLeftTeeVector:'⥞',DownLeftVector:'↽',DownLeftVectorBar:'⥖',DownRightTeeVector:'⥟',DownRightVector:'⇁',DownRightVectorBar:'⥗',DownTee:'',DownTeeArrow:'↧',drbkarow:'⤐',drcorn:'⌟',drcrop:'⌌',Dscr:'𝒟',dscr:'𝒹',DScy:'Ѕ',dscy:'ѕ',dsol:'⧶',Dstrok:'Đ',dstrok:'đ',dtdot:'⋱',dtri:'▿',dtrif:'▾',duarr:'⇵',duhar:'⥯',dwangle:'⦦',DZcy:'Џ',dzcy:'џ',dzigrarr:'⟿',Eacute:'É',eacute:'é',easter:'⩮',Ecaron:'Ě',ecaron:'ě',ecir:'≖',Ecirc:'Ê',ecirc:'ê',ecolon:'≕',Ecy:'Э',ecy:'э',eDDot:'⩷',Edot:'Ė',eDot:'≑',edot:'ė',ee:'',efDot:'≒',Efr:'𝔈',efr:'𝔢',eg:'⪚',Egrave:'È',egrave:'è',egs:'⪖',egsdot:'⪘',el:'⪙',Element:'∈',elinters:'⏧',ell:'',els:'⪕',elsdot:'⪗',Emacr:'Ē',emacr:'ē',empty:'∅',emptyset:'∅',EmptySmallSquare:'◻',emptyv:'∅',EmptyVerySmallSquare:'▫',emsp:'',emsp13:'',emsp14:'',ENG:'Ŋ',eng:'ŋ',ensp:'',Eogon:'Ę',eogon:'ę',Eopf:'𝔼',eopf:'𝕖',epar:'⋕',eparsl:'⧣',eplus:'⩱',epsi:'ε',Epsilon:'Ε',epsilon:'ε',epsiv:'ϵ',eqcirc:'≖',eqcolon:'≕',eqsim:'≂',eqslantgtr:'⪖',eqslantless:'⪕',Equal:'⩵',equals:'=',EqualTilde:'≂',equest:'≟',Equilibrium:'⇌',equiv:'≡',equivDD:'⩸',eqvparsl:'⧥',erarr:'⥱',erDot:'≓',Escr:'',escr:'',esdot:'≐',Esim:'⩳',esim:'≂',Eta:'Η',eta:'η',ETH:'Ð',eth:'ð',Euml:'Ë',euml:'ë',euro:'€',excl:'!',exist:'∃',Exists:'∃',expectation:'',ExponentialE:'',exponentiale:'',fallingdotseq:'≒',Fcy:'Ф',fcy:'ф',female:'♀',ffilig:'ffi',fflig:'ff',ffllig:'ffl',Ffr:'𝔉',ffr:'𝔣',filig:'fi',FilledSmallSquare:'◼',FilledVerySmallSquare:'▪',fjlig:'fj',flat:'♭',fllig:'fl',fltns:'▱',fnof:'ƒ',Fopf:'𝔽',fopf:'𝕗',ForAll:'∀',forall:'∀',fork:'⋔',forkv:'⫙',Fouriertrf:'',fpartint:'⨍',frac12:'½',frac13:'⅓',frac14:'¼',frac15:'⅕',frac16:'⅙',frac18:'⅛',frac23:'⅔',frac25:'⅖',frac34:'¾',frac35:'⅗',frac38:'⅜',frac45:'⅘',frac56:'⅚',frac58:'⅝',frac78:'⅞',frasl:'',frown:'⌢',Fscr:'',fscr:'𝒻',gacute:'ǵ',Gamma:'Γ',gamma:'γ',Gammad:'Ϝ',gammad:'ϝ',gap:'⪆',Gbreve:'Ğ',gbreve:'ğ',Gcedil:'Ģ',Gcirc:'Ĝ',gcirc:'ĝ',Gcy:'Г',gcy:'г',Gdot:'Ġ',gdot:'ġ',gE:'≧',ge:'≥',gEl:'⪌',gel:'⋛',geq:'≥',geqq:'≧',geqslant:'⩾',ges:'⩾',gescc:'⪩',gesdot:'⪀',gesdoto:'⪂',gesdotol:'⪄',gesl:'⋛︀',gesles:'⪔',Gfr:'𝔊',gfr:'𝔤',Gg:'⋙',gg:'≫',ggg:'⋙',gimel:'ℷ',GJcy:'Ѓ',gjcy:'ѓ',gl:'≷',gla:'⪥',glE:'⪒',glj:'⪤',gnap:'⪊',gnapprox:'⪊',gnE:'≩',gne:'⪈',gneq:'⪈',gneqq:'≩',gnsim:'⋧',Gopf:'𝔾',gopf:'𝕘',grave:'`',GreaterEqual:'≥',GreaterEqualLess:'⋛',GreaterFullEqual:'≧',GreaterGreater:'⪢',GreaterLess:'≷',GreaterSlantEqual:'⩾',GreaterTilde:'≳',Gscr:'𝒢',gscr:'',gsim:'≳',gsime:'⪎',gsiml:'⪐',GT:'>',Gt:'≫',gt:'>',gtcc:'⪧',gtcir:'⩺',gtdot:'⋗',gtlPar:'⦕',gtquest:'⩼',gtrapprox:'⪆',gtrarr:'⥸',gtrdot:'⋗',gtreqless:'⋛',gtreqqless:'⪌',gtrless:'≷',gtrsim:'≳',gvertneqq:'≩︀',gvnE:'≩︀',Hacek:'ˇ',hairsp:'',half:'½',hamilt:'',HARDcy:'Ъ',hardcy:'ъ',hArr:'⇔',harr:'↔',harrcir:'⥈',harrw:'↭',Hat:'^',hbar:'ℏ',Hcirc:'Ĥ',hcirc:'ĥ',hearts:'♥',heartsuit:'♥',hellip:'…',hercon:'⊹',Hfr:'',hfr:'𝔥',HilbertSpace:'',hksearow:'⤥',hkswarow:'⤦',hoarr:'⇿',homtht:'∻',hookleftarrow:'↩',hookrightarrow:'↪',Hopf:'',hopf:'𝕙',horbar:'―',HorizontalLine:'─',Hscr:'',hscr:'𝒽',hslash:'ℏ',Hstrok:'Ħ',hstrok:'ħ',HumpDownHump:'≎',HumpEqual:'≏',hybull:'',hyphen:'',Iacute:'Í',iacute:'í',ic:'',Icirc:'Î',icirc:'î',Icy:'И',icy:'и',Idot:'İ',IEcy:'Е',iecy:'е',iexcl:'¡',iff:'⇔',Ifr:'',ifr:'𝔦',Igrave:'Ì',igrave:'ì',ii:'',iiiint:'⨌',iiint:'∭',iinfin:'⧜',iiota:'℩',IJlig:'IJ',ijlig:'ij',Im:'',Imacr:'Ī',imacr:'ī',image:'',ImaginaryI:'',imagline:'',imagpart:'',imath:'ı',imof:'⊷',imped:'Ƶ',Implies:'⇒',in:'∈',incare:'℅',infin:'∞',infintie:'⧝',inodot:'ı',Int:'∬',int:'∫',intcal:'⊺',integers:'',Integral:'∫',intercal:'⊺',Intersection:'⋂',intlarhk:'⨗',intprod:'⨼',InvisibleComma:'',InvisibleTimes:'',IOcy:'Ё',iocy:'ё',Iogon:'Į',iogon:'į',Iopf:'𝕀',iopf:'𝕚',Iota:'Ι',iota:'ι',iprod:'⨼',iquest:'¿',Iscr:'',iscr:'𝒾',isin:'∈',isindot:'⋵',isinE:'⋹',isins:'⋴',isinsv:'⋳',isinv:'∈',it:'',Itilde:'Ĩ',itilde:'ĩ',Iukcy:'І',iukcy:'і',Iuml:'Ï',iuml:'ï',Jcirc:'Ĵ',jcirc:'ĵ',Jcy:'Й',jcy:'й',Jfr:'𝔍',jfr:'𝔧',jmath:'ȷ',Jopf:'𝕁',jopf:'𝕛',Jscr:'𝒥',jscr:'𝒿',Jsercy:'Ј',jsercy:'ј',Jukcy:'Є',jukcy:'є',Kappa:'Κ',kappa:'κ',kappav:'ϰ',Kcedil:'Ķ',kcedil:'ķ',Kcy:'К',kcy:'к',Kfr:'𝔎',kfr:'𝔨',kgreen:'ĸ',KHcy:'Х',khcy:'х',KJcy:'Ќ',kjcy:'ќ',Kopf:'𝕂',kopf:'𝕜',Kscr:'𝒦',kscr:'𝓀',lAarr:'⇚',Lacute:'Ĺ',lacute:'ĺ',laemptyv:'⦴',lagran:'',Lambda:'Λ',lambda:'λ',Lang:'⟪',lang:'⟨',langd:'⦑',langle:'⟨',lap:'⪅',Laplacetrf:'',laquo:'«',Larr:'↞',lArr:'⇐',larr:'←',larrb:'⇤',larrbfs:'⤟',larrfs:'⤝',larrhk:'↩',larrlp:'↫',larrpl:'⤹',larrsim:'⥳',larrtl:'↢',lat:'⪫',lAtail:'⤛',latail:'⤙',late:'⪭',lates:'⪭︀',lBarr:'⤎',lbarr:'⤌',lbbrk:'',lbrace:'{',lbrack:'[',lbrke:'⦋',lbrksld:'⦏',lbrkslu:'⦍',Lcaron:'Ľ',lcaron:'ľ',Lcedil:'Ļ',lcedil:'ļ',lceil:'⌈',lcub:'{',Lcy:'Л',lcy:'л',ldca:'⤶',ldquo:'“',ldquor:'„',ldrdhar:'⥧',ldrushar:'⥋',ldsh:'↲',lE:'≦',le:'≤',LeftAngleBracket:'⟨',LeftArrow:'←',Leftarrow:'⇐',leftarrow:'←',LeftArrowBar:'⇤',LeftArrowRightArrow:'⇆',leftarrowtail:'↢',LeftCeiling:'⌈',LeftDoubleBracket:'⟦',LeftDownTeeVector:'⥡',LeftDownVector:'⇃',LeftDownVectorBar:'⥙',LeftFloor:'⌊',leftharpoondown:'↽',leftharpoonup:'↼',leftleftarrows:'⇇',LeftRightArrow:'↔',Leftrightarrow:'⇔',leftrightarrow:'↔',leftrightarrows:'⇆',leftrightharpoons:'⇋',leftrightsquigarrow:'↭',LeftRightVector:'⥎',LeftTee:'⊣',LeftTeeArrow:'↤',LeftTeeVector:'⥚',leftthreetimes:'⋋',LeftTriangle:'⊲',LeftTriangleBar:'⧏',LeftTriangleEqual:'⊴',LeftUpDownVector:'⥑',LeftUpTeeVector:'⥠',LeftUpVector:'↿',LeftUpVectorBar:'⥘',LeftVector:'↼',LeftVectorBar:'⥒',lEg:'⪋',leg:'⋚',leq:'≤',leqq:'≦',leqslant:'⩽',les:'⩽',lescc:'⪨',lesdot:'⩿',lesdoto:'⪁',lesdotor:'⪃',lesg:'⋚︀',lesges:'⪓',lessapprox:'⪅',lessdot:'⋖',lesseqgtr:'⋚',lesseqqgtr:'⪋',LessEqualGreater:'⋚',LessFullEqual:'≦',LessGreater:'≶',lessgtr:'≶',LessLess:'⪡',lesssim:'≲',LessSlantEqual:'⩽',LessTilde:'≲',lfisht:'⥼',lfloor:'⌊',Lfr:'𝔏',lfr:'𝔩',lg:'≶',lgE:'⪑',lHar:'⥢',lhard:'↽',lharu:'↼',lharul:'⥪',lhblk:'▄',LJcy:'Љ',ljcy:'љ',Ll:'⋘',ll:'≪',llarr:'⇇',llcorner:'⌞',Lleftarrow:'⇚',llhard:'⥫',lltri:'◺',Lmidot:'Ŀ',lmidot:'ŀ',lmoust:'⎰',lmoustache:'⎰',lnap:'⪉',lnapprox:'⪉',lnE:'≨',lne:'⪇',lneq:'⪇',lneqq:'≨',lnsim:'⋦',loang:'⟬',loarr:'⇽',lobrk:'⟦',LongLeftArrow:'⟵',Longleftarrow:'⟸',longleftarrow:'⟵',LongLeftRightArrow:'⟷',Longleftrightarrow:'⟺',longleftrightarrow:'⟷',longmapsto:'⟼',LongRightArrow:'⟶',Longrightarrow:'⟹',longrightarrow:'⟶',looparrowleft:'↫',looparrowright:'↬',lopar:'⦅',Lopf:'𝕃',lopf:'𝕝',loplus:'⨭',lotimes:'⨴',lowast:'',lowbar:'_',LowerLeftArrow:'↙',LowerRightArrow:'↘',loz:'◊',lozenge:'◊',lozf:'⧫',lpar:'(',lparlt:'⦓',lrarr:'⇆',lrcorner:'⌟',lrhar:'⇋',lrhard:'⥭',lrm:'',lrtri:'⊿',lsaquo:'',Lscr:'',lscr:'𝓁',Lsh:'↰',lsh:'↰',lsim:'≲',lsime:'⪍',lsimg:'⪏',lsqb:'[',lsquo:'',lsquor:'',Lstrok:'Ł',lstrok:'ł',LT:'\u003C',Lt:'≪',lt:'\u003C',ltcc:'⪦',ltcir:'⩹',ltdot:'⋖',lthree:'⋋',ltimes:'⋉',ltlarr:'⥶',ltquest:'⩻',ltri:'◃',ltrie:'⊴',ltrif:'◂',ltrPar:'⦖',lurdshar:'⥊',luruhar:'⥦',lvertneqq:'≨︀',lvnE:'≨︀',macr:'¯',male:'♂',malt:'✠',maltese:'✠',Map:'⤅',map:'↦',mapsto:'↦',mapstodown:'↧',mapstoleft:'↤',mapstoup:'↥',marker:'▮',mcomma:'⨩',Mcy:'М',mcy:'м',mdash:'—',mDDot:'∺',measuredangle:'∡',MediumSpace:'',Mellintrf:'',Mfr:'𝔐',mfr:'𝔪',mho:'℧',micro:'µ',mid:'',midast:'*',midcir:'⫰',middot:'·',minus:'',minusb:'⊟',minusd:'∸',minusdu:'⨪',MinusPlus:'∓',mlcp:'⫛',mldr:'…',mnplus:'∓',models:'⊧',Mopf:'𝕄',mopf:'𝕞',mp:'∓',Mscr:'',mscr:'𝓂',mstpos:'∾',Mu:'Μ',mu:'μ',multimap:'⊸',mumap:'⊸',nabla:'∇',Nacute:'Ń',nacute:'ń',nang:'∠⃒',nap:'≉',napE:'⩰̸',napid:'≋̸',napos:'ʼn',napprox:'≉',natur:'♮',natural:'♮',naturals:'',nbsp:' ',nbump:'≎̸',nbumpe:'≏̸',ncap:'⩃',Ncaron:'Ň',ncaron:'ň',Ncedil:'Ņ',ncedil:'ņ',ncong:'≇',ncongdot:'⩭̸',ncup:'⩂',Ncy:'Н',ncy:'н',ndash:'',ne:'≠',nearhk:'⤤',neArr:'⇗',nearr:'↗',nearrow:'↗',nedot:'≐̸',NegativeMediumSpace:'',NegativeThickSpace:'',NegativeThinSpace:'',NegativeVeryThinSpace:'',nequiv:'≢',nesear:'⤨',nesim:'≂̸',NestedGreaterGreater:'≫',NestedLessLess:'≪',NewLine:'\\\\n',nexist:'∄',nexists:'∄',Nfr:'𝔑',nfr:'𝔫',ngE:'≧̸',nge:'≱',ngeq:'≱',ngeqq:'≧̸',ngeqslant:'⩾̸',nges:'⩾̸',nGg:'⋙̸',ngsim:'≵',nGt:'≫⃒',ngt:'≯',ngtr:'≯',nGtv:'≫̸',nhArr:'⇎',nharr:'↮',nhpar:'⫲',ni:'∋',nis:'⋼',nisd:'⋺',niv:'∋',NJcy:'Њ',njcy:'њ',nlArr:'⇍',nlarr:'↚',nldr:'‥',nlE:'≦̸',nle:'≰',nLeftarrow:'⇍',nleftarrow:'↚',nLeftrightarrow:'⇎',nleftrightarrow:'↮',nleq:'≰',nleqq:'≦̸',nleqslant:'⩽̸',nles:'⩽̸',nless:'≮',nLl:'⋘̸',nlsim:'≴',nLt:'≪⃒',nlt:'≮',nltri:'⋪',nltrie:'⋬',nLtv:'≪̸',nmid:'∤',NoBreak:'',NonBreakingSpace:' ',Nopf:'',nopf:'𝕟',Not:'⫬',not:'¬',NotCongruent:'≢',NotCupCap:'≭',NotDoubleVerticalBar:'∦',NotElement:'∉',NotEqual:'≠',NotEqualTilde:'≂̸',NotExists:'∄',NotGreater:'≯',NotGreaterEqual:'≱',NotGreaterFullEqual:'≧̸',NotGreaterGreater:'≫̸',NotGreaterLess:'≹',NotGreaterSlantEqual:'⩾̸',NotGreaterTilde:'≵',NotHumpDownHump:'≎̸',NotHumpEqual:'≏̸',notin:'∉',notindot:'⋵̸',notinE:'⋹̸',notinva:'∉',notinvb:'⋷',notinvc:'⋶',NotLeftTriangle:'⋪',NotLeftTriangleBar:'⧏̸',NotLeftTriangleEqual:'⋬',NotLess:'≮',NotLessEqual:'≰',NotLessGreater:'≸',NotLessLess:'≪̸',NotLessSlantEqual:'⩽̸',NotLessTilde:'≴',NotNestedGreaterGreater:'⪢̸',NotNestedLessLess:'⪡̸',notni:'∌',notniva:'∌',notnivb:'⋾',notnivc:'⋽',NotPrecedes:'⊀',NotPrecedesEqual:'⪯̸',NotPrecedesSlantEqual:'⋠',NotReverseElement:'∌',NotRightTriangle:'⋫',NotRightTriangleBar:'⧐̸',NotRightTriangleEqual:'⋭',NotSquareSubset:'⊏̸',NotSquareSubsetEqual:'⋢',NotSquareSuperset:'⊐̸',NotSquareSupersetEqual:'⋣',NotSubset:'⊂⃒',NotSubsetEqual:'⊈',NotSucceeds:'⊁',NotSucceedsEqual:'⪰̸',NotSucceedsSlantEqual:'⋡',NotSucceedsTilde:'≿̸',NotSuperset:'⊃⃒',NotSupersetEqual:'⊉',NotTilde:'≁',NotTildeEqual:'≄',NotTildeFullEqual:'≇',NotTildeTilde:'≉',NotVerticalBar:'∤',npar:'∦',nparallel:'∦',nparsl:'⫽⃥',npart:'∂̸',npolint:'⨔',npr:'⊀',nprcue:'⋠',npre:'⪯̸',nprec:'⊀',npreceq:'⪯̸',nrArr:'⇏',nrarr:'↛',nrarrc:'⤳̸',nrarrw:'↝̸',nRightarrow:'⇏',nrightarrow:'↛',nrtri:'⋫',nrtrie:'⋭',nsc:'⊁',nsccue:'⋡',nsce:'⪰̸',Nscr:'𝒩',nscr:'𝓃',nshortmid:'∤',nshortparallel:'∦',nsim:'≁',nsime:'≄',nsimeq:'≄',nsmid:'∤',nspar:'∦',nsqsube:'⋢',nsqsupe:'⋣',nsub:'⊄',nsubE:'⫅̸',nsube:'⊈',nsubset:'⊂⃒',nsubseteq:'⊈',nsubseteqq:'⫅̸',nsucc:'⊁',nsucceq:'⪰̸',nsup:'⊅',nsupE:'⫆̸',nsupe:'⊉',nsupset:'⊃⃒',nsupseteq:'⊉',nsupseteqq:'⫆̸',ntgl:'≹',Ntilde:'Ñ',ntilde:'ñ',ntlg:'≸',ntriangleleft:'⋪',ntrianglelefteq:'⋬',ntriangleright:'⋫',ntrianglerighteq:'⋭',Nu:'Ν',nu:'ν',num:'#',numero:'№',numsp:'',nvap:'≍⃒',nVDash:'⊯',nVdash:'⊮',nvDash:'⊭',nvdash:'⊬',nvge:'≥⃒',nvgt:'>⃒',nvHarr:'⤄',nvinfin:'⧞',nvlArr:'⤂',nvle:'≤⃒',nvlt:'\u003C⃒',nvltrie:'⊴⃒',nvrArr:'⤃',nvrtrie:'⊵⃒',nvsim:'∼⃒',nwarhk:'⤣',nwArr:'⇖',nwarr:'↖',nwarrow:'↖',nwnear:'⤧',Oacute:'Ó',oacute:'ó',oast:'⊛',ocir:'⊚',Ocirc:'Ô',ocirc:'ô',Ocy:'О',ocy:'о',odash:'⊝',Odblac:'Ő',odblac:'ő',odiv:'⨸',odot:'⊙',odsold:'⦼',OElig:'Œ',oelig:'œ',ofcir:'⦿',Ofr:'𝔒',ofr:'𝔬',ogon:'˛',Ograve:'Ò',ograve:'ò',ogt:'⧁',ohbar:'⦵',ohm:'Ω',oint:'∮',olarr:'↺',olcir:'⦾',olcross:'⦻',oline:'‾',olt:'⧀',Omacr:'Ō',omacr:'ō',Omega:'Ω',omega:'ω',Omicron:'Ο',omicron:'ο',omid:'⦶',ominus:'⊖',Oopf:'𝕆',oopf:'𝕠',opar:'⦷',OpenCurlyDoubleQuote:'“',OpenCurlyQuote:'',operp:'⦹',oplus:'⊕',Or:'⩔',or:'',orarr:'↻',ord:'⩝',order:'',orderof:'',ordf:'ª',ordm:'º',origof:'⊶',oror:'⩖',orslope:'⩗',orv:'⩛',oS:'Ⓢ',Oscr:'𝒪',oscr:'',Oslash:'Ø',oslash:'ø',osol:'⊘',Otilde:'Õ',otilde:'õ',Otimes:'⨷',otimes:'⊗',otimesas:'⨶',Ouml:'Ö',ouml:'ö',ovbar:'⌽',OverBar:'‾',OverBrace:'⏞',OverBracket:'⎴',OverParenthesis:'⏜',par:'∥',para:'¶',parallel:'∥',parsim:'⫳',parsl:'⫽',part:'∂',PartialD:'∂',Pcy:'П',pcy:'п',percnt:'%',period:'.',permil:'‰',perp:'⊥',pertenk:'‱',Pfr:'𝔓',pfr:'𝔭',Phi:'Φ',phi:'φ',phiv:'ϕ',phmmat:'',phone:'☎',Pi:'Π',pi:'π',pitchfork:'⋔',piv:'ϖ',planck:'ℏ',planckh:'',plankv:'ℏ',plus:'+',plusacir:'⨣',plusb:'⊞',pluscir:'⨢',plusdo:'∔',plusdu:'⨥',pluse:'⩲',PlusMinus:'±',plusmn:'±',plussim:'⨦',plustwo:'⨧',pm:'±',Poincareplane:'',pointint:'⨕',Popf:'',popf:'𝕡',pound:'£',Pr:'⪻',pr:'≺',prap:'⪷',prcue:'≼',prE:'⪳',pre:'⪯',prec:'≺',precapprox:'⪷',preccurlyeq:'≼',Precedes:'≺',PrecedesEqual:'⪯',PrecedesSlantEqual:'≼',PrecedesTilde:'≾',preceq:'⪯',precnapprox:'⪹',precneqq:'⪵',precnsim:'⋨',precsim:'≾',Prime:'″',prime:'',primes:'',prnap:'⪹',prnE:'⪵',prnsim:'⋨',prod:'∏',Product:'∏',profalar:'⌮',profline:'⌒',profsurf:'⌓',prop:'∝',Proportion:'∷',Proportional:'∝',propto:'∝',prsim:'≾',prurel:'⊰',Pscr:'𝒫',pscr:'𝓅',Psi:'Ψ',psi:'ψ',puncsp:'',Qfr:'𝔔',qfr:'𝔮',qint:'⨌',Qopf:'',qopf:'𝕢',qprime:'⁗',Qscr:'𝒬',qscr:'𝓆',quaternions:'',quatint:'⨖',quest:'?',questeq:'≟',QUOT:'\\\"',quot:'\\\"',rAarr:'⇛',race:'∽̱',Racute:'Ŕ',racute:'ŕ',radic:'√',raemptyv:'⦳',Rang:'⟫',rang:'⟩',rangd:'⦒',range:'⦥',rangle:'⟩',raquo:'»',Rarr:'↠',rArr:'⇒',rarr:'→',rarrap:'⥵',rarrb:'⇥',rarrbfs:'⤠',rarrc:'⤳',rarrfs:'⤞',rarrhk:'↪',rarrlp:'↬',rarrpl:'⥅',rarrsim:'⥴',Rarrtl:'⤖',rarrtl:'↣',rarrw:'↝',rAtail:'⤜',ratail:'⤚',ratio:'',rationals:'',RBarr:'⤐',rBarr:'⤏',rbarr:'⤍',rbbrk:'',rbrace:'}',rbrack:']',rbrke:'⦌',rbrksld:'⦎',rbrkslu:'⦐',Rcaron:'Ř',rcaron:'ř',Rcedil:'Ŗ',rcedil:'ŗ',rceil:'⌉',rcub:'}',Rcy:'Р',rcy:'р',rdca:'⤷',rdldhar:'⥩',rdquo:'”',rdquor:'”',rdsh:'↳',Re:'',real:'',realine:'',realpart:'',reals:'',rect:'▭',REG:'®',reg:'®',ReverseElement:'∋',ReverseEquilibrium:'⇋',ReverseUpEquilibrium:'⥯',rfisht:'⥽',rfloor:'⌋',Rfr:'',rfr:'𝔯',rHar:'⥤',rhard:'⇁',rharu:'⇀',rharul:'⥬',Rho:'Ρ',rho:'ρ',rhov:'ϱ',RightAngleBracket:'⟩',RightArrow:'→',Rightarrow:'⇒',rightarrow:'→',RightArrowBar:'⇥',RightArrowLeftArrow:'⇄',rightarrowtail:'↣',RightCeiling:'⌉',RightDoubleBracket:'⟧',RightDownTeeVector:'⥝',RightDownVector:'⇂',RightDownVectorBar:'⥕',RightFloor:'⌋',rightharpoondown:'⇁',rightharpoonup:'⇀',rightleftarrows:'⇄',rightleftharpoons:'⇌',rightrightarrows:'⇉',rightsquigarrow:'↝',RightTee:'⊢',RightTeeArrow:'↦',RightTeeVector:'⥛',rightthreetimes:'⋌',RightTriangle:'⊳',RightTriangleBar:'⧐',RightTriangleEqual:'⊵',RightUpDownVector:'⥏',RightUpTeeVector:'⥜',RightUpVector:'↾',RightUpVectorBar:'⥔',RightVector:'⇀',RightVectorBar:'⥓',ring:'˚',risingdotseq:'≓',rlarr:'⇄',rlhar:'⇌',rlm:'',rmoust:'⎱',rmoustache:'⎱',rnmid:'⫮',roang:'⟭',roarr:'⇾',robrk:'⟧',ropar:'⦆',Ropf:'',ropf:'𝕣',roplus:'⨮',rotimes:'⨵',RoundImplies:'⥰',rpar:')',rpargt:'⦔',rppolint:'⨒',rrarr:'⇉',Rrightarrow:'⇛',rsaquo:'',Rscr:'',rscr:'𝓇',Rsh:'↱',rsh:'↱',rsqb:']',rsquo:'',rsquor:'',rthree:'⋌',rtimes:'⋊',rtri:'▹',rtrie:'⊵',rtrif:'▸',rtriltri:'⧎',RuleDelayed:'⧴',ruluhar:'⥨',rx:'℞',Sacute:'Ś',sacute:'ś',sbquo:'',Sc:'⪼',sc:'≻',scap:'⪸',Scaron:'Š',scaron:'š',sccue:'≽',scE:'⪴',sce:'⪰',Scedil:'Ş',scedil:'ş',Scirc:'Ŝ',scirc:'ŝ',scnap:'⪺',scnE:'⪶',scnsim:'⋩',scpolint:'⨓',scsim:'≿',Scy:'С',scy:'с',sdot:'⋅',sdotb:'⊡',sdote:'⩦',searhk:'⤥',seArr:'⇘',searr:'↘',searrow:'↘',sect:'§',semi:';',seswar:'⤩',setminus:'',setmn:'',sext:'✶',Sfr:'𝔖',sfr:'𝔰',sfrown:'⌢',sharp:'♯',SHCHcy:'Щ',shchcy:'щ',SHcy:'Ш',shcy:'ш',ShortDownArrow:'↓',ShortLeftArrow:'←',shortmid:'',shortparallel:'∥',ShortRightArrow:'→',ShortUpArrow:'↑',shy:'­',Sigma:'Σ',sigma:'σ',sigmaf:'ς',sigmav:'ς',sim:'',simdot:'⩪',sime:'≃',simeq:'≃',simg:'⪞',simgE:'⪠',siml:'⪝',simlE:'⪟',simne:'≆',simplus:'⨤',simrarr:'⥲',slarr:'←',SmallCircle:'∘',smallsetminus:'',smashp:'⨳',smeparsl:'⧤',smid:'',smile:'⌣',smt:'⪪',smte:'⪬',smtes:'⪬︀',SOFTcy:'Ь',softcy:'ь',sol:'/',solb:'⧄',solbar:'⌿',Sopf:'𝕊',sopf:'𝕤',spades:'♠',spadesuit:'♠',spar:'∥',sqcap:'⊓',sqcaps:'⊓︀',sqcup:'⊔',sqcups:'⊔︀',Sqrt:'√',sqsub:'⊏',sqsube:'⊑',sqsubset:'⊏',sqsubseteq:'⊑',sqsup:'⊐',sqsupe:'⊒',sqsupset:'⊐',sqsupseteq:'⊒',squ:'□',Square:'□',square:'□',SquareIntersection:'⊓',SquareSubset:'⊏',SquareSubsetEqual:'⊑',SquareSuperset:'⊐',SquareSupersetEqual:'⊒',SquareUnion:'⊔',squarf:'▪',squf:'▪',srarr:'→',Sscr:'𝒮',sscr:'𝓈',ssetmn:'',ssmile:'⌣',sstarf:'⋆',Star:'⋆',star:'☆',starf:'★',straightepsilon:'ϵ',straightphi:'ϕ',strns:'¯',Sub:'⋐',sub:'⊂',subdot:'⪽',subE:'⫅',sube:'⊆',subedot:'⫃',submult:'⫁',subnE:'⫋',subne:'⊊',subplus:'⪿',subrarr:'⥹',Subset:'⋐',subset:'⊂',subseteq:'⊆',subseteqq:'⫅',SubsetEqual:'⊆',subsetneq:'⊊',subsetneqq:'⫋',subsim:'⫇',subsub:'⫕',subsup:'⫓',succ:'≻',succapprox:'⪸',succcurlyeq:'≽',Succeeds:'≻',SucceedsEqual:'⪰',SucceedsSlantEqual:'≽',SucceedsTilde:'≿',succeq:'⪰',succnapprox:'⪺',succneqq:'⪶',succnsim:'⋩',succsim:'≿',SuchThat:'∋',Sum:'∑',sum:'∑',sung:'♪',Sup:'⋑',sup:'⊃',sup1:'¹',sup2:'²',sup3:'³',supdot:'⪾',supdsub:'⫘',supE:'⫆',supe:'⊇',supedot:'⫄',Superset:'⊃',SupersetEqual:'⊇',suphsol:'⟉',suphsub:'⫗',suplarr:'⥻',supmult:'⫂',supnE:'⫌',supne:'⊋',supplus:'⫀',Supset:'⋑',supset:'⊃',supseteq:'⊇',supseteqq:'⫆',supsetneq:'⊋',supsetneqq:'⫌',supsim:'⫈',supsub:'⫔',supsup:'⫖',swarhk:'⤦',swArr:'⇙',swarr:'↙',swarrow:'↙',swnwar:'⤪',szlig:'ß',Tab:'\\\\t',target:'⌖',Tau:'Τ',tau:'τ',tbrk:'⎴',Tcaron:'Ť',tcaron:'ť',Tcedil:'Ţ',tcedil:'ţ',Tcy:'Т',tcy:'т',tdot:'⃛',telrec:'⌕',Tfr:'𝔗',tfr:'𝔱',there4:'∴',Therefore:'∴',therefore:'∴',Theta:'Θ',theta:'θ',thetasym:'ϑ',thetav:'ϑ',thickapprox:'≈',thicksim:'',ThickSpace:'',thinsp:'',ThinSpace:'',thkap:'≈',thksim:'',THORN:'Þ',thorn:'þ',Tilde:'',tilde:'˜',TildeEqual:'≃',TildeFullEqual:'≅',TildeTilde:'≈',times:'×',timesb:'⊠',timesbar:'⨱',timesd:'⨰',tint:'∭',toea:'⤨',top:'',topbot:'⌶',topcir:'⫱',Topf:'𝕋',topf:'𝕥',topfork:'⫚',tosa:'⤩',tprime:'‴',TRADE:'™',trade:'™',triangle:'▵',triangledown:'▿',triangleleft:'◃',trianglelefteq:'⊴',triangleq:'≜',triangleright:'▹',trianglerighteq:'⊵',tridot:'◬',trie:'≜',triminus:'⨺',TripleDot:'⃛',triplus:'⨹',trisb:'⧍',tritime:'⨻',trpezium:'⏢',Tscr:'𝒯',tscr:'𝓉',TScy:'Ц',tscy:'ц',TSHcy:'Ћ',tshcy:'ћ',Tstrok:'Ŧ',tstrok:'ŧ',twixt:'≬',twoheadleftarrow:'↞',twoheadrightarrow:'↠',Uacute:'Ú',uacute:'ú',Uarr:'↟',uArr:'⇑',uarr:'↑',Uarrocir:'⥉',Ubrcy:'Ў',ubrcy:'ў',Ubreve:'Ŭ',ubreve:'ŭ',Ucirc:'Û',ucirc:'û',Ucy:'У',ucy:'у',udarr:'⇅',Udblac:'Ű',udblac:'ű',udhar:'⥮',ufisht:'⥾',Ufr:'𝔘',ufr:'𝔲',Ugrave:'Ù',ugrave:'ù',uHar:'⥣',uharl:'↿',uharr:'↾',uhblk:'▀',ulcorn:'⌜',ulcorner:'⌜',ulcrop:'⌏',ultri:'◸',Umacr:'Ū',umacr:'ū',uml:'¨',UnderBar:'_',UnderBrace:'⏟',UnderBracket:'⎵',UnderParenthesis:'⏝',Union:'',UnionPlus:'⊎',Uogon:'Ų',uogon:'ų',Uopf:'𝕌',uopf:'𝕦',UpArrow:'↑',Uparrow:'⇑',uparrow:'↑',UpArrowBar:'⤒',UpArrowDownArrow:'⇅',UpDownArrow:'↕',Updownarrow:'⇕',updownarrow:'↕',UpEquilibrium:'⥮',upharpoonleft:'↿',upharpoonright:'↾',uplus:'⊎',UpperLeftArrow:'↖',UpperRightArrow:'↗',Upsi:'ϒ',upsi:'υ',upsih:'ϒ',Upsilon:'Υ',upsilon:'υ',UpTee:'⊥',UpTeeArrow:'↥',upuparrows:'⇈',urcorn:'⌝',urcorner:'⌝',urcrop:'⌎',Uring:'Ů',uring:'ů',urtri:'◹',Uscr:'𝒰',uscr:'𝓊',utdot:'⋰',Utilde:'Ũ',utilde:'ũ',utri:'▵',utrif:'▴',uuarr:'⇈',Uuml:'Ü',uuml:'ü',uwangle:'⦧',vangrt:'⦜',varepsilon:'ϵ',varkappa:'ϰ',varnothing:'∅',varphi:'ϕ',varpi:'ϖ',varpropto:'∝',vArr:'⇕',varr:'↕',varrho:'ϱ',varsigma:'ς',varsubsetneq:'⊊︀',varsubsetneqq:'⫋︀',varsupsetneq:'⊋︀',varsupsetneqq:'⫌︀',vartheta:'ϑ',vartriangleleft:'⊲',vartriangleright:'⊳',Vbar:'⫫',vBar:'⫨',vBarv:'⫩',Vcy:'В',vcy:'в',VDash:'⊫',Vdash:'⊩',vDash:'⊨',vdash:'⊢',Vdashl:'⫦',Vee:'',vee:'',veebar:'⊻',veeeq:'≚',vellip:'⋮',Verbar:'‖',verbar:'|',Vert:'‖',vert:'|',VerticalBar:'',VerticalLine:'|',VerticalSeparator:'❘',VerticalTilde:'≀',VeryThinSpace:'',Vfr:'𝔙',vfr:'𝔳',vltri:'⊲',vnsub:'⊂⃒',vnsup:'⊃⃒',Vopf:'𝕍',vopf:'𝕧',vprop:'∝',vrtri:'⊳',Vscr:'𝒱',vscr:'𝓋',vsubnE:'⫋︀',vsubne:'⊊︀',vsupnE:'⫌︀',vsupne:'⊋︀',Vvdash:'⊪',vzigzag:'⦚',Wcirc:'Ŵ',wcirc:'ŵ',wedbar:'⩟',Wedge:'⋀',wedge:'∧',wedgeq:'≙',weierp:'℘',Wfr:'𝔚',wfr:'𝔴',Wopf:'𝕎',wopf:'𝕨',wp:'℘',wr:'≀',wreath:'≀',Wscr:'𝒲',wscr:'𝓌',xcap:'⋂',xcirc:'◯',xcup:'',xdtri:'▽',Xfr:'𝔛',xfr:'𝔵',xhArr:'⟺',xharr:'⟷',Xi:'Ξ',xi:'ξ',xlArr:'⟸',xlarr:'⟵',xmap:'⟼',xnis:'⋻',xodot:'⨀',Xopf:'𝕏',xopf:'𝕩',xoplus:'⨁',xotime:'⨂',xrArr:'⟹',xrarr:'⟶',Xscr:'𝒳',xscr:'𝓍',xsqcup:'⨆',xuplus:'⨄',xutri:'△',xvee:'',xwedge:'⋀',Yacute:'Ý',yacute:'ý',YAcy:'Я',yacy:'я',Ycirc:'Ŷ',ycirc:'ŷ',Ycy:'Ы',ycy:'ы',yen:'¥',Yfr:'𝔜',yfr:'𝔶',YIcy:'Ї',yicy:'ї',Yopf:'𝕐',yopf:'𝕪',Yscr:'𝒴',yscr:'𝓎',YUcy:'Ю',yucy:'ю',Yuml:'Ÿ',yuml:'ÿ',Zacute:'Ź',zacute:'ź',Zcaron:'Ž',zcaron:'ž',Zcy:'З',zcy:'з',Zdot:'Ż',zdot:'ż',zeetrf:'',ZeroWidthSpace:'',Zeta:'Ζ',zeta:'ζ',Zfr:'',zfr:'𝔷',ZHcy:'Ж',zhcy:'ж',zigrarr:'⇝',Zopf:'',zopf:'𝕫',Zscr:'𝒵',zscr:'𝓏',zwj:'',zwnj:''},z=Object.prototype.hasOwnProperty;function P(e){return(t=N)&&z.call(t,e)?N[e]:e;var t}var j=Object.prototype.hasOwnProperty;function I(e,t){return!!e&&j.call(e,t)}function O(r){return[].slice.call(arguments,1).forEach(function(t){if(t){if('object'!=typeof t)throw new TypeError(t+'must be object');Object.keys(t).forEach(function(e){r[e]=t[e]})}}),r}var U=/\\\\\\\\([\\\\\\\\!\\\"#$%&'()*+,.\\\\/:;\u003C=>?@[\\\\]^_`{|}~-])/g;function c(e){return e.indexOf('\\\\\\\\')\u003C0?e:e.replace(U,'$1')}function H(e){return!(55296\u003C=e&&e\u003C=57343||64976\u003C=e&&e\u003C=65007||65535==(65535&e)||65534==(65535&e)||0\u003C=e&&e\u003C=8||11===e||14\u003C=e&&e\u003C=31||127\u003C=e&&e\u003C=159||1114111\u003Ce)}function s(e){var t;return 65535\u003Ce?(t=55296+((e-=65536)>>10),String.fromCharCode(t,56320+(1023&e))):String.fromCharCode(e)}var V=/&([a-z#][a-z0-9]{1,31});/gi,G=/^#((?:x[a-f0-9]{1,8}|[0-9]{1,8}))/i;function $(e,t){var r=0,n=P(t);return t!==n?n:35===t.charCodeAt(0)&&G.test(t)&&H(r='x'===t[1].toLowerCase()?parseInt(t.slice(2),16):parseInt(t.slice(1),10))?s(r):e}function p(e){return e.indexOf('&')\u003C0?e:e.replace(V,$)}var Z=/[&\u003C>\\\"]/,W=/[&\u003C>\\\"]/g,J={'&':'&amp;','\u003C':'&lt;','>':'&gt;','\\\"':'&quot;'};function Y(e){return J[e]}function h(e){return Z.test(e)?e.replace(W,Y):e}var K=Object.freeze({isString:function(e){return'[object String]'===Object.prototype.toString.call(e)},has:I,assign:O,unescapeMd:c,isValidEntityCode:H,fromCodePoint:s,replaceEntities:p,escapeHtml:h}),Q={blockquote_open:function(){return'\u003Cblockquote>\\\\n'},blockquote_close:function(e,t){return'\u003C/blockquote>'+f(e,t)},code:function(e,t){return e[t].block?'\u003Cpre>\u003Ccode>'+h(e[t].content)+'\u003C/code>\u003C/pre>'+f(e,t):'\u003Ccode>'+h(e[t].content)+'\u003C/code>'},fence:function(e,t,r,n,o){var s,i,a=e[t],u='',l=r.langPrefix;if(a.params){if(i=(s=a.params.split(/\\\\s+/g)).join(' '),I(o.rules.fence_custom,s[0]))return o.rules.fence_custom[s[0]](e,t,r,n,o);u=' class=\\\"'+l+h(p(c(i)))+'\\\"'}return'\u003Cpre>\u003Ccode'+u+'>'+(r.highlight&&r.highlight.apply(r.highlight,[a.content].concat(s))||h(a.content))+'\u003C/code>\u003C/pre>'+f(e,t)},fence_custom:{},heading_open:function(e,t){return'\u003Ch'+e[t].hLevel+'>'},heading_close:function(e,t){return'\u003C/h'+e[t].hLevel+'>\\\\n'},hr:function(e,t,r){return(r.xhtmlOut?'\u003Chr />':'\u003Chr>')+f(e,t)},bullet_list_open:function(){return'\u003Cul>\\\\n'},bullet_list_close:function(e,t){return'\u003C/ul>'+f(e,t)},list_item_open:function(){return'\u003Cli>'},list_item_close:function(){return'\u003C/li>\\\\n'},ordered_list_open:function(e,t){e=e[t];return'\u003Col'+(1\u003Ce.order?' start=\\\"'+e.order+'\\\"':'')+'>\\\\n'},ordered_list_close:function(e,t){return'\u003C/ol>'+f(e,t)},paragraph_open:function(e,t){return e[t].tight?'':'\u003Cp>'},paragraph_close:function(e,t){var r=!(e[t].tight&&t&&'inline'===e[t-1].type&&!e[t-1].content);return(e[t].tight?'':'\u003C/p>')+(r?f(e,t):'')},link_open:function(e,t,r){var n=e[t].title?' title=\\\"'+h(p(e[t].title))+'\\\"':'',r=r.linkTarget?' target=\\\"'+r.linkTarget+'\\\"':'';return'\u003Ca href=\\\"'+h(e[t].href)+'\\\"'+n+r+'>'},link_close:function(){return'\u003C/a>'},image:function(e,t,r){var n=' src=\\\"'+h(e[t].src)+'\\\"',o=e[t].title?' title=\\\"'+h(p(e[t].title))+'\\\"':'';return'\u003Cimg'+n+' alt=\\\"'+(e[t].alt?h(p(c(e[t].alt))):'')+'\\\"'+o+(r.xhtmlOut?' /':'')+'>'},table_open:function(){return'\u003Ctable>\\\\n'},table_close:function(){return'\u003C/table>\\\\n'},thead_open:function(){return'\u003Cthead>\\\\n'},thead_close:function(){return'\u003C/thead>\\\\n'},tbody_open:function(){return'\u003Ctbody>\\\\n'},tbody_close:function(){return'\u003C/tbody>\\\\n'},tr_open:function(){return'\u003Ctr>'},tr_close:function(){return'\u003C/tr>\\\\n'},th_open:function(e,t){e=e[t];return'\u003Cth'+(e.align?' style=\\\"text-align:'+e.align+'\\\"':'')+'>'},th_close:function(){return'\u003C/th>'},td_open:function(e,t){e=e[t];return'\u003Ctd'+(e.align?' style=\\\"text-align:'+e.align+'\\\"':'')+'>'},td_close:function(){return'\u003C/td>'},strong_open:function(){return'\u003Cstrong>'},strong_close:function(){return'\u003C/strong>'},em_open:function(){return'\u003Cem>'},em_close:function(){return'\u003C/em>'},del_open:function(){return'\u003Cdel>'},del_close:function(){return'\u003C/del>'},ins_open:function(){return'\u003Cins>'},ins_close:function(){return'\u003C/ins>'},mark_open:function(){return'\u003Cmark>'},mark_close:function(){return'\u003C/mark>'},sub:function(e,t){return'\u003Csub>'+h(e[t].content)+'\u003C/sub>'},sup:function(e,t){return'\u003Csup>'+h(e[t].content)+'\u003C/sup>'},hardbreak:function(e,t,r){return r.xhtmlOut?'\u003Cbr />\\\\n':'\u003Cbr>\\\\n'},softbreak:function(e,t,r){return r.breaks?r.xhtmlOut?'\u003Cbr />\\\\n':'\u003Cbr>\\\\n':'\\\\n'},text:function(e,t){return h(e[t].content)},htmlblock:function(e,t){return e[t].content},htmltag:function(e,t){return e[t].content},abbr_open:function(e,t){return'\u003Cabbr title=\\\"'+h(p(e[t].title))+'\\\">'},abbr_close:function(){return'\u003C/abbr>'},footnote_ref:function(e,t){var r=Number(e[t].id+1).toString(),n='fnref'+r;return 0\u003Ce[t].subId&&(n+=':'+e[t].subId),'\u003Csup class=\\\"footnote-ref\\\">\u003Ca href=\\\"#fn'+r+'\\\" id=\\\"'+n+'\\\">['+r+']\u003C/a>\u003C/sup>'},footnote_block_open:function(e,t,r){return(r.xhtmlOut?'\u003Chr class=\\\"footnotes-sep\\\" />\\\\n':'\u003Chr class=\\\"footnotes-sep\\\">\\\\n')+'\u003Csection class=\\\"footnotes\\\">\\\\n\u003Col class=\\\"footnotes-list\\\">\\\\n'},footnote_block_close:function(){return'\u003C/ol>\\\\n\u003C/section>\\\\n'},footnote_open:function(e,t){return'\u003Cli id=\\\"fn'+Number(e[t].id+1).toString()+'\\\" class=\\\"footnote-item\\\">'},footnote_close:function(){return'\u003C/li>\\\\n'},footnote_anchor:function(e,t){var r='fnref'+Number(e[t].id+1).toString();return 0\u003Ce[t].subId&&(r+=':'+e[t].subId),' \u003Ca href=\\\"#'+r+'\\\" class=\\\"footnote-backref\\\">↩\u003C/a>'},dl_open:function(){return'\u003Cdl>\\\\n'},dt_open:function(){return'\u003Cdt>'},dd_open:function(){return'\u003Cdd>'},dl_close:function(){return'\u003C/dl>\\\\n'},dt_close:function(){return'\u003C/dt>\\\\n'},dd_close:function(){return'\u003C/dd>\\\\n'}},f=Q.getBreak=function(e,t){return(t=function e(t,r){return!(++r>=t.length-2)&&'paragraph_open'===t[r].type&&t[r].tight&&'inline'===t[r+1].type&&0===t[r+1].content.length&&'paragraph_close'===t[r+2].type&&t[r+2].tight?e(t,r+2):r}(e,t))\u003Ce.length&&'list_item_close'===e[t].type?'':'\\\\n'};function X(){this.rules=O({},Q),this.getBreak=Q.getBreak}function r(){this.__rules__=[],this.__cache__=null}function g(e,t,r,n,o){this.src=e,this.env=n,this.options=r,this.parser=t,this.tokens=o,this.pos=0,this.posMax=this.src.length,this.level=0,this.pending='',this.pendingLevel=0,this.cache=[],this.isInLabel=!1,this.linkLevel=0,this.linkContent='',this.labelUnmatchedScopes=0}function d(e,t){var r,n,o,s=-1,i=e.posMax,a=e.pos,u=e.isInLabel;if(e.isInLabel)return-1;if(e.labelUnmatchedScopes)return e.labelUnmatchedScopes--,-1;for(e.pos=t+1,e.isInLabel=!0,r=1;e.pos\u003Ci;){if(91===(o=e.src.charCodeAt(e.pos)))r++;else if(93===o&&0==--r){n=!0;break}e.parser.skipToken(e)}return n?(s=e.pos,e.labelUnmatchedScopes=0):e.labelUnmatchedScopes=r-1,e.pos=a,e.isInLabel=u,s}function ee(e){var t=p(e);try{t=decodeURI(t)}catch(e){}return encodeURI(t)}function te(e,t){var r,n,o,s=t,i=e.posMax;if(60!==e.src.charCodeAt(t)){for(n=0;t\u003Ci&&32!==(r=e.src.charCodeAt(t))&&!(r\u003C32||127===r);)if(92===r&&t+1\u003Ci)t+=2;else{if(40===r&&1\u003C++n)break;if(41===r&&--n\u003C0)break;t++}return s!==t&&(o=c(e.src.slice(s,t)),e.parser.validateLink(o))&&(e.linkContent=o,e.pos=t,1)}for(t++;t\u003Ci;){if(10===(r=e.src.charCodeAt(t)))return;if(62===r)return o=ee(c(e.src.slice(s+1,t))),e.parser.validateLink(o)&&(e.pos=t+1,e.linkContent=o,1);92===r&&t+1\u003Ci?t+=2:t++}}function re(e,t){var r,n=t,o=e.posMax,s=e.src.charCodeAt(t);if(34===s||39===s||40===s)for(t++,40===s&&(s=41);t\u003Co;){if((r=e.src.charCodeAt(t))===s)return e.pos=t+1,e.linkContent=c(e.src.slice(n+1,t)),1;92===r&&t+1\u003Co?t+=2:t++}}function ne(e){return e.trim().replace(/\\\\s+/g,' ').toUpperCase()}X.prototype.renderInline=function(e,t,r){for(var n=this.rules,o=e.length,s=0,i='';o--;)i+=n[e[s].type](e,s++,t,r,this);return i},X.prototype.render=function(e,t,r){for(var n=this.rules,o=e.length,s=-1,i='';++s\u003Co;)'inline'===e[s].type?i+=this.renderInline(e[s].children,t,r):i+=n[e[s].type](e,s,t,r,this);return i},r.prototype.__find__=function(e){for(var t=this.__rules__.length,r=-1;t--;)if(this.__rules__[++r].name===e)return r;return-1},r.prototype.__compile__=function(){var r=this,t=[''];r.__rules__.forEach(function(e){e.enabled&&e.alt.forEach(function(e){t.indexOf(e)\u003C0&&t.push(e)})}),r.__cache__={},t.forEach(function(t){r.__cache__[t]=[],r.__rules__.forEach(function(e){!e.enabled||t&&e.alt.indexOf(t)\u003C0||r.__cache__[t].push(e.fn)})})},r.prototype.at=function(e,t,r){var n=this.__find__(e),r=r||{};if(-1===n)throw new Error('Parser rule not found: '+e);this.__rules__[n].fn=t,this.__rules__[n].alt=r.alt||[],this.__cache__=null},r.prototype.before=function(e,t,r,n){var o=this.__find__(e),n=n||{};if(-1===o)throw new Error('Parser rule not found: '+e);this.__rules__.splice(o,0,{name:t,enabled:!0,fn:r,alt:n.alt||[]}),this.__cache__=null},r.prototype.after=function(e,t,r,n){var o=this.__find__(e),n=n||{};if(-1===o)throw new Error('Parser rule not found: '+e);this.__rules__.splice(o+1,0,{name:t,enabled:!0,fn:r,alt:n.alt||[]}),this.__cache__=null},r.prototype.push=function(e,t,r){this.__rules__.push({name:e,enabled:!0,fn:t,alt:(r||{}).alt||[]}),this.__cache__=null},r.prototype.enable=function(e,t){e=Array.isArray(e)?e:[e],t&&this.__rules__.forEach(function(e){e.enabled=!1}),e.forEach(function(e){var t=this.__find__(e);if(t\u003C0)throw new Error('Rules manager: invalid rule name '+e);this.__rules__[t].enabled=!0},this),this.__cache__=null},r.prototype.disable=function(e){(e=Array.isArray(e)?e:[e]).forEach(function(e){var t=this.__find__(e);if(t\u003C0)throw new Error('Rules manager: invalid rule name '+e);this.__rules__[t].enabled=!1},this),this.__cache__=null},r.prototype.getRules=function(e){return null===this.__cache__&&this.__compile__(),this.__cache__[e]||[]},g.prototype.pushPending=function(){this.tokens.push({type:'text',content:this.pending,level:this.pendingLevel}),this.pending=''},g.prototype.push=function(e){this.pending&&this.pushPending(),this.tokens.push(e),this.pendingLevel=this.level},g.prototype.cacheSet=function(e,t){for(var r=this.cache.length;r\u003C=e;r++)this.cache.push(0);this.cache[e]=t},g.prototype.cacheGet=function(e){return e\u003Cthis.cache.length?this.cache[e]:0};var oe=' \\\\n()[]\\\\'\\\".,!?-';function se(e){return e.replace(/([-()\\\\[\\\\]{}+?*.$\\\\^|,:#\u003C!\\\\\\\\])/g,'\\\\\\\\$1')}var ie=/\\\\+-|\\\\.\\\\.|\\\\?\\\\?\\\\?\\\\?|!!!!|,,|--/,ae=/\\\\((c|tm|r|p)\\\\)/gi,ue={c:'©',r:'®',p:'§',tm:'™'},le=/['\\\"]/,ce=/['\\\"]/g,pe=/[-\\\\s()\\\\[\\\\]]/;function he(e,t){return!(t\u003C0||t>=e.length||pe.test(e[t]))}function m(e,t,r){return e.substr(0,t)+r+e.substr(t+1)}var fe=[['block',function(e){e.inlineMode?e.tokens.push({type:'inline',content:e.src.replace(/\\\\n/g,' ').trim(),level:0,lines:[0,1],children:[]}):e.block.parse(e.src,e.options,e.env,e.tokens)}],['abbr',function(e){var t,r,n,o,s=e.tokens;if(!e.inlineMode)for(r=s.length-(t=1);t\u003Cr;t++)if('paragraph_open'===s[t-1].type&&'inline'===s[t].type&&'paragraph_close'===s[t+1].type){for(n=s[t].content;n.length&&!((o=function(e,t,r,n){var o,s,i;if(42!==e.charCodeAt(0))return-1;if(91!==e.charCodeAt(1))return-1;if(-1===e.indexOf(']:'))return-1;if((t=d(o=new g(e,t,r,n,[]),1))\u003C0||58!==e.charCodeAt(t+1))return-1;for(i=o.posMax,s=t+2;s\u003Ci&&10!==o.src.charCodeAt(s);s++);return r=e.slice(2,t),0===(e=e.slice(t+2,s).trim()).length?-1:(n.abbreviations||(n.abbreviations={}),void 0===n.abbreviations[':'+r]&&(n.abbreviations[':'+r]=e),s)}(n,e.inline,e.options,e.env))\u003C0);)n=n.slice(o).trim();(s[t].content=n).length||(s[t-1].tight=!0,s[t+1].tight=!0)}}],['references',function(e){var t,r,n,o,s=e.tokens;if(e.env.references=e.env.references||{},!e.inlineMode)for(r=s.length-(t=1);t\u003Cr;t++)if('inline'===s[t].type&&'paragraph_open'===s[t-1].type&&'paragraph_close'===s[t+1].type){for(n=s[t].content;n.length&&!((o=function(e,t,r,n){var o,s,i,a,u,l;if(91!==e.charCodeAt(0))return-1;if(-1===e.indexOf(']:'))return-1;if((t=d(o=new g(e,t,r,n,[]),0))\u003C0||58!==e.charCodeAt(t+1))return-1;for(i=o.posMax,s=t+2;s\u003Ci&&(32===(a=o.src.charCodeAt(s))||10===a);s++);if(!te(o,s))return-1;for(r=o.linkContent,l=s=o.pos,s+=1;s\u003Ci&&(32===(a=o.src.charCodeAt(s))||10===a);s++);for(s=s\u003Ci&&l!==s&&re(o,s)?(u=o.linkContent,o.pos):(u='',l);s\u003Ci&&32===o.src.charCodeAt(s);)s++;return s\u003Ci&&10!==o.src.charCodeAt(s)?-1:(l=ne(e.slice(1,t)),void 0===n.references[l]&&(n.references[l]={title:u,href:r}),s)}(n,e.inline,e.options,e.env))\u003C0);)n=n.slice(o).trim();(s[t].content=n).length||(s[t-1].tight=!0,s[t+1].tight=!0)}}],['inline',function(e){for(var t,r=e.tokens,n=0,o=r.length;n\u003Co;n++)'inline'===(t=r[n]).type&&e.inline.parse(t.content,e.options,e.env,t.children)}],['footnote_tail',function(e){var t,r,n,o,s,i,a,u,l,c=0,p=!1,h={};if(e.env.footnotes&&(e.tokens=e.tokens.filter(function(e){return'footnote_reference_open'===e.type?(p=!0,u=[],l=e.label,!1):'footnote_reference_close'===e.type?(p=!1,h[':'+l]=u,!1):(p&&u.push(e),!p)}),e.env.footnotes.list)){for(i=e.env.footnotes.list,e.tokens.push({type:'footnote_block_open',level:c++}),t=0,r=i.length;t\u003Cr;t++){for(e.tokens.push({type:'footnote_open',id:t,level:c++}),i[t].tokens?((a=[]).push({type:'paragraph_open',tight:!1,level:c++}),a.push({type:'inline',content:'',level:c,children:i[t].tokens}),a.push({type:'paragraph_close',tight:!1,level:--c})):i[t].label&&(a=h[':'+i[t].label]),e.tokens=e.tokens.concat(a),s='paragraph_close'===e.tokens[e.tokens.length-1].type?e.tokens.pop():null,o=0\u003Ci[t].count?i[t].count:1,n=0;n\u003Co;n++)e.tokens.push({type:'footnote_anchor',id:t,subId:n,level:c});s&&e.tokens.push(s),e.tokens.push({type:'footnote_close',level:--c})}e.tokens.push({type:'footnote_block_close',level:--c})}}],['abbr2',function(e){var t,r,n,o,s,i,a,u,l,c,p,h,f=e.tokens;if(e.env.abbreviations)for(e.env.abbrRegExp||(h='(^|['+oe.split('').map(se).join('')+'])('+Object.keys(e.env.abbreviations).map(function(e){return e.substr(1)}).sort(function(e,t){return t.length-e.length}).map(se).join('|')+')($|['+oe.split('').map(se).join('')+'])',e.env.abbrRegExp=new RegExp(h,'g')),c=e.env.abbrRegExp,r=0,n=f.length;r\u003Cn;r++)if('inline'===f[r].type)for(t=(o=f[r].children).length-1;0\u003C=t;t--)if('text'===(s=o[t]).type){for(i=s.content,c.lastIndex=u=0,l=s.level,a=[];p=c.exec(i);)c.lastIndex>u&&a.push({type:'text',content:i.slice(u,p.index+p[1].length),level:l}),a.push({type:'abbr_open',title:e.env.abbreviations[':'+p[2]],level:l++}),a.push({type:'text',content:p[2],level:l}),a.push({type:'abbr_close',level:--l}),u=c.lastIndex-p[3].length;a.length&&(u\u003Ci.length&&a.push({type:'text',content:i.slice(u),level:l}),f[r].children=o=[].concat(o.slice(0,t),a,o.slice(t+1)))}}],['replacements',function(e){var t,r,n,o,s,i;if(e.options.typographer)for(s=e.tokens.length-1;0\u003C=s;s--)if('inline'===e.tokens[s].type)for(t=(o=e.tokens[s].children).length-1;0\u003C=t;t--)'text'===(r=o[t]).type&&(n=(i=n=r.content).indexOf('(')\u003C0?i:i.replace(ae,function(e,t){return ue[t.toLowerCase()]}),ie.test(n)&&(n=n.replace(/\\\\+-/g,'±').replace(/\\\\.{2,}/g,'…').replace(/([?!])…/g,'$1..').replace(/([?!]){4,}/g,'$1$1$1').replace(/,{2,}/g,',').replace(/(^|[^-])---([^-]|$)/gm,'$1—$2').replace(/(^|\\\\s)--(\\\\s|$)/gm,'$1$2').replace(/(^|[^-\\\\s])--([^-\\\\s]|$)/gm,'$1$2')),r.content=n)}],['smartquotes',function(e){var t,r,n,o,s,i,a,u,l,c,p,h,f,g,d;if(e.options.typographer)for(d=[],f=e.tokens.length-1;0\u003C=f;f--)if('inline'===e.tokens[f].type)for(g=e.tokens[f].children,t=d.length=0;t\u003Cg.length;t++)if('text'===(r=g[t]).type&&!le.test(r.text)){for(a=g[t].level,p=d.length-1;0\u003C=p&&!(d[p].level\u003C=a);p--);d.length=p+1,s=0,i=(n=r.content).length;e:for(;s\u003Ci&&(ce.lastIndex=s,o=ce.exec(n));)if(c=!he(n,o.index-1),s=o.index+1,h='\\\\''===o[0],(l=!he(n,s))||c){if(l=!l,c=!c)for(p=d.length-1;0\u003C=p&&!((u=d[p]).level\u003Ca);p--)if(u.single===h&&d[p].level===a){u=d[p],h?(g[u.token].content=m(g[u.token].content,u.pos,e.options.quotes[2]),r.content=m(r.content,o.index,e.options.quotes[3])):(g[u.token].content=m(g[u.token].content,u.pos,e.options.quotes[0]),r.content=m(r.content,o.index,e.options.quotes[1])),d.length=p;continue e}l?d.push({token:t,pos:o.index,single:h,level:a}):c&&h&&(r.content=m(r.content,o.index,''))}else h&&(r.content=m(r.content,o.index,''))}}]];function ge(){this.options={},this.ruler=new r;for(var e=0;e\u003Cfe.length;e++)this.ruler.push(fe[e][0],fe[e][1])}function i(e,t,r,n,o){var s,i,a,u,l,c,p;for(this.src=e,this.parser=t,this.options=r,this.env=n,this.tokens=o,this.bMarks=[],this.eMarks=[],this.tShift=[],this.blkIndent=0,this.line=0,this.lineMax=0,this.tight=!1,this.parentType='root',this.ddIndent=-1,this.level=0,this.result='',p=!1,a=u=c=c=0,l=(i=this.src).length;u\u003Cl;u++){if(s=i.charCodeAt(u),!p){if(32===s){c++;continue}p=!0}10!==s&&u!==l-1||(10!==s&&u++,this.bMarks.push(a),this.eMarks.push(u),this.tShift.push(c),p=!1,c=0,a=u+1)}this.bMarks.push(i.length),this.eMarks.push(i.length),this.tShift.push(0),this.lineMax=this.bMarks.length-1}function de(e,t){var r,n;return(n=e.bMarks[t]+e.tShift[t])>=(t=e.eMarks[t])||42!==(r=e.src.charCodeAt(n++))&&45!==r&&43!==r||n\u003Ct&&32!==e.src.charCodeAt(n)?-1:n}function me(e,t){var r,n=e.bMarks[t]+e.tShift[t],o=e.eMarks[t];if(o\u003C=n+1)return-1;if((r=e.src.charCodeAt(n++))\u003C48||57\u003Cr)return-1;for(;;){if(o\u003C=n)return-1;if(!(48\u003C=(r=e.src.charCodeAt(n++))&&r\u003C=57)){if(41===r||46===r)break;return-1}}return n\u003Co&&32!==e.src.charCodeAt(n)?-1:n}ge.prototype.process=function(e){for(var t,r=0,n=(t=this.ruler.getRules('')).length;r\u003Cn;r++)t[r](e)},i.prototype.isEmpty=function(e){return this.bMarks[e]+this.tShift[e]>=this.eMarks[e]},i.prototype.skipEmptyLines=function(e){for(var t=this.lineMax;e\u003Ct&&!(this.bMarks[e]+this.tShift[e]\u003Cthis.eMarks[e]);e++);return e},i.prototype.skipSpaces=function(e){for(var t=this.src.length;e\u003Ct&&32===this.src.charCodeAt(e);e++);return e},i.prototype.skipChars=function(e,t){for(var r=this.src.length;e\u003Cr&&this.src.charCodeAt(e)===t;e++);return e},i.prototype.skipCharsBack=function(e,t,r){if(!(e\u003C=r))for(;r\u003Ce;)if(t!==this.src.charCodeAt(--e))return e+1;return e},i.prototype.getLines=function(e,t,r,n){var o,s,i,a,u,l=e;if(t\u003C=e)return'';if(l+1===t)return s=this.bMarks[l]+Math.min(this.tShift[l],r),i=n?this.eMarks[l]+1:this.eMarks[l],this.src.slice(s,i);for(a=new Array(t-e),o=0;l\u003Ct;l++,o++)(u=this.tShift[l])>r&&(u=r),s=this.bMarks[l]+(u=u\u003C0?0:u),i=l+1\u003Ct||n?this.eMarks[l]+1:this.eMarks[l],a[o]=this.src.slice(s,i);return a.join('')};var be={},ve=(['article','aside','button','blockquote','body','canvas','caption','col','colgroup','dd','div','dl','dt','embed','fieldset','figcaption','figure','footer','form','h1','h2','h3','h4','h5','h6','header','hgroup','hr','iframe','li','map','object','ol','output','p','pre','progress','script','section','style','table','tbody','td','textarea','tfoot','th','tr','thead','ul','video'].forEach(function(e){be[e]=!0}),/^\u003C([a-zA-Z]{1,15})[\\\\s\\\\/>]/),ke=/^\u003C\\\\/([a-zA-Z]{1,15})[\\\\s>]/;function Ae(e,t){var r=e.bMarks[t]+e.blkIndent,t=e.eMarks[t];return e.src.substr(r,t-r)}function y(e,t){var r,n=e.bMarks[t]+e.tShift[t],t=e.eMarks[t];return t\u003C=n||126!==(r=e.src.charCodeAt(n++))&&58!==r||n===(r=e.skipSpaces(n))||t\u003C=r?-1:r}var t=[['code',function(e,t,r){var n,o;if(e.tShift[t]-e.blkIndent\u003C4)return!1;for(o=n=t+1;n\u003Cr;)if(e.isEmpty(n))n++;else{if(!(4\u003C=e.tShift[n]-e.blkIndent))break;o=++n}return e.line=n,e.tokens.push({type:'code',content:e.getLines(t,o,4+e.blkIndent,!0),block:!0,lines:[t,e.line],level:e.level}),!0}],['fences',function(e,t,r,n){var o,s,i,a,u,l=!1,c=e.bMarks[t]+e.tShift[t],p=e.eMarks[t];if(p\u003Cc+3)return!1;if(126!==(o=e.src.charCodeAt(c))&&96!==o)return!1;if(u=c,(s=(c=e.skipChars(c,o))-u)\u003C3)return!1;if(0\u003C=(i=e.src.slice(c,p).trim()).indexOf('`'))return!1;if(!n){for(a=t;!(++a>=r||(c=u=e.bMarks[a]+e.tShift[a])\u003C(p=e.eMarks[a])&&e.tShift[a]\u003Ce.blkIndent);)if(e.src.charCodeAt(c)===o&&!(4\u003C=e.tShift[a]-e.blkIndent||(c=e.skipChars(c,o))-u\u003Cs||(c=e.skipSpaces(c))\u003Cp)){l=!0;break}s=e.tShift[t],e.line=a+(l?1:0),e.tokens.push({type:'fence',params:i,content:e.getLines(t+1,a,s,!0),lines:[t,e.line],level:e.level})}return!0},['paragraph','blockquote','list']],['blockquote',function(e,t,r,n){var o,s,i,a,u,l,c,p,h,f,g=e.bMarks[t]+e.tShift[t],d=e.eMarks[t];if(d\u003Cg)return!1;if(62!==e.src.charCodeAt(g++))return!1;if(e.level>=e.options.maxNesting)return!1;if(!n){for(32===e.src.charCodeAt(g)&&g++,n=e.blkIndent,e.blkIndent=0,a=[e.bMarks[t]],s=(g=(e.bMarks[t]=g)\u003Cd?e.skipSpaces(g):g)>=d,i=[e.tShift[t]],e.tShift[t]=g-e.bMarks[t],c=e.parser.ruler.getRules('blockquote'),o=t+1;o\u003Cr&&!((g=e.bMarks[o]+e.tShift[o])>=(d=e.eMarks[o]));o++)if(62!==e.src.charCodeAt(g++)){if(s)break;for(f=!1,p=0,h=c.length;p\u003Ch;p++)if(c[p](e,o,r,!0)){f=!0;break}if(f)break;a.push(e.bMarks[o]),i.push(e.tShift[o]),e.tShift[o]=-1337}else 32===e.src.charCodeAt(g)&&g++,a.push(e.bMarks[o]),s=(g=(e.bMarks[o]=g)\u003Cd?e.skipSpaces(g):g)>=d,i.push(e.tShift[o]),e.tShift[o]=g-e.bMarks[o];for(u=e.parentType,e.parentType='blockquote',e.tokens.push({type:'blockquote_open',lines:l=[t,0],level:e.level++}),e.parser.tokenize(e,t,o),e.tokens.push({type:'blockquote_close',level:--e.level}),e.parentType=u,l[1]=e.line,p=0;p\u003Ci.length;p++)e.bMarks[p+t]=a[p],e.tShift[p+t]=i[p];e.blkIndent=n}return!0},['paragraph','blockquote','list']],['hr',function(e,t,r,n){var o,s,i,a=e.bMarks[t],u=e.eMarks[t];if((a+=e.tShift[t])>u)return!1;if(42!==(o=e.src.charCodeAt(a++))&&45!==o&&95!==o)return!1;for(s=1;a\u003Cu;){if((i=e.src.charCodeAt(a++))!==o&&32!==i)return!1;i===o&&s++}return!(s\u003C3||!n&&(e.line=t+1,e.tokens.push({type:'hr',lines:[t,e.line],level:e.level}),0))},['paragraph','blockquote','list']],['list',function(e,t,r,n){var o,s,i,a,u,l,c,p,h,f,g,d,m,b,v,k,A,y=!0;if(0\u003C=(l=me(e,t)))h=!0;else{if(!(0\u003C=(l=de(e,t))))return!1;h=!1}if(e.level>=e.options.maxNesting)return!1;if(p=e.src.charCodeAt(l-1),!n){for(n=e.tokens.length,h?(d=e.bMarks[t]+e.tShift[t],d=Number(e.src.substr(d,l-d-1)),e.tokens.push({type:'ordered_list_open',order:d,lines:d=[t,0],level:e.level++})):e.tokens.push({type:'bullet_list_open',lines:d=[t,0],level:e.level++}),o=t,g=!1,b=e.parser.ruler.getRules('list');!(!(o\u003Cr)||(4\u003C(c=(f=e.skipSpaces(l))>=e.eMarks[o]?1:f-l)&&(c=1),c=l-e.bMarks[o]+(c=c\u003C1?1:c),e.tokens.push({type:'list_item_open',lines:m=[t,0],level:e.level++}),i=e.blkIndent,a=e.tight,s=e.tShift[t],u=e.parentType,e.tShift[t]=f-e.bMarks[t],e.blkIndent=c,e.tight=!0,e.parentType='list',e.parser.tokenize(e,t,r,!0),e.tight&&!g||(y=!1),g=1\u003Ce.line-t&&e.isEmpty(e.line-1),e.blkIndent=i,e.tShift[t]=s,e.tight=a,e.parentType=u,e.tokens.push({type:'list_item_close',level:--e.level}),o=t=e.line,m[1]=o,e.bMarks[t],r\u003C=o)||e.isEmpty(o)||e.tShift[o]\u003Ce.blkIndent);){for(A=!1,v=0,k=b.length;v\u003Ck;v++)if(b[v](e,o,r,!0)){A=!0;break}if(A)break;if(h){if((l=me(e,o))\u003C0)break}else if((l=de(e,o))\u003C0)break;if(p!==e.src.charCodeAt(l-1))break}if(e.tokens.push({type:h?'ordered_list_close':'bullet_list_close',level:--e.level}),d[1]=o,e.line=o,y){var x=e;for(var w=x.level+2,C=n+2,E=x.tokens.length-2;C\u003CE;C++)x.tokens[C].level===w&&'paragraph_open'===x.tokens[C].type&&(x.tokens[C+2].tight=!0,x.tokens[C].tight=!0,C+=2)}}return!0},['paragraph','blockquote']],['footnote',function(e,t,r,n){var o,s,i=e.bMarks[t]+e.tShift[t],a=e.eMarks[t];if(a\u003Ci+4)return!1;if(91!==e.src.charCodeAt(i))return!1;if(94!==e.src.charCodeAt(i+1))return!1;if(e.level>=e.options.maxNesting)return!1;for(s=i+2;s\u003Ca;s++){if(32===e.src.charCodeAt(s))return!1;if(93===e.src.charCodeAt(s))break}return!(s===i+2||a\u003C=s+1||58!==e.src.charCodeAt(++s)||!n&&(s++,e.env.footnotes||(e.env.footnotes={}),e.env.footnotes.refs||(e.env.footnotes.refs={}),n=e.src.slice(i+2,s-2),e.env.footnotes.refs[':'+n]=-1,e.tokens.push({type:'footnote_reference_open',label:n,level:e.level++}),i=e.bMarks[t],n=e.tShift[t],o=e.parentType,e.tShift[t]=e.skipSpaces(s)-s,e.bMarks[t]=s,e.blkIndent+=4,e.parentType='footnote',e.tShift[t]\u003Ce.blkIndent&&(e.tShift[t]+=e.blkIndent,e.bMarks[t]-=e.blkIndent),e.parser.tokenize(e,t,r,!0),e.parentType=o,e.blkIndent-=4,e.tShift[t]=n,e.bMarks[t]=i,e.tokens.push({type:'footnote_reference_close',level:--e.level}),0))},['paragraph']],['heading',function(e,t,r,n){var o,s,i=e.bMarks[t]+e.tShift[t],a=e.eMarks[t];if(a\u003C=i)return!1;if(35!==(o=e.src.charCodeAt(i))||a\u003C=i)return!1;for(s=1,o=e.src.charCodeAt(++i);35===o&&i\u003Ca&&s\u003C=6;)s++,o=e.src.charCodeAt(++i);return!(6\u003Cs||i\u003Ca&&32!==o||!n&&(a=e.skipCharsBack(a,32,i),(n=e.skipCharsBack(a,35,i))>i&&32===e.src.charCodeAt(n-1)&&(a=n),e.line=t+1,e.tokens.push({type:'heading_open',hLevel:s,lines:[t,e.line],level:e.level}),i\u003Ca&&e.tokens.push({type:'inline',content:e.src.slice(i,a).trim(),level:e.level+1,lines:[t,e.line],children:[]}),e.tokens.push({type:'heading_close',hLevel:s,level:e.level}),0))},['paragraph','blockquote']],['lheading',function(e,t,r){var n,o,s=t+1;return!(r\u003C=s||e.tShift[s]\u003Ce.blkIndent||3\u003Ce.tShift[s]-e.blkIndent||(r=e.bMarks[s]+e.tShift[s])>=(o=e.eMarks[s])||45!==(n=e.src.charCodeAt(r))&&61!==n||(r=e.skipChars(r,n),(r=e.skipSpaces(r))\u003Co)||(r=e.bMarks[t]+e.tShift[t],e.line=s+1,e.tokens.push({type:'heading_open',hLevel:61===n?1:2,lines:[t,e.line],level:e.level}),e.tokens.push({type:'inline',content:e.src.slice(r,e.eMarks[t]).trim(),level:e.level+1,lines:[t,e.line-1],children:[]}),e.tokens.push({type:'heading_close',hLevel:61===n?1:2,level:e.level}),0))}],['htmlblock',function(e,t,r,n){var o,s=e.bMarks[t],i=e.eMarks[t],a=e.tShift[t];if(s+=a,!e.options.html)return!1;if(3\u003Ca||i\u003C=s+2)return!1;if(60!==e.src.charCodeAt(s))return!1;if(33!==(a=e.src.charCodeAt(s+1))&&63!==a){if(47!==a&&!(97\u003C=(u=32|a)&&u\u003C=122))return!1;if(47===a){if(!(o=e.src.slice(s,i).match(ke)))return!1}else if(!(o=e.src.slice(s,i).match(ve)))return!1;if(!0!==be[o[1].toLowerCase()])return!1}if(!n){for(var u,l=t+1;l\u003Ce.lineMax&&!e.isEmpty(l);)l++;e.line=l,e.tokens.push({type:'htmlblock',level:e.level,lines:[t,e.line],content:e.getLines(t,l,0,!0)})}return!0},['paragraph','blockquote']],['table',function(e,t,r,n){var o,s,i,a,u,l,c,p;if(r\u003Ct+2)return!1;if(e.tShift[i=t+1]\u003Ce.blkIndent)return!1;if((p=e.bMarks[i]+e.tShift[i])>=e.eMarks[i])return!1;if(124!==(p=e.src.charCodeAt(p))&&45!==p&&58!==p)return!1;if(o=Ae(e,t+1),!/^[-:| ]+$/.test(o))return!1;if((a=o.split('|'))\u003C=2)return!1;for(l=[],s=0;s\u003Ca.length;s++){if(!(c=a[s].trim())){if(0===s||s===a.length-1)continue;return!1}if(!/^:?-+:?$/.test(c))return!1;58===c.charCodeAt(c.length-1)?l.push(58===c.charCodeAt(0)?'center':'right'):58===c.charCodeAt(0)?l.push('left'):l.push('')}if(-1===(o=Ae(e,t).trim()).indexOf('|'))return!1;if(a=o.replace(/^\\\\||\\\\|$/g,'').split('|'),l.length!==a.length)return!1;if(!n){for(e.tokens.push({type:'table_open',lines:p=[t,0],level:e.level++}),e.tokens.push({type:'thead_open',lines:[t,t+1],level:e.level++}),e.tokens.push({type:'tr_open',lines:[t,t+1],level:e.level++}),s=0;s\u003Ca.length;s++)e.tokens.push({type:'th_open',align:l[s],lines:[t,t+1],level:e.level++}),e.tokens.push({type:'inline',content:a[s].trim(),lines:[t,t+1],level:e.level,children:[]}),e.tokens.push({type:'th_close',level:--e.level});for(e.tokens.push({type:'tr_close',level:--e.level}),e.tokens.push({type:'thead_close',level:--e.level}),e.tokens.push({type:'tbody_open',lines:n=[t+2,0],level:e.level++}),i=t+2;i\u003Cr&&!(e.tShift[i]\u003Ce.blkIndent)&&-1!==(o=Ae(e,i).trim()).indexOf('|');i++){for(a=o.replace(/^\\\\||\\\\|$/g,'').split('|'),e.tokens.push({type:'tr_open',level:e.level++}),s=0;s\u003Ca.length;s++)e.tokens.push({type:'td_open',align:l[s],level:e.level++}),u=a[s].substring(124===a[s].charCodeAt(0)?1:0,124===a[s].charCodeAt(a[s].length-1)?a[s].length-1:a[s].length).trim(),e.tokens.push({type:'inline',content:u,level:e.level,children:[]}),e.tokens.push({type:'td_close',level:--e.level});e.tokens.push({type:'tr_close',level:--e.level})}e.tokens.push({type:'tbody_close',level:--e.level}),e.tokens.push({type:'table_close',level:--e.level}),p[1]=n[1]=i,e.line=i}return!0},['paragraph']],['deflist',function(e,t,r,n){var o,s,i,a,u,l,c,p,h,f,g,d,m;if(n)return!(e.ddIndent\u003C0)&&0\u003C=y(e,t);if(e.isEmpty(l=t+1)&&++l>r)return!1;if(e.tShift[l]\u003Ce.blkIndent)return!1;if((o=y(e,l))\u003C0)return!1;if(e.level>=e.options.maxNesting)return!1;n=e.tokens.length,e.tokens.push({type:'dl_open',lines:u=[t,0],level:e.level++}),i=t,s=l;e:for(;;){for(d=!(m=!0),e.tokens.push({type:'dt_open',lines:[i,i],level:e.level++}),e.tokens.push({type:'inline',content:e.getLines(i,i+1,e.blkIndent,!1).trim(),level:e.level+1,lines:[i,i],children:[]}),e.tokens.push({type:'dt_close',level:--e.level});;){if(e.tokens.push({type:'dd_open',lines:a=[l,0],level:e.level++}),g=e.tight,p=e.ddIndent,c=e.blkIndent,f=e.tShift[s],h=e.parentType,e.blkIndent=e.ddIndent=e.tShift[s]+2,e.tShift[s]=o-e.bMarks[s],e.tight=!0,e.parentType='deflist',e.parser.tokenize(e,s,r,!0),e.tight&&!d||(m=!1),d=1\u003Ce.line-s&&e.isEmpty(e.line-1),e.tShift[s]=f,e.tight=g,e.parentType=h,e.blkIndent=c,e.ddIndent=p,e.tokens.push({type:'dd_close',level:--e.level}),a[1]=l=e.line,r\u003C=l)break e;if(e.tShift[l]\u003Ce.blkIndent)break e;if((o=y(e,l))\u003C0)break;s=l}if(r\u003C=l)break;if(i=l,e.isEmpty(i))break;if(e.tShift[i]\u003Ce.blkIndent)break;if((s=i+1)>=r)break;if(e.isEmpty(s)&&s++,r\u003C=s)break;if(e.tShift[s]\u003Ce.blkIndent)break;if((o=y(e,s))\u003C0)break}if(e.tokens.push({type:'dl_close',level:--e.level}),u[1]=l,e.line=l,m)for(var b=e,v=b.level+2,k=n+2,A=b.tokens.length-2;k\u003CA;k++)b.tokens[k].level===v&&'paragraph_open'===b.tokens[k].type&&(b.tokens[k+2].tight=!0,b.tokens[k].tight=!0,k+=2);return!0},['paragraph']],['paragraph',function(e,t){var r,n,o,s,i,a,u=t+1;if(u\u003C(r=e.lineMax)&&!e.isEmpty(u))for(a=e.parser.ruler.getRules('paragraph');u\u003Cr&&!e.isEmpty(u);u++)if(!(3\u003Ce.tShift[u]-e.blkIndent)){for(o=!1,s=0,i=a.length;s\u003Ci;s++)if(a[s](e,u,r,!0)){o=!0;break}if(o)break}return n=e.getLines(t,u,e.blkIndent,!1).trim(),e.line=u,n.length&&(e.tokens.push({type:'paragraph_open',tight:!1,lines:[t,e.line],level:e.level}),e.tokens.push({type:'inline',content:n,level:e.level+1,lines:[t,e.line],children:[]}),e.tokens.push({type:'paragraph_close',tight:!1,level:e.level})),!0}]];function ye(){this.ruler=new r;for(var e=0;e\u003Ct.length;e++)this.ruler.push(t[e][0],t[e][1],{alt:(t[e][2]||[]).slice()})}ye.prototype.tokenize=function(e,t,r){for(var n,o=this.ruler.getRules(''),s=o.length,i=t,a=!1;i\u003Cr&&(e.line=i=e.skipEmptyLines(i),!(r\u003C=i))&&!(e.tShift[i]\u003Ce.blkIndent);){for(n=0;n\u003Cs&&!o[n](e,i,r,!1);n++);if(e.tight=!a,e.isEmpty(e.line-1)&&(a=!0),(i=e.line)\u003Cr&&e.isEmpty(i)){if(a=!0,++i\u003Cr&&'list'===e.parentType&&e.isEmpty(i))break;e.line=i}}};var xe=/[\\\\n\\\\t]/g,we=/\\\\r[\\\\n\\\\u0085]|[\\\\u2424\\\\u2028\\\\u0085]/g,Ce=/\\\\u00a0/g;ye.prototype.parse=function(r,e,t,n){var o=0,s=0;if(!r)return[];e=new i(r=0\u003C=(r=(r=r.replace(Ce,' ')).replace(we,'\\\\n')).indexOf('\\\\t')?r.replace(xe,function(e,t){return 10===r.charCodeAt(t)?(o=t+1,s=0,e):(e=' '.slice((t-o-s)%4),s=t-o+1,e)}):r,this,e,t,n),this.tokenize(e,e.line,e.lineMax)};for(var Ee=[],De=0;De\u003C256;De++)Ee.push(0);function _e(e){return 48\u003C=e&&e\u003C=57||65\u003C=e&&e\u003C=90||97\u003C=e&&e\u003C=122}function Be(e,t){for(var r,n=t,o=!0,s=!0,i=e.posMax,a=e.src.charCodeAt(t),u=0\u003Ct?e.src.charCodeAt(t-1):-1;n\u003Ci&&e.src.charCodeAt(n)===a;)n++;return i\u003C=n&&(o=!1),4\u003C=(t=n-t)?o=s=!1:(32!==(r=n\u003Ci?e.src.charCodeAt(n):-1)&&10!==r||(o=!1),32!==u&&10!==u||(s=!1),95===a&&(_e(u)&&(o=!1),_e(r))&&(s=!1)),{can_open:o,can_close:s,delims:t}}'\\\\\\\\!\\\"#$%&\\\\'()*+,./:;\u003C=>?@[]^_`{|}~-'.split('').forEach(function(e){Ee[e.charCodeAt(0)]=1});var qe=/\\\\\\\\([ \\\\\\\\!\\\"#$%&'()*+,.\\\\/:;\u003C=>?@[\\\\]^_`{|}~-])/g,Fe=/\\\\\\\\([ \\\\\\\\!\\\"#$%&'()*+,.\\\\/:;\u003C=>?@[\\\\]^_`{|}~-])/g,Me=['coap','doi','javascript','aaa','aaas','about','acap','cap','cid','crid','data','dav','dict','dns','file','ftp','geo','go','gopher','h323','http','https','iax','icap','im','imap','info','ipp','iris','iris.beep','iris.xpc','iris.xpcs','iris.lwz','ldap','mailto','mid','msrp','msrps','mtqp','mupdate','news','nfs','ni','nih','nntp','opaquelocktoken','pop','pres','rtsp','service','session','shttp','sieve','sip','sips','sms','snmp','soap.beep','soap.beeps','tag','tel','telnet','tftp','thismessage','tn3270','tip','tv','urn','vemmi','ws','wss','xcon','xcon-userid','xmlrpc.beep','xmlrpc.beeps','xmpp','z39.50r','z39.50s','adiumxtra','afp','afs','aim','apt','attachment','aw','beshare','bitcoin','bolo','callto','chrome','chrome-extension','com-eventbrite-attendee','content','cvs','dlna-playsingle','dlna-playcontainer','dtn','dvb','ed2k','facetime','feed','finger','fish','gg','git','gizmoproject','gtalk','hcp','icon','ipn','irc','irc6','ircs','itms','jar','jms','keyparc','lastfm','ldaps','magnet','maps','market','message','mms','ms-help','msnim','mumble','mvn','notes','oid','palm','paparazzi','platform','proxy','psyc','query','res','resource','rmi','rsync','rtmp','secondlife','sftp','sgn','skype','smb','soldat','spotify','ssh','steam','svn','teamspeak','things','udp','unreal','ut2004','ventrilo','view-source','webcal','wtai','wyciwyg','xfire','xri','ymsgr'],Se=/^\u003C([a-zA-Z0-9.!#$%&'*+\\\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*)>/,Te=/^\u003C([a-zA-Z.\\\\-]{1,25}):([^\u003C>\\\\x00-\\\\x20]*)>/;function n(n,o){return n=n.source,o=o||'',function e(t,r){return t?(r=r.source||r,n=n.replace(t,r),e):new RegExp(n,o)}}var o=n(/(?:unquoted|single_quoted|double_quoted)/)('unquoted',/[^\\\"'=\u003C>`\\\\x00-\\\\x20]+/)('single_quoted',/'[^']*'/)('double_quoted',/\\\"[^\\\"]*\\\"/)(),o=n(/(?:\\\\s+attr_name(?:\\\\s*=\\\\s*attr_value)?)/)('attr_name',/[a-zA-Z_:][a-zA-Z0-9:._-]*/)('attr_value',o)(),o=n(/\u003C[A-Za-z][A-Za-z0-9]*attribute*\\\\s*\\\\/?>/)('attribute',o)(),Le=n(/^(?:open_tag|close_tag|comment|processing|declaration|cdata)/)('open_tag',o)('close_tag',/\u003C\\\\/[A-Za-z][A-Za-z0-9]*\\\\s*>/)('comment',/\u003C!---->|\u003C!--(?:-?[^>-])(?:-?[^-])*-->/)('processing',/\u003C[?].*?[?]>/)('declaration',/\u003C![A-Z]+\\\\s+[^>]*>/)('cdata',/\u003C!\\\\[CDATA\\\\[[\\\\s\\\\S]*?\\\\]\\\\]>/)(),Re=/^&#((?:x[a-f0-9]{1,8}|[0-9]{1,8}));/i,Ne=/^&([a-z][a-z0-9]{1,31});/i,ze=[['text',function(e,t){for(var r=e.pos;r\u003Ce.posMax&&!function(e){switch(e){case 10:case 92:case 96:case 42:case 95:case 94:case 91:case 93:case 33:case 38:case 60:case 62:case 123:case 125:case 36:case 37:case 64:case 126:case 43:case 61:case 58:return 1;default:return}}(e.src.charCodeAt(r));)r++;return r!==e.pos&&(t||(e.pending+=e.src.slice(e.pos,r)),e.pos=r,!0)}],['newline',function(e,t){var r,n,o=e.pos;if(10!==e.src.charCodeAt(o))return!1;if(r=e.pending.length-1,n=e.posMax,!t)if(0\u003C=r&&32===e.pending.charCodeAt(r))if(1\u003C=r&&32===e.pending.charCodeAt(r-1)){for(var s=r-2;0\u003C=s;s--)if(32!==e.pending.charCodeAt(s)){e.pending=e.pending.substring(0,s+1);break}e.push({type:'hardbreak',level:e.level})}else e.pending=e.pending.slice(0,-1),e.push({type:'softbreak',level:e.level});else e.push({type:'softbreak',level:e.level});for(o++;o\u003Cn&&32===e.src.charCodeAt(o);)o++;return e.pos=o,!0}],['escape',function(e,t){var r,n=e.pos,o=e.posMax;if(92!==e.src.charCodeAt(n))return!1;if(++n\u003Co){if((r=e.src.charCodeAt(n))\u003C256&&0!==Ee[r])return t||(e.pending+=e.src[n]),e.pos+=2,!0;if(10===r){for(t||e.push({type:'hardbreak',level:e.level}),n++;n\u003Co&&32===e.src.charCodeAt(n);)n++;return e.pos=n,!0}}return t||(e.pending+='\\\\\\\\'),e.pos++,!0}],['backticks',function(e,t){var r,n,o,s,i,a=e.pos;if(96!==e.src.charCodeAt(a))return!1;for(r=a,a++,n=e.posMax;a\u003Cn&&96===e.src.charCodeAt(a);)a++;for(o=e.src.slice(r,a),i=a;-1!==(s=e.src.indexOf('`',i));){for(i=s+1;i\u003Cn&&96===e.src.charCodeAt(i);)i++;if(i-s===o.length)return t||e.push({type:'code',content:e.src.slice(a,s).replace(/[ \\\\n]+/g,' ').trim(),block:!1,level:e.level}),e.pos=i,!0}return t||(e.pending+=o),e.pos+=o.length,!0}],['del',function(e,t){var r,n,o,s,i,a=e.posMax,u=e.pos;if(126!==e.src.charCodeAt(u))return!1;if(t)return!1;if(a\u003C=u+4)return!1;if(126!==e.src.charCodeAt(u+1))return!1;if(e.level>=e.options.maxNesting)return!1;if(s=0\u003Cu?e.src.charCodeAt(u-1):-1,i=e.src.charCodeAt(u+2),126===s)return!1;if(126===i)return!1;if(32===i||10===i)return!1;for(n=u+2;n\u003Ca&&126===e.src.charCodeAt(n);)n++;if(u+3\u003Cn)return e.pos+=n-u,t||(e.pending+=e.src.slice(u,n)),!0;for(e.pos=u+2,o=1;e.pos+1\u003Ca;){if(126===e.src.charCodeAt(e.pos)&&126===e.src.charCodeAt(e.pos+1)&&(s=e.src.charCodeAt(e.pos-1),126!==(i=e.pos+2\u003Ca?e.src.charCodeAt(e.pos+2):-1))&&126!==s&&(32!==s&&10!==s?o--:32!==i&&10!==i&&o++,o\u003C=0)){r=!0;break}e.parser.skipToken(e)}return r?(e.posMax=e.pos,e.pos=u+2,t||(e.push({type:'del_open',level:e.level++}),e.parser.tokenize(e),e.push({type:'del_close',level:--e.level})),e.pos=e.posMax+2,e.posMax=a,!0):(e.pos=u,!1)}],['ins',function(e,t){var r,n,o,s,i,a=e.posMax,u=e.pos;if(43!==e.src.charCodeAt(u))return!1;if(t)return!1;if(a\u003C=u+4)return!1;if(43!==e.src.charCodeAt(u+1))return!1;if(e.level>=e.options.maxNesting)return!1;if(s=0\u003Cu?e.src.charCodeAt(u-1):-1,i=e.src.charCodeAt(u+2),43===s)return!1;if(43===i)return!1;if(32===i||10===i)return!1;for(n=u+2;n\u003Ca&&43===e.src.charCodeAt(n);)n++;if(n!==u+2)return e.pos+=n-u,t||(e.pending+=e.src.slice(u,n)),!0;for(e.pos=u+2,o=1;e.pos+1\u003Ca;){if(43===e.src.charCodeAt(e.pos)&&43===e.src.charCodeAt(e.pos+1)&&(s=e.src.charCodeAt(e.pos-1),43!==(i=e.pos+2\u003Ca?e.src.charCodeAt(e.pos+2):-1))&&43!==s&&(32!==s&&10!==s?o--:32!==i&&10!==i&&o++,o\u003C=0)){r=!0;break}e.parser.skipToken(e)}return r?(e.posMax=e.pos,e.pos=u+2,t||(e.push({type:'ins_open',level:e.level++}),e.parser.tokenize(e),e.push({type:'ins_close',level:--e.level})),e.pos=e.posMax+2,e.posMax=a,!0):(e.pos=u,!1)}],['mark',function(e,t){var r,n,o,s,i,a=e.posMax,u=e.pos;if(61!==e.src.charCodeAt(u))return!1;if(t)return!1;if(a\u003C=u+4)return!1;if(61!==e.src.charCodeAt(u+1))return!1;if(e.level>=e.options.maxNesting)return!1;if(s=0\u003Cu?e.src.charCodeAt(u-1):-1,i=e.src.charCodeAt(u+2),61===s)return!1;if(61===i)return!1;if(32===i||10===i)return!1;for(n=u+2;n\u003Ca&&61===e.src.charCodeAt(n);)n++;if(n!==u+2)return e.pos+=n-u,t||(e.pending+=e.src.slice(u,n)),!0;for(e.pos=u+2,o=1;e.pos+1\u003Ca;){if(61===e.src.charCodeAt(e.pos)&&61===e.src.charCodeAt(e.pos+1)&&(s=e.src.charCodeAt(e.pos-1),61!==(i=e.pos+2\u003Ca?e.src.charCodeAt(e.pos+2):-1))&&61!==s&&(32!==s&&10!==s?o--:32!==i&&10!==i&&o++,o\u003C=0)){r=!0;break}e.parser.skipToken(e)}return r?(e.posMax=e.pos,e.pos=u+2,t||(e.push({type:'mark_open',level:e.level++}),e.parser.tokenize(e),e.push({type:'mark_close',level:--e.level})),e.pos=e.posMax+2,e.posMax=a,!0):(e.pos=u,!1)}],['emphasis',function(e,t){var r,n,o,s,i,a,u,l=e.posMax,c=e.pos,p=e.src.charCodeAt(c);if(95!==p&&42!==p)return!1;if(t)return!1;if(r=(u=Be(e,c)).delims,!u.can_open)return e.pos+=r,t||(e.pending+=e.src.slice(c,e.pos)),!0;if(e.level>=e.options.maxNesting)return!1;for(e.pos=c+r,a=[r];e.pos\u003Cl;)if(e.src.charCodeAt(e.pos)!==p)e.parser.skipToken(e);else{if(n=(u=Be(e,e.pos)).delims,u.can_close){for(s=a.pop(),i=n;s!==i;){if(i\u003Cs){a.push(s-i);break}if(i-=s,0===a.length)break;e.pos+=s,s=a.pop()}if(0===a.length){r=s,o=!0;break}e.pos+=n;continue}u.can_open&&a.push(n),e.pos+=n}return o?(e.posMax=e.pos,e.pos=c+r,t||(2!==r&&3!==r||e.push({type:'strong_open',level:e.level++}),1!==r&&3!==r||e.push({type:'em_open',level:e.level++}),e.parser.tokenize(e),1!==r&&3!==r||e.push({type:'em_close',level:--e.level}),2!==r&&3!==r)||e.push({type:'strong_close',level:--e.level}),e.pos=e.posMax+r,e.posMax=l,!0):(e.pos=c,!1)}],['sub',function(e,t){var r,n,o=e.posMax,s=e.pos;if(126!==e.src.charCodeAt(s))return!1;if(t)return!1;if(o\u003C=s+2)return!1;if(e.level>=e.options.maxNesting)return!1;for(e.pos=s+1;e.pos\u003Co;){if(126===e.src.charCodeAt(e.pos)){r=!0;break}e.parser.skipToken(e)}return!r||s+1===e.pos||(n=e.src.slice(s+1,e.pos)).match(/(^|[^\\\\\\\\])(\\\\\\\\\\\\\\\\)*\\\\s/)?(e.pos=s,!1):(e.posMax=e.pos,e.pos=s+1,t||e.push({type:'sub',level:e.level,content:n.replace(qe,'$1')}),e.pos=e.posMax+1,e.posMax=o,!0)}],['sup',function(e,t){var r,n,o=e.posMax,s=e.pos;if(94!==e.src.charCodeAt(s))return!1;if(t)return!1;if(o\u003C=s+2)return!1;if(e.level>=e.options.maxNesting)return!1;for(e.pos=s+1;e.pos\u003Co;){if(94===e.src.charCodeAt(e.pos)){r=!0;break}e.parser.skipToken(e)}return!r||s+1===e.pos||(n=e.src.slice(s+1,e.pos)).match(/(^|[^\\\\\\\\])(\\\\\\\\\\\\\\\\)*\\\\s/)?(e.pos=s,!1):(e.posMax=e.pos,e.pos=s+1,t||e.push({type:'sup',level:e.level,content:n.replace(Fe,'$1')}),e.pos=e.posMax+1,e.posMax=o,!0)}],['links',function(e,t){var r,n,o,s,i,a,u=!1,l=e.pos,c=e.posMax,p=e.pos,h=e.src.charCodeAt(p);if(33===h&&(u=!0,h=e.src.charCodeAt(++p)),91!==h)return!1;if(e.level>=e.options.maxNesting)return!1;if(h=p+1,(r=d(e,p))\u003C0)return!1;if((i=r+1)\u003Cc&&40===e.src.charCodeAt(i)){for(i++;i\u003Cc&&(32===(a=e.src.charCodeAt(i))||10===a);i++);if(c\u003C=i)return!1;for(te(e,p=i)?(o=e.linkContent,i=e.pos):o='',p=i;i\u003Cc&&(32===(a=e.src.charCodeAt(i))||10===a);i++);if(i\u003Cc&&p!==i&&re(e,i))for(s=e.linkContent,i=e.pos;i\u003Cc&&(32===(a=e.src.charCodeAt(i))||10===a);i++);else s='';if(c\u003C=i||41!==e.src.charCodeAt(i))return e.pos=l,!1;i++}else{if(0\u003Ce.linkLevel)return!1;for(;i\u003Cc&&(32===(a=e.src.charCodeAt(i))||10===a);i++);if(i\u003Cc&&91===e.src.charCodeAt(i)&&(p=i+1,0\u003C=(i=d(e,i))?n=e.src.slice(p,i++):i=p-1),n||(void 0===n&&(i=r+1),n=e.src.slice(h,r)),!(p=e.env.references[ne(n)]))return e.pos=l,!1;o=p.href,s=p.title}return t||(e.pos=h,e.posMax=r,u?e.push({type:'image',src:o,title:s,alt:e.src.substr(h,r-h),level:e.level}):(e.push({type:'link_open',href:o,title:s,level:e.level++}),e.linkLevel++,e.parser.tokenize(e),e.linkLevel--,e.push({type:'link_close',level:--e.level}))),e.pos=i,e.posMax=c,!0}],['footnote_inline',function(e,t){var r,n=e.posMax,o=e.pos;return!(n\u003C=o+2||94!==e.src.charCodeAt(o)||91!==e.src.charCodeAt(o+1)||e.level>=e.options.maxNesting||(r=o+2,(o=d(e,o+1))\u003C0)||(t||(e.env.footnotes||(e.env.footnotes={}),e.env.footnotes.list||(e.env.footnotes.list=[]),t=e.env.footnotes.list.length,e.pos=r,e.posMax=o,e.push({type:'footnote_ref',id:t,level:e.level}),e.linkLevel++,r=e.tokens.length,e.parser.tokenize(e),e.env.footnotes.list[t]={tokens:e.tokens.splice(r)},e.linkLevel--),e.pos=o+1,e.posMax=n,0))}],['footnote_ref',function(e,t){var r,n,o=e.posMax,s=e.pos;if(o\u003Cs+3)return!1;if(!e.env.footnotes||!e.env.footnotes.refs)return!1;if(91!==e.src.charCodeAt(s))return!1;if(94!==e.src.charCodeAt(s+1))return!1;if(e.level>=e.options.maxNesting)return!1;for(r=s+2;r\u003Co;r++){if(32===e.src.charCodeAt(r))return!1;if(10===e.src.charCodeAt(r))return!1;if(93===e.src.charCodeAt(r))break}return!(r===s+2||o\u003C=r||(s=e.src.slice(s+2,++r-1),void 0===e.env.footnotes.refs[':'+s])||(t||(e.env.footnotes.list||(e.env.footnotes.list=[]),e.env.footnotes.refs[':'+s]\u003C0?(n=e.env.footnotes.list.length,e.env.footnotes.list[n]={label:s,count:0},e.env.footnotes.refs[':'+s]=n):n=e.env.footnotes.refs[':'+s],t=e.env.footnotes.list[n].count,e.env.footnotes.list[n].count++,e.push({type:'footnote_ref',id:n,subId:t,level:e.level})),e.pos=r,e.posMax=o,0))}],['autolink',function(e,t){var r,n,o,s=e.pos;return!(60!==e.src.charCodeAt(s)||(s=e.src.slice(s)).indexOf('>')\u003C0||((r=s.match(Te))?Me.indexOf(r[1].toLowerCase())\u003C0||(o=ee(n=r[0].slice(1,-1)),!e.parser.validateLink(n))||(t||(e.push({type:'link_open',href:o,level:e.level}),e.push({type:'text',content:n,level:e.level+1}),e.push({type:'link_close',level:e.level})),e.pos+=r[0].length,0):!(r=s.match(Se))||(o=ee('mailto:'+(n=r[0].slice(1,-1))),!e.parser.validateLink(o))||(t||(e.push({type:'link_open',href:o,level:e.level}),e.push({type:'text',content:n,level:e.level+1}),e.push({type:'link_close',level:e.level})),e.pos+=r[0].length,0)))}],['htmltag',function(e,t){var r,n=e.pos;return!(!e.options.html||(r=e.posMax,60!==e.src.charCodeAt(n))||r\u003C=n+2||33!==(r=e.src.charCodeAt(n+1))&&63!==r&&47!==r&&!(97\u003C=(r=32|r)&&r\u003C=122)||!(r=e.src.slice(n).match(Le))||(t||e.push({type:'htmltag',content:e.src.slice(n,n+r[0].length),level:e.level}),e.pos+=r[0].length,0))}],['entity',function(e,t){var r,n=e.pos,o=e.posMax;if(38!==e.src.charCodeAt(n))return!1;if(n+1\u003Co)if(35===e.src.charCodeAt(n+1)){if(r=e.src.slice(n).match(Re))return t||(o='x'===r[1][0].toLowerCase()?parseInt(r[1].slice(1),16):parseInt(r[1],10),e.pending+=H(o)?s(o):s(65533)),e.pos+=r[0].length,!0}else if(r=e.src.slice(n).match(Ne)){o=P(r[1]);if(r[1]!==o)return t||(e.pending+=o),e.pos+=r[0].length,!0}return t||(e.pending+='&'),e.pos++,!0}]];function a(){this.ruler=new r;for(var e=0;e\u003Cze.length;e++)this.ruler.push(ze[e][0],ze[e][1]);this.validateLink=Pe}function Pe(e){e=e.trim().toLowerCase();return-1===(e=p(e)).indexOf(':')||-1===['vbscript','javascript','file','data'].indexOf(e.split(':')[0])}a.prototype.skipToken=function(e){var t,r,n=this.ruler.getRules(''),o=n.length,s=e.pos;if(0\u003C(r=e.cacheGet(s)))e.pos=r;else{for(t=0;t\u003Co;t++)if(n[t](e,!0))return void e.cacheSet(s,e.pos);e.pos++,e.cacheSet(s,e.pos)}},a.prototype.tokenize=function(e){for(var t,r,n=this.ruler.getRules(''),o=n.length,s=e.posMax;e.pos\u003Cs;){for(r=0;r\u003Co&&!(t=n[r](e,!1));r++);if(t){if(e.pos>=s)break}else e.pending+=e.src[e.pos++]}e.pending&&e.pushPending()};var je={default:{options:{html:!(a.prototype.parse=function(e,t,r,n){e=new g(e,this,t,r,n);this.tokenize(e)}),xhtmlOut:!1,breaks:!1,langPrefix:'language-',linkTarget:'',typographer:!1,quotes:'“”‘’',highlight:null,maxNesting:20},components:{core:{rules:['block','inline','references','replacements','smartquotes','references','abbr2','footnote_tail']},block:{rules:['blockquote','code','fences','footnote','heading','hr','htmlblock','lheading','list','paragraph','table']},inline:{rules:['autolink','backticks','del','emphasis','entity','escape','footnote_ref','htmltag','links','newline','text']}}},full:{options:{html:!1,xhtmlOut:!1,breaks:!1,langPrefix:'language-',linkTarget:'',typographer:!1,quotes:'“”‘’',highlight:null,maxNesting:20},components:{core:{},block:{},inline:{}}},commonmark:{options:{html:!0,xhtmlOut:!0,breaks:!1,langPrefix:'language-',linkTarget:'',typographer:!1,quotes:'“”‘’',highlight:null,maxNesting:20},components:{core:{rules:['block','inline','references','abbr2']},block:{rules:['blockquote','code','fences','heading','hr','htmlblock','lheading','list','paragraph']},inline:{rules:['autolink','backticks','emphasis','entity','escape','htmltag','links','newline','text']}}}};function Ie(e,t,r){this.src=t,this.env=r,this.options=e.options,this.tokens=[],this.inlineMode=!1,this.inline=e.inline,this.block=e.block,this.renderer=e.renderer,this.typographer=e.typographer}function u(e,t){'string'!=typeof e&&(t=e,e='default'),t&&null!=t.linkify&&console.warn('linkify option is removed. Use linkify plugin instead:\\\\n\\\\nimport Remarkable from \\\\'remarkable\\\\';\\\\nimport linkify from \\\\'remarkable/linkify\\\\';\\\\nnew Remarkable().use(linkify)\\\\n'),this.inline=new a,this.block=new ye,this.core=new ge,this.renderer=new X,this.ruler=new r,this.options={},this.configure(je[e]),this.set(t||{})}function Oe(e,t){if(Array.prototype.indexOf)return e.indexOf(t);for(var r=0,n=e.length;r\u003Cn;r++)if(e[r]===t)return r;return-1}function l(e,t){for(var r=e.length-1;0\u003C=r;r--)!0===t(e[r])&&e.splice(r,1)}function Ue(e){throw new Error('Unhandled case for value: \\\\''+e+'\\\\'')}u.prototype.set=function(e){O(this.options,e)},u.prototype.configure=function(t){var r=this;if(!t)throw new Error('Wrong `remarkable` preset, check name/content');t.options&&r.set(t.options),t.components&&Object.keys(t.components).forEach(function(e){t.components[e].rules&&r[e].ruler.enable(t.components[e].rules,!0)})},u.prototype.use=function(e,t){return e(this,t),this},u.prototype.parse=function(e,t){e=new Ie(this,e,t);return this.core.process(e),e.tokens},u.prototype.render=function(e,t){return this.renderer.render(this.parse(e,t=t||{}),this.options,t)},u.prototype.parseInline=function(e,t){e=new Ie(this,e,t);return e.inlineMode=!0,this.core.process(e),e.tokens},u.prototype.renderInline=function(e,t){return this.renderer.render(this.parseInline(e,t=t||{}),this.options,t)};b.prototype.setTagName=function(e){return this.tagName=e,this},b.prototype.getTagName=function(){return this.tagName||''},b.prototype.setAttr=function(e,t){return this.getAttrs()[e]=t,this},b.prototype.getAttr=function(e){return this.getAttrs()[e]},b.prototype.setAttrs=function(e){return Object.assign(this.getAttrs(),e),this},b.prototype.getAttrs=function(){return this.attrs||(this.attrs={})},b.prototype.setClass=function(e){return this.setAttr('class',e)},b.prototype.addClass=function(e){for(var t,r=this.getClass(),n=this.whitespaceRegex,o=r?r.split(n):[],s=e.split(n);t=s.shift();)-1===Oe(o,t)&&o.push(t);return this.getAttrs().class=o.join(' '),this},b.prototype.removeClass=function(e){for(var t,r=this.getClass(),n=this.whitespaceRegex,o=r?r.split(n):[],s=e.split(n);o.length&&(t=s.shift());){var i=Oe(o,t);-1!==i&&o.splice(i,1)}return this.getAttrs().class=o.join(' '),this},b.prototype.getClass=function(){return this.getAttrs().class||''},b.prototype.hasClass=function(e){return-1!==(' '+this.getClass()+' ').indexOf(' '+e+' ')},b.prototype.setInnerHTML=function(e){return this.innerHTML=e,this},b.prototype.setInnerHtml=function(e){return this.setInnerHTML(e)},b.prototype.getInnerHTML=function(){return this.innerHTML||''},b.prototype.getInnerHtml=function(){return this.getInnerHTML()},b.prototype.toAnchorString=function(){var e=this.getTagName(),t=this.buildAttrsStr();return['\u003C',e,t=t?' '+t:'','>',this.getInnerHtml(),'\u003C/',e,'>'].join('')},b.prototype.buildAttrsStr=function(){if(!this.attrs)return'';var e,t=this.getAttrs(),r=[];for(e in t)t.hasOwnProperty(e)&&r.push(e+'=\\\"'+t[e]+'\\\"');return r.join(' ')};var He=b;function b(e){void 0===e&&(e={}),this.tagName='',this.attrs={},this.innerHTML='',this.whitespaceRegex=/\\\\s+/,this.tagName=e.tagName||'',this.attrs=e.attrs||{},this.innerHTML=e.innerHtml||e.innerHTML||''}k.prototype.build=function(e){return new He({tagName:'a',attrs:this.createAttrs(e),innerHtml:this.processAnchorText(e.getAnchorText())})},k.prototype.createAttrs=function(e){var t={href:e.getAnchorHref()},r=this.createCssClass(e);return r&&(t.class=r),this.newWindow&&(t.target='_blank',t.rel='noopener noreferrer'),this.truncate&&this.truncate.length&&this.truncate.length\u003Ce.getAnchorText().length&&(t.title=e.getAnchorHref()),t},k.prototype.createCssClass=function(e){var t=this.className;if(t){for(var r=[t],n=e.getCssClassSuffixes(),o=0,s=n.length;o\u003Cs;o++)r.push(t+'-'+n[o]);return r.join(' ')}return''},k.prototype.processAnchorText=function(e){return this.doTruncate(e)},k.prototype.doTruncate=function(e){var t,r,n=this.truncate;if(n&&n.length){var o=n.length,n=n.location;if('smart'===n){var s=e;var i=o;var a=void 0;function u(e){var t='';return e.scheme&&e.host&&(t+=e.scheme+'://'),e.host&&(t+=e.host),e.path&&(t+='/'+e.path),e.query&&(t+='?'+e.query),e.fragment&&(t+='#'+e.fragment),t}function l(e,t){var t=t/2,r=Math.ceil(t),t=-1*Math.floor(t),n='';return t\u003C0&&(n=e.substr(t)),e.substr(0,r)+a+n}var c=null==a?(a='&hellip;',d=3,8):(d=a.length,a.length);if(s.length\u003C=i)return s;var p=i-d,h=(f={},(g=(h=s).match(/^([a-z]+):\\\\/\\\\//i))&&(f.scheme=g[1],h=h.substr(g[0].length)),(g=h.match(/^(.*?)(?=(\\\\?|#|\\\\/|$))/i))&&(f.host=g[1],h=h.substr(g[0].length)),(g=h.match(/^\\\\/(.*?)(?=(\\\\?|#|$))/i))&&(f.path=g[1],h=h.substr(g[0].length)),(g=h.match(/^\\\\?(.*?)(?=(#|$))/i))&&(f.query=g[1],h=h.substr(g[0].length)),(g=h.match(/^#(.*?)$/i))&&(f.fragment=g[1]),f);if(h.query&&(g=h.query.match(/^(.*?)(?=(\\\\?|\\\\#))(.*?)$/i))&&(h.query=h.query.substr(0,g[1].length),s=u(h)),s.length\u003C=i)return s;if(h.host&&(h.host=h.host.replace(/^www\\\\./,''),s=u(h)),s.length\u003C=i)return s;var f='';if(h.host&&(f+=h.host),f.length>=p)return(h.host.length==i?h.host.substr(0,i-d)+a:l(f,p)).substr(0,p+c);var g='';if(h.path&&(g+='/'+h.path),h.query&&(g+='?'+h.query),g){if(p\u003C=(f+g).length)return(f+g).length==i?(f+g).substr(0,i):(f+l(g,p-f.length)).substr(0,p+c);f+=g}if(h.fragment){s='#'+h.fragment;if(p\u003C=(f+s).length)return(f+s).length==i?(f+s).substr(0,i):(f+l(s,p-f.length)).substr(0,p+c);f+=s}if(h.scheme&&h.host){var d=h.scheme+'://';if((f+d).length\u003Cp)return(d+f).substr(0,i)}return f.length\u003C=i?f:(g='',0\u003Cp&&(g=f.substr(-1*Math.floor(p/2))),(f.substr(0,Math.ceil(p/2))+a+g).substr(0,p+c));return}else return'middle'===n?(s=e).length\u003C=o?s:(h=null==t?(t='&hellip;',r=8,3):(r=t.length,t.length),d='',0\u003C(h=o-h)&&(d=s.substr(-1*Math.floor(h/2))),(s.substr(0,Math.ceil(h/2))+t+d).substr(0,h+r)):(i=o,f=void 0,(g=e).length>i&&(p=null==f?(f='&hellip;',3):f.length,g=g.substring(0,i-p)+f),g)}return e};var Ve=k,o=(v.prototype.getMatchedText=function(){return this.matchedText},v.prototype.setOffset=function(e){this.offset=e},v.prototype.getOffset=function(){return this.offset},v.prototype.getCssClassSuffixes=function(){return[this.getType()]},v.prototype.buildTag=function(){return this.tagBuilder.build(this)},v),Ge=function(e,t){return(Ge=Object.setPrototypeOf||({__proto__:[]}instanceof Array?function(e,t){e.__proto__=t}:function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])}))(e,t)};function v(e){this.__jsduckDummyDocProp=null,this.matchedText='',this.offset=0,this.tagBuilder=e.tagBuilder,this.matchedText=e.matchedText,this.offset=e.offset}function k(e){void 0===e&&(e={}),this.newWindow=!1,this.truncate={},this.className='',this.newWindow=e.newWindow||!1,this.truncate=e.truncate||{},this.className=e.className||''}function A(e,t){function r(){this.constructor=e}Ge(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}function x(e){this.__jsduckDummyDocProp=null,this.tagBuilder=e.tagBuilder}function $e(e){return'(?:'+bt(e)+'(?:\\\\\\\\.'+bt(e+1)+'){0,126}|'+dt+')'}var Ze,We,Je,Ye,Ke,Qe,Xe,et,tt,rt,E=function(){return(E=Object.assign||function(e){for(var t,r=1,n=arguments.length;r\u003Cn;r++)for(var o in t=arguments[r])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e}).apply(this,arguments)},nt=(A(T,rt=o),T.prototype.getType=function(){return'email'},T.prototype.getEmail=function(){return this.email},T.prototype.getAnchorHref=function(){return'mailto:'+this.email},T.prototype.getAnchorText=function(){return this.email},T),ot=(A(S,tt=o),S.prototype.getType=function(){return'hashtag'},S.prototype.getServiceName=function(){return this.serviceName},S.prototype.getHashtag=function(){return this.hashtag},S.prototype.getAnchorHref=function(){var e=this.serviceName,t=this.hashtag;switch(e){case'twitter':return'https://twitter.com/hashtag/'+t;case'facebook':return'https://www.facebook.com/hashtag/'+t;case'instagram':return'https://instagram.com/explore/tags/'+t;default:throw new Error('Unknown service name to point hashtag to: '+e)}},S.prototype.getAnchorText=function(){return'#'+this.hashtag},S),st=(A(M,et=o),M.prototype.getType=function(){return'mention'},M.prototype.getMention=function(){return this.mention},M.prototype.getServiceName=function(){return this.serviceName},M.prototype.getAnchorHref=function(){switch(this.serviceName){case'twitter':return'https://twitter.com/'+this.mention;case'instagram':return'https://instagram.com/'+this.mention;case'soundcloud':return'https://soundcloud.com/'+this.mention;default:throw new Error('Unknown service name to point mention to: '+this.serviceName)}},M.prototype.getAnchorText=function(){return'@'+this.mention},M.prototype.getCssClassSuffixes=function(){var e=et.prototype.getCssClassSuffixes.call(this),t=this.getServiceName();return t&&e.push(t),e},M),it=(A(F,Xe=o),F.prototype.getType=function(){return'phone'},F.prototype.getPhoneNumber=function(){return this.number},F.prototype.getNumber=function(){return this.getPhoneNumber()},F.prototype.getAnchorHref=function(){return'tel:'+(this.plusSign?'+':'')+this.number},F.prototype.getAnchorText=function(){return this.matchedText},F),at=(A(q,Qe=o),q.prototype.getType=function(){return'url'},q.prototype.getUrlMatchType=function(){return this.urlMatchType},q.prototype.getUrl=function(){var e=this.url;return this.protocolRelativeMatch||this.protocolUrlMatch||this.protocolPrepended||(e=this.url='http://'+e,this.protocolPrepended=!0),e},q.prototype.getAnchorHref=function(){return this.getUrl().replace(/&amp;/g,'&')},q.prototype.getAnchorText=function(){var e=this.getMatchedText();return this.protocolRelativeMatch&&(e=this.stripProtocolRelativePrefix(e)),this.stripPrefix.scheme&&(e=this.stripSchemePrefix(e)),this.stripPrefix.www&&(e=this.stripWwwPrefix(e)),this.stripTrailingSlash&&(e=this.removeTrailingSlash(e)),e=this.decodePercentEncoding?this.removePercentEncoding(e):e},q.prototype.stripSchemePrefix=function(e){return e.replace(this.schemePrefixRegex,'')},q.prototype.stripWwwPrefix=function(e){return e.replace(this.wwwPrefixRegex,'$1')},q.prototype.stripProtocolRelativePrefix=function(e){return e.replace(this.protocolRelativeRegex,'')},q.prototype.removeTrailingSlash=function(e){return e='/'===e.charAt(e.length-1)?e.slice(0,-1):e},q.prototype.removePercentEncoding=function(e){var t=e.replace(/%22/gi,'&quot;').replace(/%26/gi,'&amp;').replace(/%27/gi,'&#39;').replace(/%3C/gi,'&lt;').replace(/%3E/gi,'&gt;');try{return decodeURIComponent(t)}catch(e){return t}},q),ut=/[A-Za-z]/,lt=/[0-9]/,D=/\\\\s/,ct=/['\\\"]/,pt=/[\\\\x00-\\\\x1F\\\\x7F]/,ht=/A-Za-z\\\\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\\\\u0561-\\\\u0587\\\\u05D0-\\\\u05EA\\\\u05F0-\\\\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\\\\u08A0-\\\\u08B4\\\\u08B6-\\\\u08BD\\\\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\\\\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\\\\u0D05-\\\\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\\\\u0E87\\\\u0E88\\\\u0E8A\\\\u0E8D\\\\u0E94-\\\\u0E97\\\\u0E99-\\\\u0E9F\\\\u0EA1-\\\\u0EA3\\\\u0EA5\\\\u0EA7\\\\u0EAA\\\\u0EAB\\\\u0EAD-\\\\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\\\\u16F1-\\\\u16F8\\\\u1700-\\\\u170C\\\\u170E-\\\\u1711\\\\u1720-\\\\u1731\\\\u1740-\\\\u1751\\\\u1760-\\\\u176C\\\\u176E-\\\\u1770\\\\u1780-\\\\u17B3\\\\u17D7\\\\u17DC\\\\u1820-\\\\u1877\\\\u1880-\\\\u1884\\\\u1887-\\\\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\\\\u1CE9-\\\\u1CEC\\\\u1CEE-\\\\u1CF1\\\\u1CF5\\\\u1CF6\\\\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\\\\u2119-\\\\u211D\\\\u2124\\\\u2126\\\\u2128\\\\u212A-\\\\u212D\\\\u212F-\\\\u2139\\\\u213C-\\\\u213F\\\\u2145-\\\\u2149\\\\u214E\\\\u2183\\\\u2184\\\\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\\\\u2E2F\\\\u3005\\\\u3006\\\\u3031-\\\\u3035\\\\u303B\\\\u303C\\\\u3041-\\\\u3096\\\\u309D-\\\\u309F\\\\u30A1-\\\\u30FA\\\\u30FC-\\\\u30FF\\\\u3105-\\\\u312D\\\\u3131-\\\\u318E\\\\u31A0-\\\\u31BA\\\\u31F0-\\\\u31FF\\\\u3400-\\\\u4DB5\\\\u4E00-\\\\u9FD5\\\\uA000-\\\\uA48C\\\\uA4D0-\\\\uA4FD\\\\uA500-\\\\uA60C\\\\uA610-\\\\uA61F\\\\uA62A\\\\uA62B\\\\uA640-\\\\uA66E\\\\uA67F-\\\\uA69D\\\\uA6A0-\\\\uA6E5\\\\uA717-\\\\uA71F\\\\uA722-\\\\uA788\\\\uA78B-\\\\uA7AE\\\\uA7B0-\\\\uA7B7\\\\uA7F7-\\\\uA801\\\\uA803-\\\\uA805\\\\uA807-\\\\uA80A\\\\uA80C-\\\\uA822\\\\uA840-\\\\uA873\\\\uA882-\\\\uA8B3\\\\uA8F2-\\\\uA8F7\\\\uA8FB\\\\uA8FD\\\\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-\\\\uAB65\\\\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/.source,ft=ht+/\\\\u00a9\\\\u00ae\\\\u2000-\\\\u3300\\\\ud83c\\\\ud000-\\\\udfff\\\\ud83d\\\\ud000-\\\\udfff\\\\ud83e\\\\ud000-\\\\udfff/.source+/\\\\u0300-\\\\u036F\\\\u0483-\\\\u0489\\\\u0591-\\\\u05BD\\\\u05BF\\\\u05C1\\\\u05C2\\\\u05C4\\\\u05C5\\\\u05C7\\\\u0610-\\\\u061A\\\\u064B-\\\\u065F\\\\u0670\\\\u06D6-\\\\u06DC\\\\u06DF-\\\\u06E4\\\\u06E7\\\\u06E8\\\\u06EA-\\\\u06ED\\\\u0711\\\\u0730-\\\\u074A\\\\u07A6-\\\\u07B0\\\\u07EB-\\\\u07F3\\\\u0816-\\\\u0819\\\\u081B-\\\\u0823\\\\u0825-\\\\u0827\\\\u0829-\\\\u082D\\\\u0859-\\\\u085B\\\\u08D4-\\\\u08E1\\\\u08E3-\\\\u0903\\\\u093A-\\\\u093C\\\\u093E-\\\\u094F\\\\u0951-\\\\u0957\\\\u0962\\\\u0963\\\\u0981-\\\\u0983\\\\u09BC\\\\u09BE-\\\\u09C4\\\\u09C7\\\\u09C8\\\\u09CB-\\\\u09CD\\\\u09D7\\\\u09E2\\\\u09E3\\\\u0A01-\\\\u0A03\\\\u0A3C\\\\u0A3E-\\\\u0A42\\\\u0A47\\\\u0A48\\\\u0A4B-\\\\u0A4D\\\\u0A51\\\\u0A70\\\\u0A71\\\\u0A75\\\\u0A81-\\\\u0A83\\\\u0ABC\\\\u0ABE-\\\\u0AC5\\\\u0AC7-\\\\u0AC9\\\\u0ACB-\\\\u0ACD\\\\u0AE2\\\\u0AE3\\\\u0B01-\\\\u0B03\\\\u0B3C\\\\u0B3E-\\\\u0B44\\\\u0B47\\\\u0B48\\\\u0B4B-\\\\u0B4D\\\\u0B56\\\\u0B57\\\\u0B62\\\\u0B63\\\\u0B82\\\\u0BBE-\\\\u0BC2\\\\u0BC6-\\\\u0BC8\\\\u0BCA-\\\\u0BCD\\\\u0BD7\\\\u0C00-\\\\u0C03\\\\u0C3E-\\\\u0C44\\\\u0C46-\\\\u0C48\\\\u0C4A-\\\\u0C4D\\\\u0C55\\\\u0C56\\\\u0C62\\\\u0C63\\\\u0C81-\\\\u0C83\\\\u0CBC\\\\u0CBE-\\\\u0CC4\\\\u0CC6-\\\\u0CC8\\\\u0CCA-\\\\u0CCD\\\\u0CD5\\\\u0CD6\\\\u0CE2\\\\u0CE3\\\\u0D01-\\\\u0D03\\\\u0D3E-\\\\u0D44\\\\u0D46-\\\\u0D48\\\\u0D4A-\\\\u0D4D\\\\u0D57\\\\u0D62\\\\u0D63\\\\u0D82\\\\u0D83\\\\u0DCA\\\\u0DCF-\\\\u0DD4\\\\u0DD6\\\\u0DD8-\\\\u0DDF\\\\u0DF2\\\\u0DF3\\\\u0E31\\\\u0E34-\\\\u0E3A\\\\u0E47-\\\\u0E4E\\\\u0EB1\\\\u0EB4-\\\\u0EB9\\\\u0EBB\\\\u0EBC\\\\u0EC8-\\\\u0ECD\\\\u0F18\\\\u0F19\\\\u0F35\\\\u0F37\\\\u0F39\\\\u0F3E\\\\u0F3F\\\\u0F71-\\\\u0F84\\\\u0F86\\\\u0F87\\\\u0F8D-\\\\u0F97\\\\u0F99-\\\\u0FBC\\\\u0FC6\\\\u102B-\\\\u103E\\\\u1056-\\\\u1059\\\\u105E-\\\\u1060\\\\u1062-\\\\u1064\\\\u1067-\\\\u106D\\\\u1071-\\\\u1074\\\\u1082-\\\\u108D\\\\u108F\\\\u109A-\\\\u109D\\\\u135D-\\\\u135F\\\\u1712-\\\\u1714\\\\u1732-\\\\u1734\\\\u1752\\\\u1753\\\\u1772\\\\u1773\\\\u17B4-\\\\u17D3\\\\u17DD\\\\u180B-\\\\u180D\\\\u1885\\\\u1886\\\\u18A9\\\\u1920-\\\\u192B\\\\u1930-\\\\u193B\\\\u1A17-\\\\u1A1B\\\\u1A55-\\\\u1A5E\\\\u1A60-\\\\u1A7C\\\\u1A7F\\\\u1AB0-\\\\u1ABE\\\\u1B00-\\\\u1B04\\\\u1B34-\\\\u1B44\\\\u1B6B-\\\\u1B73\\\\u1B80-\\\\u1B82\\\\u1BA1-\\\\u1BAD\\\\u1BE6-\\\\u1BF3\\\\u1C24-\\\\u1C37\\\\u1CD0-\\\\u1CD2\\\\u1CD4-\\\\u1CE8\\\\u1CED\\\\u1CF2-\\\\u1CF4\\\\u1CF8\\\\u1CF9\\\\u1DC0-\\\\u1DF5\\\\u1DFB-\\\\u1DFF\\\\u20D0-\\\\u20F0\\\\u2CEF-\\\\u2CF1\\\\u2D7F\\\\u2DE0-\\\\u2DFF\\\\u302A-\\\\u302F\\\\u3099\\\\u309A\\\\uA66F-\\\\uA672\\\\uA674-\\\\uA67D\\\\uA69E\\\\uA69F\\\\uA6F0\\\\uA6F1\\\\uA802\\\\uA806\\\\uA80B\\\\uA823-\\\\uA827\\\\uA880\\\\uA881\\\\uA8B4-\\\\uA8C5\\\\uA8E0-\\\\uA8F1\\\\uA926-\\\\uA92D\\\\uA947-\\\\uA953\\\\uA980-\\\\uA983\\\\uA9B3-\\\\uA9C0\\\\uA9E5\\\\uAA29-\\\\uAA36\\\\uAA43\\\\uAA4C\\\\uAA4D\\\\uAA7B-\\\\uAA7D\\\\uAAB0\\\\uAAB2-\\\\uAAB4\\\\uAAB7\\\\uAAB8\\\\uAABE\\\\uAABF\\\\uAAC1\\\\uAAEB-\\\\uAAEF\\\\uAAF5\\\\uAAF6\\\\uABE3-\\\\uABEA\\\\uABEC\\\\uABED\\\\uFB1E\\\\uFE00-\\\\uFE0F\\\\uFE20-\\\\uFE2F/.source,w=/0-9\\\\u0660-\\\\u0669\\\\u06F0-\\\\u06F9\\\\u07C0-\\\\u07C9\\\\u0966-\\\\u096F\\\\u09E6-\\\\u09EF\\\\u0A66-\\\\u0A6F\\\\u0AE6-\\\\u0AEF\\\\u0B66-\\\\u0B6F\\\\u0BE6-\\\\u0BEF\\\\u0C66-\\\\u0C6F\\\\u0CE6-\\\\u0CEF\\\\u0D66-\\\\u0D6F\\\\u0DE6-\\\\u0DEF\\\\u0E50-\\\\u0E59\\\\u0ED0-\\\\u0ED9\\\\u0F20-\\\\u0F29\\\\u1040-\\\\u1049\\\\u1090-\\\\u1099\\\\u17E0-\\\\u17E9\\\\u1810-\\\\u1819\\\\u1946-\\\\u194F\\\\u19D0-\\\\u19D9\\\\u1A80-\\\\u1A89\\\\u1A90-\\\\u1A99\\\\u1B50-\\\\u1B59\\\\u1BB0-\\\\u1BB9\\\\u1C40-\\\\u1C49\\\\u1C50-\\\\u1C59\\\\uA620-\\\\uA629\\\\uA8D0-\\\\uA8D9\\\\uA900-\\\\uA909\\\\uA9D0-\\\\uA9D9\\\\uA9F0-\\\\uA9F9\\\\uAA50-\\\\uAA59\\\\uABF0-\\\\uABF9\\\\uFF10-\\\\uFF19/.source,gt=ft+w,C=ft+w,dt='(?:['+w+']{1,3}\\\\\\\\.){3}['+w+']{1,3}',mt='['+C+'](?:['+C+'\\\\\\\\-]{0,61}['+C+'])?',bt=function(e){return'(?=('+mt+'))\\\\\\\\'+e},vt=new RegExp('['+C+']'),kt=/(?:xn--vermgensberatung-pwb|xn--vermgensberater-ctb|xn--clchc0ea0b2g2a9gcd|xn--w4r85el8fhu5dnra|northwesternmutual|travelersinsurance|vermögensberatung|xn--3oq18vl8pn36a|xn--5su34j936bgsg|xn--bck1b9a5dre4c|xn--mgbai9azgqp6j|xn--mgberp4a5d4ar|xn--xkc2dl3a5ee0h|vermögensberater|xn--fzys8d69uvgm|xn--mgba7c0bbn0a|xn--xkc2al3hye2a|americanexpress|kerryproperties|sandvikcoromant|xn--i1b6b1a6a2e|xn--kcrx77d1x4a|xn--lgbbat1ad8j|xn--mgba3a4f16a|xn--mgbaakc7dvf|xn--mgbc0a9azcg|xn--nqv7fs00ema|afamilycompany|americanfamily|bananarepublic|cancerresearch|cookingchannel|kerrylogistics|weatherchannel|xn--54b7fta0cc|xn--6qq986b3xl|xn--80aqecdr1a|xn--b4w605ferd|xn--fiq228c5hs|xn--h2breg3eve|xn--jlq61u9w7b|xn--mgba3a3ejt|xn--mgbaam7a8h|xn--mgbayh7gpa|xn--mgbb9fbpob|xn--mgbbh1a71e|xn--mgbca7dzdo|xn--mgbi4ecexp|xn--mgbx4cd0ab|xn--rvc1e0am3e|international|lifeinsurance|spreadbetting|travelchannel|wolterskluwer|xn--eckvdtc9d|xn--fpcrj9c3d|xn--fzc2c9e2c|xn--h2brj9c8c|xn--tiq49xqyj|xn--yfro4i67o|xn--ygbi2ammx|construction|lplfinancial|scholarships|versicherung|xn--3e0b707e|xn--45br5cyl|xn--80adxhks|xn--80asehdb|xn--8y0a063a|xn--gckr3f0f|xn--mgb9awbf|xn--mgbab2bd|xn--mgbgu82a|xn--mgbpl2fh|xn--mgbt3dhd|xn--mk1bu44c|xn--ngbc5azd|xn--ngbe9e0a|xn--ogbpf8fl|xn--qcka1pmc|accountants|barclaycard|blackfriday|blockbuster|bridgestone|calvinklein|contractors|creditunion|engineering|enterprises|foodnetwork|investments|kerryhotels|lamborghini|motorcycles|olayangroup|photography|playstation|productions|progressive|redumbrella|rightathome|williamhill|xn--11b4c3d|xn--1ck2e1b|xn--1qqw23a|xn--2scrj9c|xn--3bst00m|xn--3ds443g|xn--3hcrj9c|xn--42c2d9a|xn--45brj9c|xn--55qw42g|xn--6frz82g|xn--80ao21a|xn--9krt00a|xn--cck2b3b|xn--czr694b|xn--d1acj3b|xn--efvy88h|xn--estv75g|xn--fct429k|xn--fjq720a|xn--flw351e|xn--g2xx48c|xn--gecrj9c|xn--gk3at1e|xn--h2brj9c|xn--hxt814e|xn--imr513n|xn--j6w193g|xn--jvr189m|xn--kprw13d|xn--kpry57d|xn--kpu716f|xn--mgbbh1a|xn--mgbtx2b|xn--mix891f|xn--nyqy26a|xn--otu796d|xn--pbt977c|xn--pgbs0dh|xn--q9jyb4c|xn--rhqv96g|xn--rovu88b|xn--s9brj9c|xn--ses554g|xn--t60b56a|xn--vuq861b|xn--w4rs40l|xn--xhq521b|xn--zfr164b|சிங்கப்பூர்|accountant|apartments|associates|basketball|bnpparibas|boehringer|capitalone|consulting|creditcard|cuisinella|eurovision|extraspace|foundation|healthcare|immobilien|industries|management|mitsubishi|nationwide|newholland|nextdirect|onyourside|properties|protection|prudential|realestate|republican|restaurant|schaeffler|swiftcover|tatamotors|technology|telefonica|university|vistaprint|vlaanderen|volkswagen|xn--30rr7y|xn--3pxu8k|xn--45q11c|xn--4gbrim|xn--55qx5d|xn--5tzm5g|xn--80aswg|xn--90a3ac|xn--9dbq2a|xn--9et52u|xn--c2br7g|xn--cg4bki|xn--czrs0t|xn--czru2d|xn--fiq64b|xn--fiqs8s|xn--fiqz9s|xn--io0a7i|xn--kput3i|xn--mxtq1m|xn--o3cw4h|xn--pssy2u|xn--unup4y|xn--wgbh1c|xn--wgbl6a|xn--y9a3aq|accenture|alfaromeo|allfinanz|amsterdam|analytics|aquarelle|barcelona|bloomberg|christmas|community|directory|education|equipment|fairwinds|financial|firestone|fresenius|frontdoor|fujixerox|furniture|goldpoint|hisamitsu|homedepot|homegoods|homesense|honeywell|institute|insurance|kuokgroup|ladbrokes|lancaster|landrover|lifestyle|marketing|marshalls|melbourne|microsoft|panasonic|passagens|pramerica|richardli|scjohnson|shangrila|solutions|statebank|statefarm|stockholm|travelers|vacations|xn--90ais|xn--c1avg|xn--d1alf|xn--e1a4c|xn--fhbei|xn--j1aef|xn--j1amh|xn--l1acc|xn--ngbrx|xn--nqv7f|xn--p1acf|xn--tckwe|xn--vhquv|yodobashi|abudhabi|airforce|allstate|attorney|barclays|barefoot|bargains|baseball|boutique|bradesco|broadway|brussels|budapest|builders|business|capetown|catering|catholic|chrysler|cipriani|cityeats|cleaning|clinique|clothing|commbank|computer|delivery|deloitte|democrat|diamonds|discount|discover|download|engineer|ericsson|esurance|etisalat|everbank|exchange|feedback|fidelity|firmdale|football|frontier|goodyear|grainger|graphics|guardian|hdfcbank|helsinki|holdings|hospital|infiniti|ipiranga|istanbul|jpmorgan|lighting|lundbeck|marriott|maserati|mckinsey|memorial|merckmsd|mortgage|movistar|observer|partners|pharmacy|pictures|plumbing|property|redstone|reliance|saarland|samsclub|security|services|shopping|showtime|softbank|software|stcgroup|supplies|symantec|training|uconnect|vanguard|ventures|verisign|woodside|xn--90ae|xn--node|xn--p1ai|xn--qxam|yokohama|السعودية|abogado|academy|agakhan|alibaba|android|athleta|auction|audible|auspost|avianca|banamex|bauhaus|bentley|bestbuy|booking|brother|bugatti|capital|caravan|careers|cartier|channel|charity|chintai|citadel|clubmed|college|cologne|comcast|company|compare|contact|cooking|corsica|country|coupons|courses|cricket|cruises|dentist|digital|domains|exposed|express|farmers|fashion|ferrari|ferrero|finance|fishing|fitness|flights|florist|flowers|forsale|frogans|fujitsu|gallery|genting|godaddy|grocery|guitars|hamburg|hangout|hitachi|holiday|hosting|hoteles|hotmail|hyundai|iselect|ismaili|jewelry|juniper|kitchen|komatsu|lacaixa|lancome|lanxess|lasalle|latrobe|leclerc|liaison|limited|lincoln|markets|metlife|monster|netbank|netflix|network|neustar|okinawa|oldnavy|organic|origins|philips|pioneer|politie|realtor|recipes|rentals|reviews|rexroth|samsung|sandvik|schmidt|schwarz|science|shiksha|shriram|singles|staples|starhub|storage|support|surgery|systems|temasek|theater|theatre|tickets|tiffany|toshiba|trading|walmart|wanggou|watches|weather|website|wedding|whoswho|windows|winners|xfinity|yamaxun|youtube|zuerich|католик|اتصالات|الجزائر|العليان|پاکستان|كاثوليك|موبايلي|இந்தியா|abarth|abbott|abbvie|active|africa|agency|airbus|airtel|alipay|alsace|alstom|anquan|aramco|author|bayern|beauty|berlin|bharti|blanco|bostik|boston|broker|camera|career|caseih|casino|center|chanel|chrome|church|circle|claims|clinic|coffee|comsec|condos|coupon|credit|cruise|dating|datsun|dealer|degree|dental|design|direct|doctor|dunlop|dupont|durban|emerck|energy|estate|events|expert|family|flickr|futbol|gallup|garden|george|giving|global|google|gratis|health|hermes|hiphop|hockey|hotels|hughes|imamat|insure|intuit|jaguar|joburg|juegos|kaufen|kinder|kindle|kosher|lancia|latino|lawyer|lefrak|living|locker|london|luxury|madrid|maison|makeup|market|mattel|mobile|mobily|monash|mormon|moscow|museum|mutual|nagoya|natura|nissan|nissay|norton|nowruz|office|olayan|online|oracle|orange|otsuka|pfizer|photos|physio|piaget|pictet|quebec|racing|realty|reisen|repair|report|review|rocher|rogers|ryukyu|safety|sakura|sanofi|school|schule|search|secure|select|shouji|soccer|social|stream|studio|supply|suzuki|swatch|sydney|taipei|taobao|target|tattoo|tennis|tienda|tjmaxx|tkmaxx|toyota|travel|unicom|viajes|viking|villas|virgin|vision|voting|voyage|vuelos|walter|warman|webcam|xihuan|yachts|yandex|zappos|москва|онлайн|ابوظبي|ارامكو|الاردن|المغرب|امارات|فلسطين|مليسيا|भारतम्|இலங்கை|ファッション|actor|adult|aetna|amfam|amica|apple|archi|audio|autos|azure|baidu|beats|bible|bingo|black|boats|bosch|build|canon|cards|chase|cheap|cisco|citic|click|cloud|coach|codes|crown|cymru|dabur|dance|deals|delta|dodge|drive|dubai|earth|edeka|email|epost|epson|faith|fedex|final|forex|forum|gallo|games|gifts|gives|glade|glass|globo|gmail|green|gripe|group|gucci|guide|homes|honda|horse|house|hyatt|ikano|intel|irish|iveco|jetzt|koeln|kyoto|lamer|lease|legal|lexus|lilly|linde|lipsy|lixil|loans|locus|lotte|lotto|lupin|macys|mango|media|miami|money|mopar|movie|nadex|nexus|nikon|ninja|nokia|nowtv|omega|osaka|paris|parts|party|phone|photo|pizza|place|poker|praxi|press|prime|promo|quest|radio|rehab|reise|ricoh|rocks|rodeo|rugby|salon|sener|seven|sharp|shell|shoes|skype|sling|smart|smile|solar|space|sport|stada|store|study|style|sucks|swiss|tatar|tires|tirol|tmall|today|tokyo|tools|toray|total|tours|trade|trust|tunes|tushu|ubank|vegas|video|vodka|volvo|wales|watch|weber|weibo|works|world|xerox|yahoo|zippo|ایران|بازار|بھارت|سودان|سورية|همراه|भारोत|संगठन|বাংলা|భారత్|ഭാരതം|嘉里大酒店|aarp|able|adac|aero|aigo|akdn|ally|amex|arab|army|arpa|arte|asda|asia|audi|auto|baby|band|bank|bbva|beer|best|bike|bing|blog|blue|bofa|bond|book|buzz|cafe|call|camp|care|cars|casa|case|cash|cbre|cern|chat|citi|city|club|cool|coop|cyou|data|date|dclk|deal|dell|desi|diet|dish|docs|doha|duck|duns|dvag|erni|fage|fail|fans|farm|fast|fiat|fido|film|fire|fish|flir|food|ford|free|fund|game|gbiz|gent|ggee|gift|gmbh|gold|golf|goog|guge|guru|hair|haus|hdfc|help|here|hgtv|host|hsbc|icbc|ieee|imdb|immo|info|itau|java|jeep|jobs|jprs|kddi|kiwi|kpmg|kred|land|lego|lgbt|lidl|life|like|limo|link|live|loan|loft|love|ltda|luxe|maif|meet|meme|menu|mini|mint|mobi|moda|moto|name|navy|news|next|nico|nike|ollo|open|page|pars|pccw|pics|ping|pink|play|plus|pohl|porn|post|prod|prof|qpon|raid|read|reit|rent|rest|rich|rmit|room|rsvp|ruhr|safe|sale|sarl|save|saxo|scor|scot|seat|seek|sexy|shaw|shia|shop|show|silk|sina|site|skin|sncf|sohu|song|sony|spot|star|surf|talk|taxi|team|tech|teva|tiaa|tips|town|toys|tube|vana|visa|viva|vivo|vote|voto|wang|weir|wien|wiki|wine|work|xbox|yoga|zara|zero|zone|дети|сайт|بارت|بيتك|ڀارت|تونس|شبكة|عراق|عمان|موقع|भारत|ভারত|ভাৰত|ਭਾਰਤ|ભારત|ଭାରତ|ಭಾರತ|ලංකා|グーグル|クラウド|ポイント|大众汽车|组织机构|電訊盈科|香格里拉|aaa|abb|abc|aco|ads|aeg|afl|aig|anz|aol|app|art|aws|axa|bar|bbc|bbt|bcg|bcn|bet|bid|bio|biz|bms|bmw|bnl|bom|boo|bot|box|buy|bzh|cab|cal|cam|car|cat|cba|cbn|cbs|ceb|ceo|cfa|cfd|com|crs|csc|dad|day|dds|dev|dhl|diy|dnp|dog|dot|dtv|dvr|eat|eco|edu|esq|eus|fan|fit|fly|foo|fox|frl|ftr|fun|fyi|gal|gap|gdn|gea|gle|gmo|gmx|goo|gop|got|gov|hbo|hiv|hkt|hot|how|ibm|ice|icu|ifm|inc|ing|ink|int|ist|itv|jcb|jcp|jio|jll|jmp|jnj|jot|joy|kfh|kia|kim|kpn|krd|lat|law|lds|llc|lol|lpl|ltd|man|map|mba|med|men|mil|mit|mlb|mls|mma|moe|moi|mom|mov|msd|mtn|mtr|nab|nba|nec|net|new|nfl|ngo|nhk|now|nra|nrw|ntt|nyc|obi|off|one|ong|onl|ooo|org|ott|ovh|pay|pet|phd|pid|pin|pnc|pro|pru|pub|pwc|qvc|red|ren|ril|rio|rip|run|rwe|sap|sas|sbi|sbs|sca|scb|ses|sew|sex|sfr|ski|sky|soy|srl|srt|stc|tab|tax|tci|tdk|tel|thd|tjx|top|trv|tui|tvs|ubs|uno|uol|ups|vet|vig|vin|vip|wed|win|wme|wow|wtc|wtf|xin|xxx|xyz|you|yun|zip|бел|ком|қаз|мкд|мон|орг|рус|срб|укр|հայ|קום|عرب|قطر|كوم|مصر|कॉम|नेट|คอม|ไทย|ストア|セール|みんな|中文网|天主教|我爱你|新加坡|淡马锡|诺基亚|飞利浦|ac|ad|ae|af|ag|ai|al|am|ao|aq|ar|as|at|au|aw|ax|az|ba|bb|bd|be|bf|bg|bh|bi|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|cr|cu|cv|cw|cx|cy|cz|de|dj|dk|dm|do|dz|ec|ee|eg|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gg|gh|gi|gl|gm|gn|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|im|in|io|iq|ir|is|it|je|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|me|mg|mh|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|mv|mw|mx|my|mz|na|nc|ne|nf|ng|ni|nl|no|np|nr|nu|nz|om|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|ps|pt|pw|py|qa|re|ro|rs|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sx|sy|sz|tc|td|tf|tg|th|tj|tk|tl|tm|tn|to|tr|tt|tv|tw|tz|ua|ug|uk|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|za|zm|zw|ελ|бг|ею|рф|გე|닷넷|닷컴|삼성|한국|コム|世界|中信|中国|中國|企业|佛山|信息|健康|八卦|公司|公益|台湾|台灣|商城|商店|商标|嘉里|在线|大拿|娱乐|家電|工行|广东|微博|慈善|手机|手表|招聘|政务|政府|新闻|时尚|書籍|机构|游戏|澳門|点看|珠宝|移动|网址|网店|网站|网络|联通|谷歌|购物|通販|集团|食品|餐厅|香港)/,At=(A(Ft,Ke=x),Ft.prototype.parseMatches=function(n){for(var e,t,r,o,s=this.tagBuilder,i=this.localPartCharRegex,a=this.strictTldRegex,u=[],l=n.length,c=new yt,p={m:'a',a:'i',i:'l',l:'t',t:'o',o:':'},h=0,f=0,g=c;h\u003Cl;){var d=n.charAt(h);switch(f){case 0:'m'===(o=d)?m(1):i.test(o)&&m();break;case 1:o=n.charAt(h-1),r=d,':'===o?i.test(r)?(f=2,g=new yt(E({},g,{hasMailtoPrefix:!0}))):b():p[o]!==r&&(i.test(r)?f=2:'.'===r?f=3:'@'===r?f=4:b());break;case 2:'.'===(r=d)?f=3:'@'===r?f=4:i.test(r)||b();break;case 3:'.'!==(t=d)&&'@'!==t&&i.test(t)?f=2:b();break;case 4:vt.test(d)?f=5:b();break;case 5:'.'===(t=d)?f=7:'-'===t?f=6:vt.test(t)||v();break;case 6:'-'!==(e=d)&&'.'!==e&&vt.test(e)?f=5:v();break;case 7:'.'!==(e=d)&&'-'!==e&&vt.test(e)?(f=5,g=new yt(E({},g,{hasDomainDot:!0}))):v();break;default:Ue(f)}h++}return v(),u;function m(e){f=e=void 0===e?2:e,g=new yt({idx:h})}function b(){f=0,g=c}function v(){var e,t,r;g.hasDomainDot&&(e=n.slice(g.idx,h),/[-.]$/.test(e)&&(e=e.slice(0,-1)),t=g.hasMailtoPrefix?e.slice('mailto:'.length):e,r=(t.split('.').pop()||'').toLowerCase(),a.test(r))&&u.push(new nt({tagBuilder:s,matchedText:e,offset:g.idx,email:t})),b()}},Ft),yt=function(e){this.idx=void 0!==(e=void 0===e?{}:e).idx?e.idx:-1,this.hasMailtoPrefix=!!e.hasMailtoPrefix,this.hasDomainDot=!!e.hasDomainDot},xt=(B.isValid=function(e,t){return!(t&&!this.isValidUriScheme(t)||this.urlMatchDoesNotHaveProtocolOrDot(e,t)||this.urlMatchDoesNotHaveAtLeastOneWordChar(e,t)&&!this.isValidIpAddress(e)||this.containsMultipleDots(e))},B.isValidIpAddress=function(e){var t=new RegExp(this.hasFullProtocolRegex.source+this.ipRegex.source);return null!==e.match(t)},B.containsMultipleDots=function(e){var t=e;return-1\u003C(t=this.hasFullProtocolRegex.test(e)?e.split('://')[1]:t).split('/')[0].indexOf('..')},B.isValidUriScheme=function(e){e=e.match(this.uriSchemeRegex),e=e&&e[0].toLowerCase();return'javascript:'!==e&&'vbscript:'!==e},B.urlMatchDoesNotHaveProtocolOrDot=function(e,t){return!(!e||t&&this.hasFullProtocolRegex.test(t)||-1!==e.indexOf('.'))},B.urlMatchDoesNotHaveAtLeastOneWordChar=function(e,t){return!(!e||!t||this.hasWordCharAfterProtocolRegex.test(e))},B.hasFullProtocolRegex=/^[A-Za-z][-.+A-Za-z0-9]*:\\\\/\\\\//,B.uriSchemeRegex=/^[A-Za-z][-.+A-Za-z0-9]*:/,B.hasWordCharAfterProtocolRegex=new RegExp(':[^\\\\\\\\s]*?['+ht+']'),B.ipRegex=/[0-9][0-9]?[0-9]?\\\\.[0-9][0-9]?[0-9]?\\\\.[0-9][0-9]?[0-9]?\\\\.[0-9][0-9]?[0-9]?(:[0-9]*)?\\\\/?$/,B),wt=(A(_,Ye=x),_.prototype.parseMatches=function(i){for(var a,e=this.matcherRegex,u=this.stripPrefix,l=this.stripTrailingSlash,c=this.decodePercentEncoding,p=this.tagBuilder,h=[],f=this;null!==(a=e.exec(i));)!function(){var e=a[0],t=a[1],r=a[4],n=a[5],o=a[9],s=a.index,n=n||o,o=i.charAt(s-1);if(!xt.isValid(e,t))return;if(0\u003Cs&&'@'===o)return;if(0\u003Cs&&n&&f.wordCharRegExp.test(o))return;/\\\\?$/.test(e)&&(e=e.substr(0,e.length-1)),f.matchHasUnbalancedClosingParen(e)?e=e.substr(0,e.length-1):-1\u003C(o=f.matchHasInvalidCharAfterTld(e,t))&&(e=e.substr(0,o));o=['http://','https://'].find(function(e){return!!t&&-1!==t.indexOf(e)}),o&&(o=e.indexOf(o),e=e.substr(o),t=t.substr(o),s+=o),o=t?'scheme':r?'www':'tld',r=!!t;h.push(new at({tagBuilder:p,matchedText:e,offset:s,urlMatchType:o,url:e,protocolUrlMatch:r,protocolRelativeMatch:!!n,stripPrefix:u,stripTrailingSlash:l,decodePercentEncoding:c}))}();return h},_.prototype.matchHasUnbalancedClosingParen=function(e){var t,r=e.charAt(e.length-1);if(')'===r)t='(';else{if(']'!==r)return!1;t='['}for(var n=0,o=0,s=e.length-1;o\u003Cs;o++){var i=e.charAt(o);i===t?n++:i===r&&(n=Math.max(n-1,0))}return 0===n},_.prototype.matchHasInvalidCharAfterTld=function(e,t){var r;return e&&(r=0,t&&(r=e.indexOf(':'),e=e.slice(r)),null!==(t=new RegExp('^((.?//)?[-.'+C+']*[-'+C+']\\\\\\\\.[-'+C+']+)').exec(e)))&&(r+=t[1].length,e=e.slice(t[1].length),/^[^-.A-Za-z0-9:\\\\/?#]/.test(e))?r:-1},_),Ct=(A(qt,Je=x),qt.prototype.parseMatches=function(e){for(var t=this.matcherRegex,r=this.nonWordCharRegex,n=this.serviceName,o=this.tagBuilder,s=[];null!==(i=t.exec(e));){var i,a=i.index,u=e.charAt(a-1);0!==a&&!r.test(u)||(u=i[0],i=i[0].slice(1),s.push(new ot({tagBuilder:o,matchedText:u,offset:a,serviceName:n,hashtag:i})))}return s},qt),Et=(A(Bt,We=x),Bt.prototype.parseMatches=function(e){for(var t,r=this.matcherRegex,n=this.tagBuilder,o=[];null!==(t=r.exec(e));){var s=t[0],i=s.replace(/[^0-9,;#]/g,''),a=!(!t[1]&&!t[2]),u=0==t.index?'':e.substr(t.index-1,1),l=e.substr(t.index+s.length,1),u=!u.match(/\\\\d/)&&!l.match(/\\\\d/);this.testMatch(t[3])&&this.testMatch(s)&&u&&o.push(new it({tagBuilder:n,matchedText:s,offset:t.index,number:i,plusSign:a}))}return o},Bt.prototype.testMatch=function(e){return/\\\\D/.test(e)},Bt),Dt=(A(_t,Ze=x),_t.prototype.parseMatches=function(e){var t=this.serviceName,r=this.matcherRegexes[this.serviceName],n=this.nonWordCharRegex,o=this.tagBuilder,s=[];if(r)for(;null!==(i=r.exec(e));){var i,a=i.index,u=e.charAt(a-1);0!==a&&!n.test(u)||(i=(u=i[0].replace(/\\\\.+$/g,'')).slice(1),s.push(new st({tagBuilder:o,matchedText:u,offset:a,serviceName:t,mention:i})))}return s},_t);function _t(e){var t=Ze.call(this,e)||this;return t.serviceName='twitter',t.matcherRegexes={twitter:new RegExp('@[_'+C+']{1,50}(?![_'+C+'])','g'),instagram:new RegExp('@[_.'+C+']{1,30}(?![_'+C+'])','g'),soundcloud:new RegExp('@[-_.'+C+']{1,50}(?![-_'+C+'])','g')},t.nonWordCharRegex=new RegExp('[^'+C+']'),t.serviceName=e.serviceName,t}function Bt(){var e=null!==We&&We.apply(this,arguments)||this;return e.matcherRegex=/(?:(?:(?:(\\\\+)?\\\\d{1,3}[-\\\\040.]?)?\\\\(?\\\\d{3}\\\\)?[-\\\\040.]?\\\\d{3}[-\\\\040.]?\\\\d{4})|(?:(\\\\+)(?:9[976]\\\\d|8[987530]\\\\d|6[987]\\\\d|5[90]\\\\d|42\\\\d|3[875]\\\\d|2[98654321]\\\\d|9[8543210]|8[6421]|6[6543210]|5[87654321]|4[987654310]|3[9643210]|2[70]|7|1)[-\\\\040.]?(?:\\\\d[-\\\\040.]?){6,12}\\\\d+))([,;]+[0-9]+#?)*/g,e}function qt(e){var t=Je.call(this,e)||this;return t.serviceName='twitter',t.matcherRegex=new RegExp('#[_'+C+']{1,139}(?![_'+C+'])','g'),t.nonWordCharRegex=new RegExp('[^'+C+']'),t.serviceName=e.serviceName,t}function _(e){var t,r=Ye.call(this,e)||this;return r.stripPrefix={scheme:!0,www:!0},r.stripTrailingSlash=!0,r.decodePercentEncoding=!0,r.matcherRegex=(t=new RegExp('[/?#](?:['+C+'\\\\\\\\-+&@#/%=~_()|\\\\'$*\\\\\\\\[\\\\\\\\]?!:,.;✓]*['+C+'\\\\\\\\-+&@#/%=~_()|\\\\'$*\\\\\\\\[\\\\\\\\]✓])?'),new RegExp(['(?:','(',/(?:[A-Za-z][-.+A-Za-z0-9]{0,63}:(?![A-Za-z][-.+A-Za-z0-9]{0,63}:\\\\/\\\\/)(?!\\\\d+\\\\/?)(?:\\\\/\\\\/)?)/.source,$e(2),')','|','(','(//)?',/(?:www\\\\.)/.source,$e(6),')','|','(','(//)?',$e(10)+'\\\\\\\\.',kt.source,'(?![-'+gt+'])',')',')','(?::[0-9]+)?','(?:'+t.source+')?'].join(''),'gi')),r.wordCharRegExp=new RegExp('['+C+']'),r.stripPrefix=e.stripPrefix,r.stripTrailingSlash=e.stripTrailingSlash,r.decodePercentEncoding=e.decodePercentEncoding,r}function B(){}function Ft(){var e=null!==Ke&&Ke.apply(this,arguments)||this;return e.localPartCharRegex=new RegExp('['+C+'!#$%&\\\\'*+/=?^_`{|}~-]'),e.strictTldRegex=new RegExp('^'+kt.source+'$'),e}function q(e){var t=Qe.call(this,e)||this;return t.url='',t.urlMatchType='scheme',t.protocolUrlMatch=!1,t.protocolRelativeMatch=!1,t.stripPrefix={scheme:!0,www:!0},t.stripTrailingSlash=!0,t.decodePercentEncoding=!0,t.schemePrefixRegex=/^(https?:\\\\/\\\\/)?/i,t.wwwPrefixRegex=/^(https?:\\\\/\\\\/)?(www\\\\.)?/i,t.protocolRelativeRegex=/^\\\\/\\\\//,t.protocolPrepended=!1,t.urlMatchType=e.urlMatchType,t.url=e.url,t.protocolUrlMatch=e.protocolUrlMatch,t.protocolRelativeMatch=e.protocolRelativeMatch,t.stripPrefix=e.stripPrefix,t.stripTrailingSlash=e.stripTrailingSlash,t.decodePercentEncoding=e.decodePercentEncoding,t}function F(e){var t=Xe.call(this,e)||this;return t.number='',t.plusSign=!1,t.number=e.number,t.plusSign=e.plusSign,t}function M(e){var t=et.call(this,e)||this;return t.serviceName='twitter',t.mention='',t.mention=e.mention,t.serviceName=e.serviceName,t}function S(e){var t=tt.call(this,e)||this;return t.serviceName='',t.hashtag='',t.serviceName=e.serviceName,t.hashtag=e.hashtag,t}function T(e){var t=rt.call(this,e)||this;return t.email='',t.email=e.email,t}function Mt(t,e){for(var r,n,o,s,i,a,u,l=e.onOpenTag,c=e.onCloseTag,p=e.onText,h=e.onComment,f=e.onDoctype,g=new L,d=0,m=t.length,b=0,v=0,k=g;d\u003Cm;){var A=t.charAt(d);switch(b){case 0:'\u003C'===A&&x();break;case 1:'!'===(u=A)?b=13:'/'===u?(b=2,k=new L(E({},k,{isClosing:!0}))):'\u003C'===u?x():k=ut.test(u)?(b=3,new L(E({},k,{isOpening:!0}))):(b=0,g);break;case 2:'>'!==(u=A)&&ut.test(u)?b=3:y();break;case 3:a=A,D.test(a)?(k=new L(E({},k,{name:C()})),b=4):'\u003C'===a?x():'/'===a?(k=new L(E({},k,{name:C()})),b=12):'>'===a?(k=new L(E({},k,{name:C()})),w()):ut.test(a)||lt.test(a)||':'===a||y();break;case 4:a=A,D.test(a)||('/'===a?b=12:'>'===a?w():'\u003C'===a?x():'='===a||ct.test(a)||pt.test(a)?y():b=5);break;case 5:i=A,D.test(i)?b=6:'/'===i?b=12:'='===i?b=7:'>'===i?w():'\u003C'===i?x():ct.test(i)&&y();break;case 6:i=A,D.test(i)||('/'===i?b=12:'='===i?b=7:'>'===i?w():'\u003C'===i?x():ct.test(i)?y():b=5);break;case 7:s=A,D.test(s)||('\\\"'===s?b=8:'\\\\''===s?b=9:/[>=`]/.test(s)?y():'\u003C'===s?x():b=10);break;case 8:'\\\"'===A&&(b=11);break;case 9:'\\\\''===A&&(b=11);break;case 10:s=A,D.test(s)?b=4:'>'===s?w():'\u003C'===s&&x();break;case 11:o=A,D.test(o)?b=4:'/'===o?b=12:'>'===o?w():'\u003C'===o?x():(b=4,d--);break;case 12:'>'===A?(k=new L(E({},k,{isClosing:!0})),w()):b=4;break;case 13:'--'===t.substr(d,2)?(d+=2,k=new L(E({},k,{type:'comment'})),b=14):'DOCTYPE'===t.substr(d,7).toUpperCase()?(d+=7,k=new L(E({},k,{type:'doctype'})),b=20):y();break;case 14:'-'===(o=A)?b=15:'>'===o?y():b=16;break;case 15:'-'===(n=A)?b=18:'>'===n?y():b=16;break;case 16:'-'===A&&(b=17);break;case 17:b='-'===A?18:16;break;case 18:'>'===(n=A)?w():'!'===n?b=19:'-'!==n&&(b=16);break;case 19:'-'===(r=A)?b=17:'>'===r?w():b=16;break;case 20:'>'===(r=A)?w():'\u003C'===r&&x();break;default:Ue(b)}d++}function y(){b=0,k=g}function x(){b=1,k=new L({idx:d})}function w(){var e=t.slice(v,k.idx);e&&p(e,v),'comment'===k.type?h(k.idx):'doctype'===k.type?f(k.idx):(k.isOpening&&l(k.name,k.idx),k.isClosing&&c(k.name,k.idx)),y(),v=d+1}function C(){var e=k.idx+(k.isClosing?2:1);return t.slice(e,d).toLowerCase()}v\u003Cd&&(e=t.slice(v,d),p(e,v),v=d+1)}function L(e){this.idx=void 0!==(e=void 0===e?{}:e).idx?e.idx:-1,this.type=e.type||'tag',this.name=e.name||'',this.isOpening=!!e.isOpening,this.isClosing=!!e.isClosing}R.link=function(e,t){return new R(t).link(e)},R.parse=function(e,t){return new R(t).parse(e)},R.prototype.normalizeUrlsCfg=function(e){return'boolean'==typeof(e=null==e?!0:e)?{schemeMatches:e,wwwMatches:e,tldMatches:e}:{schemeMatches:'boolean'!=typeof e.schemeMatches||e.schemeMatches,wwwMatches:'boolean'!=typeof e.wwwMatches||e.wwwMatches,tldMatches:'boolean'!=typeof e.tldMatches||e.tldMatches}},R.prototype.normalizeStripPrefixCfg=function(e){return'boolean'==typeof(e=null==e?!0:e)?{scheme:e,www:e}:{scheme:'boolean'!=typeof e.scheme||e.scheme,www:'boolean'!=typeof e.www||e.www}},R.prototype.normalizeTruncateCfg=function(e){if('number'==typeof e)return{length:e,location:'end'};var t,r=e||{},n={length:Number.POSITIVE_INFINITY,location:'end'};for(t in n)n.hasOwnProperty(t)&&void 0===r[t]&&(r[t]=n[t]);return r},R.prototype.parse=function(e){var n=this,t=['a','style','script'],o=0,s=[];return Mt(e,{onOpenTag:function(e){0\u003C=t.indexOf(e)&&o++},onText:function(e,t){var r;0===o&&(e=function(e,t){if(!t.global)throw new Error('`splitRegex` must have the \\\\'g\\\\' flag set');for(var r,n=[],o=0;r=t.exec(e);)n.push(e.substring(o,r.index)),n.push(r[0]),o=r.index+r[0].length;return n.push(e.substring(o)),n}(e,/(&nbsp;|&#160;|&lt;|&#60;|&gt;|&#62;|&quot;|&#34;|&#39;)/gi),r=t,e.forEach(function(e,t){t%2==0&&(t=n.parseText(e,r),s.push.apply(s,t)),r+=e.length}))},onCloseTag:function(e){0\u003C=t.indexOf(e)&&(o=Math.max(o-1,0))},onComment:function(e){},onDoctype:function(e){}}),s=this.compactMatches(s),s=this.removeUnwantedMatches(s)},R.prototype.compactMatches=function(e){e.sort(function(e,t){return e.getOffset()-t.getOffset()});for(var t=0;t\u003Ce.length-1;t++){var r=e[t],n=r.getOffset(),r=r.getMatchedText().length,o=n+r;t+1\u003Ce.length&&(e[t+1].getOffset()===n?(n=e[t+1].getMatchedText().length>r?t:t+1,e.splice(n,1)):e[t+1].getOffset()\u003Co&&e.splice(t+1,1))}return e},R.prototype.removeUnwantedMatches=function(e){return this.hashtag||l(e,function(e){return'hashtag'===e.getType()}),this.email||l(e,function(e){return'email'===e.getType()}),this.phone||l(e,function(e){return'phone'===e.getType()}),this.mention||l(e,function(e){return'mention'===e.getType()}),this.urls.schemeMatches||l(e,function(e){return'url'===e.getType()&&'scheme'===e.getUrlMatchType()}),this.urls.wwwMatches||l(e,function(e){return'url'===e.getType()&&'www'===e.getUrlMatchType()}),this.urls.tldMatches||l(e,function(e){return'url'===e.getType()&&'tld'===e.getUrlMatchType()}),e},R.prototype.parseText=function(e,t){t=(t=void 0===t?0:t)||0;for(var r=this.getMatchers(),n=[],o=0,s=r.length;o\u003Cs;o++){for(var i=r[o].parseMatches(e),a=0,u=i.length;a\u003Cu;a++)i[a].setOffset(t+i[a].getOffset());n.push.apply(n,i)}return n},R.prototype.link=function(e){if(!e)return'';for(var t=this.parse(e),r=[],n=0,o=0,s=t.length;o\u003Cs;o++){var i=t[o];r.push(e.substring(n,i.getOffset())),r.push(this.createMatchReturnVal(i)),n=i.getOffset()+i.getMatchedText().length}return r.push(e.substring(n)),r.join('')},R.prototype.createMatchReturnVal=function(e){var t;return'string'==typeof(t=this.replaceFn?this.replaceFn.call(this.context,e):t)?t:!1===t?e.getMatchedText():(t instanceof He?t:e.buildTag()).toAnchorString()},R.prototype.getMatchers=function(){var e;return this.matchers||(e=this.getTagBuilder(),e=[new Ct({tagBuilder:e,serviceName:this.hashtag}),new At({tagBuilder:e}),new Et({tagBuilder:e}),new Dt({tagBuilder:e,serviceName:this.mention}),new wt({tagBuilder:e,stripPrefix:this.stripPrefix,stripTrailingSlash:this.stripTrailingSlash,decodePercentEncoding:this.decodePercentEncoding})],this.matchers=e)},R.prototype.getTagBuilder=function(){return this.tagBuilder||(this.tagBuilder=new Ve({newWindow:this.newWindow,truncate:this.truncate,className:this.className}))},R.version='3.11.0',R.AnchorTagBuilder=Ve,R.HtmlTag=He,R.matcher={Email:At,Hashtag:Ct,Matcher:x,Mention:Dt,Phone:Et,Url:wt},R.match={Email:nt,Hashtag:ot,Match:o,Mention:st,Phone:it,Url:at};var St=R,Tt=/www|@|\\\\:\\\\/\\\\//;function R(e){void 0===e&&(e={}),this.version=R.version,this.urls={},this.email=!0,this.phone=!0,this.hashtag=!1,this.mention=!1,this.newWindow=!0,this.stripPrefix={scheme:!0,www:!0},this.stripTrailingSlash=!0,this.decodePercentEncoding=!0,this.truncate={length:0,location:'end'},this.className='',this.replaceFn=null,this.context=void 0,this.matchers=null,this.tagBuilder=null,this.urls=this.normalizeUrlsCfg(e.urls),this.email=('boolean'==typeof e.email?e:this).email,this.phone=('boolean'==typeof e.phone?e:this).phone,this.hashtag=e.hashtag||this.hashtag,this.mention=e.mention||this.mention,this.newWindow=('boolean'==typeof e.newWindow?e:this).newWindow,this.stripPrefix=this.normalizeStripPrefixCfg(e.stripPrefix),this.stripTrailingSlash=('boolean'==typeof e.stripTrailingSlash?e:this).stripTrailingSlash,this.decodePercentEncoding=('boolean'==typeof e.decodePercentEncoding?e:this).decodePercentEncoding;var t=this.mention;if(!1!==t&&'twitter'!==t&&'instagram'!==t&&'soundcloud'!==t)throw new Error('invalid `mention` cfg - see docs');t=this.hashtag;if(!1!==t&&'twitter'!==t&&'facebook'!==t&&'instagram'!==t)throw new Error('invalid `hashtag` cfg - see docs');this.truncate=this.normalizeTruncateCfg(e.truncate),this.className=e.className||this.className,this.replaceFn=e.replaceFn||this.replaceFn,this.context=e.context||this}function Lt(e){for(var t,r,n,o,s,i,a,u,l,c,p,h,f=e.tokens,g=null,d=0,m=f.length;d\u003Cm;d++)if('inline'===f[d].type)for(l=0,t=(r=f[d].children).length-1;0\u003C=t;t--)if('link_close'!==(n=r[t]).type){if('htmltag'===n.type&&(h=n.content,/^\u003Ca[>\\\\s]/i.test(h)&&0\u003Cl&&l--,/^\u003C\\\\/a\\\\s*>/i.test(n.content))&&l++,!(0\u003Cl)&&'text'===n.type&&Tt.test(n.content)){if(g||(c=(g=function(){var t=[],e=new St({stripPrefix:!1,url:!0,email:!0,replaceFn:function(e){switch(e.getType()){case'url':t.push({text:e.matchedText,url:e.getUrl()});break;case'email':t.push({text:e.matchedText,url:'mailto:'+e.getEmail().replace(/^mailto:/i,'')})}return!1}});return{links:t,autolinker:e}}()).links,p=g.autolinker),o=n.content,c.length=0,p.link(o),!c.length)continue;for(s=[],u=n.level,i=0;i\u003Cc.length;i++)e.inline.validateLink(c[i].url)&&((a=o.indexOf(c[i].text))&&s.push({type:'text',content:o.slice(0,a),level:u}),s.push({type:'link_open',href:c[i].url,title:'',level:u++}),s.push({type:'text',content:c[i].text,level:u}),s.push({type:'link_close',level:--u}),o=o.slice(a+c[i].text.length));o.length&&s.push({type:'text',content:o,level:u}),f[d].children=r=[].concat(r.slice(0,t),s,r.slice(t+1))}}else for(t--;r[t].level!==n.level&&'link_open'!==r[t].type;)t--}e.Remarkable=u,e.linkify=function(e){e.core.ruler.push('linkify',Lt)},e.utils=K,Object.defineProperty(e,'__esModule',{value:!0})},'object'==typeof exports&&'undefined'!=typeof module?t(exports):'function'==typeof define&&define.amd?define(['exports'],t):t((e=e||self).remarkable={});\",\"type\":\"application/javascript\",\"module-type\":\"library\"},\"$:/plugins/tiddlywiki/markdown/remarkable-license\":{\"text\":\"The MIT License (MIT)\\n\\nCopyright (c) 2014-2016, Jon Schlinkert\\nCopyright (c) 2014 Jon Schlinkert, Vitaly Puzrin.\\n\\nPermission is hereby granted, free of charge, to any person obtaining a copy\\nof this software and associated documentation files (the \\\"Software\\\"), to deal\\nin the Software without restriction, including without limitation the rights\\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\\ncopies of the Software, and to permit persons to whom the Software is\\nfurnished to do so, subject to the following conditions:\\n\\nThe above copyright notice and this permission notice shall be included in\\nall copies or substantial portions of the Software.\\n\\nTHE SOFTWARE IS PROVIDED \\\"AS IS\\\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\\nTHE SOFTWARE.\\n\",\"type\":\"text/plain\"},\"$:/plugins/tiddlywiki/markdown/remarkable-katex.js\":{\"text\":\"var n;n=require,module.exports=(r,e)=>{var t;const k=(e||{}).delimiter||'$';if(1!==k.length)throw new Error('invalid delimiter');const l=n(t=(t='katex')===t?'$:/plugins/tiddlywiki/katex/katex.min.js':t);r.inline.ruler.push('katex',(e,t)=>{var r=e.pos,l=e.posMax;let n=r;if(e.src.charAt(n)!==k)return!1;for(++n;n\u003Cl&&e.src.charAt(n)===k;)++n;var i=e.src.slice(r,n);if(2\u003Ci.length)return!1;var a=n;let s=0;for(;n\u003Cl;){var c=e.src.charAt(n);if('{'!==c||0!=n&&'\\\\\\\\'==e.src.charAt(n-1)){if('}'!==c||0!=n&&'\\\\\\\\'==e.src.charAt(n-1)){if(c===k&&0===s){var c=n;let r=n+1;for(;r\u003Cl&&e.src.charAt(r)===k;)++r;if(r-c===i.length)return t||(c=e.src.slice(a,c).replace(/[ \\\\n]+/g,' ').trim(),e.push({type:'katex',content:c,block:1\u003Ci.length,level:e.level})),e.pos=r,!0}}else if(--s\u003C0)return!1}else s+=1;n+=1}return t||(e.pending+=i),e.pos+=i.length,!0},e),r.block.ruler.push('katex',(r,e,t)=>{let l=!1;var n,i=r.bMarks[e]+r.tShift[e];if(r.eMarks[e]\u003Ci+1)return!1;var a=r.src.charAt(i);if(a!==k)return!1;var s=i;let c=r.skipChars(i,a)-s;if(2!==c)return!1;let h=e;for(;!(++h>=t)&&!((i=s=r.bMarks[h]+r.tShift[h])\u003C(n=r.eMarks[h])&&r.tShift[h]\u003Cr.blkIndent);)if(r.src.charAt(i)===k&&!(4\u003C=r.tShift[h]-r.blkIndent||(i=r.skipChars(i,a))-s\u003Cc||r.skipSpaces(i)\u003Cn)){l=!0;break}c=r.tShift[e],r.line=h+(l?1:0);var o=r.getLines(e+1,h,c,!0).replace(/[ \\\\n]+/g,' ').trim();return r.tokens.push({type:'katex',params:null,content:o,lines:[e,r.line],level:r.level,block:!0}),!0},e),r.renderer.rules.katex=(r,e)=>{return t=r[e].content,r=r[e].block,l.renderToString(t,{displayMode:r,throwOnError:!1});var t},r.renderer.rules.katex.delimiter=k};\",\"type\":\"application/javascript\",\"module-type\":\"library\"},\"$:/plugins/tiddlywiki/markdown/remarkable-katex-license\":{\"text\":\"MIT License\\n\\nCopyright (c) 2017 Brad Howes\\n\\nPermission is hereby granted, free of charge, to any person obtaining a copy\\nof this software and associated documentation files (the \\\"Software\\\"), to deal\\nin the Software without restriction, including without limitation the rights\\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\\ncopies of the Software, and to permit persons to whom the Software is\\nfurnished to do so, subject to the following conditions:\\n\\nThe above copyright notice and this permission notice shall be included in all\\ncopies or substantial portions of the Software.\\n\\nTHE SOFTWARE IS PROVIDED \\\"AS IS\\\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\\nSOFTWARE.\\n\",\"type\":\"text/plain\"},\"$:/plugins/tiddlywiki/markdown/images/markdown-linkify\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg width=22pt class=\\\"tc-markdown-linkify-button tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"height=22pt>\\n\u003Cpath d=\\\"M17.031185,32.1989189 L9.04781705,32.1989189 L9.04781705,97.1303119 L17.031185,97.1303119 L17.031185,104.049231 L0,104.049231 L0,25.28 L17.031185,25.28 L17.031185,32.1989189 Z M93.6716009,24.75 C90.4007675,30.8326023 88.0193713,37.1590826 86.5274123,43.7294408 C85.0354532,50.299799 84.2894737,56.9705775 84.2894737,63.7417763 C84.2894737,70.6277412 85.0211075,77.3702485 86.484375,83.9692982 C87.9476425,90.568348 90.314693,96.9952485 93.5855263,103.25 L93.5855263,103.25 L83.4287281,103.25 C79.8135965,97.3395468 77.0161732,91.1134868 75.0364583,84.5718202 C73.0567434,78.0301535 72.066886,71.3737208 72.066886,64.6025219 C72.066886,61.3890716 72.3107639,58.017818 72.7985197,54.488761 C73.2862756,50.9597039 74.0035636,47.4449927 74.9503838,43.9446272 C75.8972039,40.4442617 77.0735563,37.0586623 78.4794408,33.7878289 C79.8853253,30.5169956 81.5350877,27.504386 83.4287281,24.75 L83.4287281,24.75 Z M116.638158,24.75 C120.253289,30.6604532 123.050713,36.9152047 125.030428,43.5142544 C127.010143,50.1133041 128,56.7984284 128,63.5696272 C128,66.7830775 127.770468,70.1543311 127.311404,73.6833882 C126.852339,77.2124452 126.149397,80.7128107 125.202577,84.1844846 C124.255757,87.6561586 123.065058,91.0274123 121.630482,94.2982456 C120.195906,97.5690789 118.531798,100.552997 116.638158,103.25 L116.638158,103.25 L106.48136,103.25 C109.637427,97.1673977 111.975786,90.8696089 113.496436,84.3566338 C115.017087,77.8436586 115.777412,71.2015716 115.777412,64.4303728 C115.777412,57.5444079 115.031433,50.7732091 113.539474,44.1167763 C112.047515,37.4603436 109.723501,31.0047515 106.567434,24.75 L106.567434,24.75 Z M37.1101871,44.1061384 L37.1101871,56.702119 L49.0852391,52.799139 L51.3915454,59.8954661 L39.3277893,63.798446 L46.956341,74.1768244 L40.8357588,78.6120289 L33.2072072,68.1449464 L25.7560638,78.3459166 L19.8128898,73.8220081 L27.4414414,63.798446 L15.2889813,59.6293539 L17.5952876,52.5330268 L29.6590437,56.702119 L29.6590437,44.1061384 L37.1101871,44.1061384 Z M49.6493416,97.1303119 L57.6327096,97.1303119 L57.6327096,32.1989189 L49.6493416,32.1989189 L49.6493416,25.28 L66.6805267,25.28 L66.6805267,104.049231 L49.6493416,104.049231 L49.6493416,97.1303119 Z\\\">\u003C/path>\\n\u003C/svg>\\n\"},\"$:/plugins/tiddlywiki/markdown/images/new-markdown-button\":{\"tags\":\"$:/tags/Image\",\"text\":\"\u003Csvg class=\\\"tc-image-new-markdown-button tc-image-button\\\"viewBox=\\\"0 0 128 128\\\"width=22pt height=22pt>\\n \u003Cg fill-rule=evenodd>\\n \u003Crect x=80 y=96 width=48 height=16 rx=8>\u003C/rect>\\n \u003Crect x=96 y=80 width=16 height=48 rx=8>\u003C/rect>\\n \u003Cpath d=\\\"M3.23876972,39.5396716 C3.23876972,35.9653274 6.13586353,33.0691646 9.7141757,33.0691646 L98.1283744,33.0691646 C101.706101,33.0691646 104.60378,35.9646626 104.60378,39.5396716 L104.60378,84.8296213 C104.60378,88.4039654 101.706687,91.3001282 98.1283744,91.3001282 L9.7141757,91.3001282 C6.13644944,91.3001282 3.23876972,88.4046302 3.23876972,84.8296213 L3.23876972,39.5396716 L3.23876972,39.5396716 Z M-2.15298617,39.5396716 L-2.15298617,84.8296213 C-2.15298617,91.3833243 3.15957363,96.6918841 9.7141757,96.6918841 L98.1283744,96.6918841 C104.684083,96.6918841 109.995536,91.382138 109.995536,84.8296213 L109.995536,39.5396716 C109.995536,32.9859686 104.682977,27.6774087 98.1283744,27.6774087 L9.7141757,27.6774087 C3.15846686,27.6774087 -2.15298617,32.9871549 -2.15298617,39.5396716 Z M14.0222815,80.5166164 L14.0222815,43.8526764 L24.8057933,43.8526764 L35.589305,57.3320661 L46.3728168,43.8526764 L57.1563286,43.8526764 L57.1563286,80.5166164 L46.3728168,80.5166164 L46.3728168,59.4887685 L35.589305,72.9681582 L24.8057933,59.4887685 L24.8057933,80.5166164 L14.0222815,80.5166164 Z M81.4192301,80.5166164 L65.2439624,62.723822 L76.0274742,62.723822 L76.0274742,43.8526764 L86.810986,43.8526764 L86.810986,62.723822 L97.5944978,62.723822 L81.4192301,80.5166164 Z\\\"transform=\\\"translate(53.921275, 62.184646) rotate(-60.000000) translate(-53.921275, -62.184646) \\\">\u003C/path>\\n \u003C/g>\\n\"},\"$:/plugins/tiddlywiki/markdown/new-markdown-button\":{\"tags\":\"$:/tags/PageControls\",\"caption\":\"{{$:/plugins/tiddlywiki/markdown/images/new-markdown-button}} {{$:/language/Buttons/NewMarkdown/Caption}}\",\"description\":\"{{$:/language/Buttons/NewMarkdown/Hint}}\",\"list-after\":\"$:/core/ui/Buttons/new-tiddler\",\"text\":\"\u003C$button tooltip={{$:/language/Buttons/NewMarkdown/Hint}}aria-label={{$:/language/Buttons/NewMarkdown/Caption}}class=\u003C\u003Ctv-config-toolbar-class>>>\u003C$action-sendmessage type=\\\"text/x-markdown\\\"$message=tm-new-tiddler/>\u003C$list filter=\\\"[\u003Ctv-config-toolbar-icons>match[yes]]\\\">{{$:/plugins/tiddlywiki/markdown/images/new-markdown-button}}\u003C/$list>\u003C$list filter=\\\"[\u003Ctv-config-toolbar-text>match[yes]]\\\">\u003Cspan class=tc-btn-text>\u003C$text text={{$:/language/Buttons/NewMarkdown/Caption}}/>\"},\"$:/plugins/tiddlywiki/markdown/readme\":{\"text\":\"This is a TiddlyWiki plugin for parsing Markdown text, using the [[Remarkable|https://github.com/jonschlinkert/remarkable]] library. If the KaTeX TiddlyWiki plugin is installed, KaTeX support is enabled using the [[remarkable-katex|https://github.com/bradhowes/remarkable-katex]] Remarkable plugin.\\n\\nIt is completely self-contained, and doesn't need an Internet connection in order to work. It works both in the browser and under Node.js.\\n\\n[[Source code|https://github.com/Jermolene/TiddlyWiki5/blob/master/plugins/tiddlywiki/markdown]]\\n\"},\"$:/plugins/tiddlywiki/markdown/usage\":{\"text\":\"! Plugin Configuration\\n\\n|!Config |!Default |!Description |\\n| \u003Ccode>[[breaks|$:/config/markdown/breaks]]\u003C/code>| `false`|Remarkable library config: Convert '\\\\n' in paragraphs into `\u003Cbr>` |\\n| \u003Ccode>[[linkify|$:/config/markdown/linkify]]\u003C/code>| `false`|Remarkable library config: Autoconvert URL-like text to links |\\n| \u003Ccode>[[linkNewWindow|$:/config/markdown/linkNewWindow]]\u003C/code>| `true`|For external links, should clicking on them open a new window/tab automatically? |\\n| \u003Ccode>[[quotes|$:/config/markdown/quotes]]\u003C/code>| `“”‘’`|Remarkable library config: Double + single quotes replacement pairs, when `typographer` enabled |\\n| \u003Ccode>[[renderWikiText|$:/config/markdown/renderWikiText]]\u003C/code>| `true`|After Markdown is parsed, should any text elements be handed off to the ~WikiText parser for further processing? |\\n| \u003Ccode>[[renderWikiTextPragma|$:/config/markdown/renderWikiTextPragma]]\u003C/code>| `\\\\rules only html image macrocallinline syslink transcludeinline wikilink filteredtranscludeblock macrocallblock transcludeblock`|When handing off to the ~WikiText parser, what pragma rules should it follow? |\\n| \u003Ccode>[[typographer|$:/config/markdown/typographer]]\u003C/code>| `false`|Remarkable library config: Enable some language-neutral replacement + quotes beautification |\\n! Creating ~WikiLinks\\n\\nCreate wiki links with the usual Markdown link syntax targeting `#` and the target tiddler title:\\n\\n```\\n[link text](#TiddlerTitle)\\n```\\n\\nIf the target tiddler has a space in its name, that name must be URL-escaped to be detected as a URL:\\n\\n```\\n[link text](#Test%20Tiddler)\\n```\\n\\n! Images\\n\\nMarkdown image syntax can be used to reference images by tiddler title or an external URI. For example:\\n\\n```\\n![alt text](/path/to/img.jpg \\\"Title\\\")\\n\\n![alt text](Motovun Jack.jpg \\\"Title\\\")\"},\"$:/plugins/tiddlywiki/markdown/wrapper.js\":{\"text\":\"!function(){'use strict';var e=require('$:/plugins/tiddlywiki/markdown/remarkable.js'),t=e.Remarkable,r=e.linkify;e.utils;function n(e){return'true'===$tw.wiki.getTiddlerText(e).toLowerCase()}var k={linkNewWindow:n('$:/config/markdown/linkNewWindow'),renderWikiText:n('$:/config/markdown/renderWikiText'),renderWikiTextPragma:$tw.wiki.getTiddlerText('$:/config/markdown/renderWikiTextPragma').trim()},d={breaks:n('$:/config/markdown/breaks'),quotes:$tw.wiki.getTiddlerText('$:/config/markdown/quotes'),typographer:n('$:/config/markdown/typographer')},g={text:!0,softbreak:!0},a=(k.renderWikiText&&(g.katex=!0),new t(d));function y(e,t){let i=[];var r='';function l(e,t,r,n,a){t=function(e,t,r,n){for(var a=t;a\u003Ce.length;a++)if(e[a].type===r&&e[a].level===n)return a;return!1}(n,e+1,r,t);return!1===t?(console.error('Failed to find a '+r+' node after position '+e),console.log(n),e+1):(a(y(n.slice(e+1,t))),t)}function n(t,e,r,n,a){return l(e,r,n,a,function(e){i.push({type:'element',tag:t,children:e})})}for(var a=0;a\u003Ce.length;a++){var s,o,p,c=e[a];switch(c.type){case'paragraph_open':a=c.tight?l(a,c.level,'paragraph_close',e,function(e){Array.prototype.push.apply(i,e)}):n('p',a,c.level,'paragraph_close',e);break;case'heading_open':a=n('h'+c.hLevel,a,c.level,'heading_close',e);break;case'bullet_list_open':a=n('ul',a,c.level,'bullet_list_close',e);break;case'ordered_list_open':a=n('ol',a,c.level,'ordered_list_close',e);break;case'list_item_open':a=n('li',a,c.level,'list_item_close',e);break;case'link_open':a=l(a,c.level,'link_close',e,function(e){var t;'#'!==c.href[0]?(t={class:{type:'string',value:'tc-tiddlylink-external'},href:{type:'string',value:c.href},rel:{type:'string',value:'noopener noreferrer'}},k.linkNewWindow&&(t.target={type:'string',value:'_blank'}),i.push({type:'element',tag:'a',attributes:t,children:e})):i.push({type:'link',attributes:{to:{type:'string',value:$tw.utils.decodeURISafe(c.href.substr(1))}},children:e})});break;case'code':i.push({type:'element',tag:c.block?'pre':'code',children:[{type:'text',text:c.content}]});break;case'fence':i.push({type:'codeblock',attributes:{language:{type:'string',value:c.params},code:{type:'string',value:c.content}}});break;case'image':i.push({type:'image',attributes:{tooltip:{type:'string',value:c.alt},source:{type:'string',value:$tw.utils.decodeURIComponentSafe(c.src)}}});break;case'softbreak':d.breaks?i.push({type:'element',tag:'br'}):r+='\\\\n';break;case'hardbreak':i.push({type:'element',tag:'br'});break;case'th_open':case'td_open':var u=c.type.slice(0,2),a=l(a,c.level,u+'_close',e,function(e){var t={};c.align&&(t.style={type:'string',value:'text-align:'+c.align}),i.push({type:'element',tag:u,attributes:t,children:e})});break;case'hr':i.push({type:'element',tag:'hr'});break;case'inline':i=i.concat(y(c.children,!0));break;case'text':r+=c.content;break;case'katex':k.renderWikiText?(s=c.block?'\\\\n':'',r=r+'$$'+c.content+s+'$$'):i.push({type:'latex',attributes:{text:{type:'text',value:c.content},displayMode:{type:'text',value:c.block?'true':'false'}}});break;default:'_open'===c.type.substr(c.type.length-5)?a=n(s=c.type.substr(0,c.type.length-5),a,c.level,s+'_close',e):(console.error('Unknown node type: '+c.type,c),i.push({type:'text',text:c.content}))}r&&(d.breaks||a+1>=e.length||!g[e[a+1].type])&&(!k.renderWikiText||r.match(/^\\\\s*$/)?i.push({type:'text',text:r}):(o=!(t&&0===a),p=r,''!==k.renderWikiTextPragma&&(p=k.renderWikiTextPragma+'\\\\n'+p),p=$tw.wiki.parseText('text/vnd.tiddlywiki',p,{parseAsInline:o}).tree,0\u003C(p=o||1!==p.length||'element'!==p[0].type||'p'!==p[0].tag?p:p[0].children).length&&'text'===p[0].type&&(' '===r[0]||'\\\\n'===r[0])&&(p[0].text=' '+p[0].text),i=i.concat(p)),r='')}return i}$tw.modules.titles['$:/plugins/tiddlywiki/katex/katex.min.js']&&(e=require('$:/plugins/tiddlywiki/markdown/remarkable-katex.js'),a=a.use(e)),n('$:/config/markdown/linkify')&&(a=a.use(r));exports['text/x-markdown']=function(e,t,r){t=y(a.parse(t,{}));this.tree=t}}();\",\"type\":\"application/javascript\",\"module-type\":\"parser\"}}}"},
{"title":"$:/plugins/tiddlywiki/railroad","name":"Railroad","description":"Railroad diagram generator","author":"Astrid Elocson","list":"readme usage syntax example","version":"5.2.3","plugin-type":"plugin","dependents":"","type":"application/json","text":"{\"tiddlers\":{\"$:/plugins/tiddlywiki/railroad/components.js\":{\"title\":\"$:/plugins/tiddlywiki/railroad/components.js\",\"text\":\"/*\\\\\\ntitle: $:/plugins/tiddlywiki/railroad/components.js\\ntype: application/javascript\\nmodule-type: library\\n\\nComponents of a railroad diagram.\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nvar railroad = require(\\\"$:/plugins/tiddlywiki/railroad/railroad-diagrams.js\\\");\\n\\n/////////////////////////// Base component\\n\\nvar Component = function() {\\n\\tthis.type = \\\"Component\\\";\\n};\\n\\n// Set up a leaf component\\nComponent.prototype.initialiseLeaf = function(type,text) {\\n\\tthis.type = type;\\n\\tthis.text = text;\\n};\\n\\n// Set up a component with a single child\\nComponent.prototype.initialiseWithChild = function(type,content) {\\n\\tthis.type = type;\\n\\tthis.child = toSingleChild(content);\\n};\\n\\n// Set up a component with an array of children\\nComponent.prototype.initialiseWithChildren = function(type,content) {\\n\\tthis.type = type;\\n\\t// Force the content to be an array\\n\\tthis.children = $tw.utils.isArray(content) ? content : [content];\\n}\\n\\n// Return an array of the SVG strings of an array of children\\nComponent.prototype.getSvgOfChildren = function() {\\n\\treturn this.children.map(function(child) {\\n\\t\\treturn child.toSvg();\\n\\t});\\n}\\n\\nComponent.prototype.toSvg = function() {\\n\\treturn \\\"\\\";\\n}\\n\\nComponent.prototype.debug = function(output,indent) {\\n\\toutput.push(indent);\\n\\toutput.push(this.type);\\n\\t// Add the text of a leaf component\\n\\tif(this.text && this.text !== \\\"\\\") {\\n\\t\\toutput.push(\\\": \\\");\\n\\t\\toutput.push(this.text);\\n\\t}\\n\\t// Flag the normal route\\n\\tif(this.normal !== undefined) {\\n\\t\\tif(this.normal === true) {\\n\\t\\t\\toutput.push(\\\" (normal)\\\");\\n\\t\\t} else if(this.normal !== false) {\\n\\t\\t\\toutput.push(\\\" (normal: \\\");\\n\\t\\t\\toutput.push(this.normal);\\n\\t\\t\\toutput.push(\\\")\\\");\\n\\t\\t}\\n\\t}\\n\\toutput.push(\\\"\\\\n\\\");\\n\\tvar contentIndent = indent + \\\" \\\";\\n\\t// Add the one child\\n\\tif(this.child) {\\n\\t\\tthis.child.debug(output,contentIndent);\\n\\t}\\n\\t// Add the array of children\\n\\tif(this.children) {\\n\\t\\tthis.debugArray(this.children,output,contentIndent);\\n\\t}\\n \\t// Add the separator if there is one\\n\\tif(this.separator) {\\n\\t\\toutput.push(indent);\\n\\t\\toutput.push(\\\"(separator)\\\\n\\\");\\n\\t\\tthis.separator.debug(output,contentIndent);\\n\\t}\\n};\\n\\nComponent.prototype.debugArray = function(array,output,indent) {\\n\\tfor(var i=0; i\u003Carray.length; i++) {\\n\\t\\tvar item = array[i];\\n\\t\\t// Choice content is a special case: we number the branches\\n\\t\\tif(item.isChoiceBranch) {\\n\\t\\t\\toutput.push(indent);\\n\\t\\t\\toutput.push(\\\"(\\\");\\n\\t\\t\\toutput.push(i);\\n\\t\\t\\toutput.push(\\\")\\\\n\\\");\\n\\t\\t\\titem.debug(output,\\\" \\\"+indent);\\n\\t\\t} else {\\n\\t\\t\\titem.debug(output,indent);\\n\\t\\t}\\n\\t}\\n}\\n\\nvar toSingleChild = function(content) {\\n\\tif($tw.utils.isArray(content)) {\\n\\t\\t// Reduce an array of one child to just the child\\n\\t\\tif(content.length === 1) {\\n\\t\\t\\treturn content[0];\\n\\t\\t} else {\\n\\t\\t\\t// Never allow an empty sequence\\n\\t\\t \\tif(content.length === 0) {\\n \\t\\t\\t\\tcontent.push(new Dummy());\\n\\t\\t \\t}\\n\\t\\t\\t// Wrap multiple children into a single sequence component\\n\\t\\t\\treturn new Sequence(content);\\n\\t\\t}\\n\\t} else {\\n\\t\\t// Already single\\n\\t\\treturn content;\\n\\t}\\n}\\n\\n/////////////////////////// Leaf components\\n\\nvar Comment = function(text) {\\n\\tthis.initialiseLeaf(\\\"Comment\\\",text);\\n};\\n\\nComment.prototype = new Component();\\n\\nComment.prototype.toSvg = function() {\\n\\treturn railroad.Comment(this.text);\\n}\\n\\nvar Dummy = function() {\\n\\tthis.initialiseLeaf(\\\"Dummy\\\");\\n};\\n\\nDummy.prototype = new Component();\\n\\nDummy.prototype.toSvg = function() {\\n\\treturn railroad.Skip();\\n}\\n\\nvar Nonterminal = function(text) {\\n\\tthis.initialiseLeaf(\\\"Nonterminal\\\",text);\\n};\\n\\nNonterminal.prototype = new Component();\\n\\nNonterminal.prototype.toSvg = function() {\\n\\treturn railroad.NonTerminal(this.text);\\n}\\n\\nvar Terminal = function(text) {\\n\\tthis.initialiseLeaf(\\\"Terminal\\\",text);\\n};\\n\\nTerminal.prototype = new Component();\\n\\nTerminal.prototype.toSvg = function() {\\n\\treturn railroad.Terminal(this.text);\\n}\\n\\n/////////////////////////// Components with one child\\n\\nvar Optional = function(content,normal) {\\n\\tthis.initialiseWithChild(\\\"Optional\\\",content);\\n\\tthis.normal = normal;\\n};\\n\\nOptional.prototype = new Component();\\n\\nOptional.prototype.toSvg = function() {\\n\\t// Call Optional(component,\\\"skip\\\")\\n\\treturn railroad.Optional(this.child.toSvg(), this.normal ? undefined : \\\"skip\\\");\\n}\\n\\nvar OptionalRepeated = function(content,separator,normal,wantArrow) {\\n\\tthis.initialiseWithChild(\\\"OptionalRepeated\\\",content);\\n\\tthis.separator = toSingleChild(separator);\\n\\tthis.normal = normal;\\n\\tthis.wantArrow = wantArrow;\\n};\\n\\nOptionalRepeated.prototype = new Component();\\n\\nOptionalRepeated.prototype.toSvg = function() {\\n\\t// Call ZeroOrMore(component,separator,\\\"skip\\\")\\n\\tvar separatorSvg = this.separator ? this.separator.toSvg() : null;\\n\\tvar skip = this.normal ? undefined : \\\"skip\\\";\\n\\treturn railroad.ZeroOrMore(this.child.toSvg(),separatorSvg,skip,this.wantArrow);\\n}\\n\\nvar Repeated = function(content,separator,wantArrow) {\\n\\tthis.initialiseWithChild(\\\"Repeated\\\",content);\\n\\tthis.separator = toSingleChild(separator);\\n\\tthis.wantArrow = wantArrow;\\n};\\n\\nRepeated.prototype = new Component();\\n\\nRepeated.prototype.toSvg = function() {\\n\\t// Call OneOrMore(component,separator)\\n\\tvar separatorSvg = this.separator ? this.separator.toSvg() : null;\\n\\treturn railroad.OneOrMore(this.child.toSvg(),separatorSvg,this.wantArrow);\\n}\\n\\nvar Link = function(content,options) {\\n\\tthis.initialiseWithChild(\\\"Link\\\",content);\\n\\tthis.options = options;\\n};\\n\\nLink.prototype = new Component();\\n\\nLink.prototype.toSvg = function() {\\n\\treturn railroad.Link(this.child.toSvg(),this.options);\\n}\\n\\nvar Transclusion = function(content) {\\n\\tthis.initialiseWithChild(\\\"Transclusion\\\",content);\\n};\\n\\nTransclusion.prototype = new Component();\\n\\nTransclusion.prototype.toSvg = function() {\\n\\treturn this.child.toSvg();\\n}\\n\\n/////////////////////////// Components with an array of children\\n\\nvar Root = function(content) {\\n\\tthis.initialiseWithChildren(\\\"Root\\\",content);\\n};\\n\\nRoot.prototype = new Component();\\n\\nRoot.prototype.toSvg = function(options) {\\n\\tvar args = this.getSvgOfChildren();\\n\\targs.unshift(options);\\n\\t// Call Diagram(options,component1,component2,...)\\n\\treturn railroad.Diagram.apply(null,args);\\n}\\n\\nvar Sequence = function(content) {\\n\\tthis.initialiseWithChildren(\\\"Sequence\\\",content);\\n};\\n\\nSequence.prototype = new Component();\\n\\nSequence.prototype.toSvg = function() {\\n\\t// Call Sequence(component1,component2,...)\\n\\treturn railroad.Sequence.apply(null,this.getSvgOfChildren());\\n}\\n\\nvar Choice = function(content,normal) {\\n\\tthis.initialiseWithChildren(\\\"Choice\\\",content.map(toSingleChild));\\n\\tfor(var i=0; i\u003Cthis.children.length; i++) {\\n\\t\\tthis.children[i].isChoiceBranch = true;\\n\\t}\\n\\tthis.normal = normal;\\n};\\n\\nChoice.prototype = new Component();\\n\\nChoice.prototype.toSvg = function() {\\n\\t// Call Choice(normal,component1,component2,...)\\n\\tvar args = this.getSvgOfChildren();\\n\\targs.unshift(this.normal);\\n\\treturn railroad.Choice.apply(null,args);\\n}\\n\\n/////////////////////////// Exports\\n\\nexports.components = {\\n\\tChoice: Choice,\\n\\tComment: Comment,\\n\\tDummy: Dummy,\\n\\tLink: Link,\\n\\tNonterminal: Nonterminal,\\n\\tOptional: Optional,\\n\\tOptionalRepeated: OptionalRepeated,\\n\\tRepeated: Repeated,\\n\\tRoot: Root,\\n\\tSequence: Sequence,\\n\\tTerminal: Terminal,\\n\\tTransclusion: Transclusion\\n};\\n\\n})();\",\"type\":\"application/javascript\",\"module-type\":\"library\"},\"$:/plugins/tiddlywiki/railroad/example-source\":{\"title\":\"$:/plugins/tiddlywiki/railroad/example-source\",\"created\":\"20150103184022184\",\"modified\":\"20150119214125000\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki.railroad\",\"text\":\"[\\\"+\\\"]\\n({ [[digit|GettingStarted]] } | \\\"#\\\" \u003C'escape sequence'>)\\n[{(\\\"@\\\" name-char | :\\\"--\\\" )}]\\n\"},\"$:/plugins/tiddlywiki/railroad/example\":{\"title\":\"$:/plugins/tiddlywiki/railroad/example\",\"created\":\"20150102165032410\",\"modified\":\"20150120090735000\",\"tags\":\"\",\"text\":\"Notation:\\n\\n\u003Cpre>\u003Ccode>\u003C$text text={{$:/plugins/tiddlywiki/railroad/example-source}}/>\u003C/code>\u003C/pre>\\n\\nDiagram:\\n\\n{{$:/plugins/tiddlywiki/railroad/example-source}}\\n\\nDebug mode:\\n\\n\u003C$railroad debug=\\\"yes\\\" text={{$:/plugins/tiddlywiki/railroad/example-source}}/>\\n\"},\"$:/plugins/tiddlywiki/railroad/readme\":{\"title\":\"$:/plugins/tiddlywiki/railroad/readme\",\"created\":\"20150102163222184\",\"modified\":\"20150119231005000\",\"text\":\"This plugin provides a `\u003C$railroad>` widget for generating railroad diagrams as SVG images.\\n\\nAlternatively, the [[diagram notation|$:/plugins/tiddlywiki/railroad/syntax]] can be stored in a dedicated tiddler with its `type` field set to `text/vnd.tiddlywiki.railroad`, and that tiddler can simply be transcluded to wherever it is needed.\\n\\nThe plugin is based on [[a library by Tab Atkins|https://github.com/tabatkins/railroad-diagrams]], and has been extended to make it more flexible, including allowing components of a diagram to function as links or be transcluded from other tiddlers.\\n\"},\"$:/plugins/tiddlywiki/railroad/syntax-string\":{\"title\":\"$:/plugins/tiddlywiki/railroad/syntax-string\",\"created\":\"20150103184022184\",\"modified\":\"20150103184022184\",\"text\":\"('\\\"' text '\\\"' | \\\"'\\\" text \\\"'\\\" | '\\\"\\\"\\\"' text '\\\"\\\"\\\"')\"},\"$:/plugins/tiddlywiki/railroad/syntax\":{\"title\":\"$:/plugins/tiddlywiki/railroad/syntax\",\"created\":\"20150103184022184\",\"modified\":\"20150119220342000\",\"text\":\"The railroad widget uses a special notation to construct the components defined below.\\n\\n`x` and `y` here stand for any component.\\n\\nNames (as opposed to quoted strings) are available when a value starts with a letter and contains only letters, digits, underscores, dots and hyphens.\\n\\n---\\n\\n; sequence\\n: \u003C$railroad text=\\\"\\\"\\\" [\\\"\u003C-\\\"] {x} [\\\"->\\\"] \\\"\\\"\\\"/>\\n* A sequence of components\\n* The `\u003C-` and `->` delimiters allow you to force a single component to be treated as a sequence. This is occasionally useful for spacing a diagram out\\n\\n---\\n\\n; optional\\n: \u003C$railroad text=\\\"\\\"\\\" \\\"[\\\" [\\\":\\\"] x \\\"]\\\" \\\"\\\"\\\"/>\\n* A component that can be omitted\\n* The colon makes `x` appear straight ahead\\n\\n---\\n\\n; repeated\\n: \u003C$railroad text=\\\"\\\"\\\" \\\"{\\\" x [:\\\"+\\\" y] \\\"}\\\" \\\"\\\"\\\"/>\\n* A list of one or more `x`\\n* The `+` suffix adds `y` as a separator between each `x` and the next\\n\\n---\\n\\n; optional repeated\\n: \u003C$railroad text=\\\"\\\"\\\" \\\"[{\\\" [\\\":\\\"] x [:\\\"+\\\" y] \\\"}]\\\" \\\"\\\"\\\"/>\\n* An optional list of `x`, i.e. a list of zero or more `x`\\n\\n---\\n\\n; choice\\n: \u003C$railroad text=\\\"\\\"\\\" \\\"(\\\" {[:\\\":\\\"] x +\\\"|\\\"} \\\")\\\" \\\"\\\"\\\"/>\\n* A set of alternatives\\n* The colon indicates which branch appears straight ahead. By default, it's the first branch\\n\\n---\\n\\n; string / terminal\\n: \u003C$railroad text={{$:/plugins/tiddlywiki/railroad/syntax-string}}/>\\n* A literal or terminal component\\n* This follows the normal ~TiddlyWiki rules for quoted strings\\n\\n---\\n\\n; nonterminal\\n: \u003C$railroad text=\\\"\\\"\\\" (name | \\\"\u003C\\\" string \\\">\\\") \\\"\\\"\\\"/>\\n* A nonterminal component, i.e. the name of another diagram\\n\\n---\\n\\n; comment\\n: \u003C$railroad text=\\\"\\\"\\\" \\\"/\\\" string \\\"/\\\" \\\"\\\"\\\"/>\\n* A comment\\n\\n---\\n\\n; dummy\\n: \u003C$railroad text=\\\"\\\"\\\" \\\"-\\\" \\\"\\\"\\\"/>\\n* The absence of a component\\n\\n---\\n\\n; link\\n: \u003C$railroad text=\\\"\\\"\\\" \\\"[[\\\" x \\\"|\\\" (name|string) \\\"]]\\\" \\\"\\\"\\\"/>\\n* A link to the tiddler title or URI given by the string or name\\n\\n---\\n\\n; transclusion\\n: \u003C$railroad text=\\\"\\\"\\\" \\\"{{\\\" (name|string) \\\"}}\\\" \\\"\\\"\\\"/>\\n* Treats the content of another tiddler as diagram syntax and transcludes it into the current diagram\\n\\n---\\n\\n; arrow pragma\\n: \u003C$railroad text=\\\"\\\"\\\" \\\"\\\\arrow\\\" (\\\"yes\\\" | \\\"no\\\") \\\"\\\"\\\"/>\\n* Controls whether repeat paths have an arrow on them\\n* Can be toggled on and off in mid-diagram, if desired\\n\\n---\\n\\n; debug pragma\\n: \u003C$railroad text=\\\"\\\"\\\" \\\"\\\\debug\\\" \\\"\\\"\\\"/>\\n* Causes the diagram to display its parse tree\\n\\n---\\n\\n; start/end pragma\\n: \u003C$railroad text=\\\"\\\"\\\" (\\\"\\\\start\\\" |: \\\"\\\\end\\\") (\\\"none\\\" |: \\\"single\\\" | \\\"double\\\") \\\"\\\"\\\"/>\\n* Controls the style of the diagram's startpoint or endpoint\\n\"},\"$:/plugins/tiddlywiki/railroad/usage\":{\"title\":\"$:/plugins/tiddlywiki/railroad/usage\",\"created\":\"20150102163222184\",\"modified\":\"20150119231005000\",\"text\":\"The content of the `\u003C$railroad>` widget is ignored.\\n\\n|!Attribute |!Description |!Default |\\n|text |Text in a special notation that defines the diagram's layout |-- |\\n|arrow |If set to `no`, repeat paths do not have an arrow on them |`yes` |\\n|start |Style of the startpoint: `single`, `double`, `none` |`single` |\\n|end |Style of the endpoint: `single`, `double`, `none` |`single` |\\n|debug |If set to `yes`, the diagram displays its parse tree |`no` |\\n\\nThese options can also be specified via pragmas in the diagram notation, or globally via a dictionary tiddler called `$:/config/railroad`:\\n\\n```\\narrow: yes\\nstart: single\\nend: single\\ndebug: no\\n```\\n\"},\"$:/plugins/tiddlywiki/railroad/railroad-diagrams.css\":{\"text\":\"\\\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline macrocallblock\\n\\n/* CSS modified for TiddlyWiki */\\n\\nsvg.railroad-diagram {\\n\\tbackground-color: \u003C\u003Ccolour background>>;\\n\\tborder-radius: 5px;\\n}\\n/*\\nsvg.railroad-diagram:hover {\\n\\tbackground-color: hsl(30,20%,96%);\\n}\\n*/\\nsvg.railroad-diagram path,\\nsvg.railroad-diagram rect {\\n\\tstroke-width: 2;\\n\\tstroke: \u003C\u003Ccolour message-border>>;\\n}\\nsvg.railroad-diagram path {\\n\\tfill: \u003C\u003Ccolour background>>;\\n}\\nsvg.railroad-diagram rect {\\n\\tfill: \u003C\u003Ccolour message-background>>;\\n}\\nsvg.railroad-diagram text {\\n\\tfont: 14px monospace;\\n\\ttext-anchor: middle;\\n\\tfill: \u003C\u003Ccolour message-foreground>>;\\n}\\nsvg.railroad-diagram text.label {\\n\\ttext-anchor: start;\\n}\\nsvg.railroad-diagram text.comment {\\n\\tfont: italic 12px monospace;\\n}\\nsvg.railroad-diagram path.arrow {\\n stroke-width: 2;\\n}\",\"type\":\"text/vnd.tiddlywiki\",\"title\":\"$:/plugins/tiddlywiki/railroad/railroad-diagrams.css\",\"tags\":\"$:/tags/Stylesheet\"},\"$:/plugins/tiddlywiki/railroad/railroad-diagrams.js\":{\"text\":\"(function(document) {\\n/* TiddlyWiki: modifications to the original library are commented like this */\\n\\n/*\\nRailroad Diagrams\\nby Tab Atkins Jr. (and others)\\nhttp://xanthir.com\\nhttp://twitter.com/tabatkins\\nhttp://github.com/tabatkins/railroad-diagrams\\n\\nThis document and all associated files in the github project are licensed under CC0: http://creativecommons.org/publicdomain/zero/1.0/\\nThis means you can reuse, remix, or otherwise appropriate this project for your own use WITHOUT RESTRICTION.\\n(The actual legal meaning can be found at the above link.)\\nDon't ask me for permission to use any part of this project, JUST USE IT.\\nI would appreciate attribution, but that is not required by the license.\\n*/\\n\\n/*\\nThis file uses a module pattern to avoid leaking names into the global scope.\\nThe only accidental leakage is the name \\\"temp\\\".\\nThe exported names can be found at the bottom of this file;\\nsimply change the names in the array of strings to change what they are called in your application.\\n\\nAs well, several configuration constants are passed into the module function at the bottom of this file.\\nAt runtime, these constants can be found on the Diagram class.\\n*/\\n\\nvar temp = (function(options) {\\n\\tfunction subclassOf(baseClass, superClass) {\\n\\t\\tbaseClass.prototype = Object.create(superClass.prototype);\\n\\t\\tbaseClass.prototype.$super = superClass.prototype;\\n\\t}\\n\\n\\tfunction unnull(/* children */) {\\n\\t\\treturn [].slice.call(arguments).reduce(function(sofar, x) { return sofar !== undefined ? sofar : x; });\\n\\t}\\n\\n\\tfunction determineGaps(outer, inner) {\\n\\t\\tvar diff = outer - inner;\\n\\t\\tswitch(Diagram.INTERNAL_ALIGNMENT) {\\n\\t\\t\\tcase 'left': return [0, diff]; break;\\n\\t\\t\\tcase 'right': return [diff, 0]; break;\\n\\t\\t\\tcase 'center':\\n\\t\\t\\tdefault: return [diff/2, diff/2]; break;\\n\\t\\t}\\n\\t}\\n\\n\\tfunction wrapString(value) {\\n\\t\\treturn ((typeof value) == 'string') ? new Terminal(value) : value;\\n\\t}\\n\\n\\n\\tfunction SVG(name, attrs, text) {\\n\\t\\tattrs = attrs || {};\\n\\t\\ttext = text || '';\\n\\t\\tvar el = document.createElementNS(\\\"http://www.w3.org/2000/svg\\\",name);\\n\\t\\tfor(var attr in attrs) {\\n\\t\\t\\tel.setAttribute(attr, attrs[attr]);\\n\\t\\t}\\n\\t\\tel.textContent = text;\\n\\t\\treturn el;\\n\\t}\\n\\n\\tfunction FakeSVG(tagName, attrs, text){\\n\\t\\tif(!(this instanceof FakeSVG)) return new FakeSVG(tagName, attrs, text);\\n\\t\\tif(text) this.children = text;\\n\\t\\telse this.children = [];\\n\\t\\tthis.tagName = tagName;\\n\\t\\tthis.attrs = unnull(attrs, {});\\n\\t\\treturn this;\\n\\t};\\n\\tFakeSVG.prototype.format = function(x, y, width) {\\n\\t\\t// Virtual\\n\\t};\\n\\tFakeSVG.prototype.addTo = function(parent) {\\n\\t\\tif(parent instanceof FakeSVG) {\\n\\t\\t\\tparent.children.push(this);\\n\\t\\t\\treturn this;\\n\\t\\t} else {\\n\\t\\t\\tvar svg = this.toSVG();\\n\\t\\t\\tparent.appendChild(svg);\\n\\t\\t\\treturn svg;\\n\\t\\t}\\n\\t};\\n\\tFakeSVG.prototype.toSVG = function() {\\n\\t\\tvar el = SVG(this.tagName, this.attrs);\\n\\t\\tif(typeof this.children == 'string') {\\n\\t\\t\\tel.textContent = this.children;\\n\\t\\t} else {\\n\\t\\t\\tthis.children.forEach(function(e) {\\n\\t\\t\\t\\tel.appendChild(e.toSVG());\\n\\t\\t\\t});\\n\\t\\t}\\n\\t\\treturn el;\\n\\t};\\n\\tFakeSVG.prototype.toString = function() {\\n\\t\\tvar str = '\u003C' + this.tagName;\\n\\t\\tvar group = this.tagName == \\\"g\\\" || this.tagName == \\\"svg\\\";\\n\\t\\tfor(var attr in this.attrs) {\\n\\t\\t\\tstr += ' ' + attr + '=\\\"' + (this.attrs[attr]+'').replace(/&/g, '&amp;').replace(/\\\"/g, '&quot;') + '\\\"';\\n\\t\\t}\\n\\t\\tstr += '>';\\n\\t\\tif(group) str += \\\"\\\\n\\\";\\n\\t\\tif(typeof this.children == 'string') {\\n\\t\\t\\tstr += this.children.replace(/&/g, '&amp;').replace(/\u003C/g, '&lt;');\\n\\t\\t} else {\\n\\t\\t\\tthis.children.forEach(function(e) {\\n\\t\\t\\t\\tstr += e;\\n\\t\\t\\t});\\n\\t\\t}\\n\\t\\tstr += '\u003C/' + this.tagName + '>\\\\n';\\n\\t\\treturn str;\\n\\t}\\n\\n\\tfunction Path(x,y,attrs) {\\n\\t\\tif(!(this instanceof Path)) return new Path(x,y,attrs);\\n\\t\\tFakeSVG.call(this, 'path', attrs);\\n\\t\\tthis.attrs.d = \\\"M\\\"+x+' '+y;\\n\\t}\\n\\tsubclassOf(Path, FakeSVG);\\n\\tPath.prototype.m = function(x,y) {\\n\\t\\tthis.attrs.d += 'm'+x+' '+y;\\n\\t\\treturn this;\\n\\t}\\n\\tPath.prototype.h = function(val) {\\n\\t\\tthis.attrs.d += 'h'+val;\\n\\t\\treturn this;\\n\\t}\\n\\tPath.prototype.right = Path.prototype.h;\\n\\tPath.prototype.left = function(val) { return this.h(-val); }\\n\\tPath.prototype.v = function(val) {\\n\\t\\tthis.attrs.d += 'v'+val;\\n\\t\\treturn this;\\n\\t}\\n\\tPath.prototype.down = Path.prototype.v;\\n\\tPath.prototype.up = function(val) { return this.v(-val); }\\n\\tPath.prototype.arc = function(sweep){\\n\\t\\tvar x = Diagram.ARC_RADIUS;\\n\\t\\tvar y = Diagram.ARC_RADIUS;\\n\\t\\tif(sweep[0] == 'e' || sweep[1] == 'w') {\\n\\t\\t\\tx *= -1;\\n\\t\\t}\\n\\t\\tif(sweep[0] == 's' || sweep[1] == 'n') {\\n\\t\\t\\ty *= -1;\\n\\t\\t}\\n\\t\\tif(sweep == 'ne' || sweep == 'es' || sweep == 'sw' || sweep == 'wn') {\\n\\t\\t\\tvar cw = 1;\\n\\t\\t} else {\\n\\t\\t\\tvar cw = 0;\\n\\t\\t}\\n\\t\\tthis.attrs.d += \\\"a\\\"+Diagram.ARC_RADIUS+\\\" \\\"+Diagram.ARC_RADIUS+\\\" 0 0 \\\"+cw+' '+x+' '+y;\\n\\t\\treturn this;\\n\\t}\\n\\tPath.prototype.format = function() {\\n\\t\\t// All paths in this library start/end horizontally.\\n\\t\\t// The extra .5 ensures a minor overlap, so there's no seams in bad rasterizers.\\n\\t\\tthis.attrs.d += 'h.5';\\n\\t\\treturn this;\\n\\t}\\n/* TiddlyWiki: added support for arbitrary straight lines */\\n\\tPath.prototype.line = function(dx,dy) {\\n\\t\\tthis.attrs.d += \\\"l\\\"+dx+\\\" \\\"+dy;\\n\\t\\treturn this;\\n\\t}\\n\\n/* TiddlyWiki: added twOptions parameter, passing it to Start() and End() */\\n\\tfunction Diagram(twOptions, items) {\\n\\t\\tif(!(this instanceof Diagram)) return new Diagram(twOptions, [].slice.call(arguments,1));\\n\\t\\tFakeSVG.call(this, 'svg', {class: Diagram.DIAGRAM_CLASS});\\n\\t\\tthis.items = items.map(wrapString);\\n\\t\\tthis.items.unshift(new Start(twOptions.start));\\n\\t\\tthis.items.push(new End(twOptions.end));\\n\\t\\tthis.width = this.items.reduce(function(sofar, el) { return sofar + el.width + (el.needsSpace?20:0)}, 0)+1;\\n\\t\\tthis.up = Math.max.apply(null, this.items.map(function (x) { return x.up; }));\\n\\t\\tthis.down = Math.max.apply(null, this.items.map(function (x) { return x.down; }));\\n\\t\\tthis.formatted = false;\\t\\t\\n\\t}\\n\\tsubclassOf(Diagram, FakeSVG);\\n\\tfor(var option in options) {\\n\\t\\tDiagram[option] = options[option];\\n\\t}\\n\\tDiagram.prototype.format = function(paddingt, paddingr, paddingb, paddingl) {\\n\\t\\tpaddingt = unnull(paddingt, 20);\\n\\t\\tpaddingr = unnull(paddingr, paddingt, 20);\\n\\t\\tpaddingb = unnull(paddingb, paddingt, 20);\\n\\t\\tpaddingl = unnull(paddingl, paddingr, 20);\\n\\t\\tvar x = paddingl;\\n\\t\\tvar y = paddingt;\\n\\t\\ty += this.up;\\n\\t\\tvar g = FakeSVG('g', Diagram.STROKE_ODD_PIXEL_LENGTH ? {transform:'translate(.5 .5)'} : {});\\n\\t\\tfor(var i = 0; i \u003C this.items.length; i++) {\\n\\t\\t\\tvar item = this.items[i];\\n\\t\\t\\tif(item.needsSpace) {\\n\\t\\t\\t\\tPath(x,y).h(10).addTo(g);\\n\\t\\t\\t\\tx += 10;\\n\\t\\t\\t}\\n\\t\\t\\titem.format(x, y, item.width).addTo(g);\\n\\t\\t\\tx += item.width;\\n\\t\\t\\tif(item.needsSpace) {\\n\\t\\t\\t\\tPath(x,y).h(10).addTo(g);\\n\\t\\t\\t\\tx += 10;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\tthis.attrs.width = this.width + paddingl + paddingr;\\n\\t\\tthis.attrs.height = this.up + this.down + paddingt + paddingb;\\n\\t\\tthis.attrs.viewBox = \\\"0 0 \\\" + this.attrs.width + \\\" \\\" + this.attrs.height;\\n\\t\\tg.addTo(this);\\n\\t\\tthis.formatted = true;\\n\\t\\treturn this;\\n\\t}\\n\\tDiagram.prototype.addTo = function(parent) {\\n\\t\\tvar scriptTag = document.getElementsByTagName('script');\\n\\t\\tscriptTag = scriptTag[scriptTag.length - 1];\\n\\t\\tvar parentTag = scriptTag.parentNode;\\n\\t\\tparent = parent || parentTag;\\n\\t\\treturn this.$super.addTo.call(this, parent);\\n\\t}\\n\\tDiagram.prototype.toSVG = function() {\\n\\t\\tif (!this.formatted) {\\n\\t\\t\\tthis.format();\\n\\t\\t}\\n\\t\\treturn this.$super.toSVG.call(this);\\n\\t}\\n\\tDiagram.prototype.toString = function() {\\n\\t\\tif (!this.formatted) {\\n\\t\\t\\tthis.format();\\n\\t\\t}\\n\\t\\treturn this.$super.toString.call(this);\\n\\t}\\n\\n\\tfunction Sequence(items) {\\n\\t\\tif(!(this instanceof Sequence)) return new Sequence([].slice.call(arguments));\\n\\t\\tFakeSVG.call(this, 'g');\\n\\t\\tthis.items = items.map(wrapString);\\n\\t\\tthis.width = this.items.reduce(function(sofar, el) { return sofar + el.width + (el.needsSpace?20:0)}, 0);\\n\\t\\tthis.up = this.items.reduce(function(sofar,el) { return Math.max(sofar, el.up)}, 0);\\n\\t\\tthis.down = this.items.reduce(function(sofar,el) { return Math.max(sofar, el.down)}, 0);\\n\\t}\\n\\tsubclassOf(Sequence, FakeSVG);\\n\\tSequence.prototype.format = function(x,y,width) {\\n\\t\\t// Hook up the two sides if this is narrower than its stated width.\\n\\t\\tvar gaps = determineGaps(width, this.width);\\n\\t\\tPath(x,y).h(gaps[0]).addTo(this);\\n\\t\\tPath(x+gaps[0]+this.width,y).h(gaps[1]).addTo(this);\\n\\t\\tx += gaps[0];\\n\\n\\t\\tfor(var i = 0; i \u003C this.items.length; i++) {\\n\\t\\t\\tvar item = this.items[i];\\n\\t\\t\\tif(item.needsSpace) {\\n\\t\\t\\t\\tPath(x,y).h(10).addTo(this);\\n\\t\\t\\t\\tx += 10;\\n\\t\\t\\t}\\n\\t\\t\\titem.format(x, y, item.width).addTo(this);\\n\\t\\t\\tx += item.width;\\n\\t\\t\\tif(item.needsSpace) {\\n\\t\\t\\t\\tPath(x,y).h(10).addTo(this);\\n\\t\\t\\t\\tx += 10;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\treturn this;\\n\\t}\\n\\n\\tfunction Choice(normal, items) {\\n\\t\\tif(!(this instanceof Choice)) return new Choice(normal, [].slice.call(arguments,1));\\n\\t\\tFakeSVG.call(this, 'g');\\n\\t\\tif( typeof normal !== \\\"number\\\" || normal !== Math.floor(normal) ) {\\n\\t\\t\\tthrow new TypeError(\\\"The first argument of Choice() must be an integer.\\\");\\n\\t\\t} else if(normal \u003C 0 || normal >= items.length) {\\n\\t\\t\\tthrow new RangeError(\\\"The first argument of Choice() must be an index for one of the items.\\\");\\n\\t\\t} else {\\n\\t\\t\\tthis.normal = normal;\\n\\t\\t}\\n\\t\\tthis.items = items.map(wrapString);\\n\\t\\tthis.width = this.items.reduce(function(sofar, el){return Math.max(sofar, el.width)},0) + Diagram.ARC_RADIUS*4;\\n\\t\\tthis.up = this.down = 0;\\n\\t\\tfor(var i = 0; i \u003C this.items.length; i++) {\\n\\t\\t\\tvar item = this.items[i];\\n\\t\\t\\tif(i \u003C normal) { this.up += Math.max(Diagram.ARC_RADIUS,item.up + item.down + Diagram.VERTICAL_SEPARATION); }\\n\\t\\t\\tif(i == normal) { this.up += Math.max(Diagram.ARC_RADIUS, item.up); this.down += Math.max(Diagram.ARC_RADIUS, item.down); }\\n\\t\\t\\tif(i > normal) { this.down += Math.max(Diagram.ARC_RADIUS,Diagram.VERTICAL_SEPARATION + item.up + item.down); }\\n\\t\\t}\\n\\t}\\n\\tsubclassOf(Choice, FakeSVG);\\n\\tChoice.prototype.format = function(x,y,width) {\\n\\t\\t// Hook up the two sides if this is narrower than its stated width.\\n\\t\\tvar gaps = determineGaps(width, this.width);\\n\\t\\tPath(x,y).h(gaps[0]).addTo(this);\\n\\t\\tPath(x+gaps[0]+this.width,y).h(gaps[1]).addTo(this);\\n\\t\\tx += gaps[0];\\n\\n\\t\\tvar last = this.items.length -1;\\n\\t\\tvar innerWidth = this.width - Diagram.ARC_RADIUS*4;\\n\\n\\t\\t// Do the elements that curve above\\n\\t\\tfor(var i = this.normal - 1; i >= 0; i--) {\\n\\t\\t\\tvar item = this.items[i];\\n\\t\\t\\tif( i == this.normal - 1 ) {\\n\\t\\t\\t\\tvar distanceFromY = Math.max(Diagram.ARC_RADIUS*2, this.items[i+1].up + Diagram.VERTICAL_SEPARATION + item.down);\\n\\t\\t\\t}\\n\\t\\t\\tPath(x,y).arc('se').up(distanceFromY - Diagram.ARC_RADIUS*2).arc('wn').addTo(this);\\n\\t\\t\\titem.format(x+Diagram.ARC_RADIUS*2,y - distanceFromY,innerWidth).addTo(this);\\n\\t\\t\\tPath(x+Diagram.ARC_RADIUS*2+innerWidth, y-distanceFromY).arc('ne').down(distanceFromY - Diagram.ARC_RADIUS*2).arc('ws').addTo(this);\\n\\t\\t\\tdistanceFromY += Math.max(Diagram.ARC_RADIUS, item.up + Diagram.VERTICAL_SEPARATION + (i == 0 ? 0 : this.items[i-1].down));\\n\\t\\t}\\n\\n\\t\\t// Do the straight-line path.\\n\\t\\tPath(x,y).right(Diagram.ARC_RADIUS*2).addTo(this);\\n\\t\\tthis.items[this.normal].format(x+Diagram.ARC_RADIUS*2, y, innerWidth).addTo(this);\\n\\t\\tPath(x+Diagram.ARC_RADIUS*2+innerWidth, y).right(Diagram.ARC_RADIUS*2).addTo(this);\\n\\n\\t\\t// Do the elements that curve below\\n\\t\\tfor(var i = this.normal+1; i \u003C= last; i++) {\\n\\t\\t\\tvar item = this.items[i];\\n\\t\\t\\tif( i == this.normal + 1 ) {\\n\\t\\t\\t\\tvar distanceFromY = Math.max(Diagram.ARC_RADIUS*2, this.items[i-1].down + Diagram.VERTICAL_SEPARATION + item.up);\\n\\t\\t\\t}\\n\\t\\t\\tPath(x,y).arc('ne').down(distanceFromY - Diagram.ARC_RADIUS*2).arc('ws').addTo(this);\\n\\t\\t\\titem.format(x+Diagram.ARC_RADIUS*2, y+distanceFromY, innerWidth).addTo(this);\\n\\t\\t\\tPath(x+Diagram.ARC_RADIUS*2+innerWidth, y+distanceFromY).arc('se').up(distanceFromY - Diagram.ARC_RADIUS*2).arc('wn').addTo(this);\\n\\t\\t\\tdistanceFromY += Math.max(Diagram.ARC_RADIUS, item.down + Diagram.VERTICAL_SEPARATION + (i == last ? 0 : this.items[i+1].up));\\n\\t\\t}\\n\\n\\t\\treturn this;\\n\\t}\\n\\n\\tfunction Optional(item, skip) {\\n\\t\\tif( skip === undefined )\\n\\t\\t\\treturn Choice(1, Skip(), item);\\n\\t\\telse if ( skip === \\\"skip\\\" )\\n\\t\\t\\treturn Choice(0, Skip(), item);\\n\\t\\telse\\n\\t\\t\\tthrow \\\"Unknown value for Optional()'s 'skip' argument.\\\";\\n\\t}\\n\\n/* TiddlyWiki: added wantArrow */\\n\\tfunction OneOrMore(item, rep, wantArrow) {\\n\\t\\tif(!(this instanceof OneOrMore)) return new OneOrMore(item, rep, wantArrow);\\n\\t\\tFakeSVG.call(this, 'g');\\n\\n/* TiddlyWiki: code added */\\n\\t\\tthis.wantArrow = wantArrow;\\n\\n\\t\\trep = rep || (new Skip);\\n\\t\\tthis.item = wrapString(item);\\n\\t\\tthis.rep = wrapString(rep);\\n\\t\\tthis.width = Math.max(this.item.width, this.rep.width) + Diagram.ARC_RADIUS*2;\\n\\t\\tthis.up = this.item.up;\\n\\t\\tthis.down = Math.max(Diagram.ARC_RADIUS*2, this.item.down + Diagram.VERTICAL_SEPARATION + this.rep.up + this.rep.down);\\n\\n/* TiddlyWiki: moved calculation of distanceFromY (of the repeat arc) to here */\\n\\t\\tthis.distanceFromY = Math.max(Diagram.ARC_RADIUS*2, this.item.down+Diagram.VERTICAL_SEPARATION+this.rep.up);\\n\\t}\\n\\tsubclassOf(OneOrMore, FakeSVG);\\n\\tOneOrMore.prototype.needsSpace = true;\\n\\tOneOrMore.prototype.format = function(x,y,width) {\\n\\t\\t// Hook up the two sides if this is narrower than its stated width.\\n\\t\\tvar gaps = determineGaps(width, this.width);\\n\\t\\tPath(x,y).h(gaps[0]).addTo(this);\\n\\t\\tPath(x+gaps[0]+this.width,y).h(gaps[1]).addTo(this);\\n\\t\\tx += gaps[0];\\n\\n\\t\\t// Draw item\\n\\t\\tPath(x,y).right(Diagram.ARC_RADIUS).addTo(this);\\n\\t\\tthis.item.format(x+Diagram.ARC_RADIUS,y,this.width-Diagram.ARC_RADIUS*2).addTo(this);\\n\\t\\tPath(x+this.width-Diagram.ARC_RADIUS,y).right(Diagram.ARC_RADIUS).addTo(this);\\n\\n\\t\\t// Draw repeat arc\\n/* TiddlyWiki: moved calculation of distanceFromY from here to constructor */\\n\\t\\tvar distanceFromY = this.distanceFromY;\\n\\t\\t\\n\\t\\tPath(x+Diagram.ARC_RADIUS,y).arc('nw').down(distanceFromY-Diagram.ARC_RADIUS*2).arc('ws').addTo(this);\\n\\t\\tthis.rep.format(x+Diagram.ARC_RADIUS, y+distanceFromY, this.width - Diagram.ARC_RADIUS*2).addTo(this);\\n\\t\\tPath(x+this.width-Diagram.ARC_RADIUS, y+distanceFromY).arc('se').up(distanceFromY-Diagram.ARC_RADIUS*2).arc('en').addTo(this);\\n\\t\\t\\n/* TiddlyWiki: code added */\\n\\t\\tif(this.wantArrow) {\\n\\t\\t\\tvar arrowSize = Diagram.ARC_RADIUS/2;\\n\\t\\t\\t// Compensate for the illusion that makes the arrow look unbalanced if it's too close to the curve below it\\n\\t\\t\\tvar multiplier = (distanceFromY \u003C arrowSize*5) ? 1.2 : 1;\\n\\t\\t\\tPath(x-arrowSize, y+distanceFromY/2 + arrowSize/2, {class:\\\"arrow\\\"}).\\n\\t\\t\\t\\tline(arrowSize, -arrowSize).line(arrowSize*multiplier, arrowSize).addTo(this);\\n\\t\\t}\\n\\n\\t\\treturn this;\\n\\t}\\n\\n\\tfunction ZeroOrMore(item, rep, skip, wantArrow) {\\n\\t\\treturn Optional(OneOrMore(item, rep, wantArrow), skip);\\n\\t}\\n\\n/* TiddlyWiki: added type parameter */\\n\\tfunction Start(type) {\\n\\t\\tif(!(this instanceof Start)) return new Start(type);\\n\\t\\tFakeSVG.call(this, 'path');\\n\\t\\tthis.type = type || 'single'\\n\\t\\tthis.width = (this.type === 'double') ? 20 : 10;\\n\\t\\tthis.up = 10;\\n\\t\\tthis.down = 10;\\n\\t}\\n\\tsubclassOf(Start, FakeSVG);\\n\\tStart.prototype.format = function(x,y) {\\n/* TiddlyWiki: added types */\\n\\t\\tif(this.type === 'single') {\\n\\t\\t\\tthis.attrs.d = 'M '+x+' '+(y-10)+' v 20 m 0 -10 h 10.5';\\n\\t\\t} else if(this.type === 'double') {\\n\\t\\t\\tthis.attrs.d = 'M '+x+' '+(y-10)+' v 20 m 10 -20 v 20 m -10 -10 h 20.5';\\n\\t\\t} else { // 'none'\\n\\t\\t\\tthis.attrs.d = 'M '+x+' '+y+' h 10.5';\\n\\t\\t}\\n\\t\\treturn this;\\n\\t}\\n\\n/* TiddlyWiki: added type parameter */\\n\\tfunction End(type) {\\n\\t\\tif(!(this instanceof End)) return new End(type);\\n\\t\\tFakeSVG.call(this, 'path');\\n\\t\\tthis.type = type || 'double';\\n\\t\\tthis.width = (this.type === 'double') ? 20 : 10;\\n\\t\\tthis.up = 10;\\n\\t\\tthis.down = 10;\\n\\t}\\n\\tsubclassOf(End, FakeSVG);\\n\\tEnd.prototype.format = function(x,y) {\\n/* TiddlyWiki: added types */\\n\\t\\tif(this.type === 'single') {\\n\\t\\t\\tthis.attrs.d = 'M '+x+' '+y+' h 10 m 0 -10 v 20';\\n\\t\\t} else if(this.type === 'double') {\\n\\t\\t\\tthis.attrs.d = 'M '+x+' '+y+' h 20 m -10 -10 v 20 m 10 -20 v 20';\\n\\t\\t} else { // 'none'\\n\\t\\t\\tthis.attrs.d = 'M '+x+' '+y+' h 10';\\n\\t\\t}\\n\\t\\treturn this;\\n\\t}\\n\\n\\tfunction Terminal(text) {\\n\\t\\tif(!(this instanceof Terminal)) return new Terminal(text);\\n\\t\\tFakeSVG.call(this, 'g');\\n\\t\\tthis.text = text;\\n\\t\\tthis.width = text.length * 8 + 20; /* Assume that each char is .5em, and that the em is 16px */\\n\\t\\tthis.up = 11;\\n\\t\\tthis.down = 11;\\n\\t}\\n\\tsubclassOf(Terminal, FakeSVG);\\n\\tTerminal.prototype.needsSpace = true;\\n\\tTerminal.prototype.format = function(x, y, width) {\\n\\t\\t// Hook up the two sides if this is narrower than its stated width.\\n\\t\\tvar gaps = determineGaps(width, this.width);\\n\\t\\tPath(x,y).h(gaps[0]).addTo(this);\\n\\t\\tPath(x+gaps[0]+this.width,y).h(gaps[1]).addTo(this);\\n\\t\\tx += gaps[0];\\n\\n\\t\\tFakeSVG('rect', {x:x, y:y-11, width:this.width, height:this.up+this.down, rx:10, ry:10}).addTo(this);\\n\\t\\tFakeSVG('text', {x:x+this.width/2, y:y+4}, this.text).addTo(this);\\n\\t\\treturn this;\\n\\t}\\n\\n\\tfunction NonTerminal(text) {\\n\\t\\tif(!(this instanceof NonTerminal)) return new NonTerminal(text);\\n\\t\\tFakeSVG.call(this, 'g');\\n\\t\\tthis.text = text;\\n\\t\\tthis.width = text.length * 8 + 20;\\n\\t\\tthis.up = 11;\\n\\t\\tthis.down = 11;\\n\\t}\\n\\tsubclassOf(NonTerminal, FakeSVG);\\n\\tNonTerminal.prototype.needsSpace = true;\\n\\tNonTerminal.prototype.format = function(x, y, width) {\\n\\t\\t// Hook up the two sides if this is narrower than its stated width.\\n\\t\\tvar gaps = determineGaps(width, this.width);\\n\\t\\tPath(x,y).h(gaps[0]).addTo(this);\\n\\t\\tPath(x+gaps[0]+this.width,y).h(gaps[1]).addTo(this);\\n\\t\\tx += gaps[0];\\n\\n\\t\\tFakeSVG('rect', {x:x, y:y-11, width:this.width, height:this.up+this.down}).addTo(this);\\n\\t\\tFakeSVG('text', {x:x+this.width/2, y:y+4}, this.text).addTo(this);\\n\\t\\treturn this;\\n\\t}\\n\\n\\tfunction Comment(text) {\\n\\t\\tif(!(this instanceof Comment)) return new Comment(text);\\n\\t\\tFakeSVG.call(this, 'g');\\n\\t\\tthis.text = text;\\n\\t\\tthis.width = text.length * 7 + 10;\\n\\t\\tthis.up = 11;\\n\\t\\tthis.down = 11;\\n\\t}\\n\\tsubclassOf(Comment, FakeSVG);\\n\\tComment.prototype.needsSpace = true;\\n\\tComment.prototype.format = function(x, y, width) {\\n\\t\\t// Hook up the two sides if this is narrower than its stated width.\\n\\t\\tvar gaps = determineGaps(width, this.width);\\n\\t\\tPath(x,y).h(gaps[0]).addTo(this);\\n\\t\\tPath(x+gaps[0]+this.width,y).h(gaps[1]).addTo(this);\\n\\t\\tx += gaps[0];\\n\\n\\t\\tFakeSVG('text', {x:x+this.width/2, y:y+5, class:'comment'}, this.text).addTo(this);\\n\\t\\treturn this;\\n\\t}\\n\\n\\tfunction Skip() {\\n\\t\\tif(!(this instanceof Skip)) return new Skip();\\n\\t\\tFakeSVG.call(this, 'g');\\n\\t\\tthis.width = 0;\\n\\t\\tthis.up = 0;\\n\\t\\tthis.down = 0;\\n\\t}\\n\\tsubclassOf(Skip, FakeSVG);\\n\\tSkip.prototype.format = function(x, y, width) {\\n\\t\\tPath(x,y).right(width).addTo(this);\\n\\t\\treturn this;\\n\\t}\\n\\t\\n/* TiddlyWiki: added linking ability */\\n\\tfunction Link(item,options) {\\n\\t\\tif(!(this instanceof Link)) return new Link(item,options);\\n\\t\\tFakeSVG.call(this,'a',options);\\n\\t\\tthis.item = item;\\n\\t\\tthis.width = item.width;\\n\\t\\tthis.up = item.up;\\n\\t\\tthis.down = item.down;\\n\\t}\\n\\tsubclassOf(Link, FakeSVG);\\n\\tLink.prototype.needsSpace = true;\\n\\tLink.prototype.format = function(x, y, width) {\\n\\t\\tthis.item.format(x,y,width).addTo(this);\\n\\t\\treturn this;\\n\\t}\\n\\n/* TiddlyWiki: this block replaces the export mechanism in the original library */\\n\\tif (exports) {\\n\\t\\texports.Diagram = Diagram;\\n\\t\\texports.Sequence = Sequence;\\n\\t\\texports.Choice = Choice;\\n\\t\\texports.Optional = Optional;\\n\\t\\texports.OneOrMore = OneOrMore;\\n\\t\\texports.ZeroOrMore = ZeroOrMore;\\n\\t\\texports.Terminal = Terminal;\\n\\t\\texports.NonTerminal = NonTerminal;\\n\\t\\texports.Comment = Comment;\\n\\t\\texports.Skip = Skip;\\n\\t\\texports.Link = Link;\\n\\t};\\n})(\\n\\t{\\n\\tVERTICAL_SEPARATION: 8,\\n\\tARC_RADIUS: 10,\\n\\tDIAGRAM_CLASS: 'railroad-diagram',\\n\\tSTROKE_ODD_PIXEL_LENGTH: true,\\n\\tINTERNAL_ALIGNMENT: 'center',\\n\\t}\\n);\\n\\n/* TiddlyWiki: removed assignments to properties of the window object */\\n\\n})($tw.node ? $tw.fakeDocument : window.document)\\n\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/tiddlywiki/railroad/railroad-diagrams.js\",\"module-type\":\"library\"},\"$:/plugins/tiddlywiki/railroad/parser.js\":{\"title\":\"$:/plugins/tiddlywiki/railroad/parser.js\",\"text\":\"/*\\\\\\ntitle: $:/plugins/tiddlywiki/railroad/parser.js\\ntype: application/javascript\\nmodule-type: library\\n\\nParser for the source of a railroad diagram.\\n\\n[:x]\\t\\t\\toptional, normally included\\n[x]\\t\\t\\t\\toptional, normally omitted\\n{x}\\t\\t\\t\\tone or more\\n{x +\\\",\\\"}\\t\\tone or more, comma-separated\\n[{:x}]\\t\\t\\tzero or more, normally included\\n[{:x +\\\",\\\"}]\\t\\tzero or more, comma-separated, normally included\\n[{x}]\\t\\t\\tzero or more, normally omitted\\n[{x +\\\",\\\"}]\\t\\tzero or more, comma-separated, normally omitted\\nx y z\\t\\t\\tsequence\\n\u003C-x y z->\\t\\texplicit sequence\\n(x|y|z)\\t\\t\\talternatives\\n(x|:y|z)\\t\\talternatives, normally y\\n\\\"x\\\"\\t\\t\\t\\tterminal\\n\u003C\\\"x\\\">\\t\\t\\tnonterminal\\n/\\\"blah\\\"/\\t\\tcomment\\n-\\t\\t\\t\\tdummy\\n[[x|\\\"tiddler\\\"]]\\tlink\\n{{\\\"tiddler\\\"}}\\ttransclusion\\n\\n\\\"x\\\" can also be written 'x' or \\\"\\\"\\\"x\\\"\\\"\\\"\\n\\npragmas:\\n\\t\\\\arrow yes|no\\n\\t\\\\debug yes|no\\n\\t\\\\start single|double|none\\n\\t\\\\end single|double|none\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nvar components = require(\\\"$:/plugins/tiddlywiki/railroad/components.js\\\").components;\\n\\nvar Parser = function(widget,source,options) {\\n\\tthis.widget = widget;\\n\\tthis.source = source;\\n\\tthis.options = options;\\n\\tthis.tokens = this.tokenise(source);\\n\\tthis.tokenPos = 0;\\n\\tthis.advance();\\n\\tthis.content = this.parseContent();\\n\\tthis.root = new components.Root(this.content);\\n\\tthis.checkFinished();\\n};\\n\\n/////////////////////////// Parser dispatch\\n\\nParser.prototype.parseContent = function() {\\n\\tvar content = [];\\n\\t// Parse zero or more components\\n\\twhile(true) {\\n\\t\\tvar component = this.parseComponent();\\n\\t\\tif(!component) {\\n\\t\\t\\tbreak;\\n\\t\\t}\\n\\t\\tif(!component.isPragma) {\\n\\t\\t\\tcontent.push(component);\\n\\t\\t}\\n\\t}\\n\\treturn content;\\n};\\n\\nParser.prototype.parseComponent = function() {\\n\\tvar component = null;\\n\\tif(this.token) {\\n\\t\\tif(this.at(\\\"string\\\")) {\\n\\t\\t\\tcomponent = this.parseTerminal();\\n\\t\\t} else if(this.at(\\\"name\\\")) {\\n\\t\\t\\tcomponent = this.parseName();\\n\\t\\t} else if(this.at(\\\"pragma\\\")) {\\n\\t\\t\\tcomponent = this.parsePragma();\\n\\t\\t} else {\\n\\t\\t\\tswitch(this.token.value) {\\n\\t\\t\\t\\tcase \\\"[\\\":\\n\\t\\t\\t\\t\\tcomponent = this.parseOptional();\\n\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\tcase \\\"{\\\":\\n\\t\\t\\t\\t\\tcomponent = this.parseRepeated();\\n\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\tcase \\\"\u003C\\\":\\n\\t\\t\\t\\t\\tcomponent = this.parseNonterminal();\\n\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\tcase \\\"(\\\":\\n\\t\\t\\t\\t\\tcomponent = this.parseChoice();\\n\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\tcase \\\"/\\\":\\n\\t\\t\\t\\t\\tcomponent = this.parseComment();\\n\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\tcase \\\"[[\\\":\\n\\t\\t\\t\\t\\tcomponent = this.parseLink();\\n\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\tcase \\\"{{\\\":\\n\\t\\t\\t\\t\\tcomponent = this.parseTransclusion();\\n\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\tcase \\\"\u003C-\\\":\\n\\t\\t\\t\\t\\tcomponent = this.parseSequence();\\n\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\tcase \\\"-\\\":\\n\\t\\t\\t\\t\\tcomponent = this.parseDummy();\\n\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\treturn component;\\n};\\n\\n/////////////////////////// Specific components\\n\\nParser.prototype.parseChoice = function() {\\n\\t// Consume the (\\n\\tthis.advance();\\n\\tvar content = [],\\n\\t\\tcolon = -1;\\n\\tdo {\\n\\t\\t// Allow at most one branch to be prefixed with a colon\\n\\t\\tif(colon === -1 && this.eat(\\\":\\\")) {\\n\\t\\t\\tcolon = content.length;\\n\\t\\t}\\n\\t\\t// Parse the next branch\\n\\t\\tcontent.push(this.parseContent());\\n\\t} while(this.eat(\\\"|\\\"));\\n\\t// Consume the closing bracket\\n\\tthis.close(\\\")\\\");\\n\\t// Create a component\\n\\treturn new components.Choice(content,colon === -1 ? 0 : colon);\\n};\\n\\nParser.prototype.parseComment = function() {\\n\\t// Consume the /\\n\\tthis.advance();\\n\\t// The comment's content should be in a string literal\\n\\tvar content = this.expectString(\\\"after /\\\");\\n\\t// Consume the closing /\\n\\tthis.close(\\\"/\\\");\\n\\t// Create a component\\n\\treturn new components.Comment(content);\\n};\\n\\nParser.prototype.parseDummy = function() {\\n\\t// Consume the -\\n\\tthis.advance();\\n\\t// Create a component\\n\\treturn new components.Dummy();\\n};\\n\\nParser.prototype.parseLink = function() {\\n\\t// Consume the [[\\n\\tthis.advance();\\n\\t// Parse the content\\n\\tvar content = this.parseContent();\\n\\t// Consume the |\\n\\tthis.expect(\\\"|\\\");\\n\\t// Consume the target\\n\\tvar target = this.expectNameOrString(\\\"as link target\\\");\\n\\t// Prepare some attributes for the SVG \\\"a\\\" element to carry\\n\\tvar options = {\\\"data-tw-target\\\": target};\\n\\tif($tw.utils.isLinkExternal(target)) {\\n\\t\\toptions[\\\"data-tw-external\\\"] = true;\\n\\t}\\n\\t// Consume the closing ]]\\n\\tthis.close(\\\"]]\\\");\\n\\t// Create a component\\n\\treturn new components.Link(content,options);\\n};\\n\\nParser.prototype.parseName = function() {\\n\\t// Create a component\\n\\tvar component = new components.Nonterminal(this.token.value);\\n\\t// Consume the name\\n\\tthis.advance();\\n\\treturn component;\\n};\\n\\nParser.prototype.parseNonterminal = function() {\\n\\t// Consume the \u003C\\n\\tthis.advance();\\n\\t// The nonterminal's name should be in a string literal\\n\\tvar content = this.expectString(\\\"after \u003C\\\");\\n\\t// Consume the closing bracket\\n\\tthis.close(\\\">\\\");\\n\\t// Create a component\\n\\treturn new components.Nonterminal(content);\\n};\\n\\nParser.prototype.parseOptional = function() {\\n\\tvar wantArrow = this.options.arrow;\\n\\t// Consume the [\\n\\tthis.advance();\\n\\t// Consume the { if there is one\\n\\tvar repeated = this.eat(\\\"{\\\");\\n\\t// Note whether omission is the normal route\\n\\tvar normal = this.eat(\\\":\\\");\\n\\t// Parse the content\\n\\tvar content = this.parseContent(),\\n\\t\\tseparator = null;\\n\\t// Parse the separator if there is one\\n\\tif(repeated && this.eat(\\\"+\\\")) {\\n\\t\\tseparator = this.parseContent();\\n\\t}\\n\\t// Consume the closing brackets\\n\\tif(repeated) {\\n\\t\\tthis.close(\\\"}\\\");\\n\\t}\\n\\tthis.close(\\\"]\\\");\\n\\t// Create a component\\n\\treturn repeated ? new components.OptionalRepeated(content,separator,normal,wantArrow)\\n\\t\\t: new components.Optional(content,normal);\\n};\\n\\nParser.prototype.parseRepeated = function() {\\n\\tvar wantArrow = this.options.arrow;\\n\\t// Consume the {\\n\\tthis.advance();\\n\\t// Parse the content\\n\\tvar content = this.parseContent(),\\n\\t\\tseparator = null;\\n\\t// Parse the separator if there is one\\n\\tif(this.eat(\\\"+\\\")) {\\n\\t\\tseparator = this.parseContent();\\n\\t}\\n\\t// Consume the closing bracket\\n\\tthis.close(\\\"}\\\");\\n\\t// Create a component\\n\\treturn new components.Repeated(content,separator,wantArrow);\\n};\\n\\nParser.prototype.parseSequence = function() {\\n\\t// Consume the \u003C-\\n\\tthis.advance();\\n\\t// Parse the content\\n\\tvar content = this.parseContent();\\n\\t// Consume the closing ->\\n\\tthis.close(\\\"->\\\");\\n\\t// Create a component\\n\\treturn new components.Sequence(content);\\n};\\n\\nParser.prototype.parseTerminal = function() {\\n\\tvar component = new components.Terminal(this.token.value);\\n\\t// Consume the string literal\\n\\tthis.advance();\\n return component;\\n};\\n\\nParser.prototype.parseTransclusion = function() {\\n\\t// Consume the {{\\n\\tthis.advance();\\n\\t// Consume the text reference\\n\\tvar textRef = this.expectNameOrString(\\\"as transclusion source\\\");\\n\\t// Consume the closing }}\\n\\tthis.close(\\\"}}\\\");\\n\\t// Retrieve the content of the text reference\\n\\tvar source = this.widget.wiki.getTextReference(textRef,\\\"\\\",this.widget.getVariable(\\\"currentTiddler\\\"));\\n\\t// Parse the content\\n\\tvar content = new Parser(this.widget,source).content;\\n\\t// Create a component\\n\\treturn new components.Transclusion(content);\\n};\\n\\n/////////////////////////// Pragmas\\n\\nParser.prototype.parsePragma = function() {\\n\\t// Create a dummy component\\n\\tvar component = { isPragma: true };\\n\\t// Consume the pragma\\n\\tvar pragma = this.token.value;\\n\\tthis.advance();\\n\\t// Apply the setting\\n\\tif(pragma === \\\"arrow\\\") {\\n\\t\\tthis.options.arrow = this.parseYesNo(pragma);\\t\\t\\n\\t} else if(pragma === \\\"debug\\\") {\\n\\t\\tthis.options.debug = true;\\n\\t} else if(pragma === \\\"start\\\") {\\n\\t\\tthis.options.start = this.parseTerminusStyle(pragma);\\t\\t\\n\\t} else if(pragma === \\\"end\\\") {\\n\\t\\tthis.options.end = this.parseTerminusStyle(pragma);\\t\\t\\n\\t} else {\\n\\t\\tthrow \\\"Invalid pragma\\\";\\n\\t}\\n\\treturn component;\\n};\\n\\nParser.prototype.parseYesNo = function(pragma) {\\n\\treturn this.parseSetting([\\\"yes\\\",\\\"no\\\"],pragma) === \\\"yes\\\";\\n}\\n\\nParser.prototype.parseTerminusStyle = function(pragma) {\\n\\treturn this.parseSetting([\\\"single\\\",\\\"double\\\",\\\"none\\\"],pragma);\\n}\\n\\nParser.prototype.parseSetting = function(options,pragma) {\\n\\tif(this.at(\\\"name\\\") && options.indexOf(this.token.value) !== -1) {\\n\\t\\treturn this.tokenValueEaten();\\t\\t\\n\\t}\\n\\tthrow options.join(\\\" or \\\") + \\\" expected after \\\\\\\\\\\" + pragma;\\n}\\n\\n/////////////////////////// Token manipulation\\n\\nParser.prototype.advance = function() {\\n\\tif(this.tokenPos >= this.tokens.length) {\\n\\t\\tthis.token = null;\\n\\t}\\n\\tthis.token = this.tokens[this.tokenPos++];\\n};\\n\\nParser.prototype.at = function(token) {\\n\\treturn this.token && (this.token.type === token || this.token.type === \\\"token\\\" && this.token.value === token);\\n};\\n\\nParser.prototype.eat = function(token) {\\n\\tvar at = this.at(token);\\n\\tif(at) {\\n\\t\\tthis.advance();\\n\\t}\\n\\treturn at;\\n};\\n\\nParser.prototype.tokenValueEaten = function() {\\n\\tvar output = this.token.value;\\n\\tthis.advance();\\n\\treturn output;\\n};\\n\\nParser.prototype.close = function(token) {\\n\\tif(!this.eat(token)) {\\n\\t\\tthrow \\\"Closing \\\" + token + \\\" expected\\\";\\n\\t}\\n};\\n\\nParser.prototype.checkFinished = function() {\\n\\tif(this.token) {\\n\\t\\tthrow \\\"Syntax error at \\\" + this.token.value;\\n\\t}\\n};\\n\\nParser.prototype.expect = function(token) {\\n\\tif(!this.eat(token)) {\\n\\t\\tthrow token + \\\" expected\\\";\\n\\t}\\n};\\n\\nParser.prototype.expectString = function(context,token) {\\n\\tif(!this.at(\\\"string\\\")) {\\n\\t\\ttoken = token || \\\"String\\\";\\n\\t\\tthrow token + \\\" expected \\\" + context;\\n\\t}\\n\\treturn this.tokenValueEaten();\\n};\\n\\nParser.prototype.expectNameOrString = function(context) {\\n\\tif(this.at(\\\"name\\\")) {\\n\\t\\treturn this.tokenValueEaten();\\n\\t}\\n\\treturn this.expectString(context,\\\"Name or string\\\");\\n};\\n\\n/////////////////////////// Tokenisation\\n\\nParser.prototype.tokenise = function(source) {\\n\\tvar tokens = [],\\n\\t\\tpos = 0,\\n\\t\\tc, s, token;\\n\\twhile(pos \u003C source.length) {\\n\\t\\t// Initialise this iteration\\n\\t\\ts = token = null;\\n\\t\\t// Skip whitespace\\n\\t\\tpos = $tw.utils.skipWhiteSpace(source,pos);\\n\\t\\t// Avoid falling off the end of the string\\n\\t\\tif (pos >= source.length) {\\n\\t\\t\\tbreak;\\n\\t\\t}\\n\\t\\t// Examine the next character\\n\\t\\tc = source.charAt(pos);\\n\\t\\tif(\\\"\\\\\\\"'\\\".indexOf(c) !== -1) {\\n\\t\\t\\t// String literal\\n\\t\\t\\ttoken = $tw.utils.parseStringLiteral(source,pos);\\n\\t\\t\\tif(!token) {\\n\\t\\t\\t\\tthrow \\\"Unterminated string literal\\\";\\n\\t\\t\\t}\\n\\t\\t} else if(\\\"[]{}\\\".indexOf(c) !== -1) {\\n\\t\\t\\t// Single or double character\\n\\t\\t\\ts = source.charAt(pos+1) === c ? c + c : c;\\n\\t\\t} else if(c === \\\"\u003C\\\") {\\n\\t\\t\\t// \u003C or \u003C-\\n\\t\\t\\ts = source.charAt(pos+1) === \\\"-\\\" ? \\\"\u003C-\\\" : \\\"\u003C\\\";\\n\\t\\t} else if(c === \\\"-\\\") {\\n\\t\\t\\t// - or ->\\n\\t\\t\\ts = source.charAt(pos+1) === \\\">\\\" ? \\\"->\\\" : \\\"-\\\";\\n\\t\\t} else if(\\\"()>+/:|\\\".indexOf(c) !== -1) {\\n\\t\\t\\t// Single character\\n\\t\\t\\ts = c;\\n\\t\\t} else if(c.match(/[a-zA-Z]/)) {\\n\\t\\t\\t// Name\\n\\t\\t\\ttoken = this.readName(source,pos);\\n\\t\\t} else if(c.match(/\\\\\\\\/)) {\\n\\t\\t\\t// Pragma\\n\\t\\t\\ttoken = this.readPragma(source,pos);\\n\\t\\t} else {\\n\\t\\t\\tthrow \\\"Syntax error at \\\" + c;\\n\\t\\t}\\n\\t\\t// Add our findings to the return array\\n\\t\\tif(token) {\\n\\t\\t\\ttokens.push(token);\\n\\t\\t} else {\\n\\t\\t\\ttoken = $tw.utils.parseTokenString(source,pos,s);\\n\\t\\t\\ttokens.push(token);\\n\\t\\t}\\n\\t\\t// Prepare for the next character\\n\\t\\tpos = token.end;\\n\\t}\\n\\treturn tokens;\\n};\\n\\nParser.prototype.readName = function(source,pos) {\\n\\tvar re = /([a-zA-Z0-9_.-]+)/g;\\n\\tre.lastIndex = pos;\\n\\tvar match = re.exec(source);\\n\\tif(match && match.index === pos) {\\n\\t\\treturn {type: \\\"name\\\", value: match[1], start: pos, end: pos+match[1].length};\\n\\t} else {\\n\\t\\tthrow \\\"Invalid name\\\";\\n\\t}\\n};\\n\\nParser.prototype.readPragma = function(source,pos) {\\n\\tvar re = /([a-z]+)/g;\\n\\tpos++;\\n\\tre.lastIndex = pos;\\n\\tvar match = re.exec(source);\\n\\tif(match && match.index === pos) {\\n\\t\\treturn {type: \\\"pragma\\\", value: match[1], start: pos, end: pos+match[1].length};\\n\\t} else {\\n\\t\\tthrow \\\"Invalid pragma\\\";\\n\\t}\\n};\\n\\n/////////////////////////// Exports\\n\\nexports.parser = Parser;\\n\\n})();\",\"type\":\"application/javascript\",\"module-type\":\"library\"},\"$:/plugins/tiddlywiki/railroad/typed-parser.js\":{\"title\":\"$:/plugins/tiddlywiki/railroad/typed-parser.js\",\"text\":\"/*\\\\\\ntitle: $:/plugins/tiddlywiki/railroad/typed-parser.js\\ntype: application/javascript\\nmodule-type: parser\\n\\nThis parser wraps unadorned railroad syntax into a railroad widget\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nvar RailroadParser = function(type,text,options) {\\n\\tvar element = {\\n\\t\\t\\ttype: \\\"railroad\\\",\\n\\t\\t\\ttag: \\\"$railroad\\\",\\n\\t\\t\\ttext: text\\n\\t\\t};\\n\\tthis.tree = [element];\\nconsole.log(text);\\n};\\n\\nexports[\\\"text/vnd.tiddlywiki.railroad\\\"] = RailroadParser;\\n\\n})();\\n\\n\",\"type\":\"application/javascript\",\"module-type\":\"parser\"},\"$:/plugins/tiddlywiki/railroad/wrapper.js\":{\"title\":\"$:/plugins/tiddlywiki/railroad/wrapper.js\",\"text\":\"/*\\\\\\ntitle: $:/plugins/tiddlywiki/railroad/wrapper.js\\ntype: application/javascript\\nmodule-type: widget\\n\\nWrapper for `railroad-diagrams.js` that provides a `\u003C$railroad>` widget.\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nvar Parser = require(\\\"$:/plugins/tiddlywiki/railroad/parser.js\\\").parser,\\n\\tWidget = require(\\\"$:/core/modules/widgets/widget.js\\\").widget;\\n\\nvar RailroadWidget = function(parseTreeNode,options) {\\n\\tthis.initialise(parseTreeNode,options);\\n};\\n\\nvar RAILROAD_OPTIONS = \\\"$:/config/railroad\\\";\\n\\n/*\\nInherit from the base widget class\\n*/\\nRailroadWidget.prototype = new Widget();\\n\\n/*\\nRender this widget into the DOM\\n*/\\nRailroadWidget.prototype.render = function(parent,nextSibling) {\\n\\t// Housekeeping\\n\\tthis.parentDomNode = parent;\\n\\tthis.computeAttributes();\\n\\tthis.execute();\\n\\t// Get the source text\\n\\tvar source = this.getAttribute(\\\"text\\\",this.parseTreeNode.text || \\\"\\\");\\n\\t// Create a div to contain the SVG or error message\\n\\tvar div = this.document.createElement(\\\"div\\\");\\n\\ttry {\\n\\t\\t// Initialise options from the config tiddler or widget attributes\\n\\t\\tvar config = this.wiki.getTiddlerData(RAILROAD_OPTIONS,{});\\n\\t\\tvar options = {\\n\\t\\t\\tarrow: this.getAttribute(\\\"arrow\\\", config.arrow || \\\"yes\\\") === \\\"yes\\\",\\n\\t\\t\\tdebug: this.getAttribute(\\\"debug\\\", config.debug || \\\"no\\\") === \\\"yes\\\",\\n\\t\\t\\tstart: this.getAttribute(\\\"start\\\", config.start || \\\"single\\\"),\\n\\t\\t\\tend: this.getAttribute(\\\"end\\\", config.end || \\\"single\\\")\\n\\t\\t};\\n\\t\\t// Parse the source\\n\\t\\tvar parser = new Parser(this,source,options);\\n\\t\\t// Generate content into the div\\n\\t\\tif(parser.options.debug) {\\n\\t\\t\\tthis.renderDebug(parser,div);\\n\\t\\t} else {\\n\\t\\t\\tthis.renderSvg(parser,div);\\n\\t\\t}\\n\\t} catch(ex) {\\n\\t\\tdiv.className = \\\"tc-error\\\";\\n\\t\\tdiv.textContent = ex;\\n\\t}\\n\\t// Insert the div into the DOM\\n\\tparent.insertBefore(div,nextSibling);\\n\\tthis.domNodes.push(div);\\n};\\n\\nRailroadWidget.prototype.renderDebug = function(parser,div) {\\n\\tvar output = [\\\"\u003Cpre>\\\"];\\n\\tparser.root.debug(output, \\\"\\\");\\n\\toutput.push(\\\"\u003C/pre>\\\");\\n\\tdiv.innerHTML = output.join(\\\"\\\");\\n};\\n\\nRailroadWidget.prototype.renderSvg = function(parser,div) {\\n\\t// Generate a model of the diagram\\n\\tvar fakeSvg = parser.root.toSvg(parser.options);\\n\\t// Render the model into a tree of SVG DOM nodes\\n\\tvar svg = fakeSvg.toSVG();\\n\\t// Fill in the remaining attributes of any link nodes\\n\\tthis.patchLinks(svg);\\n\\t// Insert the SVG tree into the div\\n\\tdiv.appendChild(svg);\\n};\\n\\nRailroadWidget.prototype.patchLinks = function(node) {\\n\\tvar self = this;\\n\\tif(!$tw.node && node.hasChildNodes()) {\\n\\t\\tvar children = node.childNodes;\\n\\t\\tfor(var i=0; i\u003Cchildren.length; i++) {\\n\\t\\t\\tvar child = children[i];\\n\\t\\t\\tvar attributes = child.attributes;\\n\\t\\t\\tif(attributes) {\\n\\t\\t\\t\\t// Find each element that has a data-tw-target attribute\\n\\t\\t\\t\\tvar target = child.attributes[\\\"data-tw-target\\\"];\\n\\t\\t\\t\\tif(target !== undefined) {\\n\\t\\t\\t\\t\\ttarget = target.value;\\n\\t\\t\\t\\t\\tif(child.attributes[\\\"data-tw-external\\\"]) {\\n\\t\\t\\t\\t\\t\\t// External links are straightforward\\n\\t\\t\\t\\t\\t\\tchild.setAttribute(\\\"target\\\",\\\"_blank\\\");\\n\\t\\t\\t\\t\\t\\tchild.setAttribute(\\\"rel\\\",\\\"noopener noreferrer\\\");\\n\\t\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\t\\t// Each internal link gets its own onclick handler, capturing its own copy of target\\n\\t\\t\\t\\t\\t\\t(function(myTarget) {\\n\\t\\t\\t\\t\\t\\t\\tchild.onclick = function(event) {\\n\\t\\t\\t\\t\\t\\t\\t\\tself.dispatchLink(myTarget,event);\\n\\t\\t\\t\\t\\t\\t\\t\\treturn false;\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t})(target);\\n\\t\\t\\t\\t\\t\\ttarget = \\\"#\\\" + target;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\tchild.setAttributeNS(\\\"http://www.w3.org/1999/xlink\\\",\\\"href\\\",target);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t\\tthis.patchLinks(child);\\n\\t\\t}\\n\\t}\\n};\\n\\nRailroadWidget.prototype.refresh = function(changedTiddlers) {\\n\\tvar changedAttributes = this.computeAttributes();\\n\\tif(changedAttributes.text || changedTiddlers[RAILROAD_OPTIONS]) {\\n\\t\\tthis.refreshSelf();\\n\\t\\treturn true;\\n\\t}\\n\\treturn false;\\t\\n};\\n\\nRailroadWidget.prototype.dispatchLink = function(to,event) {\\n\\t// Send the click on its way as a navigate event\\n\\tvar bounds = this.domNodes[0].getBoundingClientRect();\\n\\tthis.dispatchEvent({\\n\\t\\ttype: \\\"tm-navigate\\\",\\n\\t\\tnavigateTo: to,\\n\\t\\tnavigateFromTitle: this.getVariable(\\\"storyTiddler\\\"),\\n\\t\\tnavigateFromNode: this,\\n\\t\\tnavigateFromClientRect: { top: bounds.top, left: bounds.left, width: bounds.width, right: bounds.right, bottom: bounds.bottom, height: bounds.height\\n\\t\\t},\\n\\t\\tnavigateSuppressNavigation: event.metaKey || event.ctrlKey || (event.button === 1)\\n\\t});\\n\\tevent.preventDefault();\\n\\tevent.stopPropagation();\\n\\treturn false;\\n};\\n\\nexports.railroad = RailroadWidget;\\n\\n})();\",\"type\":\"application/javascript\",\"module-type\":\"widget\"}}}"},
{"title":"$:/plugins/wikilabs/link-to-tabs","type":"application/json","text":"{\n \"tiddlers\": {\n \"$:/core/macros/tabs\": {\n \"title\": \"$:/core/macros/tabs\",\n \"tags\": \"$:/tags/Macro\",\n \"text\": \"\\\\define tabs(tabsList,default,state:\\\"$:/state/tab\\\",class,template,buttonTemplate,retain,actions,explicitState)\\n\u003C$set name=\\\"qualifiedState\\\" value=\u003C\u003Cqualify \\\"$state$\\\">>>\\n\u003C$set name=\\\"tabsState\\\" filter=\\\"[\u003C__explicitState__>minlength[1]] ~[\u003CqualifiedState>]\\\">\\n\u003Cdiv class=\\\"tc-tab-set $class$\\\">\\n\u003Cdiv class=\\\"tc-tab-buttons $class$\\\">\\n\u003C$list filter=\\\"$tabsList$\\\" variable=\\\"currentTab\\\" storyview=\\\"pop\\\">\u003C$set name=\\\"save-currentTiddler\\\" value=\u003C\u003CcurrentTiddler>>>\u003C$tiddler tiddler=\u003C\u003CcurrentTab>>>\u003C$button set=\u003C\u003CtabsState>> setTo=\u003C\u003CcurrentTab>> default=\\\"$default$\\\" selectedClass=\\\"tc-tab-selected\\\" tooltip={{!!tooltip}}>\\n\u003C$tiddler tiddler=\u003C\u003Csave-currentTiddler>>>\\n\u003C$set name=\\\"tv-wikilinks\\\" value=\\\"no\\\">\\n\u003C$transclude tiddler=\\\"$buttonTemplate$\\\" mode=\\\"inline\\\">\\n\u003C$transclude tiddler=\u003C\u003CcurrentTab>> field=\\\"caption\\\">\\n\u003C$macrocall $name=\\\"currentTab\\\" $type=\\\"text/plain\\\" $output=\\\"text/plain\\\"/>\\n\u003C/$transclude>\\n\u003C/$transclude>\\n\u003C/$set>\u003C/$tiddler>$actions$\u003C/$button>\u003Cspan class=\\\"wltc-link-to-tab\\\">\u003C$link overrideClass=\\\"\\\" to=\u003C\u003CcurrentTiddler>> >{{$:/core/images/link}}\u003C/$link>\u003C/span>\u003C/$tiddler>\u003C/$set>\u003C/$list>\\n\u003C/div>\\n\u003Cdiv class=\\\"tc-tab-divider $class$\\\"/>\\n\u003Cdiv class=\\\"tc-tab-content $class$\\\">\\n\u003C$list filter=\\\"$tabsList$\\\" variable=\\\"currentTab\\\">\\n\\n\u003C$reveal type=\\\"match\\\" state=\u003C\u003CtabsState>> text=\u003C\u003CcurrentTab>> default=\\\"$default$\\\" retain=\\\"\\\"\\\"$retain$\\\"\\\"\\\">\\n\\n\u003C$transclude tiddler=\\\"$template$\\\" mode=\\\"block\\\">\\n\\n\u003C$transclude tiddler=\u003C\u003CcurrentTab>> mode=\\\"block\\\"/>\\n\\n\u003C/$transclude>\\n\\n\u003C/$reveal>\\n\\n\u003C/$list>\\n\u003C/div>\\n\u003C/div>\\n\u003C/$set>\\n\u003C/$set>\\n\\\\end\\n\"\n },\n \"$:/core/ui/ControlPanel/Settings/link-to-tabs\": {\n \"title\": \"$:/core/ui/ControlPanel/Settings/link-to-tabs\",\n \"caption\": \"Link-to-Tabs plugin\",\n \"created\": \"20190712133607244\",\n \"modified\": \"20190714104631250\",\n \"tags\": \"$:/tags/ControlPanel/Settings\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\u003C$checkbox tiddler=\\\"$:/plugins/wikilabs/link-to-tabs/config\\\" field=\\\"show-all-links\\\" checked=\\\"inline-block\\\" unchecked=\\\"none\\\" default=\\\"none\\\"> Show internal tab link for ''all tabs''\u003C/$checkbox>\\n\\n\u003C$checkbox tiddler=\\\"$:/plugins/wikilabs/link-to-tabs/config\\\" field=\\\"show-single-link\\\" checked=\\\"inline-block\\\" unchecked=\\\"none\\\" default=\\\"inline-block\\\"> Show internal tab link for ''selected tabs''\u003C/$checkbox>\\n\\n\u003C$checkbox tiddler=\\\"$:/plugins/wikilabs/link-to-tabs/config\\\" field=\\\"initial-opacity\\\" checked=\\\"0\\\" unchecked=\\\"0.7\\\" default=\\\"0.7\\\"> Tab links are initially hidden and need mouse hover to become visible.\u003C/$checkbox> The transition time in seconds is: \u003C$edit-text tiddler=\\\"$:/plugins/wikilabs/link-to-tabs/config\\\" field=\\\"transition\\\" default=\\\"0.3\\\"/>\\n\\n\u003C$button message=\\\"tm-delete-tiddler\\\" param=\\\"$:/plugins/wikilabs/link-to-tabs/config\\\">\\nReset to Default!\\n\u003C/$button>\"\n },\n \"$:/plugins/wikilabs/link-to-tabs/config\": {\n \"title\": \"$:/plugins/wikilabs/link-to-tabs/config\",\n \"created\": \"20190712133008077\",\n \"initial-opacity\": \"0.7\",\n \"modified\": \"20190714104541701\",\n \"show-all-links\": \"none\",\n \"show-single-link\": \"inline-block\",\n \"transition\": \"0.3\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"This tiddler is used to configure the \\\"Link-to-tabs\\\" plugin behaviour. \\n\\nThere are 4 fields, which are used by [[$:/plugins/wikilabs/link-to-tabs/styles]] enable and disable the internal links. \\n\\n* show-all-links: {{!!show-all-links}}\\n* show-single-link: {{!!show-single-link}}\\n* initial-opacity: {{!!initial-opacity}}\\n* transition time in seconds: {{!!transition}}\\n\"\n },\n \"$:/plugins/wikilabs/link-to-tabs/history\": {\n \"title\": \"$:/plugins/wikilabs/link-to-tabs/history\",\n \"text\": \"V 2.0.1 - 2020-12-25\\n\\n* update license\\n\\nV 2.0.0 - 2020.12.05\\n\\n* Update $:/core/macros/tabs to V5.1.23\\n\\nV 1.1.1 - 2020.01.19\\n\\n* Update license link/text\\n\\nV 1.1.0 - 2019.07.14\\n\\n* Add new option: Initially hide link\\n** Transition time from hidden to visible is adjustable\\n* Added: \\\"Reset to Default\\\" button\\n\\nV 1.0.1 - 2019.02.18\\n\\n* link-to-tabs works in drop-down elements now.\\n\\nV 1.0.0 - 2019.02.14\\n\\n* Use core tabs-macro from TW 5.1.19\\n\\nV \u003C1.0.0\\n\\n* Use core tabs-macro from TW 5.1.15\\n\"\n },\n \"$:/plugins/wikilabs/link-to-tabs/license\": {\n \"title\": \"$:/plugins/wikilabs/link-to-tabs/license\",\n \"text\": \"[[Link-to-Tabs-Macro|https://wikilabs.github.io/#link-to-tabs]] (c) Mario Pietsch - 2016-2021\\n\\nhttps://opensource.org/licenses/BSD-3-Clause\\n\"\n },\n \"$:/plugins/wikilabs/link-to-tabs/styles\": {\n \"title\": \"$:/plugins/wikilabs/link-to-tabs/styles\",\n \"created\": \"20190712133348541\",\n \"modified\": \"20190714104306483\",\n \"tags\": \"$:/tags/Stylesheet\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\u003Cpre>\\n\\n.wltc-link-to-tab {\\n display: {{$:/plugins/wikilabs/link-to-tabs/config!!show-all-links}};\\n position: relative;\\n top: -1em;\\n left: -1.3em;\\n font-size: 0.7em;\\n opacity: {{$:/plugins/wikilabs/link-to-tabs/config!!initial-opacity}};\\n margin-right: -1em;\\n}\\n\\n.wltc-link-to-tab svg{\\n width: 1.4em;\\n height: 1.4em;\\n}\\n\\n.wltc-link-to-tab:hover {\\n opacity: 1;\\n transition:opacity {{$:/plugins/wikilabs/link-to-tabs/config!!transition}}s;\\n transition-timing-function: cubic-bezier(1,-0.06,.39,.89);\\n}\\n\\n.tc-tab-selected + .wltc-link-to-tab {\\n display: {{$:/plugins/wikilabs/link-to-tabs/config!!show-single-link}};\\n}\\n\\n.tc-vertical > .wltc-link-to-tab {\\n top: -1.9em;\\n left: 0;\\n height: 0;\\n float: right;\\n}\\n\\n.tc-search-results .wltc-link-to-tab a {\\n display: contents;\\n padding: 0;\\n}\\n\\n\u003C/pre>\"\n },\n \"$:/plugins/wikilabs/link-to-tabs/readme\": {\n \"title\": \"$:/plugins/wikilabs/link-to-tabs/readme\",\n \"text\": \"This plugin adds a little link icon to every tab.\\n\\n''Important:'' This plugin changes the core tabs macro.\\n\\n! Lint-to-Tabs Settings\\n\\n{{$:/core/ui/ControlPanel/Settings/link-to-tabs}}\"\n }\n }\n}","author":"Mario Pietsch","core-version":">=5.1.15","created":"20201231135216000","dependents":"","description":"Internal links are added to tabs if selected","list":"readme license history","modified":"20201231135219229","name":"Link to Tabs","plugin-type":"plugin","tags":"$:/giffmex/stroll","version":"2.0.1"},
{"created":"20230227044823507","title":"$:/SiteSubtitle","text":"inventario","modified":"20230310020527566"},
{"created":"20230227044811105","title":"$:/SiteTitle","text":"hackerspace--inventario","modified":"20230310011408263"},
{"created":"20230309220042366","title":"$:/state/advancedsearch/currentTab","text":"$:/core/ui/AdvancedSearch/Shadows","modified":"20230309220108005"},
{"created":"20230310162048797","title":"$:/state/dynamictables/20200213/exmp01/edit-view-status","type":"application/json","text":"{\n \"mode\": \"view\"\n}","modified":"20230310190637969"},
{"created":"20230310021132397","title":"$:/state/dynamictables/20200213/exmp01/expand","type":"application/json","text":"{}","modified":"20230310190636073"},
{"created":"20230309235420285","title":"$:/state/dynamictables/20200213/exmp01/sortby","type":"application/json","text":"{\n \"hasnegate\": \"true\",\n \"negate\": \"!\",\n \"sortIndex\": \"modified\"\n}","modified":"20230310190424101"},
{"created":"20230310002319766","title":"$:/state/dynamictables/20200213/exmp03/expand","type":"application/json","text":"{}","modified":"20230310010353304"},
{"created":"20230309222640973","title":"$:/state/dynamictables/Draft of 'Inventory'/sortby","type":"application/json","text":"{\n \"hasnegate\": \"false\",\n \"negate\": \"\",\n \"sortIndex\": \"imagen\"\n}","modified":"20230310003543992"},
{"created":"20230309220551429","title":"$:/state/dynamictables/Inventory/expand","type":"application/json","text":"{\n \"Estrellas\": \"show\"\n}","modified":"20230309221534881"},
{"created":"20230309220022494","text":"yes","title":"$:/state/showeditpreview","modified":"20230309225607857"},
{"created":"20230309215321470","title":"$:/state/sidebar","text":"yes","modified":"20230310011247372"},
{"created":"20230309220042368","title":"$:/state/tab--1498284803","text":"$:/core/ui/AdvancedSearch/Shadows","modified":"20230309220108005"},
{"created":"20230310155448529","title":"$:/state/tab--1571042964","text":"$:/core/ui/TiddlerInfo/Tagging","modified":"20230310155518961"},
{"created":"20230309215327486","title":"$:/state/tab--1963855381","text":"$:/core/ui/ControlPanel/Theme","modified":"20230310160428412"},
{"created":"20230310013209130","title":"$:/state/tab--694410614","text":"$:/core/ui/TiddlerInfo/Tools","modified":"20230310013216674"},
{"created":"20230309213501006","title":"$:/state/tab-1749438307","text":"$:/core/ui/ControlPanel/Appearance","modified":"20230310160424004"},
{"created":"20230309215458279","title":"$:/state/tab/sidebar--595412856","text":"$:/core/ui/SideBar/Open","modified":"20230310190410906"},
{"created":"20230310161756493","title":"$:/state/tab1-995636538","text":"hackerspace--inventario--general","modified":"20230310162046628"},
{"created":"20230310011318204","title":"$:/state/tabs/controlpanel/toolbars-1345989671","text":"$:/core/ui/ControlPanel/Toolbars/EditToolbar","modified":"20230310011318204"},
{"created":"20230309220222909","title":"$:/state/tag-manager/Types","text":"open","modified":"20230309220222909"},
{"title":"$:/status/RequireReloadDueToPluginChange","text":"no"},
{"title":"$:/StoryList","created":"20230310190544422","text":"","list":"hackerspace--inventario azul","modified":"20230310190544422"},
{"created":"20230310160430236","title":"$:/theme","text":"$:/themes/tiddlywiki/vanilla","modified":"20230310160449499"},
{"title":"$:/themes/tiddlywiki/snowwhite","name":"Snow White","author":"JeremyRuston","core-version":">=5.0.0","plugin-type":"theme","description":"Emphasises individual tiddlers","dependents":"$:/themes/tiddlywiki/vanilla","plugin-priority":"0","version":"5.2.5","type":"application/json","text":"{\"tiddlers\":{\"$:/themes/tiddlywiki/snowwhite/base\":{\"tags\":\"[[$:/tags/Stylesheet]]\",\"text\":\"\\\\define sidebarbreakpoint-minus-one()\u003C$text text={{{[{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}removesuffix[px]subtract[1]addsuffix[px]]~[{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}]}}}/>\\n\\\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline\\n.tc-sidebar-header {\\n\\ttext-shadow: 0 1px 0 \u003C\u003Ccolour sidebar-foreground-shadow>>;\\n}\\n\\n.tc-tiddler-info {\\n\\t\u003C\u003Cbox-shadow [[inset 1px 2px 3px rgba(0,0,0,0.1)]]>>\\n}\\n\\n@media screen {\\n\\t.tc-tiddler-frame {\\n\\t\\t\u003C\u003Cbox-shadow [[1px 1px 5px rgba(0, 0, 0, 0.3)]]>>\\n\\t}\\n}\\n\\n@media (max-width: \u003C\u003Csidebarbreakpoint-minus-one>>) {\\n\\t.tc-tiddler-frame {\\n\\t\\t\u003C\u003Cbox-shadow none>>\\n\\t}\\n}\\n\\n.tc-page-controls button svg, .tc-tiddler-controls button svg, .tc-topbar button svg {\\n\\t\u003C\u003Ctransition [[fill 150ms ease-in-out]]>>\\n}\\n\\n.tc-tiddler-controls button.tc-selected,\\n.tc-page-controls button.tc-selected {\\n\\t\u003C\u003Cfilter [[drop-shadow(0px -1px 2px rgba(0,0,0,0.25))]]>>\\n}\\n\\n.tc-tiddler-frame input.tc-edit-texteditor,\\n.tc-tiddler-frame select.tc-edit-texteditor {\\n\\t\u003C\u003Cbox-shadow [[inset 0 1px 8px rgba(0, 0, 0, 0.15)]]>>\\n}\\n\\n.tc-edit-tags {\\n\\t\u003C\u003Cbox-shadow [[inset 0 1px 8px rgba(0, 0, 0, 0.15)]]>>\\n}\\n\\n.tc-tiddler-frame .tc-edit-tags input.tc-edit-texteditor {\\n\\t\u003C\u003Cbox-shadow none>>\\n\\tborder: none;\\n\\toutline: none;\\n}\\n\\ntextarea.tc-edit-texteditor {\\n\\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/editorfontfamily}};\\n}\\n\\ncanvas.tc-edit-bitmapeditor {\\n\\t\u003C\u003Cbox-shadow [[2px 2px 5px rgba(0, 0, 0, 0.5)]]>>\\n}\\n\\n.tc-drop-down {\\n\\tborder-radius: 4px;\\n\\t\u003C\u003Cbox-shadow [[2px 2px 10px rgba(0, 0, 0, 0.5)]]>>\\n}\\n\\n.tc-block-dropdown {\\n\\tborder-radius: 4px;\\n\\t\u003C\u003Cbox-shadow [[2px 2px 10px rgba(0, 0, 0, 0.5)]]>>\\n}\\n\\n.tc-modal {\\n\\tborder-radius: 6px;\\n\\t\u003C\u003Cbox-shadow [[0 3px 7px rgba(0,0,0,0.3)]]>>\\n}\\n\\n.tc-modal-footer {\\n\\tborder-radius: 0 0 6px 6px;\\n\\t\u003C\u003Cbox-shadow [[inset 0 1px 0 #fff]]>>;\\n}\\n\\n.tc-alert {\\n\\tborder-radius: 6px;\\n\\t\u003C\u003Cbox-shadow [[0 3px 7px rgba(0,0,0,0.6)]]>>\\n}\\n\\n.tc-notification {\\n\\tborder-radius: 6px;\\n\\t\u003C\u003Cbox-shadow [[0 3px 7px rgba(0,0,0,0.3)]]>>\\n\\ttext-shadow: 0 1px 0 rgba(255,255,255, 0.8);\\n}\\n\\n.tc-sidebar-lists .tc-tab-set .tc-tab-divider {\\n\\tborder-top: none;\\n\\theight: 1px;\\n\\t\u003C\u003Cbackground-linear-gradient [[left, rgba(0,0,0,0.15) 0%, rgba(0,0,0,0.0) 100%]]>>\\n}\\n\\n.tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button {\\n\\t\u003C\u003Cbackground-linear-gradient [[left, rgba(0,0,0,0.01) 0%, rgba(0,0,0,0.1) 100%]]>>\\n}\\n\\n.tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button.tc-tab-selected {\\n\\t\u003C\u003Cbackground-linear-gradient [[left, rgba(0,0,0,0.05) 0%, rgba(255,255,255,0.05) 100%]]>>\\n}\\n\\n.tc-message-box img {\\n\\t\u003C\u003Cbox-shadow [[1px 1px 3px rgba(0,0,0,0.5)]]>>\\n}\\n\\n.tc-plugin-info {\\n\\t\u003C\u003Cbox-shadow [[1px 1px 3px rgba(0,0,0,0.5)]]>>\\n}\\n\"}}}"},
{"title":"$:/themes/tiddlywiki/vanilla","name":"Vanilla","author":"JeremyRuston","core-version":">=5.0.0","plugin-type":"theme","description":"Basic theme","plugin-priority":"0","version":"5.2.5","dependents":"","type":"application/json","text":"{\"tiddlers\":{\"$:/themes/tiddlywiki/vanilla/themetweaks\":{\"tags\":\"$:/tags/ControlPanel/Appearance\",\"caption\":\"{{$:/language/ThemeTweaks/ThemeTweaks}}\",\"text\":\"\\\\define lingo-base()$:/language/ThemeTweaks/\\n\\\\define replacement-text()[img[$(imageTitle)$]]\\n\\\\define backgroundimage-dropdown()\\n\u003Cdiv class=tc-drop-down-wrapper>\\n\u003C$let state=\u003C\u003Cqualify\\\"$:/state/popup/themetweaks/backgroundimage\\\">>>\\n\u003C$button popup=\u003C\u003Cstate>>class=\\\"tc-btn-invisible tc-btn-dropdown\\\">{{$:/core/images/down-arrow}}\u003C/$button>\\n\u003C$reveal state=\u003C\u003Cstate>>type=popup position=belowleft text=\\\"\\\"default=\\\"\\\"class=tc-popup-keep>\\n\u003Cdiv class=tc-drop-down style=text-align:center;>\\n\u003C$macrocall actions=\\\"\\\"\\\"\\n\\n\u003C$action-setfield\\n\\t$tiddler=\\\"$:/themes/tiddlywiki/vanilla/settings/backgroundimage\\\"\\n\\t$value=\u003C\u003CimageTitle>>\\n/>\\n\\n\u003C$action-deletetiddler $tiddler=\u003C\u003Cstate>>/>\\n\\n\\\"\\\"\\\"$name=image-picker/>\\n\u003C/div>\\n\u003C/$reveal>\\n\u003C/$let>\\n\\n\\\\end\\n\\\\define backgroundimageattachment-dropdown()\\n\u003C$select tiddler=\\\"$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment\\\"default=scroll>\\n\u003Coption value=scroll>\u003C\u003Clingo Settings/BackgroundImageAttachment/Scroll>>\u003C/option>\\n\u003Coption value=fixed>\u003C\u003Clingo Settings/BackgroundImageAttachment/Fixed>>\u003C/option>\\n\\n\\\\end\\n\\\\define backgroundimagesize-dropdown()\\n\u003C$select tiddler=\\\"$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize\\\"default=scroll>\\n\u003Coption value=auto>\u003C\u003Clingo Settings/BackgroundImageSize/Auto>>\u003C/option>\\n\u003Coption value=cover>\u003C\u003Clingo Settings/BackgroundImageSize/Cover>>\u003C/option>\\n\u003Coption value=contain>\u003C\u003Clingo Settings/BackgroundImageSize/Contain>>\u003C/option>\\n\\n\\\\end\\n\u003C\u003Clingo ThemeTweaks/Hint>>\\n\\n! \u003C\u003Clingo Options>>\\n\\n|\u003C$link to=\\\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\\\">\u003C\u003Clingo Options/SidebarLayout>>\u003C/$link> |\u003C$select tiddler=\\\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\\\">\u003Coption value=fixed-fluid>\u003C\u003Clingo Options/SidebarLayout/Fixed-Fluid>>\u003C/option>\u003Coption value=fluid-fixed>\u003C\u003Clingo Options/SidebarLayout/Fluid-Fixed>>\u003C/option>\u003C/$select> |\\n|\u003C$link to=\\\"$:/themes/tiddlywiki/vanilla/options/stickytitles\\\">\u003C\u003Clingo Options/StickyTitles>>\u003C/$link>\u003Cbr>//\u003C\u003Clingo Options/StickyTitles/Hint>>// |\u003C$select tiddler=\\\"$:/themes/tiddlywiki/vanilla/options/stickytitles\\\">\u003Coption value=no>{{$:/language/No}}\u003C/option>\u003Coption value=yes>{{$:/language/Yes}}\u003C/option>\u003C/$select> |\\n|\u003C$link to=\\\"$:/themes/tiddlywiki/vanilla/options/codewrapping\\\">\u003C\u003Clingo Options/CodeWrapping>>\u003C/$link> |\u003C$select tiddler=\\\"$:/themes/tiddlywiki/vanilla/options/codewrapping\\\">\u003Coption value=pre>{{$:/language/No}}\u003C/option>\u003Coption value=pre-wrap>{{$:/language/Yes}}\u003C/option>\u003C/$select> |\\n! \u003C\u003Clingo Settings>>\\n\\n|\u003C$link to=\\\"$:/themes/tiddlywiki/vanilla/settings/fontfamily\\\">\u003C\u003Clingo Settings/FontFamily>>\u003C/$link> |\u003C$edit-text tiddler=\\\"$:/themes/tiddlywiki/vanilla/settings/fontfamily\\\"default=\\\"\\\"tag=input/> | |\\n|\u003C$link to=\\\"$:/themes/tiddlywiki/vanilla/settings/codefontfamily\\\">\u003C\u003Clingo Settings/CodeFontFamily>>\u003C/$link> |\u003C$edit-text tiddler=\\\"$:/themes/tiddlywiki/vanilla/settings/codefontfamily\\\"default=\\\"\\\"tag=input/> | |\\n|\u003C$link to=\\\"$:/themes/tiddlywiki/vanilla/settings/editorfontfamily\\\">\u003C\u003Clingo Settings/EditorFontFamily>>\u003C/$link> |\u003C$edit-text tiddler=\\\"$:/themes/tiddlywiki/vanilla/settings/editorfontfamily\\\"default=\\\"\\\"tag=input/> | |\\n|\u003C$link to=\\\"$:/themes/tiddlywiki/vanilla/settings/backgroundimage\\\">\u003C\u003Clingo Settings/BackgroundImage>>\u003C/$link> |\u003C$edit-text tiddler=\\\"$:/themes/tiddlywiki/vanilla/settings/backgroundimage\\\"default=\\\"\\\"tag=input/> |\u003C\u003Cbackgroundimage-dropdown>> |\\n|\u003C$link to=\\\"$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment\\\">\u003C\u003Clingo Settings/BackgroundImageAttachment>>\u003C/$link> |\u003C\u003Cbackgroundimageattachment-dropdown>> | |\\n|\u003C$link to=\\\"$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize\\\">\u003C\u003Clingo Settings/BackgroundImageSize>>\u003C/$link> |\u003C\u003Cbackgroundimagesize-dropdown>> | |\\n! \u003C\u003Clingo Metrics>>\\n\\n|\u003C$link to=\\\"$:/themes/tiddlywiki/vanilla/metrics/fontsize\\\">\u003C\u003Clingo Metrics/FontSize>>\u003C/$link> |\u003C$edit-text tiddler=\\\"$:/themes/tiddlywiki/vanilla/metrics/fontsize\\\"default=\\\"\\\"tag=input/> |\\n|\u003C$link to=\\\"$:/themes/tiddlywiki/vanilla/metrics/lineheight\\\">\u003C\u003Clingo Metrics/LineHeight>>\u003C/$link> |\u003C$edit-text tiddler=\\\"$:/themes/tiddlywiki/vanilla/metrics/lineheight\\\"default=\\\"\\\"tag=input/> |\\n|\u003C$link to=\\\"$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize\\\">\u003C\u003Clingo Metrics/BodyFontSize>>\u003C/$link> |\u003C$edit-text tiddler=\\\"$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize\\\"default=\\\"\\\"tag=input/> |\\n|\u003C$link to=\\\"$:/themes/tiddlywiki/vanilla/metrics/bodylineheight\\\">\u003C\u003Clingo Metrics/BodyLineHeight>>\u003C/$link> |\u003C$edit-text tiddler=\\\"$:/themes/tiddlywiki/vanilla/metrics/bodylineheight\\\"default=\\\"\\\"tag=input/> |\\n|\u003C$link to=\\\"$:/themes/tiddlywiki/vanilla/metrics/storyleft\\\">\u003C\u003Clingo Metrics/StoryLeft>>\u003C/$link>\u003Cbr>//\u003C\u003Clingo Metrics/StoryLeft/Hint>>// |^\u003C$edit-text tiddler=\\\"$:/themes/tiddlywiki/vanilla/metrics/storyleft\\\"default=\\\"\\\"tag=input/> |\\n|\u003C$link to=\\\"$:/themes/tiddlywiki/vanilla/metrics/storytop\\\">\u003C\u003Clingo Metrics/StoryTop>>\u003C/$link>\u003Cbr>//\u003C\u003Clingo Metrics/StoryTop/Hint>>// |^\u003C$edit-text tiddler=\\\"$:/themes/tiddlywiki/vanilla/metrics/storytop\\\"default=\\\"\\\"tag=input/> |\\n|\u003C$link to=\\\"$:/themes/tiddlywiki/vanilla/metrics/storyright\\\">\u003C\u003Clingo Metrics/StoryRight>>\u003C/$link>\u003Cbr>//\u003C\u003Clingo Metrics/StoryRight/Hint>>// |^\u003C$edit-text tiddler=\\\"$:/themes/tiddlywiki/vanilla/metrics/storyright\\\"default=\\\"\\\"tag=input/> |\\n|\u003C$link to=\\\"$:/themes/tiddlywiki/vanilla/metrics/storywidth\\\">\u003C\u003Clingo Metrics/StoryWidth>>\u003C/$link>\u003Cbr>//\u003C\u003Clingo Metrics/StoryWidth/Hint>>// |^\u003C$edit-text tiddler=\\\"$:/themes/tiddlywiki/vanilla/metrics/storywidth\\\"default=\\\"\\\"tag=input/> |\\n|\u003C$link to=\\\"$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth\\\">\u003C\u003Clingo Metrics/TiddlerWidth>>\u003C/$link>\u003Cbr>//\u003C\u003Clingo Metrics/TiddlerWidth/Hint>>//\u003Cbr> |^\u003C$edit-text tiddler=\\\"$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth\\\"default=\\\"\\\"tag=input/> |\\n|\u003C$link to=\\\"$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint\\\">\u003C\u003Clingo Metrics/SidebarBreakpoint>>\u003C/$link>\u003Cbr>//\u003C\u003Clingo Metrics/SidebarBreakpoint/Hint>>// |^\u003C$edit-text tiddler=\\\"$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint\\\"default=\\\"\\\"tag=input/> |\\n|\u003C$link to=\\\"$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth\\\">\u003C\u003Clingo Metrics/SidebarWidth>>\u003C/$link>\u003Cbr>//\u003C\u003Clingo Metrics/SidebarWidth/Hint>>// |^\u003C$edit-text tiddler=\\\"$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth\\\"default=\\\"\\\"tag=input/> |\"},\"$:/themes/tiddlywiki/vanilla/base\":{\"tags\":\"[[$:/tags/Stylesheet]]\",\"code-body\":\"yes\",\"text\":\"\\\\define custom-background-datauri()\\n\u003C$let background={{$:/themes/tiddlywiki/vanilla/settings/backgroundimage}}>\\n\u003C$list filter=\\\"[\u003Cbackground>is[image]]\\\">\\n`background: url(`\\n\u003C$list filter=\\\"[\u003Cbackground>!has[_canonical_uri]]\\\">\\n`\\\"`\u003C$macrocall title={{$:/themes/tiddlywiki/vanilla/settings/backgroundimage}}$name=datauri/>`\\\"`\\n\u003C/$list>\\n\u003C$list filter=\\\"[\u003Cbackground>has[_canonical_uri]]\\\">\\n`\\\"`\u003C$view tiddler={{$:/themes/tiddlywiki/vanilla/settings/backgroundimage}}field=_canonical_uri/>`\\\"`\\n\u003C/$list>\\n`) center center;`\\n`background-attachment: `{{$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment}}`;\\n-webkit-background-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;\\n-moz-background-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;\\n-o-background-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;\\nbackground-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;`\\n\u003C/$list>\\n\\n\\\\end\\n\\\\define sidebarbreakpoint()\u003C$text text={{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}/>\\n\\\\define sidebarbreakpoint-minus-one()\u003C$text text={{{[{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}removesuffix[px]subtract[1]addsuffix[px]]~[{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}]}}}/>\\n\\\\define tiddler-width()\\n\\t\u003C$text text={{$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth}}/>\\n\\\\end\\n\\\\define if-fluid-fixed(text hiddenSidebarText)\\n\u003C$reveal state=\\\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\\\"type=match text=fluid-fixed>\\n$text$\\n\u003C$reveal state=\\\"$:/state/sidebar\\\"type=nomatch text=yes default=yes>\\n$hiddenSidebarText$\\n\u003C/$reveal>\\n\\n\\\\end\\n\\\\define if-editor-height-fixed(then else)\\n\u003C$reveal state=\\\"$:/config/TextEditor/EditorHeight/Mode\\\"type=match text=fixed>\\n$then$\\n\u003C/$reveal>\\n\u003C$reveal state=\\\"$:/config/TextEditor/EditorHeight/Mode\\\"type=match text=auto>\\n$else$\\n\u003C/$reveal>\\n\\\\end\\n\\\\define set-type-selector-min-width()\\n\u003C$let typeLength={{{[all[shadows+tiddlers]prefix[$:/language/Docs/Types/]get[name]length[]maxall[]]}}}>\\n\\n.tc-type-selector-dropdown-wrapper {\\n\\t\\tmin-width: calc(\u003C\u003CtypeLength>>ch + 4em);\\n\\t}\\n\\n.tc-type-selector-dropdown-wrapper input.tc-edit-typeeditor {\\n\\t\\tmin-width: \u003C\u003CtypeLength>>ch;\\n\\t}\\n\\\\end\\n\\\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline macrocallblock\\n/*\\n** Start with the normalize CSS reset, and then belay some of its effects\\n*/\\n\\n{{$:/themes/tiddlywiki/vanilla/reset}}\\n\\n*, input[type=\\\"search\\\"] {\\n\\tbox-sizing: border-box;\\n\\t-moz-box-sizing: border-box;\\n\\t-webkit-box-sizing: border-box;\\n}\\n\\n/*\\n** Button default styles. Makes them look consistent for all browsers\\n*/\\nhtml button {\\n\\tline-height: 1.2;\\n\\tcolor: \u003C\u003Ccolour button-foreground>>;\\n\\tfill: \u003C\u003Ccolour button-foreground>>;\\n\\tbackground: \u003C\u003Ccolour button-background>>;\\n\\tborder-color: \u003C\u003Ccolour button-border>>;\\n}\\n\\nbutton:disabled svg {\\n\\tfill: \u003C\u003Ccolour muted-foreground>>;\\n}\\n\\n/*\\n** Basic element styles\\n*/\\n\\nhtml, body {\\n\\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/fontfamily}};\\n\\ttext-rendering: optimizeLegibility; /* Enables kerning and ligatures etc. */\\n\\t-webkit-font-smoothing: antialiased;\\n\\t-moz-osx-font-smoothing: grayscale;\\n}\\n\\nhtml:-webkit-full-screen {\\n\\tbackground-color: \u003C\u003Ccolour page-background>>;\\n}\\n\\nbody.tc-body {\\n\\tfont-size: {{$:/themes/tiddlywiki/vanilla/metrics/fontsize}};\\n\\tline-height: {{$:/themes/tiddlywiki/vanilla/metrics/lineheight}};\\n\\tword-wrap: break-word;\\n\\t\u003C\u003Ccustom-background-datauri>>\\n\\tcolor: \u003C\u003Ccolour foreground>>;\\n\\tbackground-color: \u003C\u003Ccolour page-background>>;\\n\\tfill: \u003C\u003Ccolour foreground>>;\\n}\\n\\n\u003C\u003Cif-background-attachment [[\\n\\nbody.tc-body {\\n\\tbackground-color: transparent;\\n}\\n\\n]]>>\\n\\n/**\\n * Correct the font size and margin on `h1` elements within `section` and\\n * `article` contexts in Chrome, Firefox, and Safari.\\n */\\n\\nh1 {\\n\\tfont-size: 2em;\\n}\\n\\nh1, h2, h3, h4, h5, h6 {\\n\\tline-height: 1.2;\\n\\tfont-weight: normal;\\n}\\n\\npre {\\n\\tdisplay: block;\\n\\tmargin-top: 1em;\\n\\tmargin-bottom: 1em;\\n\\tword-break: break-word;\\n\\tword-wrap: break-word;\\n\\twhite-space: {{$:/themes/tiddlywiki/vanilla/options/codewrapping}};\\n\\tbackground-color: \u003C\u003Ccolour pre-background>>;\\n\\tborder: 1px solid \u003C\u003Ccolour pre-border>>;\\n\\tpadding: 0 3px 2px;\\n\\tborder-radius: 3px;\\n\\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/codefontfamily}};\\n}\\n\\ncode {\\n\\tcolor: \u003C\u003Ccolour code-foreground>>;\\n\\tbackground-color: \u003C\u003Ccolour code-background>>;\\n\\tborder: 1px solid \u003C\u003Ccolour code-border>>;\\n\\twhite-space: {{$:/themes/tiddlywiki/vanilla/options/codewrapping}};\\n\\tpadding: 0 3px 2px;\\n\\tborder-radius: 3px;\\n\\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/codefontfamily}};\\n}\\n\\nblockquote {\\n\\tborder-left: 5px solid \u003C\u003Ccolour blockquote-bar>>;\\n\\tmargin-left: 25px;\\n\\tpadding-left: 10px;\\n\\tquotes: \\\"\\\\201C\\\"\\\"\\\\201D\\\"\\\"\\\\2018\\\"\\\"\\\\2019\\\";\\n}\\n\\nblockquote > div {\\n\\tmargin-top: 1em;\\n\\tmargin-bottom: 1em;\\n}\\n\\nblockquote.tc-big-quote {\\n\\tfont-family: Georgia, serif;\\n\\tposition: relative;\\n\\tbackground: \u003C\u003Ccolour pre-background>>;\\n\\tborder-left: none;\\n\\tmargin-left: 50px;\\n\\tmargin-right: 50px;\\n\\tpadding: 10px;\\n\\tborder-radius: 8px;\\n}\\n\\nblockquote.tc-big-quote cite:before {\\n\\tcontent: \\\"\\\\2014 \\\\2009\\\";\\n}\\n\\nblockquote.tc-big-quote:before {\\n\\tfont-family: Georgia, serif;\\n\\tcolor: \u003C\u003Ccolour blockquote-bar>>;\\n\\tcontent: open-quote;\\n\\tfont-size: 8em;\\n\\tline-height: 0.1em;\\n\\tmargin-right: 0.25em;\\n\\tvertical-align: -0.4em;\\n\\tposition: absolute;\\n\\tleft: -50px;\\n\\ttop: 42px;\\n}\\n\\nblockquote.tc-big-quote:after {\\n\\tfont-family: Georgia, serif;\\n\\tcolor: \u003C\u003Ccolour blockquote-bar>>;\\n\\tcontent: close-quote;\\n\\tfont-size: 8em;\\n\\tline-height: 0.1em;\\n\\tmargin-right: 0.25em;\\n\\tvertical-align: -0.4em;\\n\\tposition: absolute;\\n\\tright: -80px;\\n\\tbottom: -20px;\\n}\\n\\ndl dt {\\n\\tfont-weight: bold;\\n\\tmargin-top: 6px;\\n}\\n\\ntextarea,\\ninput[type=text],\\ninput[type=search],\\ninput[type=\\\"\\\"],\\ninput:not([type]) {\\n\\tcolor: \u003C\u003Ccolour foreground>>;\\n\\tbackground: \u003C\u003Ccolour background>>;\\n}\\n\\ninput[type=\\\"checkbox\\\"] {\\n\\tvertical-align: middle;\\n}\\n\\ninput[type=\\\"search\\\"]::-webkit-search-decoration,\\ninput[type=\\\"search\\\"]::-webkit-search-cancel-button,\\ninput[type=\\\"search\\\"]::-webkit-search-results-button,\\ninput[type=\\\"search\\\"]::-webkit-search-results-decoration {\\n\\t-webkit-appearance:none;\\n}\\n\\n.tc-muted {\\n\\tcolor: \u003C\u003Ccolour muted-foreground>>;\\n}\\n\\nsvg.tc-image-button {\\n\\tpadding: 0px 1px 1px 0px;\\n}\\n\\n.tc-icon-wrapper > svg {\\n\\twidth: 1em;\\n\\theight: 1em;\\n}\\n\\nkbd {\\n\\tdisplay: inline-block;\\n\\tpadding: 3px 5px;\\n\\tfont-size: 0.8em;\\n\\tline-height: 1.2;\\n\\tcolor: \u003C\u003Ccolour foreground>>;\\n\\tvertical-align: middle;\\n\\tbackground-color: \u003C\u003Ccolour background>>;\\n\\tborder: solid 1px \u003C\u003Ccolour muted-foreground>>;\\n\\tborder-bottom-color: \u003C\u003Ccolour muted-foreground>>;\\n\\tborder-radius: 3px;\\n\\tbox-shadow: inset 0 -1px 0 \u003C\u003Ccolour muted-foreground>>;\\n}\\n\\n::selection {\\n\\tbackground-color: Highlight;\\n\\tcolor: HighlightText;\\n\\tbackground-color: \u003C\u003Ccolour selection-background>>;\\n\\tcolor: \u003C\u003Ccolour selection-foreground>>;\\n}\\n\\n.tc-inline-style {\\n\\tbackground: \u003C\u003Ccolour highlight-background>>;\\n\\tcolor: \u003C\u003Ccolour highlight-foreground>>;\\n}\\n\\nform.tc-form-inline {\\n\\tdisplay: inline;\\n}\\n\\n/*\\nMarkdown likes putting code elements inside pre elements\\n*/\\npre > code {\\n\\tpadding: 0;\\n\\tborder: none;\\n\\tbackground-color: inherit;\\n\\tcolor: inherit;\\n}\\n\\n/*\\nTable defaults\\n*/\\n\\ntable {\\n\\tborder: 1px solid \u003C\u003Ccolour table-border>>;\\n\\twidth: auto;\\n\\tmax-width: 100%;\\n\\tcaption-side: bottom;\\n\\tmargin-top: 1em;\\n\\tmargin-bottom: 1em;\\n\\t/* next 2 elements needed, since normalize 8.0.1 */\\n\\tborder-collapse: collapse;\\n\\tborder-spacing: 0;\\n}\\n\\ntable th, table td {\\n\\tpadding: 0 7px 0 7px;\\n\\tborder-top: 1px solid \u003C\u003Ccolour table-border>>;\\n\\tborder-left: 1px solid \u003C\u003Ccolour table-border>>;\\n}\\n\\ntable thead tr td, table th {\\n\\tbackground-color: \u003C\u003Ccolour table-header-background>>;\\n\\tfont-weight: bold;\\n}\\n\\ntable tfoot tr td {\\n\\tbackground-color: \u003C\u003Ccolour table-footer-background>>;\\n}\\n\\n/*\\nTable utility classes\\n*/\\n\\n/* Remove borders from table as used in eg: GettingStarted*/\\n.tc-table-no-border,\\n.tc-table-no-border th,\\n.tc-table-no-border td {\\n\\tborder: initial;\\n}\\n\\n/* First column in table width will fit to text.*/\\n/* This rule makes most sense with tc-first-link-nowrap*/\\n.tc-first-col-min-width td:nth-child(1) {\\n\\twidth: 1%;\\n}\\n\\n/*\\n** Utility classes work well with tables but also for other containers\\n*/\\n\\n/* First link A element will not wrap */\\n.tc-first-link-nowrap:first-of-type a {\\n\\twhite-space: nowrap;\\n}\\n\\n/* Move the table to the center of the container */\\n.tc-center {\\n\\tmargin-left: auto;\\n\\tmargin-right: auto;\\n}\\n\\n.tc-max-width {\\n\\twidth: 100%;\\n}\\n\\n.tc-max-width-80 {\\n\\tmax-width: 80%;\\n}\\n\\n/* Allow input and textarea to look like the ControlPanel inputs */\\n.tc-edit-max-width input,\\n.tc-edit-max-width textarea {\\n\\twidth: 100%;\\n\\tpadding: 3px;\\n}\\n\\n/*\\nCSV parser plugin\\n*/\\n\\n.tc-csv-table {\\n\\twhite-space: nowrap;\\n}\\n\\n.tc-csv-table th,\\n.tc-csv-table td {\\n\\twhite-space: pre-line;\\n}\\n\\n/*\\nTiddler frame in story river\\n*/\\n\\n.tc-tiddler-frame img,\\n.tc-tiddler-frame svg,\\n.tc-tiddler-frame canvas,\\n.tc-tiddler-frame embed,\\n.tc-tiddler-frame iframe {\\n\\tmax-width: 100%;\\n}\\n\\n.tc-tiddler-body > embed,\\n.tc-tiddler-body > iframe {\\n\\twidth: 100%;\\n\\theight: 600px;\\n}\\n\\n:root {\\n\\tcolor-scheme: {{{[{$:/palette}get[color-scheme]]~light}}};\\n}\\n\\n/*\\n** Links\\n*/\\n\\nbutton.tc-tiddlylink,\\na.tc-tiddlylink {\\n\\ttext-decoration: none;\\n\\tfont-weight: 500;\\n\\tcolor: \u003C\u003Ccolour tiddler-link-foreground>>;\\n\\t-webkit-user-select: inherit; /* Otherwise the draggable attribute makes links impossible to select */\\n\\t-webkit-touch-callout: none; /* Prevents long presses from bringing up a link preview */\\n}\\n\\n.tc-sidebar-lists a.tc-tiddlylink {\\n\\tcolor: \u003C\u003Ccolour sidebar-tiddler-link-foreground>>;\\n}\\n\\n.tc-sidebar-lists a.tc-tiddlylink:hover {\\n\\tcolor: \u003C\u003Ccolour sidebar-tiddler-link-foreground-hover>>;\\n}\\n\\nbutton.tc-tiddlylink:hover,\\na.tc-tiddlylink:hover {\\n\\ttext-decoration: underline;\\n}\\n\\na.tc-tiddlylink-resolves {\\n}\\n\\na.tc-tiddlylink-shadow {\\n\\tfont-weight: bold;\\n}\\n\\na.tc-tiddlylink-shadow.tc-tiddlylink-resolves {\\n\\tfont-weight: normal;\\n}\\n\\na.tc-tiddlylink-missing {\\n\\tfont-style: italic;\\n}\\n\\na.tc-tiddlylink-external {\\n\\ttext-decoration: underline;\\n\\tcolor: \u003C\u003Ccolour external-link-foreground>>;\\n\\tbackground-color: \u003C\u003Ccolour external-link-background>>;\\n}\\n\\na.tc-tiddlylink-external:visited {\\n\\tcolor: \u003C\u003Ccolour external-link-foreground-visited>>;\\n\\tbackground-color: \u003C\u003Ccolour external-link-background-visited>>;\\n}\\n\\na.tc-tiddlylink-external:hover {\\n\\tcolor: \u003C\u003Ccolour external-link-foreground-hover>>;\\n\\tbackground-color: \u003C\u003Ccolour external-link-background-hover>>;\\n}\\n\\n.tc-drop-down a.tc-tiddlylink:hover {\\n\\tcolor: \u003C\u003Ccolour tiddler-link-background>>;\\n}\\n\\n/*\\n** Drag and drop styles\\n*/\\n\\n.tc-tiddler-dragger {\\n\\tposition: relative;\\n\\tz-index: -10000;\\n}\\n\\n.tc-tiddler-dragger-inner {\\n\\tposition: absolute;\\n\\ttop: -1000px;\\n\\tleft: -1000px;\\n\\tdisplay: inline-block;\\n\\tpadding: 8px 20px;\\n\\tfont-size: 16.9px;\\n\\tfont-weight: bold;\\n\\tline-height: 20px;\\n\\tcolor: \u003C\u003Ccolour dragger-foreground>>;\\n\\ttext-shadow: 0 1px 0 rgba(0, 0, 0, 1);\\n\\twhite-space: nowrap;\\n\\tvertical-align: baseline;\\n\\tbackground-color: \u003C\u003Ccolour dragger-background>>;\\n\\tborder-radius: 20px;\\n}\\n\\n.tc-tiddler-dragger-cover {\\n\\tposition: absolute;\\n\\tbackground-color: \u003C\u003Ccolour page-background>>;\\n}\\n\\n.tc-page-container > .tc-dropzone {\\n\\tmin-height: 100vh;\\n}\\n\\n.tc-dropzone {\\n\\tposition: relative;\\n}\\n\\n.tc-dropzone.tc-dragover:before {\\n\\tz-index: 10000;\\n\\tdisplay: block;\\n\\tposition: fixed;\\n\\ttop: 0;\\n\\tleft: 0;\\n\\tright: 0;\\n\\tbackground: \u003C\u003Ccolour dropzone-background>>;\\n\\ttext-align: center;\\n\\tcontent: \\\"\u003C\u003Clingo DropMessage>>\\\";\\n}\\n\\n.tc-droppable > .tc-droppable-placeholder {\\n\\tdisplay: none;\\n}\\n\\n.tc-droppable.tc-dragover > .tc-droppable-placeholder {\\n\\tdisplay: block;\\n\\tborder: 2px dashed \u003C\u003Ccolour dropzone-background>>;\\n}\\n\\n.tc-draggable {\\n\\tcursor: move;\\n}\\n\\n.tc-sidebar-tab-open .tc-droppable-placeholder, .tc-tagged-draggable-list .tc-droppable-placeholder,\\n.tc-links-draggable-list .tc-droppable-placeholder {\\n\\tline-height: 2em;\\n\\theight: 2em;\\n}\\n\\n.tc-sidebar-tab-open-item {\\n\\tposition: relative;\\n}\\n\\n.tc-sidebar-tab-open .tc-btn-invisible.tc-btn-mini svg {\\n\\tfont-size: 0.7em;\\n\\tfill: \u003C\u003Ccolour muted-foreground>>;\\n}\\n\\n/*\\n** Plugin reload warning\\n*/\\n\\n.tc-plugin-reload-warning {\\n\\tz-index: 1000;\\n\\tdisplay: block;\\n\\tposition: fixed;\\n\\ttop: 0;\\n\\tleft: 0;\\n\\tright: 0;\\n\\tbackground: \u003C\u003Ccolour alert-background>>;\\n\\ttext-align: center;\\n}\\n\\n/*\\n** Buttons\\n*/\\n\\nbutton svg, button img, label svg, label img {\\n\\tvertical-align: middle;\\n}\\n\\n.tc-btn-invisible {\\n\\tpadding: 0;\\n\\tmargin: 0;\\n\\tbackground: none;\\n\\tborder: none;\\n\\tcursor: pointer;\\n\\tcolor: \u003C\u003Ccolour foreground>>;\\n\\tfill: \u003C\u003Ccolour foreground>>;\\n}\\n\\nbutton:disabled.tc-btn-invisible {\\n\\tcursor: default; \\n\\tcolor: \u003C\u003Ccolour muted-foreground>>;\\n}\\n\\n.tc-btn-boxed {\\n\\tfont-size: 0.6em;\\n\\tpadding: 0.2em;\\n\\tmargin: 1px;\\n\\tbackground: none;\\n\\tborder: 1px solid \u003C\u003Ccolour tiddler-controls-foreground>>;\\n\\tborder-radius: 0.25em;\\n}\\n\\nhtml body.tc-body .tc-btn-boxed svg {\\n\\tfont-size: 1.6666em;\\n}\\n\\n.tc-btn-boxed:hover {\\n\\tbackground: \u003C\u003Ccolour muted-foreground>>;\\n\\tcolor: \u003C\u003Ccolour background>>;\\n}\\n\\nhtml body.tc-body .tc-btn-boxed:hover svg {\\n\\tfill: \u003C\u003Ccolour background>>;\\n}\\n\\n.tc-btn-rounded {\\n\\tfont-size: 0.5em;\\n\\tline-height: 2;\\n\\tpadding: 0em 0.3em 0.2em 0.4em;\\n\\tmargin: 1px;\\n\\tborder: 1px solid \u003C\u003Ccolour muted-foreground>>;\\n\\tbackground: \u003C\u003Ccolour muted-foreground>>;\\n\\tcolor: \u003C\u003Ccolour background>>;\\n\\tborder-radius: 2em;\\n}\\n\\nhtml body.tc-body .tc-btn-rounded svg {\\n\\tfont-size: 1.6666em;\\n\\tfill: \u003C\u003Ccolour background>>;\\n}\\n\\n.tc-btn-rounded:hover {\\n\\tborder: 1px solid \u003C\u003Ccolour muted-foreground>>;\\n\\tbackground: \u003C\u003Ccolour background>>;\\n\\tcolor: \u003C\u003Ccolour muted-foreground>>;\\n}\\n\\nhtml body.tc-body .tc-btn-rounded:hover svg {\\n\\tfill: \u003C\u003Ccolour muted-foreground>>;\\n}\\n\\n.tc-btn-icon svg {\\n\\theight: 1em;\\n\\twidth: 1em;\\n\\tfill: \u003C\u003Ccolour muted-foreground>>;\\n}\\n\\n.tc-btn-text {\\n\\tmargin-left: 7px;\\n}\\n\\n/* used for documentation \\\"fake\\\" buttons */\\n.tc-btn-standard {\\n\\tline-height: 1.8;\\n\\tcolor: #667;\\n\\tbackground-color: #e0e0e0;\\n\\tborder: 1px solid #888;\\n\\tpadding: 2px 1px 2px 1px;\\n\\tmargin: 1px 4px 1px 4px;\\n}\\n\\n.tc-btn-big-green {\\n\\tdisplay: inline-block;\\n\\tpadding: 8px;\\n\\tmargin: 4px 8px 4px 8px;\\n\\tbackground: \u003C\u003Ccolour download-background>>;\\n\\tcolor: \u003C\u003Ccolour download-foreground>>;\\n\\tfill: \u003C\u003Ccolour download-foreground>>;\\n\\tborder: none;\\n\\tborder-radius: 2px;\\n\\tfont-size: 1.2em;\\n\\tline-height: 1.4em;\\n\\ttext-decoration: none;\\n}\\n\\n.tc-btn-big-green svg,\\n.tc-btn-big-green img {\\n\\theight: 2em;\\n\\twidth: 2em;\\n\\tvertical-align: middle;\\n\\tfill: \u003C\u003Ccolour download-foreground>>;\\n}\\n\\n.tc-primary-btn {\\n\\tbackground: \u003C\u003Ccolour primary>>;\\n}\\n\\n.tc-sidebar-lists input {\\n\\tcolor: \u003C\u003Ccolour foreground>>;\\n}\\n\\n.tc-sidebar-lists button {\\n\\tcolor: \u003C\u003Ccolour sidebar-button-foreground>>;\\n\\tfill: \u003C\u003Ccolour sidebar-button-foreground>>;\\n}\\n\\n.tc-sidebar-lists button.tc-btn-mini {\\n\\tcolor: \u003C\u003Ccolour sidebar-muted-foreground>>;\\n}\\n\\n.tc-sidebar-lists button.tc-btn-mini:hover {\\n\\tcolor: \u003C\u003Ccolour sidebar-muted-foreground-hover>>;\\n}\\n\\n.tc-sidebar-lists button small {\\n\\tcolor: \u003C\u003Ccolour foreground>>;\\n}\\n\\nbutton svg.tc-image-button, button .tc-image-button img {\\n\\theight: 1em;\\n\\twidth: 1em;\\n}\\n\\n.tc-unfold-banner {\\n\\tposition: absolute;\\n\\tpadding: 0;\\n\\tmargin: 0;\\n\\tbackground: none;\\n\\tborder: none;\\n\\twidth: 100%;\\n\\twidth: calc(100% + 2px);\\n\\tmargin-left: -43px;\\n\\ttext-align: center;\\n\\tborder-top: 2px solid \u003C\u003Ccolour tiddler-info-background>>;\\n\\tmargin-top: 4px;\\n}\\n\\n.tc-unfold-banner:hover {\\n\\tbackground: \u003C\u003Ccolour tiddler-info-background>>;\\n\\tborder-top: 2px solid \u003C\u003Ccolour tiddler-info-border>>;\\n}\\n\\n.tc-unfold-banner svg, .tc-fold-banner svg {\\n\\theight: 0.75em;\\n\\tfill: \u003C\u003Ccolour tiddler-controls-foreground>>;\\n}\\n\\n.tc-unfold-banner:hover svg, .tc-fold-banner:hover svg {\\n\\tfill: \u003C\u003Ccolour tiddler-controls-foreground-hover>>;\\n}\\n\\n.tc-fold-banner {\\n\\tposition: absolute;\\n\\tpadding: 0;\\n\\tmargin: 0;\\n\\tbackground: none;\\n\\tborder: none;\\n\\twidth: 23px;\\n\\ttext-align: center;\\n\\tmargin-left: -35px;\\n\\ttop: 6px;\\n\\tbottom: 6px;\\n}\\n\\n.tc-fold-banner:hover {\\n\\tbackground: \u003C\u003Ccolour tiddler-info-background>>;\\n}\\n\\n@media (max-width: \u003C\u003Csidebarbreakpoint-minus-one>>) {\\n\\n.tc-unfold-banner {\\n\\t\\tposition: static;\\n\\t\\twidth: calc(100% + 59px);\\n\\t}\\n\\n.tc-fold-banner {\\n\\t\\twidth: 16px;\\n\\t\\tmargin-left: -16px;\\n\\t\\tfont-size: 0.75em;\\n\\t}\\n\\n}\\n\\n/*\\n** Tags and missing tiddlers\\n*/\\n\\n.tc-tag-list-item {\\n\\tposition: relative;\\n\\tdisplay: inline-block;\\n}\\n\\n.tc-tags-wrapper {\\n\\tmargin: 4px 0 14px 0;\\n}\\n\\n.tc-tags-wrapper .tc-tag-list-item {\\n\\tmargin-right: 7px;\\n}\\n\\n.tc-missing-tiddler-label {\\n\\tfont-style: italic;\\n\\tfont-weight: normal;\\n\\tdisplay: inline-block;\\n\\tfont-size: 11.844px;\\n\\tline-height: 14px;\\n\\twhite-space: nowrap;\\n\\tvertical-align: baseline;\\n}\\n\\n.tc-block-tags-dropdown > .tc-btn-invisible:hover {\\n\\tbackground-color: \u003C\u003Ccolour primary>>;\\n}\\n\\nbutton.tc-tag-label, span.tc-tag-label {\\n\\tdisplay: inline-block;\\n\\tpadding: 0.16em 0.7em;\\n\\tfont-size: 0.9em;\\n\\tfont-weight: normal;\\n\\tline-height: 1.2em;\\n\\tcolor: \u003C\u003Ccolour tag-foreground>>;\\n\\twhite-space: break-spaces;\\n\\tvertical-align: baseline;\\n\\tbackground-color: \u003C\u003Ccolour tag-background>>;\\n\\tborder-radius: 1em;\\n}\\n\\n.tc-sidebar-scrollable .tc-tag-label {\\n\\ttext-shadow: none;\\n}\\n\\n.tc-untagged-separator {\\n\\twidth: 10em;\\n\\tleft: 0;\\n\\tmargin-left: 0;\\n\\tborder: 0;\\n\\theight: 1px;\\n\\tbackground: \u003C\u003Ccolour tab-divider>>;\\n}\\n\\nbutton.tc-untagged-label {\\n\\tbackground-color: \u003C\u003Ccolour untagged-background>>;\\n}\\n\\n.tc-tag-label svg, .tc-tag-label img {\\n\\theight: 1em;\\n\\twidth: 1em;\\n\\tmargin-right: 3px;\\n\\tmargin-bottom: 1px;\\n\\tvertical-align: bottom;\\n}\\n\\n.tc-edit-tags button.tc-remove-tag-button svg {\\n\\tfont-size: 0.7em;\\n\\tvertical-align: middle;\\n}\\n\\n.tc-tag-manager-table .tc-tag-label {\\n}\\n\\n.tc-tag-manager-tag {\\n\\twidth: 100%;\\n}\\n\\nbutton.tc-btn-invisible.tc-remove-tag-button {\\n\\toutline: none;\\n}\\n\\n.tc-tag-button-selected,\\n.tc-list-item-selected a.tc-tiddlylink, a.tc-list-item-selected {\\n\\tbackground-color: \u003C\u003Ccolour primary>>;\\n\\tcolor: \u003C\u003Ccolour tiddler-background>>;\\n}\\n\\n/*\\n** Page layout\\n*/\\n\\n.tc-topbar {\\n\\tposition: fixed;\\n\\tz-index: 1200;\\n}\\n\\n.tc-topbar-left {\\n\\tleft: 29px;\\n\\ttop: 5px;\\n}\\n\\n.tc-topbar-right {\\n\\ttop: 5px;\\n\\tright: 29px;\\n}\\n\\n@media (max-width: \u003C\u003Csidebarbreakpoint-minus-one>>) {\\n\\n.tc-topbar-right {\\n\\t\\tright: 10px;\\n\\t}\\n\\n}\\n\\n.tc-topbar button {\\n\\tpadding: 8px;\\n}\\n\\n.tc-topbar svg {\\n\\tfill: \u003C\u003Ccolour muted-foreground>>;\\n}\\n\\n.tc-topbar button:hover svg {\\n\\tfill: \u003C\u003Ccolour foreground>>;\\n}\\n\\n@media (max-width: \u003C\u003Csidebarbreakpoint-minus-one>>) {\\n\\n.tc-show-sidebar-btn svg.tc-image-chevron-left, .tc-hide-sidebar-btn svg.tc-image-chevron-right {\\n\\t\\ttransform: rotate(-90deg);\\n\\t}\\n\\n}\\n\\n.tc-sidebar-header {\\n\\tcolor: \u003C\u003Ccolour sidebar-foreground>>;\\n\\tfill: \u003C\u003Ccolour sidebar-foreground>>;\\n}\\n\\n.tc-sidebar-header .tc-title a.tc-tiddlylink-resolves {\\n\\tfont-weight: normal;\\n}\\n\\n.tc-sidebar-header .tc-sidebar-lists p {\\n\\tmargin-top: 3px;\\n\\tmargin-bottom: 3px;\\n}\\n\\n.tc-sidebar-header .tc-missing-tiddler-label {\\n\\tcolor: \u003C\u003Ccolour sidebar-foreground>>;\\n}\\n\\n.tc-advanced-search input {\\n\\twidth: 60%;\\n}\\n\\n.tc-search a svg {\\n\\twidth: 1.2em;\\n\\theight: 1.2em;\\n\\tvertical-align: middle;\\n}\\n\\n.tc-page-controls {\\n\\tmargin-top: 14px;\\n\\tfont-size: 1.5em;\\n}\\n\\n.tc-page-controls .tc-drop-down {\\n\\tfont-size: 1rem;\\n}\\n\\n.tc-page-controls button {\\n\\tmargin-right: 0.5em;\\n}\\n\\n.tc-page-controls a.tc-tiddlylink:hover {\\n\\ttext-decoration: none;\\n}\\n\\n.tc-page-controls img {\\n\\twidth: 1em;\\n}\\n\\n.tc-page-controls svg {\\n\\tfill: \u003C\u003Ccolour sidebar-controls-foreground>>;\\n}\\n\\n.tc-page-controls button:hover svg, .tc-page-controls a:hover svg {\\n\\tfill: \u003C\u003Ccolour sidebar-controls-foreground-hover>>;\\n}\\n\\n.tc-sidebar-lists .tc-menu-list-item {\\n\\twhite-space: nowrap;\\n}\\n\\n.tc-menu-list-count {\\n\\tfont-weight: bold;\\n}\\n\\n.tc-menu-list-subitem {\\n\\tpadding-left: 7px;\\n}\\n\\n.tc-story-river {\\n\\tposition: relative;\\n}\\n\\n@media (max-width: \u003C\u003Csidebarbreakpoint-minus-one>>) {\\n\\n.tc-sidebar-header {\\n\\t\\tpadding: 14px;\\n\\t\\tmin-height: 32px;\\n\\t\\tmargin-top: {{$:/themes/tiddlywiki/vanilla/metrics/storytop}};\\n\\t\\ttransition: min-height {{$:/config/AnimationDuration}}ms ease-in-out, padding-top {{$:/config/AnimationDuration}}ms ease-in-out, padding-bottom {{$:/config/AnimationDuration}}ms ease-in-out;\\n\\t}\\n\\t\\n\\t\u003C\u003Cif-no-sidebar [[\\n\\n\\t\\t.tc-sidebar-header {\\n\\t\\t\\tmin-height: 0;\\n\\t\\t\\tpadding-top: 0;\\n\\t\\t\\tpadding-bottom: 0;\\n\\t\\t}\\n\\n\\t]]>>\\n\\n.tc-story-river {\\n\\t\\tposition: relative;\\n\\t\\tpadding: 0;\\n\\t}\\n}\\n\\n@media (min-width: \u003C\u003Csidebarbreakpoint>>) {\\n\\n.tc-message-box {\\n\\t\\tmargin: 21px -21px 21px -21px;\\n\\t}\\n\\n.tc-sidebar-scrollable {\\n\\t\\tposition: fixed;\\n\\t\\ttop: {{$:/themes/tiddlywiki/vanilla/metrics/storytop}};\\n\\t\\tleft: {{$:/themes/tiddlywiki/vanilla/metrics/storyright}};\\n\\t\\tbottom: 0;\\n\\t\\tright: 0;\\n\\t\\toverflow-y: auto;\\n\\t\\toverflow-x: auto;\\n\\t\\t-webkit-overflow-scrolling: touch;\\n\\t\\tmargin: 0 0 0 -42px;\\n\\t\\tpadding: 71px 0 28px 42px;\\n\\t}\\n\\nhtml[dir=\\\"rtl\\\"] .tc-sidebar-scrollable {\\n\\t\\tleft: auto;\\n\\t\\tright: {{$:/themes/tiddlywiki/vanilla/metrics/storyright}};\\n\\t}\\n\\n.tc-story-river {\\n\\t\\tposition: relative;\\n\\t\\tleft: {{$:/themes/tiddlywiki/vanilla/metrics/storyleft}};\\n\\t\\ttop: {{$:/themes/tiddlywiki/vanilla/metrics/storytop}};\\n\\t\\twidth: {{$:/themes/tiddlywiki/vanilla/metrics/storywidth}};\\n\\t\\tpadding: 42px 42px 42px 42px;\\n\\t}\\n\\n\u003C\u003Cif-no-sidebar [[\\n\\n\\t.tc-story-river {\\n\\t\\twidth: calc(100% - {{$:/themes/tiddlywiki/vanilla/metrics/storyleft}});\\n\\t}\\n\\n]]>>\\n\\n.tc-story-river.tc-static-story-river {\\n\\t\\tmargin-right: 0;\\n\\t\\tpadding-right: 42px;\\n\\t}\\n\\n}\\n\\n@media print {\\n\\nbody.tc-body {\\n\\t\\tbackground-color: transparent;\\n\\t}\\n\\n.tc-sidebar-header, .tc-topbar {\\n\\t\\tdisplay: none;\\n\\t}\\n\\n.tc-story-river {\\n\\t\\tmargin: 0;\\n\\t\\tpadding: 0;\\n\\t}\\n\\n.tc-story-river .tc-tiddler-frame {\\n\\t\\tmargin: 0;\\n\\t\\tborder: none;\\n\\t\\tpadding: 0;\\n\\t}\\n}\\n\\n/*\\n** Tiddler styles\\n*/\\n\\n.tc-tiddler-frame {\\n\\tposition: relative;\\n\\tmargin-bottom: 28px;\\n\\tbackground-color: \u003C\u003Ccolour tiddler-background>>;\\n\\tborder: 1px solid \u003C\u003Ccolour tiddler-border>>;\\n}\\n\\n{{$:/themes/tiddlywiki/vanilla/sticky}}\\n\\n.tc-tiddler-info {\\n\\toverflow: hidden;\\n\\tpadding: 14px 42px 14px 42px;\\n\\tbackground-color: \u003C\u003Ccolour tiddler-info-background>>;\\n\\tborder-top: 1px solid \u003C\u003Ccolour tiddler-info-border>>;\\n\\tborder-bottom: 1px solid \u003C\u003Ccolour tiddler-info-border>>;\\n}\\n\\n.tc-tiddler-info p {\\n\\tmargin-top: 3px;\\n\\tmargin-bottom: 3px;\\n}\\n\\n.tc-tiddler-info .tc-tab-buttons button.tc-tab-selected {\\n\\tbackground-color: \u003C\u003Ccolour tiddler-info-tab-background>>;\\n\\tborder-bottom: 1px solid \u003C\u003Ccolour tiddler-info-tab-background>>;\\n}\\n\\n@media (max-width: \u003C\u003Csidebarbreakpoint-minus-one>>) {\\n\\n.tc-tiddler-info {\\n\\t\\tpadding: 14px 14px 14px 14px;\\n\\t}\\n\\n}\\n\\n.tc-view-field-table {\\n\\twidth: 100%;\\n}\\n\\n.tc-view-field-name {\\n\\twidth: 1%; /* Makes this column be as narrow as possible */\\n\\twhite-space: nowrap;\\n\\tvertical-align: top;\\n\\ttext-align: right;\\n\\tfont-style: italic;\\n\\tfont-weight: normal;\\n}\\n\\n.tc-view-field-value {\\n\\tword-break: break-all;\\n}\\n\\n@media (max-width: \u003C\u003Csidebarbreakpoint-minus-one>>) {\\n\\t.tc-tiddler-frame {\\n\\t\\tpadding: 14px 14px 14px 14px;\\n\\t\\tmargin-bottom: .5em;\\n\\t}\\n\\n.tc-tiddler-info {\\n\\t\\tmargin: 0 -14px 0 -14px;\\n\\t}\\n}\\n\\n@media (min-width: \u003C\u003Csidebarbreakpoint>>) {\\n\\t.tc-tiddler-frame {\\n\\t\\tpadding: 28px 42px 42px 42px;\\n\\t\\twidth: {{$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth}};\\n\\t\\tborder-radius: 2px;\\n\\t}\\n\\n\u003C\u003Cif-no-sidebar [[\\n\\n\\t.tc-tiddler-frame {\\n\\t\\twidth: 100%;\\n\\t}\\n\\n]]>>\\n\\n.tc-tiddler-info {\\n\\t\\tmargin: 0 -42px 0 -42px;\\n\\t}\\n}\\n\\n/* prevent overflow for table content for small screens*/\\n@media (max-width: \u003C\u003Csidebarbreakpoint>>) {\\n\\t.tc-tiddler-frame tr {\\n\\t\\tword-wrap: anywhere;\\n\\t}\\n\\n.tc-tiddler-frame table blockquote {\\n\\t\\tmargin-left: 12.5px;\\n\\t\\tmargin-right: 12.5px; \\n\\t}\\n\\n.tc-tiddler-frame table dd {\\n\\t\\tmargin-left: 12.5px;\\n\\t}\\n\\n.tc-tiddler-frame table ol,\\n\\t.tc-tiddler-frame table ul {\\n\\t\\tpadding-left: 20px;\\n\\t}\\n}\\n\\n.tc-site-title,\\n.tc-titlebar {\\n\\tfont-weight: normal;\\n\\tfont-size: 2.35em;\\n\\tline-height: 1.35em;\\n\\tcolor: \u003C\u003Ccolour tiddler-title-foreground>>;\\n\\tmargin: 0;\\n}\\n\\n.tc-site-title {\\n\\tcolor: \u003C\u003Ccolour site-title-foreground>>;\\n}\\n\\n.tc-tiddler-title-icon {\\n\\tvertical-align: middle;\\n\\tmargin-right: .1em;\\n}\\n\\n.tc-system-title-prefix {\\n\\tcolor: \u003C\u003Ccolour muted-foreground>>;\\n}\\n\\n.tc-titlebar h2 {\\n\\tfont-size: 1em;\\n\\tdisplay: inline;\\n}\\n\\n.tc-titlebar img {\\n\\theight: 1em;\\n}\\n\\n.tc-subtitle {\\n\\tfont-size: 0.9em;\\n\\tcolor: \u003C\u003Ccolour tiddler-subtitle-foreground>>;\\n\\tfont-weight: normal;\\n}\\n\\n.tc-subtitle .tc-tiddlylink {\\n\\tmargin-right: .3em;\\n}\\n\\n.tc-tiddler-missing .tc-title {\\n\\tfont-style: italic;\\n\\tfont-weight: normal;\\n}\\n\\n.tc-tiddler-frame .tc-tiddler-controls {\\n\\tfloat: right;\\n\\tpadding: 3px; /* make space for outline */\\n}\\n\\n.tc-tiddler-controls .tc-drop-down {\\n\\tfont-size: 0.6em;\\n}\\n\\n.tc-tiddler-controls .tc-drop-down .tc-drop-down {\\n\\tfont-size: 1em;\\n}\\n\\n.tc-tiddler-controls > span > button,\\n.tc-tiddler-controls > span > span > button,\\n.tc-tiddler-controls > span > span > span > button {\\n\\tvertical-align: baseline;\\n\\tmargin-left:5px;\\n}\\n\\n.tc-tiddler-controls button svg, .tc-tiddler-controls button img,\\n.tc-search button svg, .tc-search a svg {\\n\\tfill: \u003C\u003Ccolour tiddler-controls-foreground>>;\\n}\\n\\n.tc-tiddler-controls button svg, .tc-tiddler-controls button img {\\n\\theight: 0.75em;\\n}\\n\\n.tc-search button svg, .tc-search a svg {\\n\\theight: 1.2em;\\n\\twidth: 1.2em;\\n\\tmargin: 0 0.25em;\\n}\\n\\n.tc-tiddler-controls button.tc-selected svg,\\n.tc-page-controls button.tc-selected svg {\\n\\tfill: \u003C\u003Ccolour tiddler-controls-foreground-selected>>;\\n}\\n\\n.tc-tiddler-controls button.tc-btn-invisible:hover svg,\\n.tc-search button:hover svg, .tc-search a:hover svg {\\n\\tfill: \u003C\u003Ccolour tiddler-controls-foreground-hover>>;\\n}\\n\\n@media print {\\n\\t.tc-tiddler-controls {\\n\\t\\tdisplay: none;\\n\\t}\\n}\\n\\n.tc-tiddler-help { /* Help prompts within tiddler template */\\n\\tcolor: \u003C\u003Ccolour muted-foreground>>;\\n\\tmargin-top: 14px;\\n}\\n\\n.tc-tiddler-help a.tc-tiddlylink {\\n\\tcolor: \u003C\u003Ccolour very-muted-foreground>>;\\n}\\n\\n.tc-tiddler-frame .tc-edit-texteditor {\\n\\twidth: 100%;\\n\\tmargin: 4px 0 4px 0;\\n}\\n\\n.tc-tiddler-frame input.tc-edit-texteditor,\\n.tc-tiddler-frame textarea.tc-edit-texteditor,\\n.tc-tiddler-frame iframe.tc-edit-texteditor,\\n.tc-tiddler-frame select.tc-edit-texteditor {\\n\\tpadding: 3px 3px 3px 3px;\\n\\tborder: 1px solid \u003C\u003Ccolour tiddler-editor-border>>;\\n\\tline-height: 1.3em;\\n\\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/editorfontfamily}};\\n}\\n\\n.tc-tiddler-frame input.tc-edit-texteditor,\\n.tc-tiddler-frame textarea.tc-edit-texteditor,\\n.tc-tiddler-frame iframe.tc-edit-texteditor {\\n\\t-webkit-appearance: none;\\n}\\n\\n.tc-tiddler-frame input.tc-edit-texteditor,\\n.tc-tiddler-frame select.tc-edit-texteditor,\\n.tc-tiddler-frame textarea.tc-edit-texteditor {\\n\\tbackground-color: \u003C\u003Ccolour tiddler-editor-background>>;\\n}\\n\\n.tc-tiddler-frame iframe.tc-edit-texteditor {\\n\\tbackground-color: \u003C\u003Ccolour tiddler-background>>;\\n}\\n\\n.tc-tiddler-frame .tc-edit-fields input.tc-edit-fieldeditor,\\n.tc-tiddler-frame .tc-edit-fields select.tc-edit-fieldeditor,\\n.tc-tiddler-frame .tc-edit-fields textarea.tc-edit-fieldeditor {\\n\\tmargin: 0;\\n\\tpadding: 2px 3px;\\n}\\n\\n.tc-tiddler-frame .tc-binary-warning {\\n\\twidth: 100%;\\n\\theight: 5em;\\n\\ttext-align: center;\\n\\tpadding: 3em 3em 6em 3em;\\n\\tbackground: \u003C\u003Ccolour alert-background>>;\\n\\tborder: 1px solid \u003C\u003Ccolour alert-border>>;\\n}\\n\\ncanvas.tc-edit-bitmapeditor {\\n\\tborder: 6px solid \u003C\u003Ccolour tiddler-editor-border-image>>;\\n\\tcursor: crosshair;\\n\\t-moz-user-select: none;\\n\\t-webkit-user-select: none;\\n\\t-ms-user-select: none;\\n\\tmargin-top: 6px;\\n\\tmargin-bottom: 6px;\\n}\\n\\n.tc-edit-bitmapeditor-width {\\n\\tdisplay: block;\\n}\\n\\n.tc-edit-bitmapeditor-height {\\n\\tdisplay: block;\\n}\\n\\n.tc-tiddler-body {\\n\\tclear: both;\\n}\\n\\n.tc-tiddler-frame .tc-tiddler-body {\\n\\tfont-size: {{$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize}};\\n\\tline-height: {{$:/themes/tiddlywiki/vanilla/metrics/bodylineheight}};\\n}\\n\\n.tc-titlebar, .tc-tiddler-edit-title {\\n\\toverflow: hidden; /* https://github.com/Jermolene/TiddlyWiki5/issues/282 */\\n}\\n\\nhtml body.tc-body.tc-single-tiddler-window {\\n\\tmargin: 1em;\\n\\tbackground: \u003C\u003Ccolour tiddler-background>>;\\n}\\n\\n.tc-single-tiddler-window img,\\n.tc-single-tiddler-window svg,\\n.tc-single-tiddler-window canvas,\\n.tc-single-tiddler-window embed,\\n.tc-single-tiddler-window iframe {\\n\\tmax-width: 100%;\\n}\\n\\n/*\\n** Editor\\n*/\\n\\n.tc-editor-toolbar {\\n\\tmargin-top: 8px;\\n}\\n\\n.tc-editor-toolbar button {\\n\\tvertical-align: middle;\\n\\tbackground-color: \u003C\u003Ccolour tiddler-controls-foreground>>;\\n\\tcolor: \u003C\u003Ccolour tiddler-controls-foreground-selected>>;\\n\\tfill: \u003C\u003Ccolour tiddler-controls-foreground-selected>>;\\n\\tborder-radius: 4px;\\n\\tpadding: 3px;\\n\\tmargin: 2px 0 2px 4px;\\n}\\n\\n.tc-editor-toolbar button.tc-text-editor-toolbar-item-adjunct {\\n\\tmargin-left: 1px;\\n\\twidth: 1em;\\n\\tborder-radius: 8px;\\n}\\n\\n.tc-editor-toolbar button.tc-text-editor-toolbar-item-start-group {\\n\\tmargin-left: 11px;\\n}\\n\\n.tc-editor-toolbar button.tc-selected {\\n\\tbackground-color: \u003C\u003Ccolour primary>>;\\n}\\n\\n.tc-editor-toolbar button svg {\\n\\twidth: 1.6em;\\n\\theight: 1.2em;\\n}\\n\\n.tc-editor-toolbar button:hover {\\n\\tbackground-color: \u003C\u003Ccolour tiddler-controls-foreground-selected>>;\\n\\tfill: \u003C\u003Ccolour background>>;\\n\\tcolor: \u003C\u003Ccolour background>>;\\n}\\n\\n.tc-editor-toolbar .tc-text-editor-toolbar-more {\\n\\twhite-space: normal;\\n}\\n\\n.tc-editor-toolbar .tc-text-editor-toolbar-more button {\\n\\tdisplay: inline-block;\\n\\tpadding: 3px;\\n\\twidth: auto;\\n}\\n\\n.tc-editor-toolbar .tc-search-results {\\n\\tpadding: 0;\\n}\\n\\n.tc-editor-toolbar button.tc-editortoolbar-stamp-button + .tc-popup .tc-drop-down > p {\\n\\tmargin: 0;\\n\\tpadding: 0;\\n}\\n\\n.tc-editor-toolbar button.tc-editortoolbar-stamp-button + .tc-popup .tc-drop-down a.tc-tiddlylink {\\n\\tfont-weight: normal;\\n}\\n\\n/*\\n** Adjustments for fluid-fixed mode\\n*/\\n\\n@media (min-width: \u003C\u003Csidebarbreakpoint>>) {\\n\\n\u003C\u003Cif-fluid-fixed text:[[\\n\\n\\t.tc-story-river {\\n\\t\\tpadding-right: 0;\\n\\t\\tposition: relative;\\n\\t\\twidth: auto;\\n\\t\\tleft: 0;\\n\\t\\tmargin-left: {{$:/themes/tiddlywiki/vanilla/metrics/storyleft}};\\n\\t\\tmargin-right: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth}};\\n\\t}\\n\\n\\t.tc-tiddler-frame {\\n\\t\\twidth: 100%;\\n\\t}\\n\\n\\t.tc-sidebar-scrollable {\\n\\t\\tleft: auto;\\n\\t\\tbottom: 0;\\n\\t\\tright: 0;\\n\\t\\twidth: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth}};\\n\\t}\\n\\n\\tbody.tc-body .tc-storyview-zoomin-tiddler {\\n\\t\\twidth: 100%;\\n\\t\\twidth: calc(100% - 42px);\\n\\t}\\n\\n]]hiddenSidebarText:[[\\n\\n\\t.tc-story-river {\\n\\t\\tpadding-right: 3em;\\n\\t\\tmargin-right: 0;\\n\\t}\\n\\n\\tbody.tc-body .tc-storyview-zoomin-tiddler {\\n\\t\\twidth: 100%;\\n\\t\\twidth: calc(100% - 84px);\\n\\t}\\n\\n]]>>\\n\\n}\\n\\n/*\\n** Toolbar buttons\\n*/\\n\\n.tc-page-controls svg.tc-image-new-button {\\n\\tfill: \u003C\u003Ccolour toolbar-new-button>>;\\n}\\n\\n.tc-page-controls svg.tc-image-options-button {\\n\\tfill: \u003C\u003Ccolour toolbar-options-button>>;\\n}\\n\\n.tc-page-controls svg.tc-image-save-button {\\n\\tfill: \u003C\u003Ccolour toolbar-save-button>>;\\n}\\n\\n.tc-tiddler-controls button svg.tc-image-info-button {\\n\\tfill: \u003C\u003Ccolour toolbar-info-button>>;\\n}\\n\\n.tc-tiddler-controls button svg.tc-image-edit-button {\\n\\tfill: \u003C\u003Ccolour toolbar-edit-button>>;\\n}\\n\\n.tc-tiddler-controls button svg.tc-image-close-button {\\n\\tfill: \u003C\u003Ccolour toolbar-close-button>>;\\n}\\n\\n.tc-tiddler-controls button svg.tc-image-delete-button {\\n\\tfill: \u003C\u003Ccolour toolbar-delete-button>>;\\n}\\n\\n.tc-tiddler-controls button svg.tc-image-cancel-button {\\n\\tfill: \u003C\u003Ccolour toolbar-cancel-button>>;\\n}\\n\\n.tc-tiddler-controls button svg.tc-image-done-button {\\n\\tfill: \u003C\u003Ccolour toolbar-done-button>>;\\n}\\n\\n.tc-page-controls svg.tc-image-layout-button {\\n\\tfill: \u003C\u003Ccolour toolbar-options-button>>;\\n}\\n\\n/*\\n** Tiddler edit mode\\n*/\\n\\n.tc-tiddler-edit-frame em.tc-edit {\\n\\tcolor: \u003C\u003Ccolour muted-foreground>>;\\n\\tfont-style: normal;\\n}\\n\\n.tc-edit-type-dropdown a.tc-tiddlylink-missing {\\n\\tfont-style: normal;\\n}\\n\\n.tc-type-selector .tc-edit-typeeditor {\\n\\twidth: auto;\\n}\\n\\n.tc-type-selector-dropdown-wrapper {\\n\\tdisplay: inline-block;\\n}\\n\\n\u003C\u003Cset-type-selector-min-width>>\\n\\n.tc-edit-tags {\\n\\tborder: 1px solid \u003C\u003Ccolour tiddler-editor-border>>;\\n\\tpadding: 4px 8px 4px 8px;\\n}\\n\\n.tc-edit-add-tag {\\n\\tdisplay: inline-block;\\n}\\n\\n.tc-edit-add-tag .tc-add-tag-name input {\\n\\twidth: 50%;\\n}\\n\\n.tc-edit-add-tag .tc-keyboard {\\n\\tdisplay:inline;\\n}\\n\\n.tc-edit-tags .tc-tag-label {\\n\\tdisplay: inline-block;\\n}\\n\\n.tc-edit-tags-list {\\n\\tmargin: 14px 0 14px 0;\\n}\\n\\n.tc-remove-tag-button {\\n\\tpadding-left: 4px;\\n}\\n\\n.tc-tiddler-preview {\\n\\toverflow: auto;\\n}\\n\\n.tc-tiddler-preview-preview {\\n\\tfloat: right;\\n\\twidth: 49%;\\n\\tborder: 1px solid \u003C\u003Ccolour tiddler-editor-border>>;\\n\\tmargin: 4px 0 3px 3px;\\n\\tpadding: 3px 3px 3px 3px;\\n}\\n\\n\u003C\u003Cif-editor-height-fixed then:[[\\n\\n.tc-tiddler-preview-preview {\\n\\toverflow-y: scroll;\\n\\theight: {{$:/config/TextEditor/EditorHeight/Height}};\\n}\\n\\n]]>>\\n\\n.tc-tiddler-frame .tc-tiddler-preview .tc-edit-texteditor {\\n\\twidth: 49%;\\n}\\n\\n.tc-tiddler-frame .tc-tiddler-preview canvas.tc-edit-bitmapeditor {\\n\\tmax-width: 49%;\\n}\\n\\n.tc-edit-fields {\\n\\twidth: 100%;\\n}\\n\\n.tc-edit-fields.tc-edit-fields-small {\\n\\tmargin-top: 0;\\n\\tmargin-bottom: 0;\\n}\\n\\n.tc-edit-fields table, .tc-edit-fields tr, .tc-edit-fields td {\\n\\tborder: none;\\n\\tpadding: 4px;\\n}\\n\\n.tc-edit-fields > tbody > .tc-edit-field:nth-child(odd) {\\n\\tbackground-color: \u003C\u003Ccolour tiddler-editor-fields-odd>>;\\n}\\n\\n.tc-edit-fields > tbody > .tc-edit-field:nth-child(even) {\\n\\tbackground-color: \u003C\u003Ccolour tiddler-editor-fields-even>>;\\n}\\n\\n.tc-edit-field-name {\\n\\ttext-align: right;\\n}\\n\\n.tc-edit-field-value input {\\n\\twidth: 100%;\\n}\\n\\n.tc-edit-field-remove {\\n}\\n\\n.tc-edit-field-remove svg {\\n\\theight: 1em;\\n\\twidth: 1em;\\n\\tfill: \u003C\u003Ccolour muted-foreground>>;\\n\\tvertical-align: middle;\\n}\\n\\n.tc-edit-field-add-name-wrapper input.tc-edit-texteditor {\\n\\twidth: auto;\\n}\\n\\n.tc-edit-field-add-name-wrapper {\\n\\tdisplay: inline-block;\\n}\\n\\n.tc-edit-field-add-value {\\n\\tdisplay: inline-block;\\n}\\n\\n@media (min-width: \u003C\u003Csidebarbreakpoint>>) {\\n\\n.tc-edit-field-add-value {\\n\\t\\twidth: 35%;\\n\\t}\\n\\n}\\n\\n.tc-edit-field-add-button {\\n\\tdisplay: inline-block;\\n\\twidth: 10%;\\n}\\n\\n/*\\n** Tiddler editor dropzone\\n*/\\n\\n.tc-dropzone-editor {\\n\\tposition:relative;\\n}\\n\\n.tc-dropzone-editor.tc-dragover .tc-editor-toolbar::after{\\n\\tz-index: 10000;\\n\\ttop:0;\\n\\tleft:0;\\n\\tright:0;\\n\\theight: 100%;\\n\\tbackground: \u003C\u003Ccolour dropzone-background>>;\\n\\tcontent: \\\"\u003C\u003Clingo DropMessage>>\\\";\\n\\tpointer-events: none;\\n\\tposition: absolute;\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\tjustify-content: center;\\n\\tbackground-color: \u003C\u003Ccolor background>>;\\n\\tborder: 4px dashed \u003C\u003Ccolor modal-border>>;\\n\\tfont-weight: bold;\\n\\tfont-size: 150%;\\n\\topacity: 0.8;\\n\\tcolor: \u003C\u003Ccolor foreground>>;\\n}\\n\\n.tc-editor-importpopup {\\n\\twidth: 100%;\\n\\theight: 100%;\\n}\\n\\n.tc-editor-import {\\n\\tposition: absolute;\\n\\ttop: 50%;\\n\\tleft: 50%;\\n\\ttransform: translate(-50%, -50%);\\n\\tbackground: \u003C\u003Ccolor pre-background>>;\\n\\tbox-shadow: 2px 2px 10px \u003C\u003Ccolour foreground>>;\\n\\tpadding: 10px;\\n\\twidth: 96%;\\n\\tborder: 1px solid \u003C\u003Ccolor tiddler-controls-foreground>>;\\n\\ttext-align:center;\\n}\\n\\n.tc-editor-import img {\\n\\tmax-height: 500px;\\n}\\n\\n/*\\n** Storyview Classes\\n*/\\n\\n.tc-viewswitcher .tc-image-button {\\n\\tmargin-right: .3em;\\n}\\n\\n.tc-storyview-zoomin-tiddler {\\n\\tposition: absolute;\\n\\tdisplay: block;\\n\\twidth: 100%;\\n}\\n\\n@media (min-width: \u003C\u003Csidebarbreakpoint>>) {\\n\\n.tc-storyview-zoomin-tiddler {\\n\\t\\twidth: calc(100% - 84px);\\n\\t}\\n\\n}\\n\\n/*\\n** Dropdowns\\n*/\\n\\n.tc-btn-dropdown {\\n\\ttext-align: left;\\n}\\n\\n.tc-btn-dropdown svg, .tc-btn-dropdown img {\\n\\theight: 1em;\\n\\twidth: 1em;\\n\\tfill: \u003C\u003Ccolour muted-foreground>>;\\n}\\n\\n.tc-drop-down-wrapper {\\n\\tposition: relative;\\n}\\n\\n.tc-drop-down {\\n\\tmin-width: 380px;\\n\\tborder: 1px solid \u003C\u003Ccolour dropdown-border>>;\\n\\tbackground-color: \u003C\u003Ccolour dropdown-background>>;\\n\\tpadding: 7px 0 7px 0;\\n\\tmargin: 4px 0 0 0;\\n\\twhite-space: nowrap;\\n\\ttext-shadow: none;\\n\\tline-height: 1.4;\\n}\\n\\n.tc-drop-down .tc-drop-down {\\n\\tmargin-left: 14px;\\n}\\n\\n.tc-drop-down button svg, .tc-drop-down a svg {\\n\\tfill: \u003C\u003Ccolour foreground>>;\\n}\\n\\n.tc-drop-down button:disabled svg {\\n\\tfill: \u003C\u003Ccolour muted-foreground>>;\\n}\\n\\n.tc-drop-down button.tc-btn-invisible:hover svg {\\n\\tfill: \u003C\u003Ccolour background>>;\\n}\\n\\n.tc-drop-down .tc-drop-down-info {\\n\\tpadding-left: 14px;\\n}\\n\\n.tc-drop-down p {\\n\\tpadding: 0 14px 0 14px;\\n}\\n\\n.tc-drop-down svg {\\n\\twidth: 1em;\\n\\theight: 1em;\\n}\\n\\n.tc-drop-down img {\\n\\twidth: 1em;\\n}\\n\\n.tc-drop-down a, .tc-drop-down button {\\n\\tdisplay: block;\\n\\tpadding: 0 14px 0 14px;\\n\\twidth: 100%;\\n\\ttext-align: left;\\n\\tcolor: \u003C\u003Ccolour foreground>>;\\n\\tline-height: 1.4;\\n}\\n\\n.tc-drop-down .tc-tab-set .tc-tab-buttons button {\\n\\tdisplay: inline-block;\\n\\twidth: auto;\\n\\tmargin-bottom: 0px;\\n\\tborder-bottom-left-radius: 0;\\n\\tborder-bottom-right-radius: 0;\\n}\\n\\n.tc-drop-down .tc-prompt {\\n\\tpadding: 0 14px;\\n}\\n\\n.tc-drop-down .tc-chooser {\\n\\tborder: none;\\n}\\n\\n.tc-drop-down .tc-chooser .tc-swatches-horiz {\\n\\tfont-size: 0.4em;\\n\\tpadding-left: 1.2em;\\n}\\n\\n.tc-drop-down .tc-file-input-wrapper {\\n\\twidth: 100%;\\n}\\n\\n.tc-drop-down .tc-file-input-wrapper button {\\n\\tcolor: \u003C\u003Ccolour foreground>>;\\n}\\n\\n.tc-drop-down a:hover, .tc-drop-down button:hover, .tc-drop-down .tc-file-input-wrapper:hover button {\\n\\tcolor: \u003C\u003Ccolour tiddler-link-background>>;\\n\\tbackground-color: \u003C\u003Ccolour tiddler-link-foreground>>;\\n\\ttext-decoration: none;\\n}\\n\\n.tc-drop-down .tc-tab-buttons button {\\n\\tbackground-color: \u003C\u003Ccolour dropdown-tab-background>>;\\n}\\n\\n.tc-drop-down .tc-tab-buttons button.tc-tab-selected {\\n\\tbackground-color: \u003C\u003Ccolour dropdown-tab-background-selected>>;\\n\\tborder-bottom: 1px solid \u003C\u003Ccolour dropdown-tab-background-selected>>;\\n}\\n\\n.tc-drop-down-bullet {\\n\\tdisplay: inline-block;\\n\\twidth: 0.5em;\\n}\\n\\n.tc-drop-down .tc-tab-contents a {\\n\\tpadding: 0 0.5em 0 0.5em;\\n}\\n\\n.tc-block-dropdown-wrapper {\\n\\tposition: relative;\\n}\\n\\n.tc-block-dropdown {\\n\\tposition: absolute;\\n\\tmin-width: 220px;\\n\\tborder: 1px solid \u003C\u003Ccolour dropdown-border>>;\\n\\tbackground-color: \u003C\u003Ccolour dropdown-background>>;\\n\\tpadding: 7px 0;\\n\\tmargin: 4px 0 0 0;\\n\\twhite-space: nowrap;\\n\\tz-index: 1000;\\n\\ttext-shadow: none;\\n}\\n\\n.tc-block-dropdown.tc-search-drop-down {\\n\\tmargin-left: -12px;\\n}\\n\\n.tc-block-dropdown a {\\n\\tdisplay: block;\\n\\tpadding: 4px 14px 4px 14px;\\n}\\n\\n.tc-block-dropdown.tc-search-drop-down a {\\n\\tdisplay: block;\\n\\tpadding: 0px 10px 0px 10px;\\n}\\n\\n.tc-drop-down .tc-dropdown-item-plain,\\n.tc-block-dropdown .tc-dropdown-item-plain {\\n\\tpadding: 4px 14px 4px 7px;\\n}\\n\\n.tc-drop-down .tc-dropdown-item,\\n.tc-block-dropdown .tc-dropdown-item {\\n\\tpadding: 4px 14px 4px 7px;\\n\\tcolor: \u003C\u003Ccolour muted-foreground>>;\\n}\\n\\n.tc-block-dropdown a.tc-tiddlylink:hover {\\n\\tcolor: \u003C\u003Ccolour tiddler-link-background>>;\\n\\tbackground-color: \u003C\u003Ccolour tiddler-link-foreground>>;\\n\\ttext-decoration: none;\\n}\\n\\n.tc-search-results {\\n\\tpadding: 0 7px 0 7px;\\n}\\n\\n.tc-image-chooser, .tc-colour-chooser {\\n\\twhite-space: normal;\\n}\\n\\n.tc-image-chooser a,\\n.tc-colour-chooser a {\\n\\tdisplay: inline-block;\\n\\tvertical-align: top;\\n\\ttext-align: center;\\n\\tposition: relative;\\n}\\n\\n.tc-image-chooser a {\\n\\tborder: 1px solid \u003C\u003Ccolour muted-foreground>>;\\n\\tpadding: 2px;\\n\\tmargin: 2px;\\n\\twidth: 4em;\\n\\theight: 4em;\\n}\\n\\n.tc-colour-chooser a {\\n\\tpadding: 3px;\\n\\twidth: 2em;\\n\\theight: 2em;\\n\\tvertical-align: middle;\\n}\\n\\n.tc-image-chooser a:hover,\\n.tc-colour-chooser a:hover {\\n\\tbackground: \u003C\u003Ccolour primary>>;\\n\\tpadding: 0px;\\n\\tborder: 3px solid \u003C\u003Ccolour primary>>;\\n}\\n\\n.tc-image-chooser a svg,\\n.tc-image-chooser a img {\\n\\tdisplay: inline-block;\\n\\twidth: auto;\\n\\theight: auto;\\n\\tmax-width: 3.5em;\\n\\tmax-height: 3.5em;\\n\\tposition: absolute;\\n\\ttop: 0;\\n\\tbottom: 0;\\n\\tleft: 0;\\n\\tright: 0;\\n\\tmargin: auto;\\n}\\n\\n/* Make search dropdown visible on small screens. issue #7003 */\\n@media (max-width: \u003C\u003Csidebarbreakpoint>>) {\\n\\n.tc-sidebar-search .tc-block-dropdown-wrapper {\\n\\t\\tposition: initial;\\n\\t}\\n\\n}\\n\\n/*\\n** Modals\\n*/\\n\\n.tc-modal-wrapper {\\n\\tposition: fixed;\\n\\toverflow: auto;\\n\\toverflow-y: scroll;\\n\\ttop: 0;\\n\\tright: 0;\\n\\tbottom: 0;\\n\\tleft: 0;\\n\\tz-index: 900;\\n}\\n\\n.tc-modal-backdrop {\\n\\tposition: fixed;\\n\\ttop: 0;\\n\\tright: 0;\\n\\tbottom: 0;\\n\\tleft: 0;\\n\\tz-index: 1000;\\n\\tbackground-color: \u003C\u003Ccolour modal-backdrop>>;\\n}\\n\\n.tc-modal {\\n\\tz-index: 1100;\\n\\tbackground-color: \u003C\u003Ccolour modal-background>>;\\n\\tborder: 1px solid \u003C\u003Ccolour modal-border>>;\\n}\\n\\n@media (max-width: 55em) {\\n\\t.tc-modal {\\n\\t\\tposition: fixed;\\n\\t\\ttop: 1em;\\n\\t\\tleft: 1em;\\n\\t\\tright: 1em;\\n\\t}\\n\\n.tc-modal-body {\\n\\t\\toverflow-y: auto;\\n\\t\\tmax-height: 400px;\\n\\t\\tmax-height: 60vh;\\n\\t}\\n}\\n\\n@media (min-width: 55em) {\\n\\t.tc-modal {\\n\\t\\tposition: fixed;\\n\\t\\ttop: 2em;\\n\\t\\tleft: 25%;\\n\\t\\twidth: 50%;\\n\\t}\\n\\n.tc-modal-body {\\n\\t\\toverflow-y: auto;\\n\\t\\tmax-height: 400px;\\n\\t\\tmax-height: 60vh;\\n\\t}\\n}\\n\\n.tc-modal-header {\\n\\tpadding: 9px 15px;\\n\\tborder-bottom: 1px solid \u003C\u003Ccolour modal-header-border>>;\\n}\\n\\n.tc-modal-header h3 {\\n\\tmargin: 0;\\n\\tline-height: 30px;\\n}\\n\\n.tc-modal-header img, .tc-modal-header svg {\\n\\twidth: 1em;\\n\\theight: 1em;\\n}\\n\\n.tc-modal-body {\\n\\tpadding: 15px;\\n}\\n\\n.tc-modal-footer {\\n\\tpadding: 14px 15px 15px;\\n\\tmargin-bottom: 0;\\n\\ttext-align: right;\\n\\tbackground-color: \u003C\u003Ccolour modal-footer-background>>;\\n\\tborder-top: 1px solid \u003C\u003Ccolour modal-footer-border>>;\\n}\\n\\n.tc-modal-prevent-scroll {\\n\\toverflow: hidden;\\n}\\n\\n/*\\n** Centered modals\\n*/\\n.tc-modal-centered .tc-modal {\\n\\twidth: auto;\\n\\ttop: 50%;\\n\\tleft: 50%;\\n\\ttransform: translate(-50%, -50%) !important;\\n}\\n\\n/*\\n** Notifications\\n*/\\n\\n.tc-notification {\\n\\tposition: fixed;\\n\\ttop: 14px;\\n\\tright: 42px;\\n\\tz-index: 1300;\\n\\tmax-width: 280px;\\n\\tpadding: 0 14px 0 14px;\\n\\tbackground-color: \u003C\u003Ccolour notification-background>>;\\n\\tborder: 1px solid \u003C\u003Ccolour notification-border>>;\\n}\\n\\n/*\\n** Tabs\\n*/\\n\\n.tc-tab-set.tc-vertical {\\n\\tdisplay: -webkit-flex;\\n\\tdisplay: flex;\\n}\\n\\n.tc-tab-buttons {\\n\\tfont-size: 0.85em;\\n\\tpadding-top: 1em;\\n\\tmargin-bottom: -2px;\\n}\\n\\n.tc-tab-buttons.tc-vertical {\\n\\tz-index: 100;\\n\\tdisplay: block;\\n\\tpadding-top: 14px;\\n\\tvertical-align: top;\\n\\ttext-align: right;\\n\\tmargin-bottom: inherit;\\n\\tmargin-right: -1px;\\n\\tmax-width: 33%;\\n\\t-webkit-flex: 0 0 auto;\\n\\tflex: 0 0 auto;\\n}\\n\\n.tc-tab-buttons button.tc-tab-selected {\\n\\tcolor: \u003C\u003Ccolour tab-foreground-selected>>;\\n\\tbackground-color: \u003C\u003Ccolour tab-background-selected>>;\\n\\tborder-left: 1px solid \u003C\u003Ccolour tab-border-selected>>;\\n\\tborder-top: 1px solid \u003C\u003Ccolour tab-border-selected>>;\\n\\tborder-right: 1px solid \u003C\u003Ccolour tab-border-selected>>;\\n}\\n\\n.tc-tab-buttons button {\\n\\tcolor: \u003C\u003Ccolour tab-foreground>>;\\n\\tpadding: 3px 5px 3px 5px;\\n\\tmargin-right: 0.3em;\\n\\tfont-weight: normal;\\n\\tborder: none;\\n\\tbackground: inherit;\\n\\tbackground-color: \u003C\u003Ccolour tab-background>>;\\n\\tborder-left: 1px solid \u003C\u003Ccolour tab-border>>;\\n\\tborder-top: 1px solid \u003C\u003Ccolour tab-border>>;\\n\\tborder-right: 1px solid \u003C\u003Ccolour tab-border>>;\\n\\tborder-top-left-radius: 2px;\\n\\tborder-top-right-radius: 2px;\\n\\tborder-bottom-left-radius: 0;\\n\\tborder-bottom-right-radius: 0;\\n}\\n\\n.tc-tab-buttons.tc-vertical button {\\n\\tdisplay: block;\\n\\twidth: 100%;\\n\\tmargin-top: 3px;\\n\\tmargin-right: 0;\\n\\ttext-align: right;\\n\\tbackground-color: \u003C\u003Ccolour tab-background>>;\\n\\tborder-left: 1px solid \u003C\u003Ccolour tab-border>>;\\n\\tborder-bottom: 1px solid \u003C\u003Ccolour tab-border>>;\\n\\tborder-right: none;\\n\\tborder-top-left-radius: 2px;\\n\\tborder-bottom-left-radius: 2px;\\n\\tborder-top-right-radius: 0;\\n\\tborder-bottom-right-radius: 0;\\n}\\n\\n.tc-tab-buttons.tc-vertical button.tc-tab-selected {\\n\\tbackground-color: \u003C\u003Ccolour tab-background-selected>>;\\n\\tborder-right: 1px solid \u003C\u003Ccolour tab-background-selected>>;\\n}\\n\\n.tc-tab-divider {\\n\\tborder-top: 1px solid \u003C\u003Ccolour tab-divider>>;\\n}\\n\\n.tc-tab-divider.tc-vertical {\\n\\tdisplay: none;\\n}\\n\\n.tc-tab-content {\\n\\tmargin-top: 14px;\\n}\\n\\n.tc-tab-content.tc-vertical {\\n\\tdisplay: inline-block;\\n\\tvertical-align: top;\\n\\tpadding-top: 0;\\n\\tpadding-left: 14px;\\n\\tborder-left: 1px solid \u003C\u003Ccolour tab-border>>;\\n\\t-webkit-flex: 1 0 70%;\\n\\tflex: 1 0 70%;\\n\\toverflow: auto;\\n}\\n\\n.tc-sidebar-lists .tc-tab-buttons {\\n\\tmargin-bottom: -1px;\\n}\\n\\n.tc-sidebar-lists .tc-tab-buttons button.tc-tab-selected {\\n\\tbackground-color: \u003C\u003Ccolour sidebar-tab-background-selected>>;\\n\\tcolor: \u003C\u003Ccolour sidebar-tab-foreground-selected>>;\\n\\tborder-left: 1px solid \u003C\u003Ccolour sidebar-tab-border-selected>>;\\n\\tborder-top: 1px solid \u003C\u003Ccolour sidebar-tab-border-selected>>;\\n\\tborder-right: 1px solid \u003C\u003Ccolour sidebar-tab-border-selected>>;\\n}\\n\\n.tc-sidebar-lists .tc-tab-buttons button {\\n\\tbackground-color: \u003C\u003Ccolour sidebar-tab-background>>;\\n\\tcolor: \u003C\u003Ccolour sidebar-tab-foreground>>;\\n\\tborder-left: 1px solid \u003C\u003Ccolour sidebar-tab-border>>;\\n\\tborder-top: 1px solid \u003C\u003Ccolour sidebar-tab-border>>;\\n\\tborder-right: 1px solid \u003C\u003Ccolour sidebar-tab-border>>;\\n}\\n\\n.tc-sidebar-lists .tc-tab-divider {\\n\\tborder-top: 1px solid \u003C\u003Ccolour sidebar-tab-divider>>;\\n}\\n\\n.tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button {\\n\\tdisplay: block;\\n\\twidth: 100%;\\n\\tbackground-color: \u003C\u003Ccolour sidebar-tab-background>>;\\n\\tborder-top: none;\\n\\tborder-left: none;\\n\\tborder-bottom: none;\\n\\tborder-right: 1px solid #ccc;\\n\\tmargin-bottom: inherit;\\n}\\n\\n.tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button.tc-tab-selected {\\n\\tbackground-color: \u003C\u003Ccolour sidebar-tab-background-selected>>;\\n\\tborder: none;\\n}\\n\\n/*\\n** Manager\\n*/\\n\\n.tc-manager-wrapper {\\n\\t\\n}\\n\\n.tc-manager-controls {\\n\\t\\n}\\n\\n.tc-manager-control {\\n\\tmargin: 0.5em 0;\\n}\\n\\n.tc-manager-control select {\\n\\tmax-width: 100%;\\n}\\n\\n.tc-manager-list {\\n\\twidth: 100%;\\n\\tborder-top: 1px solid \u003C\u003Ccolour muted-foreground>>;\\n\\tborder-left: 1px solid \u003C\u003Ccolour muted-foreground>>;\\n\\tborder-right: 1px solid \u003C\u003Ccolour muted-foreground>>;\\n}\\n\\n.tc-manager-list-item {\\n\\n}\\n\\n.tc-manager-list-item-heading {\\n\\tdisplay: block;\\n\\twidth: 100%;\\n\\ttext-align: left;\\n\\tborder-bottom: 1px solid \u003C\u003Ccolour muted-foreground>>;\\n\\tpadding: 3px;\\n}\\n\\n.tc-manager-list-item-heading-selected {\\n\\tfont-weight: bold;\\n\\tcolor: \u003C\u003Ccolour background>>;\\n\\tfill: \u003C\u003Ccolour background>>;\\n\\tbackground-color: \u003C\u003Ccolour foreground>>;\\n}\\n\\n.tc-manager-list-item-heading:hover {\\n\\tbackground: \u003C\u003Ccolour primary>>;\\n\\tcolor: \u003C\u003Ccolour background>>;\\n}\\n\\n.tc-manager-list-item-content {\\n\\tdisplay: flex;\\n}\\n\\n.tc-manager-list-item-content-sidebar {\\n\\tflex: 1 0;\\n\\tbackground: \u003C\u003Ccolour tiddler-editor-background>>;\\n\\tborder-right: 0.5em solid \u003C\u003Ccolour muted-foreground>>;\\n\\tborder-bottom: 0.5em solid \u003C\u003Ccolour muted-foreground>>;\\n\\twhite-space: nowrap;\\n}\\n\\n.tc-manager-list-item-content-item-heading {\\n\\tdisplay: block;\\n\\twidth: 100%;\\n\\ttext-align: left;\\n\\tbackground: \u003C\u003Ccolour muted-foreground>>;\\n\\ttext-transform: uppercase;\\n\\tfont-size: 0.6em;\\n\\tfont-weight: bold;\\n\\tpadding: 0.5em 0 0.5em 0;\\n}\\n\\n.tc-manager-list-item-content-item-body {\\n\\tpadding: 0 0.5em 0 0.5em;\\n}\\n\\n.tc-manager-list-item-content-item-body > pre {\\n\\tmargin: 0.5em 0 0.5em 0;\\n\\tborder: none;\\n\\tbackground: inherit;\\n}\\n\\n.tc-manager-list-item-content-tiddler {\\n\\tflex: 3 1;\\n\\tborder-left: 0.5em solid \u003C\u003Ccolour muted-foreground>>;\\n\\tborder-right: 0.5em solid \u003C\u003Ccolour muted-foreground>>;\\n\\tborder-bottom: 0.5em solid \u003C\u003Ccolour muted-foreground>>;\\n}\\n\\n.tc-manager-list-item-content-item-body > table {\\n\\tborder: none;\\n\\tpadding: 0;\\n\\tmargin: 0;\\n}\\n\\n.tc-manager-list-item-content-item-body > table td {\\n\\tborder: none;\\n}\\n\\n.tc-manager-icon-editor > button {\\n\\twidth: 100%;\\n}\\n\\n.tc-manager-icon-editor > button > svg,\\n.tc-manager-icon-editor > button > button {\\n\\twidth: 100%;\\n\\theight: auto;\\n}\\n\\n/*\\n** Import table\\n*/\\n\\n.tc-import-table {\\n\\twidth: 100%;\\n}\\n\\n.tc-import-table svg.tc-image-edit-button {\\n\\tmax-width: unset;\\n}\\n\\n.tc-import-table th:first-of-type {\\n\\twidth: 10%;\\n}\\n\\n.tc-import-table th:last-of-type {\\n\\twidth: 30%;\\n}\\n\\n.tc-import-table .tc-row-disabled {\\n\\tbackground: \u003C\u003Ccolour very-muted-foreground>>10;\\n\\topacity: 0.8;\\n}\\n\\n.tc-import-table .tc-row-warning {\\n\\tbackground: \u003C\u003Ccolour diff-delete-background>>50;\\n}\\n\\n/*\\n** Alerts\\n*/\\n\\n.tc-alerts {\\n\\tposition: fixed;\\n\\ttop: 28px;\\n\\tleft: 0;\\n\\tright: 0;\\n\\tmax-width: 50%;\\n\\tz-index: 20000;\\n}\\n\\n.tc-alert {\\n\\tposition: relative;\\n\\tmargin: 14px;\\n\\tpadding: 7px;\\n\\tborder: 1px solid \u003C\u003Ccolour alert-border>>;\\n\\tbackground-color: \u003C\u003Ccolour alert-background>>;\\n}\\n\\n.tc-alert-toolbar {\\n\\tposition: absolute;\\n\\ttop: 7px;\\n\\tright: 7px;\\n\\tline-height: 0;\\n}\\n\\n.tc-alert-toolbar svg {\\n\\tfill: \u003C\u003Ccolour alert-muted-foreground>>;\\n}\\n\\n.tc-alert-subtitle {\\n\\tcolor: \u003C\u003Ccolour alert-muted-foreground>>;\\n\\tfont-weight: bold;\\n\\tfont-size: 0.8em;\\n\\tmargin-bottom: 0.5em;\\n}\\n\\n.tc-alert-body > p {\\n\\tmargin: 0;\\n}\\n\\n.tc-alert-highlight {\\n\\tcolor: \u003C\u003Ccolour alert-highlight>>;\\n}\\n\\n@media (min-width: \u003C\u003Csidebarbreakpoint>>) {\\n\\n.tc-static-alert {\\n\\t\\tposition: relative;\\n\\t}\\n\\n.tc-static-alert-inner {\\n\\t\\tposition: absolute;\\n\\t\\tz-index: 100;\\n\\t}\\n\\n}\\n\\n.tc-static-alert-inner {\\n\\tpadding: 0 2px 2px 42px;\\n\\tcolor: \u003C\u003Ccolour static-alert-foreground>>;\\n}\\n\\n/*\\n** Floating drafts list\\n*/\\n\\n.tc-drafts-list {\\n\\tz-index: 2000;\\n\\tposition: fixed;\\n\\tfont-size: 0.8em;\\n\\tleft: 0;\\n\\tbottom: 0;\\n}\\n\\n.tc-drafts-list a {\\n\\tmargin: 0 0.5em;\\n\\tpadding: 4px 4px;\\n\\tborder-top-left-radius: 4px;\\n\\tborder-top-right-radius: 4px;\\n\\tborder: 1px solid \u003C\u003Ccolour background>>;\\n\\tborder-bottom: none;\\n\\tbackground: \u003C\u003Ccolour dirty-indicator>>;\\n\\tcolor: \u003C\u003Ccolour background>>;\\n\\tfill: \u003C\u003Ccolour background>>;\\n}\\n\\n.tc-drafts-list a:hover {\\n\\ttext-decoration: none;\\n\\tbackground: \u003C\u003Ccolour foreground>>;\\n\\tcolor: \u003C\u003Ccolour background>>;\\n\\tfill: \u003C\u003Ccolour background>>;\\n}\\n\\n.tc-drafts-list a svg {\\n\\twidth: 1em;\\n\\theight: 1em;\\n\\tvertical-align: text-bottom;\\n}\\n\\n/*\\n** Control panel\\n*/\\n\\n.tc-control-panel td {\\n\\tpadding: 4px;\\n}\\n\\n.tc-control-panel table, .tc-control-panel table input, .tc-control-panel table textarea {\\n\\twidth: 100%;\\n}\\n\\n.tc-plugin-info {\\n\\tdisplay: flex;\\n\\ttext-shadow: none;\\n\\tborder: 1px solid \u003C\u003Ccolour muted-foreground>>;\\n\\tfill: \u003C\u003Ccolour muted-foreground>>;\\n\\tbackground-color: \u003C\u003Ccolour background>>;\\n\\tmargin: 0.5em 0 0.5em 0;\\n\\tpadding: 4px;\\n\\talign-items: center;\\n}\\n\\n.tc-sidebar-lists a.tc-tiddlylink.tc-plugin-info {\\n\\tcolor: \u003C\u003Ccolour tiddler-link-foreground>>;\\n}\\n\\n.tc-plugin-info-sub-plugins .tc-plugin-info {\\n\\tmargin: 0.5em;\\n\\tbackground: \u003C\u003Ccolour background>>;\\n}\\n\\n.tc-plugin-info-sub-plugin-indicator {\\n\\tmargin: -16px 1em 0 2em;\\n}\\n\\n.tc-plugin-info-sub-plugin-indicator button {\\n\\tcolor: \u003C\u003Ccolour background>>;\\n\\tbackground: \u003C\u003Ccolour foreground>>;\\n\\tborder-radius: 8px;\\n\\tpadding: 2px 7px;\\n\\tfont-size: 0.75em;\\n}\\n\\n.tc-plugin-info-sub-plugins .tc-plugin-info-dropdown {\\n\\tmargin-left: 1em;\\n\\tmargin-right: 1em;\\n}\\n\\n.tc-plugin-info-disabled {\\n\\tbackground: -webkit-repeating-linear-gradient(45deg, #ff0, #ff0 10px, #eee 10px, #eee 20px);\\n\\tbackground: repeating-linear-gradient(45deg, #ff0, #ff0 10px, #eee 10px, #eee 20px);\\n}\\n\\n.tc-plugin-info-disabled:hover {\\n\\tbackground: -webkit-repeating-linear-gradient(45deg, #aa0, #aa0 10px, #888 10px, #888 20px);\\n\\tbackground: repeating-linear-gradient(45deg, #aa0, #aa0 10px, #888 10px, #888 20px);\\n}\\n\\na.tc-tiddlylink.tc-plugin-info:hover {\\n\\ttext-decoration: none;\\n\\tbackground-color: \u003C\u003Ccolour primary>>;\\n\\tcolor: \u003C\u003Ccolour background>>;\\n\\tfill: \u003C\u003Ccolour foreground>>;\\n}\\n\\na.tc-tiddlylink.tc-plugin-info:hover > .tc-plugin-info-chunk > svg {\\n\\tfill: \u003C\u003Ccolour background>>;\\n}\\n\\n.tc-plugin-info-chunk {\\n\\tmargin: 2px;\\n}\\n\\n.tc-plugin-info-chunk.tc-plugin-info-toggle {\\n\\tflex-grow: 0;\\n\\tflex-shrink: 0;\\n\\tline-height: 1;\\n}\\n\\n.tc-plugin-info-chunk.tc-plugin-info-icon {\\n\\tflex-grow: 0;\\n\\tflex-shrink: 0;\\n\\tline-height: 1;\\n}\\n\\n.tc-plugin-info-chunk.tc-plugin-info-description {\\n\\tflex-grow: 1;\\n}\\n\\n.tc-plugin-info-chunk.tc-plugin-info-buttons {\\n\\tfont-size: 0.8em;\\n\\tline-height: 1.2;\\n\\tflex-grow: 0;\\n\\tflex-shrink: 0;\\n\\ttext-align: right;\\n}\\n\\n.tc-plugin-info-chunk.tc-plugin-info-description h1 {\\n\\tfont-size: 1em;\\n\\tline-height: 1.2;\\n\\tmargin: 2px 0 2px 0;\\n}\\n\\n.tc-plugin-info-chunk.tc-plugin-info-description h2 {\\n\\tfont-size: 0.8em;\\n\\tline-height: 1.2;\\n\\tmargin: 2px 0 2px 0;\\n}\\n\\n.tc-plugin-info-chunk.tc-plugin-info-description div {\\n\\tfont-size: 0.7em;\\n\\tline-height: 1.2;\\n\\tmargin: 2px 0 2px 0;\\n}\\n\\n.tc-plugin-info-chunk.tc-plugin-info-toggle img, .tc-plugin-info-chunk.tc-plugin-info-toggle svg {\\n\\twidth: 1em;\\n\\theight: 1em;\\n}\\n\\n.tc-plugin-info-chunk.tc-plugin-info-icon img, .tc-plugin-info-chunk.tc-plugin-info-icon svg {\\n\\twidth: 2em;\\n\\theight: 2em;\\n}\\n\\n.tc-plugin-info-dropdown {\\n\\tborder: 1px solid \u003C\u003Ccolour muted-foreground>>;\\n\\tbackground: \u003C\u003Ccolour background>>;\\n\\tmargin-top: -8px;\\n}\\n\\n.tc-plugin-info-dropdown-message {\\n\\tbackground: \u003C\u003Ccolour message-background>>;\\n\\tpadding: 0.5em 1em 0.5em 1em;\\n\\tfont-weight: bold;\\n\\tfont-size: 0.8em;\\n}\\n\\n.tc-plugin-info-dropdown-body {\\n\\tpadding: 1em 1em 0 1em;\\n\\tbackground: \u003C\u003Ccolour background>>;\\n}\\n\\n.tc-plugin-info-sub-plugins {\\n\\tpadding: 0.5em;\\n\\tmargin: 0 1em 1em 1em;\\n\\tbackground: \u003C\u003Ccolour notification-background>>;\\n}\\n\\n.tc-install-plugin {\\n\\tfont-weight: bold;\\n\\tbackground: green;\\n\\tcolor: white;\\n\\tfill: white;\\n\\tborder-radius: 4px;\\n\\tpadding: 3px;\\n}\\n\\n.tc-install-plugin.tc-reinstall-downgrade {\\n\\tbackground: red;\\n}\\n\\n.tc-install-plugin.tc-reinstall {\\n\\tbackground: blue;\\n}\\n\\n.tc-install-plugin.tc-reinstall-upgrade {\\n\\tbackground: orange;\\n}\\n\\n.tc-check-list {\\n\\tline-height: 2em;\\n}\\n\\n.tc-check-list .tc-image-button {\\n\\theight: 1.5em;\\n}\\n\\n/*\\n** Message boxes\\n*/\\n\\n.tc-message-box {\\n\\tborder: 1px solid \u003C\u003Ccolour message-border>>;\\n\\tbackground: \u003C\u003Ccolour message-background>>;\\n\\tpadding: 0px 21px 0px 21px;\\n\\tfont-size: 12px;\\n\\tline-height: 18px;\\n\\tcolor: \u003C\u003Ccolour message-foreground>>;\\n}\\n\\n.tc-message-box svg {\\n\\twidth: 1em;\\n\\theight: 1em;\\n\\tvertical-align: text-bottom;\\n}\\n\\n/*\\n** Pictures\\n*/\\n\\n.tc-bordered-image {\\n\\tborder: 1px solid \u003C\u003Ccolour muted-foreground>>;\\n\\tpadding: 5px;\\n\\tmargin: 5px;\\n}\\n\\n/*\\n** Floats\\n*/\\n\\n.tc-float-right {\\n\\tfloat: right;\\n}\\n\\n/*\\n** Chooser\\n*/\\n\\n.tc-chooser {\\n\\tborder-right: 1px solid \u003C\u003Ccolour table-header-background>>;\\n\\tborder-left: 1px solid \u003C\u003Ccolour table-header-background>>;\\n}\\n\\n.tc-chooser-item {\\n\\tborder-bottom: 1px solid \u003C\u003Ccolour table-header-background>>;\\n\\tborder-top: 1px solid \u003C\u003Ccolour table-header-background>>;\\n\\tpadding: 2px 4px 2px 14px;\\n}\\n\\n.tc-drop-down .tc-chooser-item {\\n\\tpadding: 2px;\\n}\\n\\n.tc-chosen,\\n.tc-chooser-item:hover {\\n\\tbackground-color: \u003C\u003Ccolour table-header-background>>;\\n\\tborder-color: \u003C\u003Ccolour table-footer-background>>;\\n}\\n\\n.tc-chosen .tc-tiddlylink {\\n\\tcursor:default;\\n}\\n\\n.tc-chooser-item .tc-tiddlylink {\\n\\tdisplay: block;\\n\\ttext-decoration: none;\\n\\tbackground-color: transparent;\\n}\\n\\n.tc-chooser-item:hover .tc-tiddlylink:hover {\\n\\ttext-decoration: none;\\n}\\n\\n.tc-drop-down .tc-chosen .tc-tiddlylink,\\n.tc-drop-down .tc-chooser-item .tc-tiddlylink:hover {\\n\\tcolor: \u003C\u003Ccolour foreground>>;\\n}\\n\\n.tc-chosen > .tc-tiddlylink:before {\\n\\tmargin-left: -10px;\\n\\tposition: relative;\\n\\tcontent: \\\"» \\\";\\n}\\n\\n.tc-chooser-item svg,\\n.tc-chooser-item img{\\n\\twidth: 1em;\\n\\theight: 1em;\\n\\tvertical-align: middle;\\n}\\n\\n.tc-language-chooser .tc-image-button img {\\n\\twidth: 2em;\\n\\tvertical-align: -0.15em;\\n}\\n\\n/*\\n** Palette swatches\\n*/\\n\\n.tc-swatches-horiz {\\n}\\n\\n.tc-swatches-horiz .tc-swatch {\\n\\tdisplay: inline-block;\\n}\\n\\n.tc-swatch {\\n\\twidth: 2em;\\n\\theight: 2em;\\n\\tmargin: 0.4em;\\n\\tborder: 1px solid #888;\\n}\\n\\ninput.tc-palette-manager-colour-input {\\n\\twidth: 100%;\\n\\tpadding: 0;\\n}\\n\\n/*\\n** Table of contents\\n*/\\n\\n.tc-sidebar-lists .tc-table-of-contents {\\n\\twhite-space: nowrap;\\n}\\n\\n.tc-table-of-contents button {\\n\\tcolor: \u003C\u003Ccolour sidebar-foreground>>;\\n}\\n\\n.tc-table-of-contents svg {\\n\\twidth: 0.7em;\\n\\theight: 0.7em;\\n\\tvertical-align: middle;\\n\\tfill: \u003C\u003Ccolour sidebar-foreground>>;\\n}\\n\\n.tc-table-of-contents ol {\\n\\tlist-style-type: none;\\n\\tpadding-left: 0;\\n}\\n\\n.tc-table-of-contents ol ol {\\n\\tpadding-left: 1em;\\n}\\n\\n.tc-table-of-contents li {\\n\\tfont-size: 1.0em;\\n\\tfont-weight: bold;\\n}\\n\\n.tc-table-of-contents li a {\\n\\tfont-weight: bold;\\n}\\n\\n.tc-table-of-contents li li {\\n\\tfont-size: 0.95em;\\n\\tfont-weight: normal;\\n\\tline-height: 1.4;\\n}\\n\\n.tc-table-of-contents li li a {\\n\\tfont-weight: normal;\\n}\\n\\n.tc-table-of-contents li li li {\\n\\tfont-size: 0.95em;\\n\\tfont-weight: normal;\\n\\tline-height: 1.5;\\n}\\n\\n.tc-table-of-contents li li li li {\\n\\tfont-size: 0.95em;\\n\\tfont-weight: normal;\\n}\\n\\n.tc-tabbed-table-of-contents {\\n\\tdisplay: -webkit-flex;\\n\\tdisplay: flex;\\n}\\n\\n.tc-tabbed-table-of-contents .tc-table-of-contents {\\n\\tz-index: 100;\\n\\tdisplay: inline-block;\\n\\tpadding-left: 1em;\\n\\tmax-width: 50%;\\n\\t-webkit-flex: 0 0 auto;\\n\\tflex: 0 0 auto;\\n\\tbackground: \u003C\u003Ccolour tab-background>>;\\n\\tborder-left: 1px solid \u003C\u003Ccolour tab-border>>;\\n\\tborder-top: 1px solid \u003C\u003Ccolour tab-border>>;\\n\\tborder-bottom: 1px solid \u003C\u003Ccolour tab-border>>;\\n}\\n\\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item > a,\\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item-selected > a {\\n\\tdisplay: block;\\n\\tpadding: 0.12em 1em 0.12em 0.25em;\\n}\\n\\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item > a {\\n\\tborder-top: 1px solid \u003C\u003Ccolour tab-background>>;\\n\\tborder-left: 1px solid \u003C\u003Ccolour tab-background>>;\\n\\tborder-bottom: 1px solid \u003C\u003Ccolour tab-background>>;\\n}\\n\\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item > a:hover {\\n\\ttext-decoration: none;\\n\\tborder-top: 1px solid \u003C\u003Ccolour tab-border>>;\\n\\tborder-left: 1px solid \u003C\u003Ccolour tab-border>>;\\n\\tborder-bottom: 1px solid \u003C\u003Ccolour tab-border>>;\\n\\tbackground: \u003C\u003Ccolour tab-border>>;\\n}\\n\\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item-selected > a {\\n\\tborder-top: 1px solid \u003C\u003Ccolour tab-border>>;\\n\\tborder-left: 1px solid \u003C\u003Ccolour tab-border>>;\\n\\tborder-bottom: 1px solid \u003C\u003Ccolour tab-border>>;\\n\\tbackground: \u003C\u003Ccolour background>>;\\n\\tmargin-right: -1px;\\n}\\n\\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item-selected > a:hover {\\n\\ttext-decoration: none;\\n}\\n\\n.tc-tabbed-table-of-contents .tc-tabbed-table-of-contents-content {\\n\\tdisplay: inline-block;\\n\\tvertical-align: top;\\n\\tpadding-left: 1.5em;\\n\\tpadding-right: 1.5em;\\n\\tborder: 1px solid \u003C\u003Ccolour tab-border>>;\\n\\t-webkit-flex: 1 0 50%;\\n\\tflex: 1 0 50%;\\n}\\n\\n/*\\n** Dirty indicator\\n*/\\n\\nhtml body.tc-dirty span.tc-dirty-indicator, html body.tc-dirty span.tc-dirty-indicator svg {\\n\\tfill: \u003C\u003Ccolour dirty-indicator>>;\\n\\tcolor: \u003C\u003Ccolour dirty-indicator>>;\\n}\\n\\n/*\\n** File inputs\\n*/\\n\\n.tc-file-input-wrapper {\\n\\tposition: relative;\\n\\toverflow: hidden;\\n\\tdisplay: inline-block;\\n\\tvertical-align: middle;\\n}\\n\\n.tc-file-input-wrapper input[type=file] {\\n\\tposition: absolute;\\n\\ttop: 0;\\n\\tleft: 0;\\n\\tright: 0;\\n\\tbottom: 0;\\n\\tfont-size: 999px;\\n\\tmax-width: 100%;\\n\\tmax-height: 100%;\\n\\tfilter: alpha(opacity=0);\\n\\topacity: 0;\\n\\toutline: none;\\n\\tbackground: white;\\n\\tcursor: pointer;\\n\\tdisplay: inline-block;\\n}\\n\\n::-webkit-file-upload-button {\\n\\tcursor:pointer;\\n}\\n\\n/*\\n** Thumbnail macros\\n*/\\n\\n.tc-thumbnail-wrapper {\\n\\tposition: relative;\\n\\tdisplay: inline-block;\\n\\tmargin: 6px;\\n\\tvertical-align: top;\\n}\\n\\n.tc-thumbnail-right-wrapper {\\n\\tfloat:right;\\n\\tmargin: 0.5em 0 0.5em 0.5em;\\n}\\n\\n.tc-thumbnail-image {\\n\\ttext-align: center;\\n\\toverflow: hidden;\\n\\tborder-radius: 3px;\\n}\\n\\n.tc-thumbnail-image svg,\\n.tc-thumbnail-image img {\\n\\tfilter: alpha(opacity=1);\\n\\topacity: 1;\\n\\tmin-width: 100%;\\n\\tmin-height: 100%;\\n\\tmax-width: 100%;\\n}\\n\\n.tc-thumbnail-wrapper:hover .tc-thumbnail-image svg,\\n.tc-thumbnail-wrapper:hover .tc-thumbnail-image img {\\n\\tfilter: alpha(opacity=0.8);\\n\\topacity: 0.8;\\n}\\n\\n.tc-thumbnail-background {\\n\\tposition: absolute;\\n\\tborder-radius: 3px;\\n}\\n\\n.tc-thumbnail-icon svg,\\n.tc-thumbnail-icon img {\\n\\twidth: 3em;\\n\\theight: 3em;\\n\\t\u003C\u003Cfilter [[drop-shadow(2px 2px 4px rgba(0,0,0,0.3))]]>>\\n}\\n\\n.tc-thumbnail-wrapper:hover .tc-thumbnail-icon svg,\\n.tc-thumbnail-wrapper:hover .tc-thumbnail-icon img {\\n\\tfill: #fff;\\n\\t\u003C\u003Cfilter [[drop-shadow(3px 3px 4px rgba(0,0,0,0.6))]]>>\\n}\\n\\n.tc-thumbnail-icon {\\n\\tposition: absolute;\\n\\ttop: 0;\\n\\tleft: 0;\\n\\tright: 0;\\n\\tbottom: 0;\\n\\tdisplay: -webkit-flex;\\n\\t-webkit-align-items: center;\\n\\t-webkit-justify-content: center;\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\tjustify-content: center;\\n}\\n\\n.tc-thumbnail-caption {\\n\\tposition: absolute;\\n\\tbackground-color: #777;\\n\\tcolor: #fff;\\n\\ttext-align: center;\\n\\tbottom: 0;\\n\\twidth: 100%;\\n\\tfilter: alpha(opacity=0.9);\\n\\topacity: 0.9;\\n\\tline-height: 1.4;\\n\\tborder-bottom-left-radius: 3px;\\n\\tborder-bottom-right-radius: 3px;\\n}\\n\\n.tc-thumbnail-wrapper:hover .tc-thumbnail-caption {\\n\\tfilter: alpha(opacity=1);\\n\\topacity: 1;\\n}\\n\\n/*\\n** Diffs\\n*/\\n\\n.tc-diff-equal {\\n\\tbackground-color: \u003C\u003Ccolour diff-equal-background>>;\\n\\tcolor: \u003C\u003Ccolour diff-equal-foreground>>;\\n}\\n\\n.tc-diff-insert {\\n\\tbackground-color: \u003C\u003Ccolour diff-insert-background>>;\\n\\tcolor: \u003C\u003Ccolour diff-insert-foreground>>;\\n}\\n\\n.tc-diff-delete {\\n\\tbackground-color: \u003C\u003Ccolour diff-delete-background>>;\\n\\tcolor: \u003C\u003Ccolour diff-delete-foreground>>;\\n}\\n\\n.tc-diff-invisible {\\n\\tbackground-color: \u003C\u003Ccolour diff-invisible-background>>;\\n\\tcolor: \u003C\u003Ccolour diff-invisible-foreground>>;\\n}\\n\\n.tc-diff-tiddlers th {\\n\\ttext-align: right;\\n\\tbackground: \u003C\u003Ccolour background>>;\\n\\tfont-weight: normal;\\n\\tfont-style: italic;\\n}\\n\\n.tc-diff-tiddlers pre {\\n\\tmargin: 0;\\n\\tpadding: 0;\\n\\tborder: none;\\n\\tbackground: none;\\n}\\n\\n/*\\n** Errors\\n*/\\n\\n.tc-error {\\n\\tbackground: #f00;\\n\\tcolor: #fff;\\n}\\n\\n/*\\n** Tree macro\\n*/\\n\\n.tc-tree div {\\n\\tpadding-left: 14px;\\n}\\n\\n.tc-tree ol {\\n\\tlist-style-type: none;\\n\\tpadding-left: 0;\\n\\tmargin-top: 0;\\n}\\n\\n.tc-tree ol ol {\\n\\tpadding-left: 1em;\\n}\\n\\n.tc-tree button {\\n\\tcolor: #acacac;\\n}\\n\\n.tc-tree svg {\\n\\tfill: #acacac;\\n}\\n\\n.tc-tree span svg {\\n\\twidth: 1em;\\n\\theight: 1em;\\n\\tvertical-align: baseline;\\n}\\n\\n.tc-tree li span {\\n\\tcolor: lightgray;\\n}\\n\\nselect {\\n\\tcolor: \u003C\u003Ccolour select-tag-foreground>>;\\n\\tbackground: \u003C\u003Ccolour select-tag-background>>;\\n}\\n\\n/*\\n** Utility classes for SVG icons\\n*/\\n\\n.tc-fill-background {\\n\\tfill: \u003C\u003Ccolour background>>;\\n}\\n\\n/*\\n** Flexbox utility classes\\n*/\\n\\n.tc-flex {\\n\\tdisplay: -webkit-flex;\\n\\tdisplay: flex;\\n}\\n\\n.tc-flex-column {\\n\\tflex-direction: column;\\n}\\n\\n.tc-flex-row {\\n\\tflex-direction: row;\\n}\\n\\n.tc-flex-grow-1 {\\n\\tflex-grow: 1;\\n}\\n\\n.tc-flex-grow-2 {\\n\\tflex-grow: 2;\\n}\\n\\n/*\\n** Other utility classes\\n*/\\n\\n.tc-tiny-gap {\\n\\tmargin-left: .25em;\\n\\tmargin-right: .25em;\\n}\\n\\n.tc-tiny-gap-left {\\n\\tmargin-left: .25em;\\n}\\n\\n.tc-tiny-gap-right {\\n\\tmargin-right: .25em;\\n}\\n\\n.tc-small-gap {\\n\\tmargin-left: .5em;\\n\\tmargin-right: .5em;\\n}\\n\\n.tc-small-gap-left {\\n\\tmargin-left: .5em;\\n}\\n\\n.tc-small-gap-right {\\n\\tmargin-right: .5em;\\n}\\n\\n.tc-big-gap {\\n\\tmargin-left: 1em;\\n\\tmargin-right: 1em;\\n}\\n\\n.tc-big-gap-left {\\n\\tmargin-left: 1em;\\n}\\n\\n.tc-big-gap-right {\\n\\tmargin-right: 1em;\\n}\\n\\n.tc-word-break {\\n\\tword-break: break-all;\\n}\\n\"},\"$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize\":{\"text\":\"15px\"},\"$:/themes/tiddlywiki/vanilla/metrics/bodylineheight\":{\"text\":\"22px\"},\"$:/themes/tiddlywiki/vanilla/metrics/fontsize\":{\"text\":\"14px\"},\"$:/themes/tiddlywiki/vanilla/metrics/lineheight\":{\"text\":\"20px\"},\"$:/themes/tiddlywiki/vanilla/metrics/storyleft\":{\"text\":\"0px\"},\"$:/themes/tiddlywiki/vanilla/metrics/storytop\":{\"text\":\"0px\"},\"$:/themes/tiddlywiki/vanilla/metrics/storyright\":{\"text\":\"770px\"},\"$:/themes/tiddlywiki/vanilla/metrics/storywidth\":{\"text\":\"770px\"},\"$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth\":{\"text\":\"686px\"},\"$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint\":{\"text\":\"960px\"},\"$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth\":{\"text\":\"350px\"},\"$:/themes/tiddlywiki/vanilla/options/stickytitles\":{\"text\":\"no\"},\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\":{\"text\":\"fixed-fluid\"},\"$:/themes/tiddlywiki/vanilla/options/codewrapping\":{\"text\":\"pre-wrap\"},\"$:/themes/tiddlywiki/vanilla/reset\":{\"type\":\"text/css\",\"text\":\"/*! modern-normalize v1.0.0 | MIT License | https://github.com/sindresorhus/modern-normalize */*,*::before,*::after{box-sizing:border-box}:root{-moz-tab-size:4;tab-size:4}html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}body{font-family:system-ui,-apple-system,'Segoe UI',Roboto,Helvetica,Arial,sans-serif,'Apple Color Emoji','Segoe UI Emoji'}hr{height:0;color:inherit}abbr[title]{text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Consolas,'Liberation Mono',Menlo,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}table{text-indent:0;border-color:inherit}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,select{text-transform:none}button,[type='button'],[type='reset'],[type='submit']{-webkit-appearance:button}::-moz-focus-inner{border-style:none;padding:0}:-moz-focusring{outline:1px dotted ButtonText}:-moz-ui-invalid{box-shadow:none}legend{padding:0}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type='search']{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}\"},\"$:/themes/tiddlywiki/vanilla/settings/fontfamily\":{\"text\":\"-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji;\"},\"$:/themes/tiddlywiki/vanilla/settings/codefontfamily\":{\"text\":\"\\\"SFMono-Regular\\\",Consolas,\\\"Liberation Mono\\\",Menlo,Courier,monospace\"},\"$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment\":{\"text\":\"fixed\"},\"$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize\":{\"text\":\"auto\"},\"$:/themes/tiddlywiki/vanilla/sticky\":{\"code-body\":\"yes\",\"text\":\"\u003C$reveal state=\\\"$:/themes/tiddlywiki/vanilla/options/stickytitles\\\"type=match text=yes>\\n`\\n.tc-tiddler-title {\\n\\tposition: -webkit-sticky;\\n\\tposition: -moz-sticky;\\n\\tposition: -o-sticky;\\n\\tposition: -ms-sticky;\\n\\tposition: sticky;\\n\\ttop: 0px;\\n\\tbackground: `\u003C\u003Ccolour tiddler-background>>`;\\n\\tz-index: 500;\\n}\\n\\n`\\n\u003C$list filter=[range[100]]>\\n`.tc-story-river .tc-tiddler-frame:nth-child(100n+`\u003C$text text={{!!title}}/>`) {\\nz-index: `\u003C$text text={{{[[200]subtract{!!title}]}}}/>`;\\n}\\n`\\n\u003C/$list>\\n\u003C/$reveal>\\n\"}}}"},
{"created":"20230310160313296","text":"27.473958333333343vw","title":"$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth","modified":"20230310160443874"},
{"title":"$:/themes/tiddlywiki/vanilla/options/sidebarlayout","text":"fluid-fixed"},
{"title":"$:/TitlesExample/Frodo","text":"This tiddler's title is updated whenever Frodo is due to a [[custom rule|Plugins/Titles/example.js]] made for the \u003C\u003Clink-to-tab Plugins Plugins/Titles \"//Relink-titles// supplementary plugin\">>.\n"},
{"title":"Attributes","caption":"Attributes","tags":"Documentation Construct","text":"The attributes of widgets can be updated by Relink, but only if they're whitelisted. Given a whitelisted element/attribute pair, such as `$link` and `to`, the following update could happen:\n\n`\u003C$link to=\"MyTiddler\">A link to my tiddler\u003C/$link>`\n\nwould update to:\n\n`\u003C$link to=\"New Tiddler\">A link to my tiddler\u003C/$link>`\n\nIf you have `$list`/`filter` whitelisted and configured as a filter, then the widget `\u003C$list filter=\"...\" />` would have the contents of its filter attribute evaluated, and any whitelisted filter operators inside of it would be considered for updating during a rename operation.\n\nFor each element/attribute pair, you must specify its [[type|Types]].\n\n''Note:'' If a widget accepts a dynamic set of attributes corresponding to tiddler fields, [[see here|Widgets with tiddler fields as attributes]].\n\n\u003C\u003Clink-to-tab Demo Demo/Widgets Demo>>\n"},
{"created":"20230310002235769","text":"","tags":"inventario","title":"azul","modified":"20230310162042854","type":"text/vnd.tiddlywiki","imagen":"\u003Ccenter>[img height=50px [./medios/imagen/object-blue.png]]\u003C/center>","disponible":"1","necesitada":"5","status":"rework"},
{"title":"backreferences Operator","tags":"[[Filter Operators]]","caption":"backreferences","purpose":"find the titles that reference each input title in any way","text":"|!purpose |{{!!purpose}} |\n|!input |a selection of titles |\n|!parameter |none |\n|!output |any titles that contain any sort of reference to the input title |\n\n[ext[Learn more about how to use Filters|https://tiddlywiki.com/#Filters]]\n\n''Usage'': `[relink:backreferences[]]`\n\n\nEach input title is processed in turn. A tiddler's list of backreferences is generated and then dominantly appended to the operator's overall output.\n\nThis functions like Tiddlywiki's `backlinks` operator, only instead of considering only hard links, it will consider all possible references which //Relink// can find.\n\n[[Examples|backreferences Operator (Examples)]]\n"},
{"title":"backreferences Operator (Examples)","tags":"[[Operator Examples]]","text":"\u003C\u003Coperator-example 1 \"[[Frodo]relink:backreferences[]]\">>\n\u003C\u003Coperator-example 2 \"[all[current]relink:backreferences[]]\" \"tiddlers that link to this one\">>\n"},
{"title":"BilboBaggins","race":"hobbit","weapon":"Sting","text":"\\import Frodo\n\nThis tiddler is used to test ~CamelCase wikilinks.\n\n\u003C\u003Crename ThorinOakenshield>>\n\n\u003C\u003Crename Fili>>\n\n\u003C\u003Crename Dori>>\n\n\u003C\u003Crename Óin>>\n\n\u003C\u003Crename Glóin>>\n\n\u003C\u003Crename 'Gandalf the Gray' Maia \"staff\">>\n"},
{"title":"Comments","caption":"Comments","tags":"Documentation WikiText","text":"Any text inside of comments is ''completely ignored'', even if that text matches syntax constructs which would otherwise be updated.\n\n```\n\u003C!-- Nothing inside of here\n will ever be touched.\n-->\n```\n"},
{"title":"Default Type","tags":"Hacks","text":"By default, //Relink// uses \u003C\u003Clink-to-tab Types Title 'the \"Title\" type'>> whenever a default type is necessary. Most importantly, it is the type assumed whenever a \u003C$link to=\"Inline Declarations\">\\//relink// pragma\u003C/$link> is used without declaring the parameter type (e.g. `\\relink myMacro myParameter`). It may be useful to you to change the default type to ''wikitext'', for instance, if most of your macros have wikitext parameters.\n\nTo change the default, override the shadow tiddler: `$:/config/flibbles/relink/settings/default-type` from title to whatever you want.\n"},
{"description":"Optionally, //Relink// can update the names of any fields which match the name of the Relinked tiddler. This will also update any places where that tiddler's title was being used as a field, such as in indirect references, filters, to even its own entry in the //Relink// whitelist.","relink.showcase":"title type Frodo","Frodo":"[[Hairy feet]] [[Short stature]] Frodo","tags":"Demo Supplemental","type":"text/vnd.tiddlywiki","warning":"Fieldnames support requires you to download the \u003C\u003Clink-to-tab Plugins Plugins/Fieldnames \"//Relink-fieldnames// supplemental plugin\">>.","text":"This is the \u003C\u003Clink-to-tab Demo \"Demo/Field names\" \"Fieldnames Demo\">>. It has a field named [[Frodo]] in order to demonstrate how //Relink// can update the field's name.\n","caption":"Field names","title":"Demo/Field names"},
{"description":"Whitelisted tiddler fields are updated just as well. Without this plugin, Tiddlywiki could manage `list` and `tags` on its own. ''Relink'' opens the door for other tiddlers, including ones that specify something other than a string list, like a filter, a single tiddler title, or even wikitext.","example-filter":"[all[]] -Frodo","example-list":"Relink Frodo BilboBaggins","example-title":"Frodo","example-wikitext":"This [[link to Frodo|Frodo]] will relink.","list":"[[Some Tiddler]] Frodo [[Another Tiddler]]","relink.showcase":"list tags example-filter example-list example-title example-wikitext","tags":"Demo Frodo","text":"This is the \u003C\u003Clink-to-tab Demo Demo/Fields \"Fields Demo\">>. It tags [[Frodo]] in order to demonstrate how //Relink// can update the ''tags'' field, among others.\n","caption":"Fields","title":"Demo/Fields"},
{"description":"\u003Cp>Filters in whitelisted fields and attributes will be updated as well. However, Relink only updates the operands of whitelisted filter operators. This includes `tag` and `title`, but you can add or remove any operators you want to the list.\u003C/p>\u003Cp>''Note'': Indirect and variable operands are always updated, since regardless of their operator, they may reference tiddlers.\u003C/p>","tags":"Demo","text":"{{{\nFrodo\n[tag[Frodo]]\n[[Weapon: ]addsuffix{Frodo!!weapon}]\n}}}\n","caption":"Filters","title":"Demo/Filters"},
{"description":"\u003Cp>Change image name with the buttons, or [[visit it|Frodo.svg]] to change it manually.\u003C/p>\u003Cp>Links to image tiddlers will be updated when applicable. All attributes will also be properly relinked if necessary.\u003C/p>","tags":"Demo","text":"[img\n height=150\n width={{Frodo!!width}}\n class=\"relink-demo-image\"\n [Tolkien's symbol|Frodo.svg]]\n","caption":"Images","title":"Demo/Images"},
{"description":"Notice that custom link captions don't change, neither do plaintext occurrences of Frodo. Only occurrences of the title that in some way link to the page are updated.","tags":"Demo","text":"[[Frodo]]\n\n[[Descriptive link to Frodo.|Frodo]]\n\nBilboBaggins is a ~CamelCase link. Visit ~BilboBaggins to test Wikilinks.\n","caption":"Links","title":"Demo/Links"},
{"description":"\u003Cp>Relink can rename the parameters in macros. Each parameter must be declared first. All core macros are already configured, but you can add your own as well. [[See here for more details.|Macros]]\u003C/p> \u003Cp>`\u003C\u003Csay-list>>` is defined [[here|Macros/say-list]].\u003Cbr/>`\u003C\u003Cul>>` is defined [[here|Macros/ul]].\u003Cbr/>See each for examples on different ways to declare parameters.\u003C/p>","tags":"Demo","text":"\\relink foes hobbit\n\\define foes(hobbit) \u003C$view tiddler=\u003C\u003C__hobbit__>> field=\"foes\" />\n\n''Foes:'' \u003C\u003Cfoes Frodo>>\n\n---\n''Friends:'' \u003C\u003Csay-list \"Frodo [[his friends]] [[everyone else]]\">>\n\n---\n''Tagging'': \u003C$macrocall $name=\"ul\" tag=\"Frodo\" />\n","caption":"Macros","title":"Demo/Macros"},
{"description":"Optionally, //Relink// fully supports markdown. It works seemlessly with any of the major markdown plugins.","tags":"Demo Supplemental","type":"text/x-markdown","warning":"Markdown support requires you to download the \u003C\u003Clink-to-tab Plugins Plugins/Markdown \"//Relink-markdown// supplemental plugin\">>.","text":"Links: [Link to Frodo](#Frodo) \nFootnotes[^^1^^]\n\n| Direct links | Footnotes |\n| ------------ | --------- |\n| ![Direct](Frodo.svg) | ![Footnote][image] |\n\n### Wikitext\n\nIf your markdown plugin supports ~WikiText, so does Relink.\n\n\u003C$text text=\"That includes\"/>\n\u003C\u003Csay-list \"widgets macros [[whatever else]]\">>\n\n[ ^^1^^]: #Frodo\n[image]: Frodo.svg\n","caption":"Markdown","title":"Demo/Markdown"},
{"description":"Optionally, //Relink// can change tiddler titles somehow related to the renamed tiddler. This might include updating assocated settings tiddlers, or nested tiddlers of a filesystem-like directory, or whatever else you wish.","tags":"Demo Supplemental","warning":"Titles support requires you to download the \u003C\u003Clink-to-tab Plugins Plugins/Titles \"//Relink-titles// supplemental plugin\">>.","text":"\u003C!-- Relink-titles is configured to update\n all filesystem-like nested tiddlers. So,\n \u003C\u003CcurrentTiddler>>/nested/path\n would update appropriately.-->\n\n\u003C$vars dir={{{ [[Frodo]addsuffix[/]] }}} >\n\n\u003C$list filter=\"[prefix\u003Cdir>]\" />\n\n\u003C/$vars>\n---\n\u003C!-- Relink-titles is configured so that tiddlers\n like Example/setting/\u003C\u003CcurrentTiddler>>\n will rename appropriately. -->\n\n\u003C$list filter=\"[prefix[Example/setting/]]\" />\n","caption":"Titles","title":"Demo/Titles"},
{"description":"Relink handles both the tiddler and the template tiddler. If the new titles, become too complex, it may convert the transclude into its widget equivalent.","tags":"Demo","text":"[[With template|Templates/Hello]]:\n{{Frodo||Templates/Hello}}\n\nWeapon of choice: {{Frodo!!weapon}}\n\n{{Frodo}}\n","caption":"Transcludes","title":"Demo/Transcludes"},
{"description":"\u003Cp>Checkboxes, and all core widgets whose attributes can reference a tiddler will be updated on a rename. You can configure which widgets, and corresponding attributes, are updated, including with custom widgets.\u003C/p>\u003Cp>Indirect and filter attributes are all updated regardless of whether they're whitelisted.\u003C/p>","tags":"Demo","text":"\u003C$checkbox tiddler=\"Frodo\" tag=\"checked\">\nCheck tag `checked`\n\u003C/$checkbox>\n\nWeapon: \u003C$text text={{Frodo!!weapon}} />\n","caption":"Widgets","title":"Demo/Widgets"},
{"title":"Disable Updating of modified","tags":"Hacks","caption":"Disable Updating of //modified//","text":"\\rules except wikilink\n\nBy default, //Relink// will update the //modified// field of any tiddlers it relinks, as this is the default behavior seen in TiddlyWiki's core relinking. However, you might not want this.\n\nIf you set the system tiddler `$:/config/flibbles/relink/touch-modify` to a text value of \"no\", then //Relink// will no longer update the \"modified\" field of tiddlers it touches.\n"},
{"title":"Documentation","caption":"Documentation","tags":"Relink","text":"\\rules except wikilink\n\n//Relink// is already configured to rename tiddler title occurrences across all core attributes, fields, and filter operators. However, it can be customized through a series of whitelists //Relink// references for each type of construct. Custom constructs can be added, and existing ones can be ignored.\n\n!! Constructs\n\nThe following are configurable through the \u003C\u003Clink-to-config-tab caption:\"//Relink// configuration panel\">>. See the available [[types|Types]] for more details.\n\n\u003C\u003Cul Construct>>\n\n!! WikiText\n\nThere are also numerous WikiText syntax patterns for which Relink has predefined behavor. Currently, none of these are configurable.\n\n\u003C\u003Cul WikiText>>\n\n!! Other Features\n\nBesides relinking tiddlers, //Relink// includes other features.\n\n\u003C\u003Cul Feature>>\n"},
{"title":"Documentation/Attributes","text":"This tiddler has moved [[here|Attributes]]."},
{"title":"Documentation/Fields","text":"This tiddler has moved [[here|Fields]]."},
{"title":"Documentation/Operators","text":"This tiddler has moved [[here|Operators]]."},
{"title":"Eärendil","caption":"Light of Eärendil","tags":"Frodo","text":"The Light of Eärendil is a light to [[Frodo]] in dark places when all other lights go out. It was given to him by Galadriel.\n"},
{"title":"Example/setting/Frodo","text":"This tiddler doesn't actually do anything, but there are settings tiddlers like this that do. Take the core's button visibility tiddlers:\n\n```\n$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/info\n```\n\nIt contains the visibility setting for the `$:/core/ui/Buttons/info` button. Of course it's unlikely that you'll be changing the names of buttons like that often, but you may want to utilize a similar paradigm for some other solution. //Relink-titles// has got you covered.\n"},
{"title":"Example/setting/Rosie","text":"the `Example/setting` tiddler for the non-existent `Rosie` tiddler.\n"},
{"title":"Fieldname","tags":"Types Supplemental","text":"This type is identical to the Title type, except that it refuses to report or relink any title which correspond to built-in tiddlers fields, like `tags` or `text` or `module-type`.\n\n{{$:/core/images/warning}} ''Warning:'' This type is only present in the \u003C\u003Clink-to-tab Plugins \"Plugins/Fieldnames\" \"Fieldnames supplemental plugin\">>\n"},
{"title":"Fieldnamelist","tags":"Types Supplemental","text":"This type is identical to the List type, except that it refuses to report or relink any title which correspond to built-in tiddlers fields, like `tags` or `text` or `module-type`.\n\n{{$:/core/images/warning}} ''Warning:'' This type is only present in the \u003C\u003Clink-to-tab Plugins \"Plugins/Fieldnames\" \"Fieldnames supplemental plugin\">>\n"},
{"title":"Fields","caption":"Fields","tags":"Documentation Construct","text":"Configure which tiddler fields Relink will consider for updating. For instance, `list` and `tags` are configured by default, which means whenever a tiddler name updates, Relink will look at the `list` and `tags` field of every tiddler for possible updating.\n\nFor each field, you must specify its [[type|Types]].\n\nExample: If the field name `list` is configured as a `list`, that means the following:\n\n\u003Cpre>\n\n''list:'' \u003C$text text=\"[[Tiddler A]] [[Tiddler B]]\" />\n\u003C/pre>\n\nwill updated to:\n\n\u003Cpre>\n\n''list:'' \u003C$text text=\"[[Tiddler A]] [[New Tiddler]]\" />\n\u003C/pre>\n\nIf //Tiddler B// is renamed to //New Tiddler//.\n\n''Note:'' Tiddlywiki v5.2.* allows for capitalized field names, thus so does //Relink//. However, capital letters in field names are illegal in Tiddlywiki v5.1.*, so if you are using an old version of Tiddlywiki, you must be careful not to include capital letters in the field names in //Relink//'s whitelist.\n\n! Text field\n\nThe text field (the main body of a tiddler) should not be configured to a type, since its type is designated by a tiddler's `type` field. See [[Tiddler Type]] for more information on that.\n\n\u003C\u003Clink-to-tab Demo Demo/Fields Demo>>\n"},
{"title":"Filter","tags":"Types","text":"The value of the field or attribute is treated as a [[filter, as described here|https://tiddlywiki.com/static/Introduction%2520to%2520filter%2520notation.html]].\n\nIf Relink is configured to consider a certain field or attribute as a filter, it will look at operators and decides whether to update their operand, but only if the given operators are whitelisted. `[tag[]]` and `[title[]]` are whitelisted by default. And as long as `title` is whitelisted, that includes all shorthands for title, such as `[[Example]]`, `[field:title[Example]]`, `\"Example\"`, `'Example'`, and `Example`.\n\nFor example, take `\u003C$list filter=\"[[MyTiddler]] [tag[MyTiddler]!has[draft.of]]\" />` and say //~MyTiddler// is updated to //~NewTiddler//. As long as the ''filter'' attribute of the widget ''$list'' is whitelisted (it is by default), and `[tag[]]` and `[title[]]` are whitelisted (they are by default), that widget would become:\n\n`\u003C$list filter=\"[[NewTiddler]] [tag[NewTiddler]!has[draft.of]]\" />`\n"},
{"title":"Filter Operators","tags":"Feature","text":"//Relink// introduces a few filter operators which may be useful to you. All filters are namespaced with `relink:`, so for instance, the backreferences filter operator is accessed as `[relink:backreferences[]]`.\n\n''Note:'' //Relink// defines other filter operators than these, but they are for internal use only, and are subject to change between releases.\n\n\u003Ctable>\n\u003Ctr>\n\u003Cth align=\"left\">Operator\u003C/th>\n\u003Cth align=\"left\">Purpose\u003C/th>\n\u003Cth align=\"center\">`!`\u003C/th>\n\u003C/tr>\n\u003C$list filter=\"[tag[Filter Operators]]\">\n\u003Ctr>\n\u003Ctd>\u003C$link>relink:{{!!caption}}\u003C/$link>\u003C/td>\n\u003Ctd>{{!!purpose}}\u003C/td>\n\u003Ctd>\u003C/td>\n\u003C/tr>\n\u003C/$list>\n\u003C/table>\n"},
{"title":"Frodo.svg","text":"\u003C?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n\u003Csvg\n\txmlns:svg=\"http://www.w3.org/2000/svg\"\n\txmlns=\"http://www.w3.org/2000/svg\"\n\twidth=\"50px\"\n\tviewBox=\"0 0 225 340\"\n\tversion=\"1.1\">\n\u003Cg style=\"fill:black;stroke:none\">\n\t\u003Cellipse cx=\"112.5\" cy=\"169.5\" rx=\"111.2\" ry=\"168\" style=\"fill:none;stroke:black;stroke-width:2.6\"/>\n\t\u003Ccircle cx=\"64.2\" cy=\"240.5\" r=\"4.2\"/>\n\t\u003Ccircle cx=\"70.9\" cy=\"234.1\" r=\"4.2\"/>\n\t\u003Ccircle cx=\"70.9\" cy=\"246.9\" r=\"4.2\"/>\n\t\u003Ccircle cx=\"77.6\" cy=\"240.5\" r=\"4.2\"/>\n\t\u003Ccircle cx=\"139.3\" cy=\"78.1\" r=\"4.2\"/>\n\t\u003Ccircle cx=\"146\" cy=\"71.5\" r=\"4.2\"/>\n\t\u003Ccircle cx=\"146\" cy=\"84.7\" r=\"4.2\"/>\n\t\u003Ccircle cx=\"152.7\" cy=\"78.1\" r=\"4.2\"/>\n\t\u003Cpath transform=\"scale(0.1) translate(3.5,0)\"\n\t\td=\"M 1244 334 C 1224 336 1162 456 1085 455 C 1033 455 1010 477 997 504 C 966 567 1005 638 1044 657 C 1093 560 1132 490 1167 480 C 1212 467 1262 351 1247 335 C 1247 334 1245 334 1244 334 z M 1181 570 C 1102 681 1045 767 1045 767 C 996 737 939 729 933 740 C 928 752 981 807 980 927 C 780 926 488 928 442 878 C 442 878 416 825 403 884 C 360 1075 141 1140 142 1172 C 144 1216 426 1111 474 1055 C 505 1020 581 1009 647 1008 C 681 1008 817 1007 980 1010 L 979 1064 C 651 1073 536 1180 538 1323 C 542 1532 647 1618 895 1616 C 739 1798 605 1904 492 1954 C 334 2024 162 1975 163 2006 C 163 2022 226 2010 414 2105 C 580 2189 805 1829 974 1664 L 967 2431 C 966 2608 926 2853 815 2959 C 819 2880 775 2853 721 2836 C 659 2817 503 2959 732 3023 C 921 3073 1054 2764 1074 2649 C 1086 2580 1114 2553 1117 2531 C 1356 2647 1521 2518 1510 2501 C 1498 2462 1144 2556 1147 2211 C 1147 2137 1152 1913 1157 1655 C 1390 1896 1366 1928 1516 2061 C 1683 2209 1932 2157 1930 2132 C 1926 2094 1815 2226 1215 1630 C 1551 1664 1589 1459 1593 1339 C 1600 1167 1387 1076 1169 1079 C 1170 1056 1170 1037 1170 1014 C 1416 1022 1658 1037 1683 1069 C 1744 1151 2081 1327 2094 1300 C 2103 1279 1871 1214 1771 910 C 1762 882 1743 885 1727 904 C 1684 955 1347 941 1172 932 C 1177 742 1180 596 1181 570 z M 913 1139 C 937 1139 960 1140 979 1140 L 975 1532 C 775 1583 676 1511 682 1333 C 688 1156 813 1138 913 1139 z M 1222 1156 C 1340 1155 1441 1170 1445 1365 C 1451 1631 1211 1555 1168 1546 C 1165 1540 1162 1533 1160 1525 C 1162 1401 1165 1277 1167 1156 C 1186 1156 1204 1156 1222 1156 z\" />\n\u003C/g>\n\u003C/svg>\n","type":"image/svg+xml"},
{"title":"Frodo/inventory","text":"* Lembas bread\n* Pipe-weed\n"},
{"title":"Frodo/stats","type":"application/x-tiddler-dictionary","text":"Birth: 22 September, 2968\nDeath: Unknown\nHair: Brown\n"},
{"title":"Frodo/stats/kills","text":"Kill count: 0\n\nNo one. Frodo killed //no one// in the entire trilogy. I didn't realize that until researching it for this specific tiddler.\n"},
{"title":"getRelinkableTitles","return":"['title', ...]","tags":"Wikimethods","text":"This returns a list of all titles which //Relink// will evaluate for relinking. Unless you've customized which [[Tiddlers to relink]], this is equivalent to `wiki.allTitles`.\n"},
{"title":"getTiddlerRelinkBackreferences","arguments":"title","return":"{'tiddlerTitle': ['blurb', ...], ...}","tags":"Wikimethods","text":"Given a tiddler title, `getTiddlerRelinkReferences` returns an object for which each key is the title of a tiddler which refers to the given title, and the value is an array of blurbs which each briefly describe the type of reference.\n\nEven if the given title does not exist, this may return results if other tiddlers contain references to the passed, non-existent tiddler.\n"},
{"title":"getTiddlerRelinkReferences","arguments":"title","return":"{'tiddlerTitle': ['blurb', ...], ...}","tags":"Wikimethods","text":"Given a tiddler title, `getTiddlerRelinkReferences` returns an object for which each key is a tiddler title which the given tiddler refers to, and the value is an array of blurbs which each briefly describe the type of reference. This object will include all references, including ones to tiddlers which do not exist.\n\nIf the given title does not exist, this returns `undefined`.\n"},
{"title":"Hackability","tags":"Feature","text":"You can tinker with //Relink// in several ways if you wish. It's designed to be highly modifiable.\n\n\u003C$list filter=\"[tag[Hacks]]\">\n\n!! \u003C$transclude field=\"caption\">{{!!title}}\u003C/$transclude>\n\n\u003C$transclude />\n\n\u003C/$list>\n"},
{"created":"20230310012815393","text":"\u003C\u003Ctabs \"[prefix[hackerspace--inventario--]]\" \"[[hackerspace--inventario--general]]\" \"$:/state/tab1\">>","tags":"","title":"hackerspace--inventario","modified":"20230310161925147"},
{"created":"20230227044228493","text":"\u003C\u003Ctable-dynamic filter:\"[tag[inventario]]\" fields:\"tbl-expand title imagen [[cantidad disponible]] [[cantidad necesitada]] tags created modified\" stateTiddler:\"20200213/exmp01\" sortOp:\"sortan\" caption:\"''{{!!table_caption}}''\" class:\"w-100 thead-dark\">>\n\n","tags":"hackerspace--inventario","title":"hackerspace--inventario--general","modified":"20230310162212986","table_caption":"General"},
{"created":"20230310011758293","text":"\u003C\u003Ctable-dynamic filter:\"[tag[inventario]!tag[Done]]\" fields:\"tbl-checkbox tbl-expand title imagen priority [[cantidad necesitada]] tags created modified\" stateTiddler:\"20200213/exmp01\" sortOp:\"sortan\" caption:\"''{{!!table_caption}}''\" class:\"w-100 thead-dark\">>\n\n","tags":"hackerspace--inventario","title":"hackerspace--inventario--necesitados","modified":"20230310032645250","table_caption":"Cosas necesitadas"},
{"title":"Images","caption":"Images","tags":"Documentation WikiText","text":"Relink will manage images which link to tiddlers within the project.\n\n```\n[img[MyPicture.png]]\n[img[Accompanying tooltip|MyPicture.png]]\n[img height=256 width=256 [MyPicture.png]]\n```\n\nIt will attempt to preserve any whitespace you use for formatting.\n\n```\n[img\n\theight=256\n\tclass=\"css-class\"\n\t[MyPicture.png]]\n```\nwould become:\n\n```\n[img\n\theight=256\n\tclass=\"css-class\"\n\t[New Picture Image.png]]\n```\n\nIf any attributes use indirect or filter references, those will be updated appropriately. I.E.:\n\n```\n[img class={{DataTiddler||field}} [MyPicture.png]]\n```\n\nIn this case, `DataTiddler` will be updated if that tiddler is renamed.\n\n\u003C\u003Clink-to-tab Demo Demo/Images Demo>>\n"},
{"title":"Inline Declarations","caption":"\\//relink// pragma","tags":"Feature","text":"\\rules except wikilink\n\n//Relink// comes with a `\\relink` pragma which allows you to declare your parameters right alongside your macro definitions.\n\nThis method is good for own homebrew macros. It keeps your definition and declarations together in the same place. If you're defining macros for a plugin, or you're creating a javascript macro, you should use [[the whitelist tables instead|Whitelisting]].\n\n!! Example\n\n```\n\\relink fellowship name:title members:filter\n\\define fellowship(name, members)\n!!! \u003C$link to=\u003C\u003C__name__>> />\n\u003C$list filter=\u003C\u003C__members__>> />\n\\end\n```\n\nThe `\\relink` pragma here specifies a macro, then lists the parameters and their [[associated types|Types]]. ''name'' is a title, and ''members'' is a filter. //Relink// will parse them both appropriately now.\n\nSo take `\u003C\u003Cfellowship \"Ring Deliverers\" \"[tag[LotR Character]]\">>`. Now, if the tiddler \"Ring Deliverers\" is renamed, //Relink// knows to update the ''name'' parameters. If the \"LotR Character\" is changed, then //Relink// will correctly change it inside `[tag[LotR Character]]`.\n\n!! Usage\n\nThe relink pragma specifies a macro, and then lists any parameters that are applicable to renaming.\n\n```\n\\relink macroName param1:type param2:type ...\n```\n\nThe available types are\n\u003C$macrocall\n\t$name=say-list\n\tfilter=[tag[Types]]\n\ttemplate=\"\"\"\u003C$macrocall $name=link-to-tab tiddler=Types tab=\u003C\u003CcurrentTiddler>> caption=\u003C\u003CcurrentTiddler>> />\"\"\" />.\n\nIf a type is not specified, //Relink// defaults to ''title'', so `\\relink myMacro myParameter` is equivalent to `\\relink myMacro myParameter: title`. \u003C\u003Clink-to-tab Hackability \"Default Type\" \"However, the default type can be changed.\">>\n\nDeclarations can come before or after the macros they're declaring. Actually, they don't have to be written alongside the macro definitions at all, or even in the same tiddler (but they should be).\n\n!! Scope\n\nGlobally accessable macro definitions (like through \u003C\u003Ctag $:/tags/Macro>>) will be displayed in the \u003C\u003Clink-to-config-tab Macros 'configuration whitelist'>> for your benefit.\n\nIf your inline declaration has a limited scope (as in its only used in the tiddler its defined in, or maybe you only ever import it through `\\import` pragma), //it will still work as expected//, although it won't be displayed in the whitelist.\n\n"},
{"title":"Lazy Loading","tags":"Feature","text":"//Relink// does ''not'' support tiddlywikis that implement the ~NodeJS lazy loading mechanism.\n\n...I know. So sad, but it just doesn't make sense. //Relink// needs to be able to look at all tiddlers to find relinks to make, and it can't do that if not all tiddlers are loaded, and _loading_ them all would defeat the purpose of lazy loading in the first place.\n\nIn theory, relinking is something that could happen on the ~NodeJS server, but that would require infrastructure which the [[core Tiddlywiki developers have already made clear will never happen|https://github.com/Jermolene/TiddlyWiki5/issues/4767#issuecomment-711328177]].\n\nSo if you want to use Relink on your ~NodeJS server, make sure you disable lazy loading. [[There's actually a bug|https://github.com/Jermolene/TiddlyWiki5/issues/4767]] where lazy loading can delete your tiddlers' bodies. This is a core bug that exists //regardless// of //Relink//. //Relink// does exacerbate it, but do you really want to be using lazy loading to begin with?\n"},
{"title":"Links","caption":"Links","tags":"Documentation WikiText","text":"All links which Relink finds that point to the changing title will be updated, however, their captions won't be touched.\n\n```\n[[Tiddler Title]]\n\n[[Displayed Link Title|Tiddler Title]]\n```\n\n\u003C\u003Clink-to-tab Demo Demo/Links Demo>>\n"},
{"title":"List","tags":"Types","text":"The value of the field or attribute is treated as a [[string list, as described here|https://tiddlywiki.com/static/Title%2520List.html]].\n\nFor example the tiddler field `list` is a list by default, so\n\n`list: [[First Tiddler]] [[Second Tiddler]] TiddlerWithoutSpaces`\n\nIf //Second Tiddler// were renamed to //New Tiddler//, that field would become,\n\n`list [[First Tiddler]] [[New Tiddler]] TiddlerWithoutSpaces`\n\nRelink adds brackets whenever necessary.\n\n''Note:'' Tiddlywiki lists don't support duplicates, and therefore neither does Relink.\n"},
{"title":"Macros","caption":"Macros","tags":"Documentation Construct","text":"//Relink// will relink macro parameters. It doesn't matter if you call them the `\u003C\u003Cpretty>>` way or the `\u003C$macrocall>` way. Nor does it matter if your macros are global through \u003C\u003Ctag $:/tags/Macro>>, imported through `\\import`, or defined in a macro module. //Relink// handles it all.\n\n...but //Relink// only updates parameters that have been explicitly whitelisted. All core macro parameters are already configured by default [[with their correct types|Types]], but what if you create your own macros?\n\nLets say you design your own macro to print out a fellowship and its members, like:\n\n```\n\\define fellowship(name, members)\n!!! \u003C$link to=\u003C\u003C__name__>> />\n\u003C$list filter=\u003C\u003C__members__>> />\n\\end\n```\n\nIf you call that macro, like `\u003C\u003Cfellowship \"Ring Deliverers\" \"[tag[LotR Character]]\">>`, //Relink// won't touch those parameters by default. You have to declare their type first.\n\nThere are two ways to do this.\n\n* ''[[Inline Declarations]]:'' This uses the `\\relink` pragma. It's good for homebrew macros, or macros which have a limited scope (those not made global with \u003C\u003Ctag $:/tags/Macro>>).\n* ''[[Whitelisting]]:'' If you add an entry to the whitelist, like `fellowship`/`name` set to 'title'. And `fellowship`/`members` set to filter. This is good for javascript macros, or macros defined by a plugin you're writing.\n\n\u003C\u003Clink-to-tab Demo Demo/Macros Demo>>\n"},
{"title":"Macros/hide","tags":"$:/tags/Macro","text":"\\define hide(content) $content$\n\u003C\u003Cprint-before-this>>\n\n`hide` will output whatever input it's given. It makes no change. The reason it exists is shield its contents from //Relink//, so that the plugin will not index that content, and thus create //missing// tiddlers based on whatever it finds in there.\n\nThis is something I do for the demo to keep the \"//Relink// Missing\" cleaned up for demonstration purposes. You will probably never need to do something like this yourself.\n"},
{"title":"Macros/link-to-tab","tags":"$:/tags/Macro","qualifiers":"Demo -1725644622 Types -1703315334 Plugins -1285577930 Versions 838063682 [[Migration to V2]] -680834286","text":"\\relink link-to-tab tiddler tab caption:wikitext\n\\define link-to-tab(tiddler, tab, caption)\n\u003C$button class=\"tc-btn-invisible tc-tiddlylink\">\n\u003C$action-setfield $tiddler={{{ [list[Macros/link-to-tab!!qualifiers]after\u003C__tiddler__>addprefix[$:/state/tab-]] }}} text=\u003C\u003C__tab__>>/>\n\u003C$action-navigate $to=\u003C\u003C__tiddler__>>/>\n$caption$\n\u003C/$button>\n\\end\n\n\\relink link-to-config-tab caption:wikitext\n\\define link-to-config-tab(configTab, caption)\n\u003C$button class=\"tc-btn-invisible tc-tiddlylink\">\n\u003C$action-setfield\n\t$tiddler=\"$:/state/plugin-info--1931129592-$:/plugins/flibbles/relink---1659944808\"\n\ttext=\"configuration\" />\n\u003C$list filter=\"[\u003C__configTab__>!match[]]\">\n\u003C$action-setfield\n\t$tiddler=\"$:/state/tab-1407883317\"\n\ttext={{{[\u003C__configTab__>addprefix[$:/plugins/flibbles/relink/ui/configuration/]is[shadow]else\u003C__configTab__>]}}} />\n\u003C/$list>\n\u003C$action-navigate $to=\"$:/plugins/flibbles/relink\" />\n$caption$\n\u003C/$button>\n\\end\n\n''Hey!'' Edit this tiddler to see a real-use example of the `\\relink` declaration pragma.\n\n`link-to-tab` creates a button which opens a specific tiddler and a tab within that tiddler. It's used on several documentation pages to link to examples within a tab menu.\n\n`link-to-config-tab` is used exclusively to go to //Relink// configuration tabs.\n\n\u003C!--\nUnfortunately, due to the way the `qualify` mechanic works in Tiddlywiki, this macro must maintain a hardcoded list of qualifier hashes, and if you rename the target tiddler, the qualifier doesn't update automatically.\n-->\n"},
{"title":"Macros/operator-example","tags":"$:/tags/Macro","text":"\\define operator-example(n,eg,ie)\n\\define .operator-example-tryit-actions() \u003C$action-setfield $tiddler=\u003C\u003C.state>> text=\"show\" filter=\u003C\u003C__eg__>>/>\n\n\u003Cdiv class=\"doc-example\">\n\u003C$list filter=\"[title\u003C.state-prefix>addsuffix{!!title}addsuffix[/]addsuffix[$n$]]\" variable=\".state\">\n\u003C$reveal state=\u003C\u003C.state>> type=\"nomatch\" text=\"show\">\n\t`$eg$`\n\t\u003C$list filter=\"[\u003C__ie__>!match[]]\">\u003Cdd>&rarr; $ie$\u003C/dd>\u003C/$list>\n\t\u003Cdl>\n\t\u003Cdd>\u003C$button actions=\u003C\u003C.operator-example-tryit-actions>>>Try it\u003C/$button>\u003C/dd>\n\t\u003C/dl>\n\u003C/$reveal>\n\u003C$reveal state=\u003C\u003C.state>> type=\"match\" text=\"show\">\n\t\u003C$edit-text tiddler=\u003C\u003C.state>> field=\"filter\" tag=\"input\" type=search focus=\"true\"/>\n\t\u003Cdl>\n\t\u003Cdd>\n\t\u003C$button set=\u003C\u003C.state>> setTo=\"\">Hide\u003C/$button>\n\t\u003C$reveal stateTitle=\u003C\u003C.state>> stateField=\"filter\" type=\"nomatch\" text=\u003C\u003C__eg__>>>\n\t\t\u003C$button actions=\u003C\u003C.operator-example-tryit-actions>>>Reset\u003C/$button>\n\t\u003C/$reveal>\n\t\u003C/dd>\n\t\u003C/dl>\n\t\u003Cblockquote class=\"doc-example-result\">\n\t\u003Cul>\u003C$list filter={{{[\u003C.state>get[filter]]}}} emptyMessage=\"(empty)\">\n\t\u003Cli>\u003C$link>\u003C$view field=\"title\"/>\u003C/$link>\u003C/li>\n\t\u003C/$list>\u003C/ul>\n\t\u003C/blockquote>\n\u003C/$reveal>\n\u003C/$list>\n\\end\n\\relink operator-example eg:filter ie:wikitext\n\nThis macro is used to create the example uses of each of the [[Filter Operators]]. It was lifted from tw5.com, and there really isn't much to showcase here.\n"},
{"title":"Macros/print-before-this","tags":"$:/tags/Macro","text":"\\define print-before-this()\n\u003C$codeblock code={{{[\u003CcurrentTiddler>get[text]splitbefore[\u003C\u003Cprint-before-this]removesuffix[\u003C\u003Cprint-before-this]]}}} />\n\\end\n\nThis macro just displays text that comes before its invocation. I use it to display otherwise-hidden pragma.\n"},
{"title":"Macros/say-list","tags":"$:/tags/Macro","text":"\\relink say-list filter:filter template:wikitext\n\\define say-list(filter, template:\"\"\"\u003C$text text=\u003C\u003CcurrentTiddler>> />\"\"\")\n\u003C$list filter=\"[subfilter\u003C__filter__>butlast[]]\">$template$, \u003C/$list>\u003C$list filter=\"[subfilter\u003C__filter__>last[]]\">and $template$\u003C/$list>\n\\end\n\u003C\u003Cprint-before-this>>\n\n`say-list` prints a filter's items in a conversational way. For instance:\n\n\u003C\u003Chide \"\"\"\n\n: `\u003C\u003Csay-list \"this that [[another thing]]\">>` -> ''\u003C\u003Csay-list \"this that [[another thing]]\">>''\n\"\"\" >>\n\nThis macro declares its parameters through [[pragma|Inline Declarations]]. Since this tiddler is global (because of \u003C\u003Ctag $:/tags/Macro>>), its parameters will get a mention in the \u003C\u003Clink-to-config-tab Macros \"whitelist configuration page\">>\n"},
{"title":"Macros/show-reference-button","tags":"$:/tags/Macro","text":"\\define show-reference-button()\n\u003C$button popup=\u003C\u003CtiddlerInfoState>> tooltip={{$:/language/Buttons/Info/Hint}} aria-label={{$:/language/Buttons/Info/Caption}} class=\u003C\u003Ctv-config-toolbar-class>> selectedClass=\"tc-selected\">\n\u003C$list filter=\"[\u003Ctv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/info-button}}\n\u003C/$list>\n\u003C$list filter=\"[\u003Ctv-config-toolbar-text>match[yes]]\">\n\u003Cspan class=\"tc-btn-text\">\n\u003C$text text={{$:/language/Buttons/Info/Caption}}/>\n\u003C/span>\n\u003C/$list>\n\u003C/$button>\n\\end\n\nThis will automatically show the show the //Relink// references infoTab for demonstration purposes.\n"},
{"title":"Macros/ul","tags":"$:/tags/Macro","text":"\\define ul(tag)\n\u003Cul>\u003C$list variable=\"listItem\"\n filter=\"[tag\u003C__tag__>!has[draft.of]]\">\n \u003Cli>\u003C$link to=\u003C\u003ClistItem>> >\n \u003C$transclude tiddler=\u003C\u003ClistItem>> field=\"caption\">\n \u003C$text text=\u003C\u003ClistItem>> />\n \u003C/$transclude>\u003C/$link>\u003C/li>\n\u003C/$list>\u003C/ul>\n\\end\n\u003C\u003Cprint-before-this>>\n\n`ul` creates an unorganized list of all tiddlers of the given tag, like `\u003Cul>` would. It prefers using ''!!caption'', but falls back on ''!!title''.\n\nThis macro is globally available because of the tag \u003C\u003Ctag $:/tags/Macro>>. It relies on [[Whitelisting]] to declare its parameters. You can see the whitelist configuration \u003C\u003Clink-to-config-tab Macros here>>.\n"},
{"title":"Markdown","tags":"Types Supplemental","text":"This type functions in many ways like the Wikitext type, only instead of Wikitext, it's markdown. This type only really makes sense for fields and macros.\n\n{{$:/core/images/warning}} ''Warning:'' This type is only present in the \u003C\u003Clink-to-tab Plugins \"Plugins/Markdown\" \"Markdown supplemental plugin\">>\n"},
{"title":"Migration to V2","text":"For V2, //Relink// needed to create the `report` method to scan tiddlers for references to all other titles, not just the one being relinked at the time. This impacts the following modules and plugins\n\n\u003C$macrocall $name=\"tabs\"\n\ttabsList=\"[[Migration to V2]tagging[]]\"\n\tdefault=\"Migration to V2/relinkoperator\"\n/>\n"},
{"title":"Migration to V2/relink-titles","caption":"//Relink-titles// plugin","list-after":"","tags":"[[Migration to V2]]","text":"Unfortunately, if you made custom filters for Relink-titles, you're going to have to change those into modules. There is no forward or backward compatibility.\n\nFirst of all, I'm sorry I'm making you have to update, but filters really don't work for the newer, better systems under Relink's hood. But a module should give you much more flexibility.\n\nYou'll need to create a `relinktitlesrule` module to replace your filter. Fortunately, it's a very simple module:\n\n```javascript\n\n// technically this isn't used, but I recommend making this anyway.\nexports.name = \"[[Unique name for filter]]\";\n\nexports.report = function(targetTitle, callback, options) {\n\t// calls `callback(title, blurb)` for each possible title for which\n\t// \"targetTitle\" would have to be renamed if that title were changed.\n\t// tiddler inside of `tiddler`. Blurb is an optional SHORT string\n\t// to describe what kind of reference this is.\n};\n\nexports.relink = function(targetTitle, fromTitle, toTitle, options) {\n\t// code that determines what to change targetTitle to whenever\n\t// fromTitle is renamed into toTitle.\n\t// Return {output: 'newTitle'} if targetTitle should change.\n\t// Return {impossible: true} if targetTitle should change, but can't.\n\t// Return undefined if targetTitle should remain unchanged.\n};\n```\n\n[[Here is an example module|Plugins/Titles/example.js]] with plenty of documentation. You need a `report` method for the [[TiddlerInfo Tab]], and a `relink` method for the actual updating of titles.\n"},
{"title":"Migration to V2/relinkoperator","caption":"relinkoperator module","tags":"[[Migration to V2]]","text":"The old signature used to be this:\n\n```javascript\nexports.[[unique name]] = function(tiddler, fromTitle, toTitle, changes, options) {\n\t// code to relink references of fromTitle to toTitle inside tiddler.\n};\n```\n\nIt is now:\n\n```javascript\nexports.name = \"[[unique name]]\";\n\nexports.relink = function(tiddler, fromTitle, toTitle, changes, options) {\n\t// same code for relinking as before\n};\n\nexports.report = function(tiddler, callback, options) {\n\t// calls `callback(title, blurb)` for each reference to any other\n\t// tiddler inside of `tiddler`. Blurb is an optional SHORT string\n\t// to describe what kind of reference it is.\n};\n```\n\nThe old signature will still successfully relink in Relink V2, so you don't have to migrate these modules immediately. ''Unfortunately,'' once you do, new signature won't work correctly if your users don't upgrade Relink to V2.\n"},
{"title":"Migration to V2/relinktextoperator","caption":"relinktextoperator module","tags":"[[Migration to V2]]","text":"Change the module-type from `relinktextoperator` to `relinktext`.\n\nThe old signature used to be this:\n\n```javascript\nexports.[[Tiddler MIME type]] = function(tiddler, fromTitle, toTitle, options) {\n\t// code to relink references of fromTitle to toTitle inside tiddler.\n};\n```\n\nIt is now:\n\n```javascript\nexports.type = \"[[tiddler MIME type]]\";\n\nexports.relink = function(text, fromTitle, toTitle, options) {\n\t// same code for relinking as before,\n\t// except it takes the tiddler's text as an argument\n\t// instead of the tiddler itself.\n};\n\nexports.report = function(text, callback, options) {\n\t// calls `callback(title, blurb)` for each reference to any other\n\t// tiddler inside of `tiddler`. Blurb is an optional SHORT string\n\t// to describe what kind of reference it is.\n};\n```\n\nThe old signature will still successfully relink in Relink V2 (although it won't report in the [[TiddlerInfo Tab]]. If you want your module to still be compatible with Relink V1, include the following at the end:\n\n''Note:'' In Relink V2.1, the `relinktextoperator` module-type was deprecated in favor of `relinktext`, which is functionally the same, except the relink and report methods switched from taking 'tiddler' as the first argument to 'text'.\n\n```javascript\nexports.[[Tiddler MIME type]] = exports.relink;\n```\n"},
{"title":"Migration to V2/relinkwikitextrule","caption":"relinkwikitextrule module","tags":"[[Migration to V2]]","text":"The old signature used to be this:\n\n```javascript\nexports.name = \"[[Name of corresponding wikitext rule]]\";\n\nexports.relink = function(text, fromTitle, toTitle, options) {\n\t// code to relink references of fromTitle to toTitle inside tiddler.\n};\n```\n\nIt is now:\n\n```javascript\nexports.name = \"[[Name of corresponding wikitext rule]]\";\n\nexports.relink = function(tiddler, fromTitle, toTitle, options) {\n\t// can be EXACTLY the same\n};\n\nexports.report = function(text, callback, options) {\n\t// calls `callback(title, blurb)` for each reference to any other\n\t// tiddler inside of `text`. Blurb is an optional SHORT string\n\t// to describe what kind of reference it is.\n};\n```\n\nYou just need to add a `report` method. The old signature will still successfully relink in Relink V2 (even if it doesn't report in the [[TiddlerInfo Tab]]), and your new version will still work just fine with V1 after you migrate.\n"},
{"title":"Mithril","caption":"Mithril armor","tags":"Frodo","text":"Mithril is armor worn by [[Frodo]], given by [[Bilbo Baggins|BilboBaggins]]\n"},
{"title":"Operators","caption":"Operators","tags":"Documentation Construct","text":"\\rules except wikilink\nWhenever a filter is processed by Relink, whether in a field, an attribute, or a filtered transclude expression, it will only update the operands of whitelisted operators. Each operator must be configured a particular [[type|Types]].\n\n''Suffixes'' can optionally be a part of a whitelist configuration. Let's say you whitelist the operator `myOperator:mySuffix`. The only instances of //myOperator//'s which will be updated are when they have the suffix //mySuffix//.\n\nHowever, if you whitelisted just `myOperator`, then its operand will update regardless of whether it's `[myOperator[myTitle]]` or `[myOperator:someSuffix[myTitle]]` or whatever. The suffix is ignored.\n\n`[field:title[]]` is another good example. It's a default configuration which will only update //field// if it's suffix is set to //title//.\n\n!!! Defaults\n\n`tag`, `title`, and `field:title` are whitelisted by default. That means on rename //MyTiddler// -> //New Tiddler//:\n\n`[title[MyTiddler]] [tag[MyTiddler]!field:title[MyTiddler]]`\n\nbecomes\n\n`[title[New Tiddler]] [tag[New Tiddler]!field:title[New Tiddler]]`\n\n''Note:'' The `title` whitelist configuration accounts for all shorthand titles, such as `MyTiddler`, `\"MyTiddler\"`, `'MyTiddler'`, and `[[MyTiddler]]`. If you remove it from the whitelist, none of those will relink.\n\n''Multi-operand operators'' are supported in Tiddlywiki >=V5.1.23. Currently, there are only a couple core operators that utilize that, and //none// of them are relevant to relinking.\n\nHowever, if you want to create relinkable operators, you can. Say you have an operator `myop` which takes tiddler titles for its first operand, and a reference for its second. You would put the following entries into the whitelist:\n\n* `myop/1` => `title`\n* `myop/2` => `reference`\n\nThus, the filter `[myop[myTitle],[myTitle!!field]]` will update both operands if \"myTitle\" is renamed.\n\n`myop/1` => `title` is equivalent to `myop` => `title` since the first operand is the default operand. However, defining both `myop` and `myop/1` is unsupported and results in undefined behavior.\n\n!!! Relinking Suffixes\n\n//Relink// is also capable of relinking operator suffixes through its \u003C\u003Clink-to-tab Plugins \"Plugins/Fieldnames\" \"Fieldnames supplemental plugin\">>. That feature is [[detailed here|Suffixes]].\n\n\n\u003C\u003Clink-to-tab Demo Demo/Filters Demo>>\n"},
{"title":"orphans Operator","tags":"[[Filter Operators]]","caption":"orphans","purpose":"outputs all non-shadow tiddlers with no references","text":"|!purpose |{{!!purpose}} |\n|!input |ignored |\n|!parameter |none |\n|!output |any non-shadow tiddlers which are not referenced by any other tiddler |\n\n[ext[Learn more about how to use Filters|https://tiddlywiki.com/#Filters]]\n\n''Usage'': `[relink:orphans[]]`\n\nBehaves much like `[all[orphans]]`, except that this will look at all possible references, not just hard links.\n\n[[Examples|orphans Operator (Examples)]]\n"},
{"title":"orphans Operator (Examples)","tags":"[[Operator Examples]]","text":"\u003C\u003Coperator-example 1 \"[relink:orphans[]]\">>\n"},
{"title":"Other plugins by Flibbles","text":"\\rules except wikilink\n\nOther plugins I've developed for TiddlyWiki5\n\n!! [[Uglify|https://flibbles.github.io/tw5-uglify/]]\n\nScrunch TiddlyWiki down! Minify javascript and JSON to serve from Node.JS, shrink down your TiddlyWiki file, or compress your own plugins before publishing them.\n\n!! [[XML|https://flibbles.github.io/tw5-xml/]]\n\nToolkit for doing all things XML --- XPath and JQuery-like filters and widgets. XML rendering. Automatic template application. And more.\n"},
{"title":"Plugins","caption":"Supplemental Plugins","tags":"Relink","text":"//Relink// has additional sub-plugins which provide additional features for more specific needs. (I've also made some [[unrelated plugins|Other plugins by Flibbles]] you might be interested in!)\n\n\u003C$macrocall $name=\"tabs\"\n\ttabsList=\"[tag[Plugin]]\"\n\tdefault={{{ [tag[Plugin]first[]] }}}\n\ttemplate=\"Templates/Plugin\"/>\n"},
{"title":"Plugins/Fieldnames","caption":"Field Names","plugin":"$:/plugins/flibbles/relink-fieldnames","tags":"Feature Plugin","text":"\nWith this supplemental plugin installed, any field //names// that correspond with a renamed tiddler will also be renamed.\n\nFor example, if you have a field used across many tiddlers called `price` (which likely contains numeric values), you might have a tiddler named `price` which describes a filter on how to display this field, as well as a field description. If you later decided the field should instead have been called `cost`, then you can rename the tiddler, and all fields across all tiddlers will update, assuming you have this plugin installed.\n\nThis plugin also takes care of updating any entries in the //Relink// whitelist concerning any renamed fields.\n\n!!! Tiddlywiki version\n\nTiddlywiki version 5.2.0 changed so that field names can be any possible value, whereas before fields could only be lowercase alphanumeric with `_`, `-`, and `.`. This plugin will work with version both after and prior to v5.2.0.\n\n!!! Install\n\nTo install //Relink-fieldnames//, first install //Relink//, then drag the following pill button onto your project:\n\n@@text-align:center;\n\u003C$link to={{!!plugin}} class=\"relink-dragger relink-markdown\">Field renaming support!\u003C/$link>\n@@\n\n\u003C\u003Clink-to-tab Demo \"Demo/Field names\" Demo>>\n"},
{"title":"Plugins/Markdown","caption":"Markdown","plugin":"$:/plugins/flibbles/relink-markdown","tags":"Feature Plugin","text":"//Relink// has a supplemental child-plugin you can install which integrates markdown support. With that installed, your //text/x-markdown// tiddlers will be relinked along with your wiki tiddlers.\n\nThis plugin is designed to work against the [ext[core ''tiddlywiki/markdown'' plugin|https://tiddlywiki.com/plugins/tiddlywiki/markdown/]], however, it will mostly support any other markdown plugin you choose to use (such as ''anstosa/tw5-markdown'' or others).\n\n!!! Markdown Syntax\n\nRelink-markdown supports markdown links, images, and footnotes:\n\n```\n[Link caption](#MyTiddler)\n\n![Image caption](MyImage.png)\n\nFootnote[1]\n\n[1]: #MyTiddler\n```\nRenaming ''~MyTiddler'' and ''~MyImage.png'' results in:\n\n```\n[Link caption(#OtherTiddler)\n\n![Image caption](OtherImage.png)\n\nFootnote[1]\n\n[1]: #OtherTiddler\n```\n\n!!! Mixing Wiki and Markdown syntax\n\n''tiddlywiki/markdown'' and other plugins support mixing wiki and markdown syntax in your //text/x-markdown// files. //Relink-markdown// will seamlessly support whatever your markdown plugin supports.\n\nFor those unfamiliar with ''tiddlywiki/markdown'', you can configure what ~WikiSyntax your markdown files support by editing the ''~$:/config/markdown/renderWikiTextPragma'' tiddler.\n\n!!! Install\n\nTo install //Relink-markdown//, first install //Relink//, then drag the following pill button onto your project:\n\n@@text-align:center;\n\u003C$link to={{!!plugin}} class=\"relink-dragger relink-markdown\">Markdown support!\u003C/$link>\n@@\n\n\u003C\u003Clink-to-tab Demo Demo/Markdown Demo>>\n"},
{"title":"Plugins/Titles","caption":"Titles","plugin":"$:/plugins/flibbles/relink-titles","tags":"Plugin","text":"The //Relink// supplemental child-plugin, //Relink-titles//, allows for other tiddlers to have their titles renamed when specific target tiddlers are relinked. Usually, these other tiddlers will relate to the target tiddler in some way.\n\nThere are two preset rules you can use. Or you can write a custom rename rule for your plugin or project.\n\n!!! Preset Rules\n\n\u003C$list filter=\"[tag[TitlesPreset]]\">\n\n!!!! {{!!caption}}\n\n\u003C\u003C\u003C\n\n\u003C$transclude />\n\n\u003C\u003C\u003C\n\n\u003C/$list>\n\n!!! Third Party Integration\n\nIf you have a plugin of your own, you can integrate with //Relink-titles// so it will relink titles related to each other in ways specific to your plugin. All you need to do is create a `relinktitlesrule` module in your plugin with the following fields:\n\n* ''caption'': This will show up next to the checkbox in the //Relink-titles// configuration page.\n* ''description'': This should contain a //brief// wikitext description of what your rule is for.\n\nBy default, your rules will automatically be enabled, but the user can disable them from the //Relink// or //Relink-titles// configuration menu. There's an [[example rule in this demo|Plugins/Titles/example.js]] that you can check out. \n\nIf you want your rule to be disabled by default, simply create a tiddler in your plugin called `$:/config/flibbles/relink-titles/relink/\u003C\u003CyourRulesTiddler>>` with its text set to ''disabled''.\n\n!!! Migration\n\nVersion 2 of //Relink-titles// had to be overhauled due to underlying changes in Relink V2. If you did not create any custom filters or have any plugin integration, all you need to do is update and check your settings. \u003C\u003Clink-to-tab [[Migration to V2]] [[Migration to V2/relink-titles]] \"Otherwise, see here for migration details.\">>\n\n\n!!! Install\n\nTo install //Relink-titles//, first install //Relink// (''make sure you're using \u003C\u003Clink-to-tab Versions Versions/2.0.0 \"version 2.0.0 or greater\">>''!), then drag the following pill button onto your project:\n\n@@text-align:center;\n\u003C$link to={{!!plugin}} class=\"relink-dragger relink-titles\">Titles support!\u003C/$link>\n@@\n\n\u003C\u003Clink-to-tab Demo Demo/Titles Demo>>\n"},
{"title":"Plugins/Titles/directory","caption":"{{$:/plugins/flibbles/relink-titles/language/Directory/Caption}}","tags":"TitlesPreset","text":"This //Titles// setting is for when your tiddlers are set up hierarchically, like a filesystem. When renaming a target tiddler, //Relink// will change the titles of all tiddlers that would be considered nested within the target tiddler. For instance:\n\n```\n Images\n ├── ...\n ├── Images/2019\n │ ├── Images/2019/01-Trip-to-Spain\n │ ├── Images/2019/05-School\n │ └── Images/2019/12-Christmas\n └── ...\n```\n\nRenaming `Images` to `Pictures` would also rename\n\n* `Images/2019` to `Pictures/2019`\n* `Images/2019/Trip-to-Spain` to `Pictures/2019/Trip-to-Spain`\n* ...and so on.\n\nIf you were to instead rename `Images/2019` to `Images/2020`, then all of the `Images/2019/*` files would be properly renamed, but `Images` would remain untouched.\n\nThis is also effectively //moves// directories and their contents. Let's suppose we renamed `Images` to `Archive/Images`. All nested tiddlers of `Images` would likewise have `Archive/` appended to them. \n"},
{"title":"Plugins/Titles/example.js","text":"/*\\\ncaption: \u003C$link>Example Option\u003C/$link>\ndescription: This example module. It's a 3rd party option which didn't come with //Relink-titles// that shows how other plugins can add rename rules of their own. See \u003C\u003Clink-to-tab Plugins Plugins/Titles \"the //Relink-titles// documentation page\">> for more information.\nmodule-type: relinktitlesrule\ntitle: Plugins/Titles/example.js\ntype: application/javascript\n\nThis example module relinks tiddler titles which are prefixed versions of a\nrenamed tiddler. For example...\n\n If `fromTitle` is renamed to `toTitle`, then this rule renames\n `$:/TitlesExample/fromTitle` to `$:/TitlesExample/toTitle`.\n\nThis is just an example, but core Tiddlywiki will often use prefixes like this\nto denote settings related to a tiddler, such as the prefix\n`$:/config/EditorToolbarButtons/Visibility/` which corresponds to specific\nbuttons, and contains settings for their visibility.\n\n\\*/\n\n/*jslint node: false, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// The name is just a name for your rule. Currently this isn't used,\n// but you should put something unique anyway.\nexports.name = 'example';\n\n/**The report method is for the \"//Relink// references\" info panel.\n *\n * Given a title, it call the callback method for every tiddler it might be\n * referencing. In this example, that means if the given tiddler has the\n * `$:/TitlesExample/` prefix, it'll return whatever it relates to.\n *\n * title: title of tiddler to consider for references\n * callback: method to call for each reference\n */\nexports.report = function(targetTitle, callback, options) {\n\t// If this title doesn't start with the prefix,\n\t// then it's irrelevant for this rule.\n\tif (targetTitle.startsWith('Example/setting/')) {\n\t\tvar referencedTitle = targetTitle.substr('Example/setting/'.length);\n\t\t// First param is the other tiddler that this title references.\n\t\t// Second param is optional. It's a blurb describing the relationship.\n\t\tcallback(referencedTitle, 'Example titles rule');\n\t}\n};\n\n/**Specifies a change for a given title given rename 'fromTitle' to 'toTitle'\n *\n * When 'fromTitle' is renamed to 'toTitle', this method will be called for\n * all tiddlers. For any given tiddler, if this returns a string, that string\n * will replace that tiddler's title.\n *\n * title: title of tiddler to possibly relink\n * fromTitle: old title of tiddler whose rename triggered relinking\n * toTitle: new title of tiddler whose rename triggered relinking\n */\nexports.relink = function(targetTitle, fromTitle, toTitle, options) {\n\t// If this is the TitlesExample tiddler for the renamed tiddler...\n\tif (targetTitle === ('Example/setting/' + fromTitle)) {\n\t\t// Then return the TitlesExample tiddler for the new name.\n\t\treturn {output: 'Example/setting/' + toTitle};\n\t\t// If, for whatever reason, we could NOT change the targetTitle\n\t\t// given this particular toTitle, then we would instead return:\n\t\t// {impossible: true};\n\t}\n\t// Otherwise, if this targetTitle is irrelevant, do nothing, or return:\n\t// undefined\n};\n","caption":"\u003C$link>Example Option\u003C/$link>","description":"This example module. It's a 3rd party option which didn't come with //Relink-titles// that shows how other plugins can add rename rules of their own. See \u003C\u003Clink-to-tab Plugins Plugins/Titles \"the //Relink-titles// documentation page\">> for more information.","module-type":"relinktitlesrule","type":"application/javascript"},
{"title":"Plugins/Titles/lookup","caption":"{{$:/plugins/flibbles/relink-titles/language/Lookup/Caption}}","tags":"TitlesPreset","text":"This //Titles// setting allows you to update configuration tiddlers associated with the tiddler being renamed. For instance, if you have `History/myTiddler` which contains the history for `myTiddler`, you'd want that history tiddler to update accordingly. You can use the lookup pattern `History/$(currentTiddler)$` to manage that.\n\nLet's say you have many history tiddlers representing different version, like `History/2020-05-05/myTiddler`. You can use a wildcard in your pattern, like `History/$(*)$/$(currentTiddler)$`.\n\nThe patterns are highly flexible. `$(currentTiddler)$` can appear anywhere in the pattern, so can as many wildcards (`$(*)$`) as you want. By default, there is a pattern already configured which concerns the visibility of Tiddlywiki buttons:\n\n\u003C$codeblock code={{$:/config/flibbles/relink-titles/lookup/patterns}} />\n\nThis rule is primarily there as an example, but I recommend leaving it in as it does cover several useful cases.\n"},
{"title":"Pragma","caption":"Pragma //(//\\//define, //\\//rules, ...)//","tags":"Documentation WikiText","text":"Relink manages relevant pragma statements.\n\n;`\\define`\n: Relink processes the contents of a define pragma like any other inline wikitext. However, it will process differently any macros which Relink created while resolving another relink on the page. For instance, if it created\n: `\\define relink-1() My \"complicated\" [[Tiddler]]`\n: it will update the definition if that weird tiddler is ever renamed again.\n;`\\import`\n: Relink processes its filter using standard filter relink rules\n;`\\relink`\n: This is pragma //Relink// itself defines, and it's used for [[Inline Declarations]].\n;`\\rules`\n: Relink does nothing to the rules pragma, but it does respect it. For instance, if html is disabled, then relink will not process any elements or widgets in the rest of the tiddler, since they're technically plaintext.\n;`\\whitespace`\n: Irrelevant to Relink. Ignored.\n"},
{"title":"Reference","tags":"Types","text":"\\rules except wikilink\n\nThis is a [[TextReference, as described here|https://tiddlywiki.com/static/TextReference.html]].\n\nThe tiddler portion of the TextReference is checked and possibly relinked. So if `FirstTiddler` were renamed to `SecondTiddler`, then a TextReference like\n\n`FirstTiddler!!MyField`\n\nwould become\n\n`SecondTiddler!!MyField`\n\nYou probably won't use this one very often. Generally, when you want to make a TextReference, you do so through transclusion (e.g. `{{FirstTiddler!!MyField}}`), and those will already be relinked for you, but there are some cases where a literal value is expected to be a TextReference.\n\n...namely, the filter operator `list`. That's it.\n"},
{"title":"references Operator","tags":"[[Filter Operators]]","caption":"references","purpose":"find the titles referenced by each input title","text":"|!purpose |{{!!purpose}} |\n|!input |a selection of titles |\n|!parameter |none |\n|!output |the titles to which the input tiddlers contain any sort of reference |\n\n[ext[Learn more about how to use Filters|https://tiddlywiki.com/#Filters]]\n\n''Usage'': `[relink:references[]]`\n\n\nEach input title is processed in turn. A tiddler's list of references is generated (in no defined order) and then dominantly appended to the operator's overall output. This will include ''all referenced'' tiddlers, including ones that don't exist.\n\nThis functions like Tiddlywiki's `links` operator, only instead of considering only hard links, it will consider all possible references which //Relink// can find.\n\n[[Examples|references Operator (Examples)]]\n"},
{"title":"references Operator (Examples)","tags":"[[Operator Examples]]","text":"\u003C\u003Coperator-example 1 \"[[Demo]relink:references[]]\">>\n\u003C\u003Coperator-example 2 \"[[Demo]relink:references[]is[tiddler]]\" \"filtering out non-existent titles is useful\">>\n"},
{"title":"Relink-titles Migration","text":"//Relink-titles// V1 relied on filters in order to update tiddler titles. However, filters were no longer appropriate due to changes in Relink-V2. If you created a custom rule filter for //Relink-titles//, first of all, I'm sorry I'm making you have to update, but filters really don't work for the newer, better systems under Relink's hood.\n\nYou'll need to create a `relinktitlesrule` module instead of a filter. Fortunately, they are very simple modules, and should give you much more flexibility than the filters did.\n\n[[Here is an example module|Plugins/Titles/example.js]] with plenty of documentation. You need a `report` method for the [[TiddlerInfo Tab]], and a `relink` method for the actual updating of titles.\n"},
{"title":"report Operator","tags":"[[Filter Operators]]","caption":"report","purpose":"returns blurbs describing all input tiddlers' references to the operand title","text":"|!purpose |{{!!purpose}} |\n|!input |a selection of titles, most likely just one |\n|!parameter |the title of a tiddler to which the input tiddlers reference |\n|!output |blurbs describing the nature of the references to the operand |\n\n[ext[Learn more about how to use Filters|https://tiddlywiki.com/#Filters]]\n\n''Usage'': `[relink:report[$referencedTiddler$]]`\n\nEach input title is examined for references to the operand. For each one, a blurb describing that reference is outputted. Multiple identical blurbs can exist in the output. If this is undesired, use the pre-existing `[unique[]]` operator.\n\nMost likely, you will want to use this operator with a single input at a time, since blurbs do not contain any information describing the tiddler they're referencing, or what tiddler contains the reference.\n\n[[Examples|report Operator (Examples)]]\n"},
{"title":"report Operator (Examples)","tags":"[[Operator Examples]]","text":"\u003C\u003Coperator-example 1 \"[[Demo/Transcludes]relink:report[Frodo]]\" \"returns all blurbs describing [[Demo/Transcludes]]'s references of [[Frodo]]\">>\n\u003C\u003Coperator-example 2 \"[[report Operator]relink:report\u003CcurrentTiddler>]\" \"blurbs describing [[report Operator]]'s references to this tiddler\">>\n\u003C\u003Coperator-example 3 \"[relink:report[Documentation]]\" \"blurbs about all references across all tiddlers referencing the [[Documentation]] tiddler.\">>\n"},
{"title":"Roadmap","caption":"Roadmap","text":"This page is meant for the developer so they don't forget what's left to do.\n\n* The plugin names shown on the whitelist tables are using the descriptions, not the names.\n* Filters could do a better job of renaming title-only entries. i.e. `{{{ [[MyTiddler]] }}}` would become `{{{ [\u003Crelink-1>] }}}` on tough renames.\n* Macros cached after encountering `\u003C$importvariables>` should be popped after encountering `\u003C/$importvariables>`.\n* Document the filters included with //Relink//.\n* Write tests to confirm relink:references filter, and its interaction with the to-update filter.\n** Also, ensure that relink:references works on input and isn't a generator. This may require creating [all[relinkable]]\n* Possible issue with `\u003C$importvariables>` widgets being called whose attributes depend on macros defined immediately preceding the widget call. `\\define macro() blah\\n\\n\u003C$importvariables filter=\u003C\u003Cblah>> >...`\n** And I need to track variables set in `\u003C$set>` even though those aren't ever involved in relinking. They may be part of an importvariables attribute value.\n* macrocall relinker rule doesn't do any logging.\n* Better respect for global rules settings when making placeholder or downgrade decisions.\n\n!!! Markdown\n\n* Footnote captions can contain wikitext which we don't handle.\n* I'm using an over-eager relinker which isn't the Relink way.\n* Footnotes should determine if they're linking to tiddlers or images, so it knows whether there should or shouldn't be a '#'.\n"},
{"created":"20230310002205514","text":"","tags":"inventario","title":"rojo","modified":"20230310155351835","type":"text/vnd.tiddlywiki","imagen":"\u003Ccenter>[img height=50px [./medios/imagen/object-red.png]]\u003C/center>","disponible":"1","necesitada":"3","status":"rework","priority":"1"},
{"title":"RSoD","text":"~RSoD is short for the Red Screen of Death. It's the red window that pops up when Tiddlywiki throws and unhandled exception.\n"},
{"title":"Stylesheet.css","text":"/*\\\ntags: $:/tags/Stylesheet\ntitle: Stylesheet.css\n\n\\*/\n\na.relink-dragger {\n\t-moz-box-shadow:inset 0px 1px 0px 0px #caefab;\n\t-webkit-box-shadow:inset 0px 1px 0px 0px #caefab;\n\tbox-shadow:inset 0px 1px 0px 0px #caefab;\n\tbackground:-webkit-gradient(linear, left top, left bottom, color-stop(0.05, #77d42a), color-stop(1, #5cb811));\n\tbackground:-moz-linear-gradient(top, #77d42a 5%, #5cb811 100%);\n\tbackground:-webkit-linear-gradient(top, #77d42a 5%, #5cb811 100%);\n\tbackground:-o-linear-gradient(top, #77d42a 5%, #5cb811 100%);\n\tbackground:-ms-linear-gradient(top, #77d42a 5%, #5cb811 100%);\n\tbackground:linear-gradient(to bottom, #77d42a 5%, #5cb811 100%);\n\tfilter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#77d42a', endColorstr='#5cb811',GradientType=0);\n\tbackground-color:#77d42a;\n\t-moz-border-radius:20px;\n\t-webkit-border-radius:20px;\n\tborder-radius:20px;\n\tborder:1px solid #268a16;\n\tdisplay:inline-block;\n\tcursor:pointer;\n\tcolor:#306108;\n\tfont-family:Arial;\n\tfont-size:15px;\n\tfont-weight:bold;\n\tpadding:6px 24px;\n\ttext-decoration:none;\n\ttext-shadow:0px 1px 0px #aade7c;\n}\n\na.relink-dragger:hover {\n\ttext-decoration: none;\n}\n\n.relink-dragger:active {\n\tposition:relative;\n\ttop:1px;\n}\n\na.relink-markdown.relink-dragger {\n\tpadding:4px 18px;\n}\n.relink-text {\n\tpadding: 0px;\n}\n\n.relink-text pre {\n\tpadding: 6px;\n\tmargin: 0px;\n\tborder: none;\n}\n\n.relink-demo-source {\n\tfloat: left;\n\twidth: 49%;\n\tborder: 1px solid #cccccc;\n\tmargin-top: 0px;\n\tmargin-bottom: 0px;\n}\n\n.relink-demo-preview {\n\tfloat: right;\n\twidth: 49%;\n\tmargin-left: 0px;\n\tmargin-right: 0px;\n\tborder: 1px solid #cccccc;\n\tpadding: 3px;\n}\n\n.relink-demo-fields {\n\twidth: 100%;\n}\n\n.relink-demo-description {\n\tclear: both;\n\tpadding-top: 5px;\n}\n\n.relink-demo-image {\n\tdisplay: block;\n\tmargin-left: auto;\n\tmargin-right: auto;\n\twidth: 50%;\n}\n\n.doc-example {\n\tmargin: 1em 0;\n\tpadding: 0.8em 0;\n}\n\n.doc-example:hover {\n\tbackground-color: \u003C\u003Ccolour code-background>>;\n}\n\n.doc-example ul {\n\tmargin-bottom: 0;\n\tpadding-bottom: 0;\n\tmargin-top: 0.2em;\n}\n\n.doc-example input[type=search] {\n width: 95%;\n}\n\n.doc-example pre:first-child {\n\tmargin-top: 0;\n}\n\n.doc-example-result {\n\tborder-left: 5px solid \u003C\u003Ccolour blockquote-bar>>;\n\tborder-right: 5px solid \u003C\u003Ccolour blockquote-bar>>;\n\tmargin-left: 0;\n\tmargin-right: 0;\n\tpadding: 0 10px;\n}\n\n.doc-example-result ul {\n\tmargin-left: 0;\n\tpadding-left: 10px;\n}\n\n.doc-example-result ol {\n\tmargin-left: 0;\n\tpadding-left: 20px;\n}\n","tags":"$:/tags/Stylesheet"},
{"title":"Suffixes","text":"//Relink-Fieldnames// can update the suffixes of filter operators as well. It does so through a whitelist, but since this a more esoteric behavior, the whitelist isn't exposed in the \u003C\u003Clink-to-config-tab caption:\"//Relink// configuration panel\">>.\n\nHowever, the whitelist can be modified by adding system tiddlers with the prefix `$:/config/flibbles/relink/suffixes/` with text values corresponding to the suffixes [[type|Types]].\n\n''For example:'' If the system tiddler `$:/config/flibbles/relink/suffixes/myoperator` had a text value of `title`, then filters such as `[myoperator:fromtitle[]]` would relink if ''fromtitle'' were renamed.\n"},
{"title":"Templates/Button","text":"\u003C$list filter=\"[\u003CcurrentTab>tag[Supplemental]]\">{{$:/core/images/new-button}}\u003C/$list>\u003C$transclude tiddler=\u003C\u003CcurrentTab>> field=\"caption\">\u003C$transclude tiddler=\u003C\u003CcurrentTab>> field=\"title\"/>\u003C/$transclude>\n"},
{"title":"Templates/Demo","text":"\u003C$tiddler tiddler=\u003C\u003CcurrentTab>> >\n\n!! \u003C$link>{{!!caption}}\u003C/$link>\n\n\u003C$list filter=\"[all[current]contains:relink.showcase[text]] ~[all[current]!has:field[relink.showcase]]\">\n\n@@.relink-demo-source\n\u003Cdiv class=\"relink-text\">\u003Cpre>\u003C$view field=\u003C\u003Cfield>> />\u003C/pre>\u003C/div>\n@@\n\n\u003Cdiv class=\"relink-demo-preview\">\n\n\u003C$transclude />\n\n\u003C/div>\n\u003C/$list>\u003C$list variable=render filter=\"[list[!!relink.showcase]!match[text]first[]]\">\n\n\u003Ctable class=\"relink-demo-fields\">\n\u003C$list variable=\"field\" filter=\"[list[!!relink.showcase]]\">\n\u003Ctr>\u003Ctd>''\u003C\u003Cfield>>''\u003C/td>\u003Ctd class=\"relink-text\">\u003Cpre>\u003C$view field=\u003C\u003Cfield>> />\u003C/pre>\u003C/td>\u003C/tr>\n\u003C/$list>\n\u003C/table>\n\u003C/$list>\n\n@@.relink-demo-description\n\u003C$transclude field=\"description\" />\n@@\n\n\u003C$list filter=\"[all[current]has[warning]]\">\n\n{{$:/core/images/warning}} ''Warning:'' {{!!warning}}\n\u003C/$list>\n\n\u003C$list filter=\"[all[current]search::literal[define relink-]]\">\n\n''relink-1:'' Sometimes, Relink is unable to make title replacements in place (e.g. replacing a prettylink with a title that has brackets in it). In these cases, Relink may define placeholder macros at the top of your tiddler which it uses to complete the relink operation.\n\u003C/$list>\n\u003C/$tiddler>\n"},
{"title":"Templates/Hello","text":"Hello, I'm {{!!title}}.\n"},
{"title":"Templates/now","text":"\u003C\u003Cnow [UTC]YYYY0MM0DD0hh0mm0ssXXX>>\n"},
{"title":"Templates/Plugin","text":"\u003C$tiddler tiddler=\u003C\u003CcurrentTab>> >\n\n\u003C$tiddler tiddler={{!!plugin}}>\n\n\u003C$transclude tiddler=\"$:/core/ui/Components/plugin-info\" />\n\u003C/$tiddler>\n\n\u003C$transclude />\n\n\u003C/$tiddler>\n"},
{"title":"Templates/release-date","text":"\u003C!--\tThis filter gets the date of the specified version. It adds a \".0\"\n\tto the revision if it's missing.\n-->\n{{{\n\t[{$:/plugins/flibbles/relink!!version}regexp[\\d+\\.\\d+\\.\\d+]]\n\t~[{$:/plugins/flibbles/relink!!version}addsuffix[.0]]\n\t+[addprefix[Versions/]get[created]]\n}}}\n"},
{"title":"Templates/Type","text":"\u003C$tiddler tiddler=\u003C\u003CcurrentTab>> >\n\n! \u003C$link>\u003C$transclude field=\"caption\">{{!!title}}\u003C/$transclude>\u003C/$link>\n\n{{}}\n\u003C/$tiddler>\n"},
{"title":"Templates/Version","text":"\u003C$set name=\"minor\" filter=\"[\u003CcurrentTab>removesuffix[.0]]\">\n\n!! Version \u003C$text text={{{[\u003Cminor>removeprefix[Versions/]]}}} />\n\n\u003C$list filter=\"[prefix\u003Cminor>nsort[created]]\">\n\n!!! \u003C$text text={{{[all[current]removeprefix[Versions/]addprefix[v]]}}} />\n\n!!!!! \u003C$view field=\"created\" format=\"date\" template=\"MMM DDth, YYYY\" />\n\n\u003C$transclude />\n\n\u003C/$list>\n\n\u003C/$set>\n"},
{"title":"Templates/Version-button","text":"{{{[\u003CcurrentTab>removeprefix[Versions/]addprefix[v]removesuffix[.0]]}}}\n"},
{"title":"Third Party Plugin Integration","tags":"Feature","text":"//Relink// has the ability to allow other plugins to integrate seemlessly with it if they so choose. For example, if a plugin you're developing has macros, widgets, fields, or filter operators which could benefit from being relinked, you need only to include a few extra tiddlers with your plugin, and //Relink// will automatically manage your plugins content, assuming //Relink// is installed.\n\nNot only will //Relink// recognize any configuration tiddlers your plugin specifies, it will organize your settings into its own subcategory in the //Relink// whitelists.\n\n!! Configuration Tiddler names\n\nEach relinkable structure type has it's own name structure.\n\n!!! Widgets and elements\n\nEach managed attributes will require its own tiddler.\nWidget name should begin with a '$' if it's a widget. This is probably the case.\n\n```\n$:/config/flibbles/relink/attributes/$element-name$/$attribute-name$\n```\n\n!!! Fields\n\n```\n$:/config/flibbles/relink/fields/$field-name$\n```\n\n!!! Macro Parameters\nEach managed parameter of a macro will require its own tiddler.\n\n```\n$:/config/flibbles/relink/macros/$macro-name$/$parameter-name$\n```\n!!! Filter Operators\n\n```\n$:/config/flibbles/relink/operator/$operator-name$\n```\n\n!! Text\n\nThe text of these configuration tiddlers is one word, specifying the [[type|Types]] of the parameter/attribute/field/operator. The following values are allowed:\n\n\u003C\u003Cul Types>>\n\n!! Example\n\n[[An example plugin is included in this demo|$:/plugins/flibbles/3rd-party]]. It doesn't do anything, but it is integrated with //Relink// for each type of construct it defines.\n"},
{"title":"Tiddler Type","tags":"Feature","caption":"Tiddler types besides //text/vnd.tiddlywiki//","text":"By default, Relink treats the text body of most tiddlers as [[Wikitext]]. This includes all tiddlers that don't have a ''type'' field, or have a ''type'' field of `text/vnd.tiddlywiki`. However, different type fields will be relinked differently. For instance, //Relink// will ignore the text bodies of all `text/plain` tiddlers, because plain text doesn't have any links or references.\n\nIf you have the [[supplemental Relink-Markdown plugin|Plugins/Markdown]], all `text/x-markdown` files will be relinked as markdown.\n\n! Custom types\n\nSometimes tiddlers are used to store information instead of wikitext, particularly config tiddlers. They may store a filter, or a simple title, and it's important not only to still relink them, but to prevent them by being wrongfully relinked if they're interpretted as wikitext. For them, //Relink// defines four custom tiddler types:\n\n* text/x-tiddler-filter\n* text/x-tiddler-list\n* text/x-tiddler-reference\n* text/x-tiddler-title\n\nTiddlers assigned one of these types will be relinked as a filter, list, reference, or a title respectively.\n\n!!! Exceptions\n\n''$:/DefaultTiddlers'' is a core tiddler which is an exception. It doesn't have a type since core Tiddlywiki doesn't integrate with //Relink//, but it's treated as a filter.\n"},
{"title":"TiddlerInfo Tab","tags":"Feature","text":"//Relink// provides a new tab in the tiddler info panel. This is the panel that comes up when you click the {{$:/core/images/info-button}} ''info'' button.\n\n!! //Relink// References\n\n\"//Relink// References\" indicates all the tiddlers that reference the given tiddler, either through fields, links, macros, transclues, or widgets. Basically, it's all the tiddlers that would update if you renamed the tiddler.\n\nIt also provides a small blurb of context to give you an idea of what kind of reference it is.\n\nThis new tab different than the core \"References\" tab, which only lists tiddlers that link to the given tiddler through `\u003C$link>` or `[[Pretty link]]` syntax, and provides no context.\n"},
{"title":"Tiddlers to relink","tags":"Hacks","text":"By default, //Relink// updates all non-shadow tiddlers, this includes system tiddlers. However, this behavior can be modified. If the system tiddler `$:/config/flibbles/relink/to-update` is present, //Relink// will use the filter in its text to determine which tiddlers to update on a rename.\n\nFor instance:\n\n* `[all[]!is[system]]` makes Relink only update non-system tiddlers.\n* `[all[shadows+tiddlers]]` makes it update everything. It'll override shadows when necessary.\n\nThis configuration is not currently exposed in a //Relink//'s general settings page because it would be the only setting there. Also, I expect most users will never need to modify this. Let me know if you think otherwise.\n"},
{"title":"Title","tags":"Types","text":"This is the simplest type. The value is a single tiddler title.\n\nFor example: In `\u003C$link to=\"Tiddler Name\" />`, if the `to` attribute is treated as a title type (which it is by default), then //Tiddler Name// is considered as a single title. The value can contain spaces without any special syntax.\n\nAn example of a title field would be\n\n`list-after: Tiddler A`\n\nThe value of list-after is one tiddler titled \"Tiddler A\". If \"Tiddler A\" is renamed to \"Tiddler B\", that field would become:\n\n`list-after: Tiddler B`\n"},
{"title":"Transcludes","caption":"Transcludes","tags":"Documentation WikiText","text":"Simple Transclusion patterns are automatically updated. This includes both the tiddler and the template tiddler.\n\n```\n{{MyTiddler}}\n{{MyTiddler||TemplateTiddler}}\n```\n\n!! Filtered Transclusion\n\nFilters inside of filtered transclusions are also processed. Relink will obey the usual whitelist rules for operands in those filters. If the filtered transclusion has a template, that will also be relinked if applicable.\n\n```\n{{{ [tag[MyTiddler]] }}}\n{{{ [tag[MyTiddler]] || Template }}}\n```\n\n\u003C\u003Clink-to-tab Demo Demo/Transcludes Demo>>\n"},
{"title":"Types","caption":"Field Types","list":"Title","tags":"Documentation","text":"Fields, attributes, parameters, and operators have types. Depending on the type, Relink will parse them differently.\n\n\u003C$macrocall $name=\"tabs\"\n\ttabsList=\"[tag\u003CcurrentTiddler>!tag[Supplemental]] [tag\u003CcurrentTiddler>tag[Supplemental]]\"\n\tdefault=\"Title\"\n\tclass=\"tc-vertical\"\n\ttemplate=\"Templates/Type\"\n\tbuttonTemplate=\"Templates/Button\" />\n"},
{"created":"20230307062016080","text":"","tags":"inventario","title":"verde","modified":"20230310155356338","type":"text/vnd.tiddlywiki","imagen":"\u003Ccenter>[img height=50px [./medios/imagen/object-green.png]]\u003C/center>","disponible":"1","necesitada":"3","status":"rework","priority":"2"},
{"title":"Versions","caption":"Release Notes","tags":"Relink","text":"\u003C$macrocall $name=\"tabs\"\n tabsList=\"[prefix[Versions/]suffix[.0]!nsort[created]]\"\n default={{{[prefix[Versions/]suffix[.0]!nsort[created]first[]]}}}\n template=\"Templates/Version\"\n buttonTemplate=\"Templates/Version-button\"\n class=\"tc-vertical\" />\n"},
{"created":"20170821155707000","text":"* Released Relink\n* Support for Fields, Attributes, Lists, and prettyLinks\n* Customization for Fields and Attributes\n","title":"Versions/1.0.0"},
{"created":"20190825013039321","text":"* Added support for configuring operators. It wasn't there before, even though I said it was.\n* Fixed issue #1\n* Added demo site complete with documentation. Added links to it from the configuration pages.\n* Added support for dynamic Field Types. Will come in handy once \"Text References\" have to be added.\n* Changed name of Field Type \"field\" to \"title\", since title is easier to understand.\n* Changed prompt that pops up when renaming a tiddler. This will only occur on english versions of Tiddlywiki.\n* Made `list` and `tags` appear on the fields configuration page, so they can be removed. Simplified how those two are handled under the hood.\n* Added the relevant attributes for as many core widgets that I could.\n* Corrected issue where default configurations could not be removed.\n* Added support for simple transclusion syntax (i.e `{{Tiddler}}` and `{{Tiddler||Template}}`)\n* Fixed issue where Relink would fumble attribute values that had apostrophes and ended with a quoate. They are impossible, but now Relink makes a macro placeholder as an alternative.\n","title":"Versions/1.1.0"},
{"created":"20190825014935000","text":"* Corrected several broken links (and a typo)\n","title":"Versions/1.1.1"},
{"created":"20200526001805463","text":"* Markdown support\n** Or rather there is now a supplemental plugin which you can also install which adds markdown support to relink.\n* Integration with Tiddlywiki plugin manager. Now Relink has its own tab in the ''Add Plugins'' wizard.\n* Fixed bug where Relink would mangle widget attributes in //very// rare cases.\n* Fixed bug where renaming prettyLinks to something with a '|' char might mess up.\n* Relink now respects `\\rules` settings when it comes to deciding whether to convert wikitext into widgets or other patterns.\n","title":"Versions/1.10.0"},
{"created":"20200906211834719","text":"* Fixed bug where filtered widget attributes might corrupt if reference parameter in nested list cannot be renamed. (i.e. `\u003C$widget attr={{{ [operator{myTitle}] }}} />`. If myTitle can't be renamed, attribute would corrupt.) \n* Relink can handle tricky filtered attribute renames better. Particularly renames involving \"}}}\".\n* Fixed bug where all later filter operators in a run would be reported as containing the target tiddler, even if they didn't.\n* Added `\u003C$list emptyMessage />` attribute to core whitelist as wikitext.\n* Made it so if a tiddler's title is relinked, all tiddlers that reference it will also be relinked. This doesn't happen in core Relink, but some people need to make plugins where this can happen.\n* Added license tab\n","title":"Versions/1.10.1"},
{"created":"20201215235344179","text":"* ''If you're using //Relink-titles//, this release is vital.'' Otherwise this release isn't that important.\n* Made minor but highly important change so that Relink-titles can function without deleting countless tiddlers by mistake.\n* Revamped the console log results to be more concise, easier to read, simpler, and automatically extensible to plugin material like Markdown, Titles, and others (which weren't logging before)\n","title":"Versions/1.10.2"},
{"created":"20210201022024210","text":"* Updated macrocall relinking to support new macrocall rule in TW v5.1.24-prerelease. ''Note:'' Without this change, Relink will RSoD a lot on the cutting edge version.\n* Changed the plugin library tiddler to not use any language tiddler transclusion, so it can be imported and used by other plugin libraries.\n* New default tiddler on demo to brag about my other plugins, like tw5-uglify.\n","title":"Versions/1.10.3"},
{"created":"20190825193402541","text":"* Corrected crash that occurred when any Relink whitelist was empty.\n* Added support for ~WikiLinks\n* prettylinks can support more difficult renames, such as `tiddler with [[brackets]]`\n* Support for the `\\import` pragma\n","title":"Versions/1.2.0"},
{"created":"20190829191722518","text":"* Made logging consistent and more clear.\n* Demo site explains relink placeholders.\n* Prompt about tiddlers that won't be renamed when renaming tiddlers is now fixed, but a better fix is incoming.\n* Prettylinks and ~CamelCase links handle strange titles better\n* Transcludes handle field and indexes ( `{{tiddler!!field }}` ). It also handles edge cases better.\n* Lists will alert when they cannot relink, instead of bungling the operation\n* Better error handling\n","title":"Versions/1.2.1"},
{"created":"20190831010508611","text":"* Support for filtered transcludes (e.g. `{{{[tag[MyTiddler]]}}}`)\n* Support for indirect filter operands (e.g. `[get{MyTiddler##index}]`)\n* Filters in general should be a lot more robust\n","title":"Versions/1.3.0"},
{"created":"20190902020915207","text":"* Support for indirect attribute values\n* Support for filter attribute values\n* better handling for bad transclusion renames (e.g. `tiddlers with !! bangs`)\n* Added the [[TextReference field type|https://tiddlywiki.com/static/TextReference.html]]. Probably won't be used too much, but Relink is meant to be a total solution.\n* Revamped the popup that appears while renaming tiddlers. Now it accurately lists any tiddlers Relink will be unable to fix.\n* Added a ~TiddlerInfo tab which lists all tiddlers that reference the given one.\n* //Relink// now should handle all relinking except for macros, which I'm not sure yet how or if I should tackle.\n","title":"Versions/1.4.0"},
{"created":"20190902022109690","text":"* Forgot to remove the old \"Known Issues\" from the list\n","title":"Versions/1.4.1"},
{"created":"20190902120700160","text":"* Exposed Field Type dropdown on Operators whitelist\n* Put \"title\" at first of dropdown list, since it's the default\n* Demo improvements and documentation updates\n","title":"Versions/1.4.2"},
{"created":"20190907001619669","text":"* Support for macros\n** This includes a new whitelist and everything.\n** Global macros, locally defined macros, and macro modules are all supported.\n** Documentation to go along with the new macro functionality\n* Fixed issue where filter attributes (e.g. `\u003C$link to={{{filter}}} />`) would cause an unhandled exception of they existed on a page which requires relinking.\n","title":"Versions/1.5.0"},
{"created":"20190913185820277","text":"* Added descriptive text in tiddler info tab, \"//Relink// References\" and added documentation about it too.\n* When renaming a tiddler, Relink lists tiddlers that //will// be updated, as well as any that can't be.\n* Removed warnings when inputting funky tiddler names. They're not in vanilla Tiddlywiki, or will be removed shortly.\n* Documentation has links to specific demo tabs for people coming to demo site through configuration hotlinks.\n* Documented filtered transcludes\n* Fixed table header on Operators whitelist page.\n* Updated demo site to Tiddlywiki v5.1.20\n","title":"Versions/1.5.1"},
{"created":"20190921173553030","text":"* Added ability to alter what tiddlers //Relink// touches through the `$:/config/flibbles/relink/to-update`. [[Documentation here.|Hackability]] (#10)\n* Fixed issue where Relink didn't work at all on IE11 (#9)\n","title":"Versions/1.5.2"},
{"created":"20190921194558085","text":"* Removed startsWith and endsWith from the project. Also for IE11 support (#9)\n","title":"Versions/1.5.3"},
{"created":"20191001171937468","text":"* Modified whitelists to group configurations by core, custom, and external plugins. This subcategories are collapsible.\n* Moved add button to the top for each white list.\n* Demo site changes:\n** Added example plugin which showcases how plugin integration would work. There's also [[documentation to go along with it|Third Party Plugin Integration]].\n** Refactored certain elements, particularly, broke up the Field_Types page into individual tiddlers with tags.\n","title":"Versions/1.5.4"},
{"created":"20200131021148900","text":"* Support for image wikitext (`[img[tiddler.png]]`)\n** Included demo page in demo tiddler\n* Fixed bug where Relink could fail to relink html elements using indirect attributes in rare cases.\n","title":"Versions/1.6.0"},
{"created":"20200408021036214","text":"The Wikitext field type is still coming. This release did some major refactoring to make it possible, but it as itself includes enough standalone features that I'm making a minor release out of it.\n\n* The //Relink// References ~TiddlerInfo pane provides additional information about //how// this given tiddler shows up in others. This feature is subject to change, because I'm not sure I like the level of descriptiveness.\n* $:/DefaultTiddlers is now correctly relinked as a filter tiddler.\n* If Relink encounters an instance where it can't relink, it now no longer gives up on the entire tiddler, and tries to relink all other relevant instances.\n* Fixed issue where filteredtransclude wikitext might not relink if the original title had particular patterns of the '}' character.\n* Relink wasn't properly ignoring text inside code blocks. Now it does.\n* The field `filter` is added as a core filter field.\n","title":"Versions/1.7.0"},
{"created":"20200409040109761","text":"* Finished up loose ends with regards to the //Relink// References infoTab. It should provide useful contexts for all possible scenarios now.\n* Added `\u003C$button set />` and `\u003C$button setTitle />` to core configured attributes.\n","title":"Versions/1.7.1"},
{"created":"20200411021701039","text":"This release adds the wikitext type. Now generic wikitext can be used inside macro parameters, tiddler fields, and more!\n\nAlso...\n\n* Corrected issue where placeholdering complex titles into pragma may overwrite globally defined relink placeholders.\n* Corrected issue where filters would placeholder list or reference operands with the wrong type of placeholder, meaning those placeholders couldn't be relinked later on. Fixed.\n* Fixed issue where Relink might report an impossible relink with a macro whose definition could not be found, even if there are no anonynous parameters to worry about.\n","title":"Versions/1.8.0"},
{"created":"20200415011355302","text":"* Configuration page add buttons no longer allow erroneous blanks.\n* Form validation for Relink configuration page. It no longer allows illegal input which may cause Relink to behave badly.\n* Failed relinks are now reported using Tiddlywiki's alert system, instead of printing to the browser console where no one will see it.\n* Improvements to demo site, including macro wikitext parameter example.\n* Fixed issue where invalid placeholder macros would cause RSoD.\n* Fixed issue where unsanitary prettylink captions could corrupt tiddler if downgraded into a widget link.\n* Fixed issue where ~WikiLinks could fail in rare circumstances if $tw.config.textPrimitives.unWikilink were changed.\n","title":"Versions/1.8.1"},
{"created":"20200424034709562","text":"This release introduces the `\\relink` pragma for inline declaration of macro parameters. No longer do you have to the whitelist to register some little ol' macro you just wrote. You can write a pragma right alongside it that does all the work!\n\n* When about to perform a rename which can't be fully completed, //Relink// warns with one list with highlighted problems, instead of two separate lists. Much cleaner.\n* Fixed serious bug where reference fields didn't work AT ALL! And if you even tried to use them, then Relink would RSoD constantly. I guess Relink isn't being used all that much, because SOMEBODY should have noticed this before version 1.9.\n* If prettylinks must downgrade, they take advantage of Tiddlywiki's 5.1.20's shorthand link syntax if it's available (i.e. `\u003C$link to=\"tiddler\"/>` eqv `\u003C$link to=\"tiddler\">tiddler\u003C/$link>`)\n* wikitext occurring inside attributes or parameters would not find macro definitions in the scope of the tiddler, but not the attribute/parameter. Fixed.\n* Fixed bug where `\u003C$macrocall>` without a $name attribute would cause RSoD.\n* Fixed issue where placeholders in empty tiddlers wouldn't be relinked.\n* Fixed rare issue where placeholders might relink their value into garbage.\n* If a user changed a multiline placeholder to be multiline, it became inert and error-prone. Not anymore.\n","title":"Versions/1.9.0"},
{"created":"20200425031407077","text":"* Corrected the problem were custom-built relinkfieldtypes wouldn't actually be available in the whitelist dropdown menus. I'll actually be adding documentation for this soon. The API has nearly finalized.\n* Forgot to hook up `$:/config/flibbles/relink/settings/default-type` to be used by inline declarations. It uses it now.\n* Corrected issue where 3rd party plugin names wouldn't render correctly in the whitelist. They'd all say \"Relink - flexibility when...\" etc.\n* Fixed issue where empty macro params could cause RSoD. (i.e `\u003C\u003CmyMacro \"\">>`)\n","title":"Versions/1.9.1"},
{"created":"20200508135603495","text":"* Fixed issue where demo site lagged and reset view after every rename. It was being a bad demo.\n* Typo fix to install instructions\n* Moved plugin relink configurations before core relink configurations. It's more likely the user will care about them before core, and it's more important that it's visible.\n* table-of-contents macros were not fully configured by default. Fixed. (#16)\n","title":"Versions/1.9.2"},
{"created":"20200515155144823","text":"* The ''caption'' field is wikitext, even if it usually isn't used for anything fancy. Added to the core list of fields.\n","title":"Versions/1.9.3"},
{"created":"20210324034859173","text":"This version overhauls the internal design in order to integrate with ~TiddlyWiki's indexer system. This version is ''considerably faster'' than V1 when it comes to the Relink info panel and general performance when doing non-Relink things.\n\nUnfortunately, this release required non-backward compatible changes. This will only affect anyone who has created or uses modules that integrate with Relink. [[See here for more details.|Migration to V2]] (Note: Your modules will still work for relinking! They just won't work with the [[TiddlerInfo Tab]].)\n\n''Make sure you update any //Relink// supplemental plugins you're using~''\n\n''Other changes''\n\n* Fixed infinite loop that occurs when relinking tiddlers with certain malformed filters. This was a bad one. The loop used to require closing the browser tab.\n* Relink-titles had to be completely changed. \u003C\u003Clink-to-tab [[Migration to V2]] [[Migration to V2/relink-titles]] \"See here for more info.\">>\n* Support for filterrunprefixes and [[multi-operand filter operators|Operators]]!\n* Relink better conforms to Tiddlywiki rendering with regards to nested wikitext and \\rules pragma.\n* Several [[wikimethods|Wikimethods]] have been defined and documented.\n* Changed the way the //Relink// ~TiddlyInfo reports filters in some cases to be more useful.\n* Relink would not relink fields of javascript tiddlers. Fixed.\n* Fixed minor issue where Relink would erase falsy prettylink captions.\n* Placeholdering for non-managed attributes is less error-prone.\n* Fixed issue with downgrading macrocalls would corrupt empty-string parameters.\n","title":"Versions/2.0.0"},
{"created":"20210810013959449","text":"This release is mainly for support for Tiddlywiki v5.2.*, but there are a few bug fixes and improvements included with it.\n\n* Support for tiddler fields with any kind of characters, as it is now supported in Tiddlywiki v5.2.*.\n* Support for the implicit and explicit `field` filter operator. As in, filters like `[myfield[Tiddler A]]` and `[field:myfield[Tiddler A]]` will now get detected by //Relink// if ''myfield'' is a registered tiddler field in the whitelist.\n* Fixed issue where tiddlers named 'readme' (or something like that) would report //Relink// references from many plugins, because plugins usually have 'readme' in their list, even though they're referring to the '${plugin_name}/readme' shadow tiddler, and not 'readme' the tiddler.\n* If plugins would ever actually relink from a namechange, it gets reported as a tiddler which couldn't be updated, rather than being silently ignored.\n* Fixed issue where 'undefined' blurbs returned by a custom relink module could cause some relink filters to RSoD.\n","title":"Versions/2.0.1"},
{"created":"20210831152902863","text":"It seems //Relink// had a blindspot for tables. Any relinkable content inside a table was completely ignored. Fixed.\n\n* Added wikitext rule to support for tables.\n","title":"Versions/2.0.2"},
{"created":"20210902163423465","text":"* Implemented typedblock wikitext, which is (hopefully) the last blindspot Relink had.\n\n''Note:'' This update requires migration for anyone implementing the `relinktextoperator` module-type and who wishes to use typedblocks using that MIME-type. The method signature has changed. Instead of taking 'tiddler' as a first argument for \"report\" and \"relink\", it takes \"text\", where text is the text body of the tiddler. Then you must change the type of your module to `relinktext`. See the \u003C\u003Clink-to-tab [[Migration to V2]] [[Migration to V2/relinktextoperator]] \"page on migration\">> for an example of the new method signatures.\n","title":"Versions/2.1.0"},
{"created":"20211010233445978","text":"* Added `text/x-tiddler-list`, `text/x-tiddler-reference`, and `text/x-tiddler-title` types so that plugins can set types to their tiddlers with specialized content, and those tiddlers can be relinked appropriately.\n* Small change so relinkoperator modules are capable of deleting tiddler fields if they really want to. Just set {output: null}.\n","title":"Versions/2.1.1"},
{"created":"20211125192514840","text":"* Fixed bug where cleared draft title would prevent changed tiddlers notification from coming up.\n* Added rule to //Relink-titles// for lookup and config tiddlers with names derived from other tiddlers. Allows both prefix and suffixes, as well as wildcard matching.\n* Optimized //Relink// and all of its supplemental plugins for [ext[TW5-Uglify|https://flibbles.github.io/tw5-uglify/]] to get better compression.\n","title":"Versions/2.1.2"},
{"created":"20220523154431401","text":"* Implemented block quotes. It was yet another wikitext syntax I'd completely overlooked.\n* Made //Relink// conform more effectively to the current palette.\n* Added hackability that allows you to control whether //Relink// updates modified fields as it relinks.\n","title":"Versions/2.1.3"},
{"created":"20220817160826682","text":"* Relink would crash if it encountered quote blocks without closing syntax. Fixed.\n","title":"Versions/2.1.4"},
{"created":"20221106022952190","text":"\\rules except wikilink\n\n* Introducing the //Relink-Fieldnames// supplemental plugin, which allows you to manage the field names themselves, not just the field values. If you have tiddlers whose title is used a a field name, those field names will be updated when that tiddler is renamed.\n* Filters! While //Relink// has always had filters, they were never documented and defined, but enough of you have been using them that I went ahead and finalized them. Introducing `relink:references`, `relink:backreferences`, `relink:report`, and `relink:orphans`. If you were already using any of these filters, don't worry. They work exactly as they have been, only now they're documented, and their usage is set in stone now.\n* Introducing the \"//Relink// Missing\" and \"//Relink// Orphans\" MoreSideBar lists. They are moderately more useful than the built-in \"Missing\" and \"Orphans\" lists.\n* Made improvements to the indexer to greatly improve performance while you have uncommitted tiddler renames in place. (i.e. You edit a tiddler title, but you don't save, and you go and edit other stuff. Before, //Relink// would make things laggy.)\n","title":"Versions/2.2.0"},
{"created":"20230108024056377","text":"\\rules except wikilink\n\nPrevious release of //Relink-Fieldnames// did not cover a lot of bases which I hadn't thought of at the time. Now it does.\n\n* Now has whitelists several widget attributes, macro parameters, and filter operands as a special types that ship with the supplementary plugin: the `fieldname` and `fieldnamelist` types. They behave like `title` and `list` except that they respect the reserved field name blacklist.\n* Can now relink the field of transclusions and indirect attributes/operands. i.e. `{{tiddler!!fromTitle}}` can relink to `{{tiddler!!toTitle}}` now.\n* Can now update attribute names of widgets that use dynamic attributes corresponding to tiddler fields. I.E. `\u003C$action-setfield fromTiddler=value />` will now update if ''fromTiddler'' changes.\n* Can now update suffixes of certain filter operators that correspond to fields. I.E. `[search:fromField[...]]`.\n* Can now relink shorthand filter operators corresponding to fields. I.E. `[fromField[]]` will relink if ''fromField'' renames.\n* Can now relink the `[search[]]` operator and its annoyingly unique suffix of fields and flags.\n\nSome changes concern core //Relink// itself.\n\n* //Relink// now handles widgets that use dynamic attributes corresponding to tiddler fields. For example, will now detect ''fromTiddler'' inside of `\u003C$action-setfield whiteListedField=fromTidder />`. It does this using a whitelist which isn't exposed in the configuration because of how esoteric these use cases are.\n* Macrocall filter operands are now supported. I.E. `[prefix\u003CmyMacro fromTitle>]`. This is a feature that snuck in after I made //Relink//, and thus it went unnoticed until now.\n* Whitelisting for the `\u003C$genesis>` widget attributes.\n* The `\u003C$macrocall>` widget now has a custom blurb unlike other widgets which is more concise and useful.\n* Support for the `[contains[]]` widget's operand, which needs relinking only if the suffix corresponds to a whitelisted tiddler list field.\n* Fix for issue #43: The orphan operator would not report tiddlers should have been added to the list since the last operator call.\n","title":"Versions/2.3.0"},
{"created":"20230108171504382","text":"\\rules except wikilink\n\n* Fixed issue where all macro attributes that came after a relinked attribute would be set to the same value the relinked attribute was set to.\n* Updated the Relink-title blurb for lookup rules to be more helpful.\n","title":"Versions/2.3.1"},
{"title":"Whitelisting","text":"You can use the \u003C\u003Clink-to-config-tab Macros \"//Relink// configuration table\">> to whitelist \u003C\u003Csay-list [tag[Types]lowercase[]]>>. Just go to the correct table and input what you need.\n\nA macro may have multiple parameter entries, one for each relinkable parameter. Same with attributes. See each of \u003C\u003Csay-list [tag[Construct]] \"\u003C$link/>\">> for more details.\n\n!! Integrating your plugin with relink\n\nYou can configure the \u003C\u003Csay-list \"[tag[Types]lowercase[]]\">> of your plugin to automatically be in the whitelist.\n\nTo do this, just add tiddlers to your plugin following the naming convention:\n\n* ''Fields'': `$:/config/flibbles/relink/fields/\u003C\u003CfieldName>>`\n* ''Macros'': `$:/config/flibbles/relink/macros/\u003C\u003CmacroName>>/\u003C\u003CparameterName>>`\n* ''Filter Operators'': `$:/config/flibbles/relink/operators/\u003C\u003CoperatorName>>`\n* ''widget/element attributes'': `$:/config/flibbles/relink/attributes/\u003C\u003CelementName>>/\u003C\u003CattributeName>>`\n\nThe body of these configuration tiddlers should be the corresponding [[type|Types]], like `title` or `filter`.\n\nA macro like `\\define fellowship(name, members)` from the [[macro example|Macros]] should have corresponding config tiddlers like:\n\n```\ntitle: $:/config/flibbles/relink/macros/fellowship/name\n\ntitle\n```\n\nand\n\n```\ntitle: $:/config/flibbles/relink/macros/fellowship/members\n\nfilter\n```\n\n!! Integrating //other// people's plugins with relink\n\nIf you install a 3rd party plugin which define macros, filter operators, fields, or widgets, but it doesn't integrate with //Relink//, you can do it yourself byinputting the corresponding entries into the whitelist.\n\nThe advantage to this is it won't override any of a plugin's shadow tiddlers.\n\n!! Why use whitelisting for macros when inline declarations exists?\n\n[[Inline Declarations]] are a more convenient method of declaring macro parameters for relinking. It's faster to set up, and it keeps the macro definition together with the declaration, but there are times when you should use the whitelist.\n\nIf you're building a macro for a plugin, you should use the whitelist for a few reasons.\n\n* The user can override or disable your relink configurations in the whitelist without having to override your shadow tiddlers containing the macros.\n* If the user doesn't have Relink installed, `\\relink` doesn't parse. It just displays as is. That's ugly, and if it comes before your `\\define` pragma, ''it will actually prevent them from being properly imported''. Meanwhile having tiddlers like `$:/config/flibbles/relink/...` in your plugin won't break anything.\n* If the user doesn't have Relink installed, they may have no idea what this `\\relink` syntax is, but if they look in your plugin's contents and see `$:/config/flibbles/relink/macros/macroName/paramName`, they'll have an easier time figuring out that it's part of another plugin named Relink (by Flibbles).\n\nAlso, if you're creating a javascript macro, you obviously can't put `\\relink` pragma in that file. You //can// instead put the declarations into any ol' \u003C\u003Ctag $:/tags/Macro>> tiddler, but you shouldn't. The whitelist is more a appropriate and centralized place.\n"},
{"title":"Widgets with tiddler fields as attributes","text":"//Relink// has a whitelist which allows you to individually specify widget attributes which should be relinked. [[That's described here.|Attributes]] However, some widgets accept attributes which correspond to tiddler fields. For instance, the ``\u003C$action-setfield>`` widget can accept any attribute without a `$` prefix, and those attributes will become fields in the specified tiddler.\n\n```\n\u003C$action-setfield tags=\"Documentation\" />\n```\n\nThis will set the `tags` field of the current tiddler to `Documentation`.\n\nBecause widgets like these accept a dynamic set of attributes, the attribute whitelist cannot be used to relink those fields. That's where the //fieldattributes// settings come in. For each widget, a regular expression can be defined which specifies how its attributes correspond to tiddler fields. For `\u003C$action-setfield>`:\n\n```\ntitle: $:/config/flibbles/relink/fieldattributes/$action-setfield\n\n([^$].*)\n```\n\nIn other words, for all attributes that don't start with a `$`, look up the corresponding entry in the [[Fields]] whitelist for tiddler fields. This way, if `tags` field is configured to be relinked (which it is by default), then `\u003C$action-setfield tags=\"fromTitle\" />` will be relinked appropriately.\n\n!!! The regular expression\n\nThe regular expression used must have a single capture group which will corresponds to the actual name of the tiddler field. An expression like `field-(.*)` will match the attribute `field-tags` to the `tags` tiddler field.\n\n!!! Existing cases\n\nThe following widgets are already configured. There is no table in the //Relink// whitelists because this is such an esoteric problem, but your plugins can always add more with additional `$:/config/flibbles/relink/fieldattributes/` tiddlers.\n\n\u003Ctable>\n\u003C$list filter=\"[all[shadows+tiddlers]prefix[$:/config/flibbles/relink/fieldattributes/]]\">\u003Ctr>\u003Ctd>''\u003C$text text={{!!title}} />''\u003C/td>\u003Ctd>\u003C$text text={{!!text}} />\u003C/td>\u003C/tr>\u003C/$list>\n\u003C/table>\n"},
{"title":"Wikimethods","tags":"Feature","text":"//Relink// includes a few defined wikimethods which you can take advantage of.\n\n\u003C$list filter=\"[[Wikimethods]tagging[]]\">\n\n!! {{!!title}}\n\n\u003Cblockquote>\u003Cpre>\u003Ccode>{{!!title}}({{!!arguments}}) -> {{!!return}}\n\u003C/code>\u003C/pre>\u003C/blockquote>\n\n\u003C$transclude />\n\n\u003C/$list>\n"},
{"title":"Wikitext","tags":"Types","text":"This type is ordinary [[wikitext, as described here|https://tiddlywiki.com/static/WikiText.html]]. It's what every standard tiddler uses in its body.\n\nThis type really only makes sense for fields and macros, but operators and widget attributes can be configured as wikitext as well, if you have the need.\n\n!! Fields\n\nIn your project, you may want snippets of wikitext in tiddler fields. Like this:\n\n```\ntitle: Movie list\ndescription: This tiddler contains a list of all the [[Lord of the Rings]] movies.\n\n* The Fellowship of the Ring\n* The Two Towers\n* Return of the King\n* The Hobbit\n* The Silmarillion\n```\n\nIn this case, you might want that description field to update if `Lord of the Rings` is renamed. You can configure the \u003C\u003Clink-to-config-tab Fields \"relink Fields list\">> to have //description// set to //wikitext//, and relink will properly parse all description fields as wikitext. (This demo wiki has //description// configured as wikitext.)\n\n!!!! inline\n\nRelink expects wikitext used in fields besides `text` to be inline, meaning it won't create any pragma in order to resolve difficult name changes. It will just report a failure to rename and move on.\n\n!! Macros\n\nSometimes you may make macros like this:\n\n```\n\\define wrap-text(text)\n\u003Cspan class=\"my-custom-class\">$text$\u003C/span>\n\\end\n```\n\nThen you may call it like `\u003C\u003Cwrap-text \"See [[here]] for more details\">>`.\n\nIn cases like this, where you have generic wikitext as a macro parameter, you can configure \u003C\u003Clink-to-config-tab Macros \"Relink's Macro configuration list\">> to handle it. In the example's case, you'd add an entry and set ''Macro'' to //wrap-text//, ''Parameter'' to //text//, and ''Type'' to //wikitext//.\n"}
]</script><div id="storeArea" style="display:none;"></div>
<!--~~ Library modules ~~-->
<div id="libraryModules" style="display:none;">
<script data-tiddler-library="yes" data-tiddler-title="$:/library/sjcl.js" data-tiddler-type="application/javascript" type="text/javascript">'use strict';var D,E,F,G,H,sjcl={cipher:{},hash:{},keyexchange:{},mode:{},misc:{},codec:{},exception:{corrupt:function(t){this.toString=function(){return'CORRUPT: '+this.message},this.message=t},invalid:function(t){this.toString=function(){return'INVALID: '+this.message},this.message=t},bug:function(t){this.toString=function(){return'BUG: '+this.message},this.message=t},notReady:function(t){this.toString=function(){return'NOT READY: '+this.message},this.message=t}}};function t(t,e,i){if(4!==e.length)throw new sjcl.exception.invalid('invalid aes block size');var c=t.b[i],s=e[0]^c[0],n=e[i?3:1]^c[1],r=e[2]^c[2];e=e[i?1:3]^c[3];for(var o,a,l=c.length/4-2,h=4,d=[0,0,0,0],u=t.s[i],f=(t=u[0],u[1]),p=u[2],m=u[3],j=u[4],y=0;y<l;y++)u=t[s>>>24]^f[n>>16&255]^p[r>>8&255]^m[255&e]^c[h],o=t[n>>>24]^f[r>>16&255]^p[e>>8&255]^m[255&s]^c[h+1],a=t[r>>>24]^f[e>>16&255]^p[s>>8&255]^m[255&n]^c[h+2],e=t[e>>>24]^f[s>>16&255]^p[n>>8&255]^m[255&r]^c[h+3],h+=4,s=u,n=o,r=a;for(y=0;y<4;y++)d[i?3&-y:y]=j[s>>>24]<<24^j[n>>16&255]<<16^j[r>>8&255]<<8^j[255&e]^c[h++],u=s,s=n,n=r,r=e,e=u;return d}function u(t,e){for(var i,c,s=t.F,n=t.b,r=s[0],o=s[1],a=s[2],l=s[3],h=s[4],d=s[5],u=s[6],f=s[7],p=0;p<64;p++)i=(i=p<16?e[p]:(i=e[p+1&15],c=e[p+14&15],e[15&p]=(i>>>7^i>>>18^i>>>3^i<<25^i<<14)+(c>>>17^c>>>19^c>>>10^c<<15^c<<13)+e[15&p]+e[p+9&15]|0))+f+(h>>>6^h>>>11^h>>>25^h<<26^h<<21^h<<7)+(u^h&(d^u))+n[p],f=u,u=d,d=h,h=l+i|0,l=a,a=o,r=i+((o=r)&a^l&(o^a))+(o>>>2^o>>>13^o>>>22^o<<30^o<<19^o<<10)|0;s[0]=s[0]+r|0,s[1]=s[1]+o|0,s[2]=s[2]+a|0,s[3]=s[3]+l|0,s[4]=s[4]+h|0,s[5]=s[5]+d|0,s[6]=s[6]+u|0,s[7]=s[7]+f|0}function A(t,e){var i,c=sjcl.random.K[t],s=[];for(i in c)c.hasOwnProperty(i)&&s.push(c[i]);for(i=0;i<s.length;i++)s[i](e)}function C(t,e){'undefined'!=typeof window&&window.performance&&'function'==typeof window.performance.now?t.addEntropy(window.performance.now(),e,'loadtime'):t.addEntropy((new Date).valueOf(),e,'loadtime')}function y(t){t.b=z(t).concat(z(t)),t.L=new sjcl.cipher.aes(t.b)}function z(t){for(var e=0;e<4&&(t.h[e]=t.h[e]+1|0,!t.h[e]);e++);return t.L.encrypt(t.h)}function B(t,e){return function(){e.apply(t,arguments)}}sjcl.cipher.aes=function(t){this.s[0][0][0]||this.O();var e,i,c,s=this.s[0][4],n=this.s[1],r=t.length,o=1;if(4!==r&&6!==r&&8!==r)throw new sjcl.exception.invalid('invalid aes key size');for(this.b=[i=t.slice(0),c=[]],t=r;t<4*r+28;t++)e=i[t-1],(0==t%r||8===r&&4==t%r)&&(e=s[e>>>24]<<24^s[e>>16&255]<<16^s[e>>8&255]<<8^s[255&e],0==t%r)&&(e=e<<8^e>>>24^o<<24,o=o<<1^283*(o>>7)),i[t]=i[t-r]^e;for(r=0;t;r++,t--)e=i[3&r?t:t-4],c[r]=t<=4||r<4?e:n[0][s[e>>>24]]^n[1][s[e>>16&255]]^n[2][s[e>>8&255]]^n[3][s[255&e]]},sjcl.cipher.aes.prototype={encrypt:function(e){return t(this,e,0)},decrypt:function(e){return t(this,e,1)},s:[[[],[],[],[],[]],[[],[],[],[],[]]],O:function(){for(var t,e,i,c,s,n,r=this.s[0],o=this.s[1],a=r[4],l=o[4],h=[],d=[],u=0;u<256;u++)d[(h[u]=u<<1^283*(u>>7))^u]=u;for(t=e=0;!a[t];t^=i||1,e=d[e]||1)for(n=16843009*(c=h[u=h[i=h[l[a[t]=s=(s=e^e<<1^e<<2^e<<3^e<<4)>>8^255&s^99]=t]]])^65537*u^257*i^16843008*t,c=257*h[s]^16843008*s,u=0;u<4;u++)r[u][t]=c=c<<24^c>>>8,o[u][s]=n=n<<24^n>>>8;for(u=0;u<5;u++)r[u]=r[u].slice(0),o[u]=o[u].slice(0)}},sjcl.bitArray={bitSlice:function(t,e,i){return t=sjcl.bitArray.$(t.slice(e/32),32-(31&e)).slice(1),void 0===i?t:sjcl.bitArray.clamp(t,i-e)},extract:function(t,e,i){var c=Math.floor(-e-i&31);return(-32&(e+i-1^e)?t[e/32|0]<<32-c^t[e/32+1|0]>>>c:t[e/32|0]>>>c)&(1<<i)-1},concat:function(t,e){var i,c;return 0===t.length||0===e.length||(i=t[t.length-1],32===(c=sjcl.bitArray.getPartial(i)))?t.concat(e):sjcl.bitArray.$(e,c,0|i,t.slice(0,t.length-1))},bitLength:function(t){var e=t.length;return 0===e?0:32*(e-1)+sjcl.bitArray.getPartial(t[e-1])},clamp:function(t,e){var i;return 32*t.length<e||(i=(t=t.slice(0,Math.ceil(e/32))).length,e&=31,0<i&&e&&(t[i-1]=sjcl.bitArray.partial(e,t[i-1]&2147483648>>e-1,1))),t},partial:function(t,e,i){return 32===t?e:(i?0|e:e<<32-t)+1099511627776*t},getPartial:function(t){return Math.round(t/1099511627776)||32},equal:function(t,e){if(sjcl.bitArray.bitLength(t)!==sjcl.bitArray.bitLength(e))return!1;for(var i=0,c=0;c<t.length;c++)i|=t[c]^e[c];return 0===i},$:function(t,e,i,c){var s=0;for(void 0===c&&(c=[]);32<=e;e-=32)c.push(i),i=0;if(0===e)return c.concat(t);for(s=0;s<t.length;s++)c.push(i|t[s]>>>e),i=t[s]<<32-e;return s=t.length?t[t.length-1]:0,t=sjcl.bitArray.getPartial(s),c.push(sjcl.bitArray.partial(e+t&31,32<e+t?i:c.pop(),1)),c},i:function(t,e){return[t[0]^e[0],t[1]^e[1],t[2]^e[2],t[3]^e[3]]},byteswapM:function(t){for(var e,i=0;i<t.length;++i)e=t[i],t[i]=e>>>24|e>>>8&65280|(65280&e)<<8|e<<24;return t}},sjcl.codec.utf8String={fromBits:function(t){for(var e,i='',c=sjcl.bitArray.bitLength(t),s=0;s<c/8;s++)0==(3&s)&&(e=t[s/4]),i+=String.fromCharCode(e>>>8>>>8>>>8),e<<=8;return decodeURIComponent(escape(i))},toBits:function(t){t=unescape(encodeURIComponent(t));for(var e=[],i=0,c=0;c<t.length;c++)i=i<<8|t.charCodeAt(c),3==(3&c)&&(e.push(i),i=0);return 3&c&&e.push(sjcl.bitArray.partial(8*(3&c),i)),e}},sjcl.codec.hex={fromBits:function(t){for(var e='',i=0;i<t.length;i++)e+=(0xf00000000000+(0|t[i])).toString(16).substr(4);return e.substr(0,sjcl.bitArray.bitLength(t)/4)},toBits:function(t){var e,i=[],c=(t=t.replace(/\s|0x/g,'')).length;for(t+='00000000',e=0;e<t.length;e+=8)i.push(0^parseInt(t.substr(e,8),16));return sjcl.bitArray.clamp(i,4*c)}},sjcl.codec.base32={B:'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567',X:'0123456789ABCDEFGHIJKLMNOPQRSTUV',BITS:32,BASE:5,REMAINING:27,fromBits:function(t,e,i){var c=sjcl.codec.base32.BASE,s=sjcl.codec.base32.REMAINING,n='',r=0,o=sjcl.codec.base32.B,a=0,l=sjcl.bitArray.bitLength(t);for(i&&(o=sjcl.codec.base32.X),i=0;n.length*c<l;)n+=o.charAt((a^t[i]>>>r)>>>s),r<c?(a=t[i]<<c-r,r+=s,i++):(a<<=c,r-=c);for(;7&n.length&&!e;)n+='=';return n},toBits:function(t,e){t=t.replace(/\s|=/g,'').toUpperCase();var i,c,s=sjcl.codec.base32.BITS,n=sjcl.codec.base32.BASE,r=sjcl.codec.base32.REMAINING,o=[],a=0,l=sjcl.codec.base32.B,h=0,d='base32';for(e&&(l=sjcl.codec.base32.X,d='base32hex'),i=0;i<t.length;i++){if((c=l.indexOf(t.charAt(i)))<0){if(!e)try{return sjcl.codec.base32hex.toBits(t)}catch(t){}throw new sjcl.exception.invalid('this isn\'t '+d+'!')}r<a?(o.push(h^c>>>(a-=r)),h=c<<s-a):h^=c<<s-(a+=n)}return 56&a&&o.push(sjcl.bitArray.partial(56&a,h,1)),o}},sjcl.codec.base32hex={fromBits:function(t,e){return sjcl.codec.base32.fromBits(t,e,1)},toBits:function(t){return sjcl.codec.base32.toBits(t,1)}},sjcl.codec.base64={B:'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',fromBits:function(t,e,i){var c='',s=0,n=sjcl.codec.base64.B,r=0,o=sjcl.bitArray.bitLength(t);for(i&&(n=n.substr(0,62)+'-_'),i=0;6*c.length<o;)c+=n.charAt((r^t[i]>>>s)>>>26),s<6?(r=t[i]<<6-s,s+=26,i++):(r<<=6,s-=6);for(;3&c.length&&!e;)c+='=';return c},toBits:function(t,e){t=t.replace(/\s|=/g,'');var i,c,s=[],n=0,r=sjcl.codec.base64.B,o=0;for(e&&(r=r.substr(0,62)+'-_'),i=0;i<t.length;i++){if((c=r.indexOf(t.charAt(i)))<0)throw new sjcl.exception.invalid('this isn\'t base64!');26<n?(s.push(o^c>>>(n-=26)),o=c<<32-n):o^=c<<32-(n+=6)}return 56&n&&s.push(sjcl.bitArray.partial(56&n,o,1)),s}},sjcl.codec.base64url={fromBits:function(t){return sjcl.codec.base64.fromBits(t,1,1)},toBits:function(t){return sjcl.codec.base64.toBits(t,1)}},sjcl.hash.sha256=function(t){this.b[0]||this.O(),t?(this.F=t.F.slice(0),this.A=t.A.slice(0),this.l=t.l):this.reset()},sjcl.hash.sha256.hash=function(t){return(new sjcl.hash.sha256).update(t).finalize()},sjcl.hash.sha256.prototype={blockSize:512,reset:function(){return this.F=this.Y.slice(0),this.A=[],this.l=0,this},update:function(t){'string'==typeof t&&(t=sjcl.codec.utf8String.toBits(t));var e=this.A=sjcl.bitArray.concat(this.A,t);if(s=this.l,9007199254740991<(t=this.l=s+sjcl.bitArray.bitLength(t)))throw new sjcl.exception.invalid('Cannot hash more than 2^53 - 1 bits');if('undefined'!=typeof Uint32Array){for(var i=new Uint32Array(e),c=0,s=512+s-(512+s&511);s<=t;s+=512)u(this,i.subarray(16*c,16*(c+1))),c+=1;e.splice(0,16*c)}else for(s=512+s-(512+s&511);s<=t;s+=512)u(this,e.splice(0,16));return this},finalize:function(){for(var t=this.A,e=this.F,i=(t=sjcl.bitArray.concat(t,[sjcl.bitArray.partial(1,1)])).length+2;15&i;i++)t.push(0);for(t.push(Math.floor(this.l/4294967296)),t.push(0|this.l);t.length;)u(this,t.splice(0,16));return this.reset(),e},Y:[],b:[],O:function(){function t(t){return 4294967296*(t-Math.floor(t))|0}for(var e,i,c=0,s=2;c<64;s++){for(i=!0,e=2;e*e<=s;e++)if(0==s%e){i=!1;break}i&&(c<8&&(this.Y[c]=t(Math.pow(s,.5))),this.b[c]=t(Math.pow(s,1/3)),c++)}}},sjcl.mode.ccm={name:'ccm',G:[],listenProgress:function(t){sjcl.mode.ccm.G.push(t)},unListenProgress:function(t){-1<(t=sjcl.mode.ccm.G.indexOf(t))&&sjcl.mode.ccm.G.splice(t,1)},fa:function(t){for(var e=sjcl.mode.ccm.G.slice(),i=0;i<e.length;i+=1)e[i](t)},encrypt:function(t,e,i,c,s){var n,r=e.slice(0),o=sjcl.bitArray,a=o.bitLength(i)/8,l=o.bitLength(r)/8;if(s=s||64,c=c||[],a<7)throw new sjcl.exception.invalid('ccm: iv must be at least 7 bytes');for(n=2;n<4&&l>>>8*n;n++);return i=o.clamp(i,8*(15-(n=n<15-a?15-a:n))),e=sjcl.mode.ccm.V(t,e,i,c,s,n),r=sjcl.mode.ccm.C(t,r,i,e,s,n),o.concat(r.data,r.tag)},decrypt:function(t,e,i,c,s){s=s||64,c=c||[];var n=sjcl.bitArray,r=n.bitLength(i)/8,o=n.bitLength(e),a=n.clamp(e,o-s),l=n.bitSlice(e,o-s),o=(o-s)/8;if(r<7)throw new sjcl.exception.invalid('ccm: iv must be at least 7 bytes');for(e=2;e<4&&o>>>8*e;e++);if(i=n.clamp(i,8*(15-(e=e<15-r?15-r:e))),a=sjcl.mode.ccm.C(t,a,i,l,s,e),t=sjcl.mode.ccm.V(t,a.data,i,c,s,e),n.equal(a.tag,t))return a.data;throw new sjcl.exception.corrupt('ccm: tag doesn\'t match')},na:function(t,e,i,c,s,n){var r=[],o=sjcl.bitArray,a=o.i;if(c=[o.partial(8,(e.length?64:0)|c-2<<2|n-1)],(c=o.concat(c,i))[3]|=s,c=t.encrypt(c),e.length)for((i=o.bitLength(e)/8)<=65279?r=[o.partial(16,i)]:i<=4294967295&&(r=o.concat([o.partial(16,65534)],[i])),r=o.concat(r,e),e=0;e<r.length;e+=4)c=t.encrypt(a(c,r.slice(e,e+4).concat([0,0,0])));return c},V:function(t,e,i,c,s,n){var r=sjcl.bitArray,o=r.i;if((s/=8)%2||s<4||16<s)throw new sjcl.exception.invalid('ccm: invalid tag length');if(4294967295<c.length||4294967295<e.length)throw new sjcl.exception.bug('ccm: can\'t deal with 4GiB or more data');for(i=sjcl.mode.ccm.na(t,c,i,s,r.bitLength(e)/8,n),c=0;c<e.length;c+=4)i=t.encrypt(o(i,e.slice(c,c+4).concat([0,0,0])));return r.clamp(i,8*s)},C:function(t,e,i,c,s,n){var r=sjcl.bitArray,o=r.i,a=e.length,l=r.bitLength(e),h=a/50,d=h;if(i=r.concat([r.partial(8,n-1)],i).concat([0,0,0]).slice(0,4),c=r.bitSlice(o(c,t.encrypt(i)),0,s),!a)return{tag:c,data:[]};for(o=0;o<a;o+=4)h<o&&(sjcl.mode.ccm.fa(o/a),h+=d),i[3]++,s=t.encrypt(i),e[o]^=s[0],e[o+1]^=s[1],e[o+2]^=s[2],e[o+3]^=s[3];return{tag:c,data:r.clamp(e,l)}}},sjcl.mode.ocb2={name:'ocb2',encrypt:function(t,e,i,c,s,n){if(128!==sjcl.bitArray.bitLength(i))throw new sjcl.exception.invalid('ocb iv must be 128 bits');var r,o=sjcl.mode.ocb2.S,a=sjcl.bitArray,l=a.i,h=[0,0,0,0];i=o(t.encrypt(i));var d,u=[];for(c=c||[],s=s||64,r=0;r+4<e.length;r+=4)h=l(h,d=e.slice(r,r+4)),u=u.concat(l(i,t.encrypt(l(i,d)))),i=o(i);return d=e.slice(r),e=a.bitLength(d),r=t.encrypt(l(i,[0,0,0,e])),d=a.clamp(l(d.concat([0,0,0]),r),e),h=l(h,l(d.concat([0,0,0]),r)),h=t.encrypt(l(h,l(i,o(i)))),c.length&&(h=l(h,n?c:sjcl.mode.ocb2.pmac(t,c))),u.concat(a.concat(d,a.clamp(h,s)))},decrypt:function(t,e,i,c,s,n){if(128!==sjcl.bitArray.bitLength(i))throw new sjcl.exception.invalid('ocb iv must be 128 bits');s=s||64;var r,o,a=sjcl.mode.ocb2.S,l=sjcl.bitArray,h=l.i,d=[0,0,0,0],u=a(t.encrypt(i)),f=sjcl.bitArray.bitLength(e)-s,p=[];for(c=c||[],i=0;i+4<f/32;i+=4)r=h(u,t.decrypt(h(u,e.slice(i,i+4)))),d=h(d,r),p=p.concat(r),u=a(u);if(r=t.encrypt(h(u,[0,0,0,o=f-32*i])),r=h(r,l.clamp(e.slice(i),o).concat([0,0,0])),d=h(d,r),d=t.encrypt(h(d,h(u,a(u)))),c.length&&(d=h(d,n?c:sjcl.mode.ocb2.pmac(t,c))),l.equal(l.clamp(d,s),l.bitSlice(e,f)))return p.concat(l.clamp(r,o));throw new sjcl.exception.corrupt('ocb: tag doesn\'t match')},pmac:function(t,e){for(var i=sjcl.mode.ocb2.S,c=sjcl.bitArray,s=c.i,n=[0,0,0,0],r=s(r=t.encrypt([0,0,0,0]),i(i(r))),o=0;o+4<e.length;o+=4)r=i(r),n=s(n,t.encrypt(s(r,e.slice(o,o+4))));return o=e.slice(o),c.bitLength(o)<128&&(r=s(r,i(r)),o=c.concat(o,[-2147483648,0,0,0])),n=s(n,o),t.encrypt(s(i(s(r,i(r))),n))},S:function(t){return[t[0]<<1^t[1]>>>31,t[1]<<1^t[2]>>>31,t[2]<<1^t[3]>>>31,t[3]<<1^135*(t[0]>>>31)]}},sjcl.mode.gcm={name:'gcm',encrypt:function(t,e,i,c,s){var n=e.slice(0);return e=sjcl.bitArray,t=sjcl.mode.gcm.C(!0,t,n,c=c||[],i,s||128),e.concat(t.data,t.tag)},decrypt:function(t,e,i,c,s){var n=e.slice(0),r=sjcl.bitArray,o=r.bitLength(n);if(c=c||[],n=(s=s||128)<=o?(e=r.bitSlice(n,o-s),r.bitSlice(n,0,o-s)):(e=n,[]),t=sjcl.mode.gcm.C(!1,t,n,c,i,s),r.equal(t.tag,e))return t.data;throw new sjcl.exception.corrupt('gcm: tag doesn\'t match')},ka:function(t,e){for(var i,c,s=sjcl.bitArray.i,n=[0,0,0,0],r=e.slice(0),o=0;o<128;o++){for((i=0!=(t[Math.floor(o/32)]&1<<31-o%32))&&(n=s(n,r)),c=0!=(1&r[3]),i=3;0<i;i--)r[i]=r[i]>>>1|(1&r[i-1])<<31;r[0]>>>=1,c&&(r[0]^=-520093696)}return n},j:function(t,e,i){var c,s=i.length;for(e=e.slice(0),c=0;c<s;c+=4)e[0]^=4294967295&i[c],e[1]^=4294967295&i[c+1],e[2]^=4294967295&i[c+2],e[3]^=4294967295&i[c+3],e=sjcl.mode.gcm.ka(e,t);return e},C:function(t,e,i,c,s,n){var r,o,a,l=sjcl.bitArray,h=i.length,d=l.bitLength(i),u=l.bitLength(c),f=l.bitLength(s),p=e.encrypt([0,0,0,0]);for(s=96===f?(s=s.slice(0),l.concat(s,[1])):(s=sjcl.mode.gcm.j(p,[0,0,0,0],s),sjcl.mode.gcm.j(p,s,[0,0,Math.floor(f/4294967296),4294967295&f])),f=sjcl.mode.gcm.j(p,[0,0,0,0],c),a=s.slice(0),c=f.slice(0),t||(c=sjcl.mode.gcm.j(p,f,i)),o=0;o<h;o+=4)a[3]++,r=e.encrypt(a),i[o]^=r[0],i[o+1]^=r[1],i[o+2]^=r[2],i[o+3]^=r[3];return i=l.clamp(i,d),t&&(c=sjcl.mode.gcm.j(p,f,i)),t=[Math.floor(u/4294967296),4294967295&u,Math.floor(d/4294967296),4294967295&d],c=sjcl.mode.gcm.j(p,c,t),r=e.encrypt(s),c[0]^=r[0],c[1]^=r[1],c[2]^=r[2],c[3]^=r[3],{tag:l.bitSlice(c,0,n),data:i}}},sjcl.misc.hmac=function(t,e){this.W=e=e||sjcl.hash.sha256;var i,c=[[],[]],s=e.prototype.blockSize/32;for(this.w=[new e,new e],t.length>s&&(t=e.hash(t)),i=0;i<s;i++)c[0][i]=909522486^t[i],c[1][i]=1549556828^t[i];this.w[0].update(c[0]),this.w[1].update(c[1]),this.R=new e(this.w[0])},sjcl.misc.hmac.prototype.encrypt=sjcl.misc.hmac.prototype.mac=function(t){if(this.aa)throw new sjcl.exception.invalid('encrypt on already updated hmac called!');return this.update(t),this.digest(t)},sjcl.misc.hmac.prototype.reset=function(){this.R=new this.W(this.w[0]),this.aa=!1},sjcl.misc.hmac.prototype.update=function(t){this.aa=!0,this.R.update(t)},sjcl.misc.hmac.prototype.digest=function(){var t=this.R.finalize(),t=new this.W(this.w[1]).update(t).finalize();return this.reset(),t},sjcl.misc.pbkdf2=function(t,e,i,c,s){if(i=i||1e4,c<0||i<0)throw new sjcl.exception.invalid('invalid params to pbkdf2');'string'==typeof t&&(t=sjcl.codec.utf8String.toBits(t)),'string'==typeof e&&(e=sjcl.codec.utf8String.toBits(e)),t=new(s=s||sjcl.misc.hmac)(t);for(var n,r,o,a=[],l=sjcl.bitArray,h=1;32*a.length<(c||1);h++){for(s=n=t.encrypt(l.concat(e,[h])),r=1;r<i;r++)for(n=t.encrypt(n),o=0;o<n.length;o++)s[o]^=n[o];a=a.concat(s)}return a=c?l.clamp(a,c):a},sjcl.prng=function(t){this.c=[new sjcl.hash.sha256],this.m=[0],this.P=0,this.H={},this.N=0,this.U={},this.Z=this.f=this.o=this.ha=0,this.b=[0,0,0,0,0,0,0,0],this.h=[0,0,0,0],this.L=void 0,this.M=t,this.D=!1,this.K={progress:{},seeded:{}},this.u=this.ga=0,this.I=1,this.J=2,this.ca=65536,this.T=[0,48,64,96,128,192,256,384,512,768,1024],this.da=3e4,this.ba=80},sjcl.prng.prototype={randomWords:function(t,e){var i=[];if((s=this.isReady(e))===this.u)throw new sjcl.exception.notReady('generator isn\'t seeded');if(s&this.J){var c,s=!(s&this.I),n=[],r=0;for(this.Z=n[0]=(new Date).valueOf()+this.da,c=0;c<16;c++)n.push(4294967296*Math.random()|0);for(c=0;c<this.c.length&&(n=n.concat(this.c[c].finalize()),r+=this.m[c],this.m[c]=0,s||!(this.P&1<<c));c++);for(this.P>=1<<this.c.length&&(this.c.push(new sjcl.hash.sha256),this.m.push(0)),this.f-=r,r>this.o&&(this.o=r),this.P++,this.b=sjcl.hash.sha256.hash(this.b.concat(n)),this.L=new sjcl.cipher.aes(this.b),s=0;s<4&&(this.h[s]=this.h[s]+1|0,!this.h[s]);s++);}for(s=0;s<t;s+=4)0==(s+1)%this.ca&&y(this),n=z(this),i.push(n[0],n[1],n[2],n[3]);return y(this),i.slice(0,t)},setDefaultParanoia:function(t,e){if(0===t&&'Setting paranoia=0 will ruin your security; use it only for testing'!==e)throw new sjcl.exception.invalid('Setting paranoia=0 will ruin your security; use it only for testing');this.M=t},addEntropy:function(t,e,i){i=i||'user';var c,s=(new Date).valueOf(),n=this.H[i],r=this.isReady(),o=0,a=this.U[i];switch(void 0===a&&(a=this.U[i]=this.ha++),void 0===n&&(n=this.H[i]=0),this.H[i]=(this.H[i]+1)%this.c.length,typeof t){case'number':void 0===e&&(e=1),this.c[n].update([a,this.N++,1,e,s,1,0|t]);break;case'object':if('[object Uint32Array]'===(i=Object.prototype.toString.call(t))){for(c=[],i=0;i<t.length;i++)c.push(t[i]);t=c}else for('[object Array]'!==i&&(o=1),i=0;i<t.length&&!o;i++)'number'!=typeof t[i]&&(o=1);if(!o){if(void 0===e)for(i=e=0;i<t.length;i++)for(c=t[i];0<c;)e++,c>>>=1;this.c[n].update([a,this.N++,2,e,s,t.length].concat(t))}break;case'string':void 0===e&&(e=t.length),this.c[n].update([a,this.N++,3,e,s,t.length]),this.c[n].update(t);break;default:o=1}if(o)throw new sjcl.exception.bug('random: addEntropy only supports number, array of numbers or string');this.m[n]+=e,this.f+=e,r===this.u&&(this.isReady()!==this.u&&A('seeded',Math.max(this.o,this.f)),A('progress',this.getProgress()))},isReady:function(t){return t=this.T[void 0!==t?t:this.M],this.o&&this.o>=t?this.m[0]>this.ba&&(new Date).valueOf()>this.Z?this.J|this.I:this.I:this.f>=t?this.J|this.u:this.u},getProgress:function(t){return t=this.T[t||this.M],this.o>=t||this.f>t?1:this.f/t},startCollectors:function(){if(!this.D){if(this.a={loadTimeCollector:B(this,this.ma),mouseCollector:B(this,this.oa),keyboardCollector:B(this,this.la),accelerometerCollector:B(this,this.ea),touchCollector:B(this,this.qa)},window.addEventListener)window.addEventListener('load',this.a.loadTimeCollector,!1),window.addEventListener('mousemove',this.a.mouseCollector,!1),window.addEventListener('keypress',this.a.keyboardCollector,!1),window.addEventListener('devicemotion',this.a.accelerometerCollector,!1),window.addEventListener('touchmove',this.a.touchCollector,!1);else{if(!document.attachEvent)throw new sjcl.exception.bug('can\'t attach event');document.attachEvent('onload',this.a.loadTimeCollector),document.attachEvent('onmousemove',this.a.mouseCollector),document.attachEvent('keypress',this.a.keyboardCollector)}this.D=!0}},stopCollectors:function(){this.D&&(window.removeEventListener?(window.removeEventListener('load',this.a.loadTimeCollector,!1),window.removeEventListener('mousemove',this.a.mouseCollector,!1),window.removeEventListener('keypress',this.a.keyboardCollector,!1),window.removeEventListener('devicemotion',this.a.accelerometerCollector,!1),window.removeEventListener('touchmove',this.a.touchCollector,!1)):document.detachEvent&&(document.detachEvent('onload',this.a.loadTimeCollector),document.detachEvent('onmousemove',this.a.mouseCollector),document.detachEvent('keypress',this.a.keyboardCollector)),this.D=!1)},addEventListener:function(t,e){this.K[t][this.ga++]=e},removeEventListener:function(t,e){var i,c,s=this.K[t],n=[];for(c in s)s.hasOwnProperty(c)&&s[c]===e&&n.push(c);for(i=0;i<n.length;i++)delete s[c=n[i]]},la:function(){C(this,1)},oa:function(t){var e,i;try{e=t.x||t.clientX||t.offsetX||0,i=t.y||t.clientY||t.offsetY||0}catch(t){i=e=0}0!=e&&0!=i&&this.addEntropy([e,i],2,'mouse'),C(this,0)},qa:function(t){t=t.touches[0]||t.changedTouches[0],this.addEntropy([t.pageX||t.clientX,t.pageY||t.clientY],1,'touch'),C(this,0)},ma:function(){C(this,2)},ea:function(t){var e;t=t.accelerationIncludingGravity.x||t.accelerationIncludingGravity.y||t.accelerationIncludingGravity.z,window.orientation&&'number'==typeof(e=window.orientation)&&this.addEntropy(e,1,'accelerometer'),t&&this.addEntropy(t,2,'accelerometer'),C(this,0)}},sjcl.random=new sjcl.prng(6);t:try{if(G='undefined'!=typeof module&&module.exports){try{H=require('crypto')}catch(t){H=null}G=E=H}if(G&&E.randomBytes)D=E.randomBytes(128),D=new Uint32Array(new Uint8Array(D).buffer),sjcl.random.addEntropy(D,1024,'crypto[\'randomBytes\']');else if('undefined'!=typeof window&&'undefined'!=typeof Uint32Array){if(F=new Uint32Array(32),window.crypto&&window.crypto.getRandomValues)window.crypto.getRandomValues(F);else{if(!window.msCrypto||!window.msCrypto.getRandomValues)break t;window.msCrypto.getRandomValues(F)}sjcl.random.addEntropy(F,1024,'crypto[\'getRandomValues\']')}}catch(t){'undefined'!=typeof window&&window.console&&(console.log('There was an error collecting entropy from the browser:'),console.log(t))}sjcl.json={defaults:{v:1,iter:1e4,ks:128,ts:64,mode:'ccm',adata:'',cipher:'aes'},ja:function(t,e,i,c){i=i||{},c=c||{};var s,n=sjcl.json,r=n.g({iv:sjcl.random.randomWords(4,0)},n.defaults);if(n.g(r,i),i=r.adata,'string'==typeof r.salt&&(r.salt=sjcl.codec.base64.toBits(r.salt)),'string'==typeof r.iv&&(r.iv=sjcl.codec.base64.toBits(r.iv)),!sjcl.mode[r.mode]||!sjcl.cipher[r.cipher]||'string'==typeof t&&r.iter<=100||64!==r.ts&&96!==r.ts&&128!==r.ts||128!==r.ks&&192!==r.ks&&256!==r.ks||r.iv.length<2||4<r.iv.length)throw new sjcl.exception.invalid('json encrypt: invalid parameters');return'string'==typeof t?(t=(s=sjcl.misc.cachedPbkdf2(t,r)).key.slice(0,r.ks/32),r.salt=s.salt):sjcl.ecc&&t instanceof sjcl.ecc.elGamal.publicKey&&(s=t.kem(),r.kemtag=s.tag,t=s.key.slice(0,r.ks/32)),'string'==typeof e&&(e=sjcl.codec.utf8String.toBits(e)),'string'==typeof i&&(r.adata=i=sjcl.codec.utf8String.toBits(i)),s=new sjcl.cipher[r.cipher](t),n.g(c,r),c.key=t,r.ct=('ccm'===r.mode&&sjcl.arrayBuffer&&sjcl.arrayBuffer.ccm&&e instanceof ArrayBuffer?sjcl.arrayBuffer.ccm:sjcl.mode[r.mode]).encrypt(s,e,r.iv,i,r.ts),r},encrypt:function(t,e,i,c){var s=sjcl.json,n=s.ja.apply(s,arguments);return s.encode(n)},ia:function(t,e,i,c){i=i||{},c=c||{};var s,n=sjcl.json,r=(e=n.g(n.g(n.g({},n.defaults),e),i,!0)).adata;if('string'==typeof e.salt&&(e.salt=sjcl.codec.base64.toBits(e.salt)),'string'==typeof e.iv&&(e.iv=sjcl.codec.base64.toBits(e.iv)),!sjcl.mode[e.mode]||!sjcl.cipher[e.cipher]||'string'==typeof t&&e.iter<=100||64!==e.ts&&96!==e.ts&&128!==e.ts||128!==e.ks&&192!==e.ks&&256!==e.ks||!e.iv||e.iv.length<2||4<e.iv.length)throw new sjcl.exception.invalid('json decrypt: invalid parameters');return'string'==typeof t?(t=(s=sjcl.misc.cachedPbkdf2(t,e)).key.slice(0,e.ks/32),e.salt=s.salt):sjcl.ecc&&t instanceof sjcl.ecc.elGamal.secretKey&&(t=t.unkem(sjcl.codec.base64.toBits(e.kemtag)).slice(0,e.ks/32)),'string'==typeof r&&(r=sjcl.codec.utf8String.toBits(r)),s=new sjcl.cipher[e.cipher](t),r='ccm'===e.mode&&sjcl.arrayBuffer&&sjcl.arrayBuffer.ccm&&e.ct instanceof ArrayBuffer?sjcl.arrayBuffer.ccm.decrypt(s,e.ct,e.iv,e.tag,r,e.ts):sjcl.mode[e.mode].decrypt(s,e.ct,e.iv,r,e.ts),n.g(c,e),c.key=t,1===i.raw?r:sjcl.codec.utf8String.fromBits(r)},decrypt:function(t,e,i,c){var s=sjcl.json;return s.ia(t,s.decode(e),i,c)},encode:function(t){var e,i='{',c='';for(e in t)if(t.hasOwnProperty(e)){if(!e.match(/^[a-z0-9]+$/i))throw new sjcl.exception.invalid('json encode: invalid property name');switch(i+=c+'"'+e+'":',c=',',typeof t[e]){case'number':case'boolean':i+=t[e];break;case'string':i+='"'+escape(t[e])+'"';break;case'object':i+='"'+sjcl.codec.base64.fromBits(t[e],0)+'"';break;default:throw new sjcl.exception.bug('json encode: unsupported type')}}return i+'}'},decode:function(t){if(!(t=t.replace(/\s/g,'')).match(/^\{.*\}$/))throw new sjcl.exception.invalid('json decode: this isn\'t json!');t=t.replace(/^\{|\}$/g,'').split(/,/);for(var e,i={},c=0;c<t.length;c++){if(!(e=t[c].match(/^\s*(?:(["']?)([a-z][a-z0-9]*)\1)\s*:\s*(?:(-?\d+)|"([a-z0-9+\/%*_.@=\-]*)"|(true|false))$/i)))throw new sjcl.exception.invalid('json decode: this isn\'t json!');null!=e[3]?i[e[2]]=parseInt(e[3],10):null!=e[4]?i[e[2]]=e[2].match(/^(ct|adata|salt|iv)$/)?sjcl.codec.base64.toBits(e[4]):unescape(e[4]):null!=e[5]&&(i[e[2]]='true'===e[5])}return i},g:function(t,e,i){if(void 0===t&&(t={}),void 0!==e)for(var c in e)if(e.hasOwnProperty(c)){if(i&&void 0!==t[c]&&t[c]!==e[c])throw new sjcl.exception.invalid('required parameter overridden');t[c]=e[c]}return t},sa:function(t,e){var i,c={};for(i in t)t.hasOwnProperty(i)&&t[i]!==e[i]&&(c[i]=t[i]);return c},ra:function(t,e){for(var i={},c=0;c<e.length;c++)void 0!==t[e[c]]&&(i[e[c]]=t[e[c]]);return i}},sjcl.encrypt=sjcl.json.encrypt,sjcl.decrypt=sjcl.json.decrypt,sjcl.misc.pa={},sjcl.misc.cachedPbkdf2=function(t,e){var i=sjcl.misc.pa,c=(e=e||{}).iter||1e3;return(c=(i=i[t]=i[t]||{})[c]=i[c]||{firstSalt:e.salt&&e.salt.length?e.salt.slice(0):sjcl.random.randomWords(2,0)})[i=void 0===e.salt?c.firstSalt:e.salt]=c[i]||sjcl.misc.pbkdf2(t,i,e.iter),{key:c[i].slice(0),salt:i.slice(0)}},'undefined'!=typeof module&&module.exports&&(module.exports=sjcl),'function'==typeof define&&define([],function(){return sjcl});</script>
</div>
<!--~~ Boot kernel prologue ~~-->
<div id="bootKernelPrefix" style="display:none;">
<script data-tiddler-title="$:/boot/bootprefix.js" data-tiddler-type="application/javascript" type="text/javascript">var _bootprefix=function(d){'use strict';return(d=d||Object.create(null)).boot=d.boot||Object.create(null),'browser'in d||(d.browser='undefined'!=typeof window?{}:null),'node'in d||(d.node='object'==typeof process?{}:null),'nodeWebKit'in d||(d.nodeWebKit=d.node&&global.window&&global.window.nwDispatcher?{}:null),d.boot.tasks={trapErrors:!(!d.browser||d.node),readBrowserTiddlers:!(!d.browser||d.node)},d.modules={titles:{},types:{}},d.modules.define=function(e,o,r){var t={moduleType:o,definition:r,exports:void 0};'object'==typeof t.definition&&(t.exports=r),Object.prototype.hasOwnProperty.call(d.modules.titles,e)&&console.log('Warning: Redefined module - '+e),d.modules.titles[e]=t,Object.prototype.hasOwnProperty.call(d.modules.types,o)||(d.modules.types[o]={}),Object.prototype.hasOwnProperty.call(d.modules.types[o],e)&&console.log('Warning: Redefined module - '+e),d.modules.types[o][e]=t},d.preloadTiddlers=d.preloadTiddlers||[],d.preloadTiddler=function(e){d.preloadTiddlers.push(e)},d.preloadTiddlerArray=function(e){d.preloadTiddlers.push.apply(d.preloadTiddlers,e)},d};'undefined'==typeof exports?window.$tw=_bootprefix(window.$tw):exports.bootprefix=_bootprefix;</script>
</div>
<!--~~ Boot kernel ~~-->
<div id="bootKernel" style="display:none;">
<script data-tiddler-title="$:/boot/boot.js" data-tiddler-type="application/javascript" type="text/javascript">var _boot=function(y){'use strict';function e(e,t){var i=new RegExp(y.config.jsModuleHeaderRegExpString,'mg').exec(e);return t.text=e,[t=i?y.utils.parseFields(i[1].split(/\r?\n\r?\n/gm)[0],t):t]}var x,T,l;(y=y||require('./bootprefix.js').bootprefix()).utils=y.utils||Object.create(null),y.node&&(x=require('fs'),T=require('path'),l=require('vm')),y.boot.log=function(e){y.boot.logMessages=y.boot.logMessages||[],y.boot.logMessages.push(e)},y.utils.hop=function(e,t){return!!e&&Object.prototype.hasOwnProperty.call(e,t)},y.utils.isArray=function(e){return'[object Array]'==Object.prototype.toString.call(e)},y.utils.isArrayEqual=function(e,i){return e===i||(i=i||[],(e=e||[]).length===i.length&&e.every(function(e,t){return e===i[t]}))},y.utils.insertSortedArray=function(e,t){for(var i,r,s=0,l=e.length-1;s<=l;)if(0<(r=t.localeCompare(e[i=s+l>>1])))s=1+i;else{if(!(r<0))return e;l=i-1}return e.splice(s,0,t),e},y.utils.pushTop=function(e,t){var i,r;if(y.utils.isArray(t)){if(0!==t.length){if(0!==e.length)if(t.length<e.length)for(i=0;i<t.length;i++)-1!==(r=e.indexOf(t[i]))&&e.splice(r,1);else for(i=e.length-1;0<=i;i--)-1!==(r=t.indexOf(e[i]))&&e.splice(i,1);e.push.apply(e,t)}}else-1!==(r=e.indexOf(t))&&e.splice(r,1),e.push(t);return e},y.utils.isDate=function(e){return'[object Date]'===Object.prototype.toString.call(e)},y.utils.each=function(e,t){if(e)if('[object Array]'==Object.prototype.toString.call(e))for(r=0,s=e.length;r<s&&!1!==t(e[r],r,e);r++);else for(var i=Object.keys(e),r=0,s=i.length;r<s;r++){var l=i[r];if(!1===t(e[l],l,e))break}},y.utils.domMaker=function(e,t){var i=t.document||document,r=i.createElementNS(t.namespace||'http://www.w3.org/1999/xhtml',e);return t.class&&(r.className=t.class),t.text&&r.appendChild(i.createTextNode(t.text)),y.utils.each(t.children,function(e){r.appendChild(e)}),t.innerHTML&&(r.innerHTML=t.innerHTML),y.utils.each(t.attributes,function(e,t){r.setAttribute(t,e)}),y.utils.each(t.style,function(e,t){r.style[t]=e}),t.eventListeners&&y.utils.addEventListeners(r,t.eventListeners),r},y.utils.error=function(e){var t,i,r,s=null==y.language?'Internal JavaScript Error':y.language.getString('InternalJavaScriptError/Title'),l=null==y.language?'Well, this is embarrassing. It is recommended that you restart TiddlyWiki by refreshing your browser':y.language.getString('InternalJavaScriptError/Hint');if(console.error(y.node?''+e+'':e),y.browser&&!y.node)return s=(t=y.utils.domMaker)('h1',{text:s}),l=t('div',{text:l,class:'tc-error-prompt'}),e=t('div',{text:e,class:'tc-error-message'}),i=t('div',{children:[t('button',{text:null==y.language?'close':y.language.getString('Buttons/Close/Caption')})],class:'tc-error-prompt'}),r=t('form',{children:[s,l,e,i],class:'tc-error-form'}),document.body.insertBefore(r,document.body.firstChild),r.addEventListener('submit',function(e){return document.body.removeChild(r),e.preventDefault(),!1},!0),null;y.browser||process.exit(1)},y.boot.tasks.trapErrors&&(window.onerror=function(e,t,i){return y.utils.error(e),!1}),y.utils.extend=function(i){return y.utils.each(Array.prototype.slice.call(arguments,1),function(e){if(e)for(var t in e)i[t]=e[t]}),i},y.utils.deepDefaults=function(i){return y.utils.each(Array.prototype.slice.call(arguments,1),function(e){if(e)for(var t in e)null!==i[t]&&void 0!==i[t]||(i[t]=e[t]),'object'==typeof i[t]&&'object'==typeof e[t]&&y.utils.deepDefaults(i[t],e[t])}),i},y.utils.decodeURIComponentSafe=function(e){var t=e;try{t=decodeURIComponent(e)}catch(e){}return t},y.utils.decodeURISafe=function(e){var t=e;try{t=decodeURI(e)}catch(e){}return t},y.utils.htmlDecode=function(e){return e.toString().replace(/&lt;/gm,'<').replace(/&nbsp;/gm,' ').replace(/&gt;/gm,'>').replace(/&quot;/gm,'"').replace(/&amp;/gm,'&')},y.utils.getLocationHash=function(){var e=window.location.href,t=e.indexOf('#');return-1===t||t<e.length-1&&'#'===e[t+1]?'#':e.substring(t)},y.utils.pad=function(e,t){t=t||2;e=e.toString();return e=e.length<t?'000000000000000000000000000'.substr(0,t-e.length)+e:e},y.utils.stringifyDate=function(e){return e.getUTCFullYear()+y.utils.pad(e.getUTCMonth()+1)+y.utils.pad(e.getUTCDate())+y.utils.pad(e.getUTCHours())+y.utils.pad(e.getUTCMinutes())+y.utils.pad(e.getUTCSeconds())+y.utils.pad(e.getUTCMilliseconds(),3)},y.utils.parseDate=function(e){var t,i;return'string'==typeof e?(t=1,'-'===e.charAt(0)&&(t=-1,e=e.substr(1)),t=parseInt(e.substr(0,4),10)*t,(i=new Date(Date.UTC(t,parseInt(e.substr(4,2),10)-1,parseInt(e.substr(6,2),10),parseInt(e.substr(8,2)||'00',10),parseInt(e.substr(10,2)||'00',10),parseInt(e.substr(12,2)||'00',10),parseInt(e.substr(14,3)||'000',10)))).setUTCFullYear(t),i):y.utils.isDate(e)?e:null},y.utils.stringifyList=function(e){if(y.utils.isArray(e)){for(var t=new Array(e.length),i=0,r=e.length;i<r;i++){var s=e[i]||'';-1!==s.indexOf(' ')?t[i]='[['+s+']]':t[i]=s}return t.join(' ')}return e||''},y.utils.parseStringArray=function(e,t){if('string'!=typeof e)return y.utils.isArray(e)?e:null;var i,r,s=/(?:^|[^\S\xA0])(?:\[\[(.*?)\]\])(?=[^\S\xA0]|$)|([\S\xA0]+)/gm,l=[],n={};do{}while(!(r=s.exec(e))||void 0===(i=r[1]||r[2])||y.utils.hop(n,i)&&!t||(l.push(i),n[i]=!0),r);return l},y.utils.parseFields=function(e,r){return r=r||Object.create(null),e.split(/\r?\n/gm).forEach(function(e){var t,i;'#'!==e.charAt(0)&&-1!==(t=e.indexOf(':'))&&(i=e.substr(0,t).trim(),e=e.substr(t+1).trim(),i)&&(r[i]=e)}),r},y.utils.parseJSONSafe=function(e,t){try{return JSON.parse(e)}catch(e){return'function'==typeof t?t(e):t||{}}},y.utils.resolvePath=function(e,t){if('./'!==e.substr(0,2)&&'../'!==e.substr(0,3))return t?((i=t.split('/')).splice(i.length-1,1),i.join('/')+'/'+e):e;var i,r=e.split('/');for((i=t.split('/')).splice(i.length-1,1);0<r.length;){var s=r.shift();'..'===s?0<i.length&&i.splice(i.length-1,1):'.'!==s&&i.push(s)}return i.join('/')},y.utils.parseVersion=function(e){e=/^v?((\d+)\.(\d+)\.(\d+))(?:-([\dA-Za-z\-]+(?:\.[\dA-Za-z\-]+)*))?(?:\+([\dA-Za-z\-]+(?:\.[\dA-Za-z\-]+)*))?$/.exec(e);return e?{version:e[1],major:parseInt(e[2],10),minor:parseInt(e[3],10),patch:parseInt(e[4],10),prerelease:e[5],build:e[6]}:null},y.utils.compareVersions=function(e,t){var i={major:0,minor:0,patch:0},e=y.utils.parseVersion(e)||i,t=y.utils.parseVersion(t)||i,i=[e.major-t.major,e.minor-t.minor,e.patch-t.patch];return 0<i[0]||0===i[0]&&0<i[1]||0===i[0]&0===i[1]&0<i[2]?1:i[0]<0||0===i[0]&&i[1]<0||0===i[0]&0===i[1]&i[2]<0?-1:0},y.utils.checkVersions=function(e,t){return-1!==y.utils.compareVersions(e,t)},y.utils.registerFileType=function(t,e,i,r){r=r||{},y.utils.isArray(i)?(y.utils.each(i,function(e){y.config.fileExtensionInfo[e]={type:t}}),i=i[0]):y.config.fileExtensionInfo[i]={type:t},y.config.contentTypeInfo[t]={encoding:e,extension:i,flags:r.flags||[],deserializerType:r.deserializerType||t}},y.utils.getFileExtensionInfo=function(e){return e?y.config.fileExtensionInfo[e.toLowerCase()]:null},y.utils.getTypeEncoding=function(e){e=y.utils.getFileExtensionInfo(e),e=e?e.type:null,e=e?y.config.contentTypeInfo[e]:null;return e?e.encoding:'utf8'},y.utils.evalGlobal=function(e,t,i){var t=y.utils.extend(Object.create(null),t),r=[],s=[];return y.utils.each(t,function(e,t){r.push(t),s.push(e)}),e='(function('+r.join(',')+') {(function(){\n'+e+'\n;})();\nreturn exports;\n})\n',(y.browser?window.eval(e+'\n\n//# sourceURL='+i):l.runInThisContext(e,i)).apply(null,s)},y.utils.evalSandboxed=y.browser?y.utils.evalGlobal:function(e,t,i){t=y.utils.extend(Object.create(null),t);return l.runInNewContext(e,t,i),t.exports},y.utils.PasswordPrompt=function(){this.passwordPrompts=[],this.promptWrapper=y.utils.domMaker('div',{class:'tc-password-wrapper'}),document.body.appendChild(this.promptWrapper),this.setWrapperDisplay()},y.utils.PasswordPrompt.prototype.setWrapperDisplay=function(){this.passwordPrompts.length?this.promptWrapper.style.display='block':this.promptWrapper.style.display='none'},y.utils.PasswordPrompt.prototype.createPrompt=function(i){var r=this,e=i.submitText||'Login',t=y.utils.domMaker,s=[t('h1',{text:i.serviceName})],l=(i.noUserName||s.push(t('input',{attributes:{type:'text',name:'username',placeholder:y.language.getString('Encryption/Username')}})),s.push(t('input',{attributes:{type:'password',name:'password',placeholder:null==y.language?'Password':y.language.getString('Encryption/Password')}})),i.repeatPassword&&s.push(t('input',{attributes:{type:'password',name:'password2',placeholder:y.language.getString('Encryption/RepeatPassword')}})),i.canCancel&&s.push(t('button',{text:y.language.getString('Encryption/Cancel'),attributes:{type:'button'},eventListeners:[{name:'click',handlerFunction:function(e){r.removePrompt(n),i.callback(null)}}]})),s.push(t('button',{attributes:{type:'submit'},text:e})),t('form',{attributes:{autocomplete:'off'},children:s})),r=(this.promptWrapper.appendChild(l),window.setTimeout(function(){l.elements[0].focus()},10),this),n=(l.addEventListener('submit',function(e){var t={};return y.utils.each(l.elements,function(e){e.name&&e.value&&(t[e.name]=e.value)}),i.repeatPassword&&t.password!==t.password2?alert(y.language.getString('Encryption/PasswordNoMatch')):i.callback(t)?r.removePrompt(n):y.utils.each(l.elements,function(e){'password'!==e.name&&'password2'!==e.name||(e.value='')}),e.preventDefault(),!1},!0),{serviceName:i.serviceName,callback:i.callback,form:l,owner:this});return this.passwordPrompts.push(n),this.setWrapperDisplay(),n},y.utils.PasswordPrompt.prototype.removePrompt=function(e){var t=this.passwordPrompts.indexOf(e);-1!==t&&(this.passwordPrompts.splice(t,1),e.form.parentNode.removeChild(e.form),this.setWrapperDisplay())},y.utils.Crypto=function(){function i(e,t,i){var r;i=i||l;try{i&&(r=s[e](i,t))}catch(e){console.log('Crypto error:'+e),r=null}return r}var s=y.node?global.sjcl||require('./sjcl.js'):window.sjcl,l=null;this.setPassword=function(e){l=e,this.updateCryptoStateTiddler()},this.updateCryptoStateTiddler=function(){var e,t;y.wiki&&(e=l?'yes':'no',(t=y.wiki.getTiddler('$:/isEncrypted'))&&t.fields.text===e||y.wiki.addTiddler(new y.Tiddler({title:'$:/isEncrypted',text:e})))},this.hasPassword=function(){return!!l},this.encrypt=function(e,t){return i('encrypt',e,t)},this.decrypt=function(e,t){return i('decrypt',e,t)}},y.modules.execute=function(e,t){var i=e,r=('.'===e.charAt(0)&&(i=y.utils.resolvePath(e,t)),y.modules.titles[i]||(y.modules.titles[i+'.js']?i+='.js':y.modules.titles[i+'/index.js']?i+='/index.js':y.modules.titles[e]?i=e:y.modules.titles[e+'.js']?i=e+'.js':y.modules.titles[e+'/index.js']&&(i=e+'/index.js')),y.modules.titles[i]),s=y.wiki.getTiddler(i),l={},n={module:{exports:l},exports:l,console:console,setInterval:setInterval,clearInterval:clearInterval,setTimeout:setTimeout,clearTimeout:clearTimeout,Buffer:y.browser?void 0:Buffer,$tw:y,require:function(e){return y.modules.execute(e,i)}};if(Object.defineProperty(n.module,'id',{value:i,writable:!1,enumerable:!0,configurable:!1}),y.browser?Object.defineProperty(n.require,'main',{value:'undefined'!=typeof require?require.main:{TiddlyWiki:_boot},writable:!1,enumerable:!0,configurable:!1}):y.utils.extend(n,{process:process}),!r){if(y.browser){if(window.require)try{return window.require(e)}catch(e){}throw'Cannot find module named \''+e+'\' required by module \''+t+'\', resolved to '+i}return require(e)}if(!r.exports)try{'function'==typeof r.definition?(r.exports=l,r.definition(r,r.exports,n.require)):'string'==typeof r.definition?(r.exports=l,y.utils.evalSandboxed(r.definition,n,s.fields.title),n.module.exports&&(r.exports=n.module.exports)):r.exports=r.definition}catch(e){if(e instanceof SyntaxError){t=e.lineNumber||e.line;if(null!=t)y.utils.error('Syntax error in boot module '+i+':'+t+':\n'+e.stack);else{if(!y.browser)throw e;y.utils.error('Syntax error in boot module '+i+': '+e.message+'\n'+e.stack)}}else y.utils.error('Error executing boot module '+i+': '+JSON.stringify(e)+'\n\n'+e.stack)}return r.exports},y.modules.forEachModuleOfType=function(e,i){e=y.modules.types[e];y.utils.each(e,function(e,t){i(t,y.modules.execute(t))})},y.modules.getModulesByTypeAsHashmap=function(e,i){i=i||'name';var r=Object.create(null);return y.modules.forEachModuleOfType(e,function(e,t){r[t[i]]=t}),r},y.modules.applyMethods=function(e,s){return s=s||Object.create(null),y.modules.forEachModuleOfType(e,function(e,r){y.utils.each(r,function(e,t,i){s[t]=r[t]})}),s},y.modules.createClassFromModule=function(e,t){function i(){}return t&&((i.prototype=new t).constructor=t),y.utils.extend(i.prototype,e),i},y.modules.createClassesFromModules=function(e,i,r){var s=Object.create(null);return y.modules.forEachModuleOfType(e,function(e,t){i&&!t.types[i]||(s[t.name]=y.modules.createClassFromModule(t,r))}),s},y.Tiddler=function(){this.fields=Object.create(null),this.cache=Object.create(null);for(var e=0;e<arguments.length;e++){var t,i,r=arguments[e],s=r instanceof y.Tiddler?r.fields:r;for(t in s)void 0===s[t]||null===s[t]?t in this.fields&&delete this.fields[t]:(null!=(i=(i=y.Tiddler.fieldModules[t])&&i.parse?i.parse.call(this,s[t]):s[t])&&'object'==typeof i&&Object.freeze(i),this.fields[t]=i)}Object.freeze(this.fields),Object.freeze(this)},y.Tiddler.prototype.hasField=function(e){return y.utils.hop(this.fields,e)},y.Tiddler.prototype.isEqual=function(e,t){if(!(e instanceof y.Tiddler))return!1;t=t||[];var i,r,s,l=this,n=[];function o(e){-1===t.indexOf(e)&&y.utils.pushTop(n,e)}for(i in this.fields)r=i,s=void 0,s=l.fields[r],r=e.fields[r],'string'==typeof s&&'string'==typeof r&&s===r||y.utils.isArray(s)&&y.utils.isArray(r)&&y.utils.isArrayEqual(s,r)||y.utils.isDate(s)&&y.utils.isDate(r)&&s.getTime()===r.getTime()||o(i);for(i in e.fields)i in this.fields||o(i);return 0===n.length},y.modules.define('$:/boot/tiddlerfields/modified','tiddlerfield',{name:'modified',parse:y.utils.parseDate,stringify:y.utils.stringifyDate}),y.modules.define('$:/boot/tiddlerfields/created','tiddlerfield',{name:'created',parse:y.utils.parseDate,stringify:y.utils.stringifyDate}),y.modules.define('$:/boot/tiddlerfields/color','tiddlerfield',{name:'color',editTag:'input',editType:'color'}),y.modules.define('$:/boot/tiddlerfields/tags','tiddlerfield',{name:'tags',parse:y.utils.parseStringArray,stringify:y.utils.stringifyList}),y.modules.define('$:/boot/tiddlerfields/list','tiddlerfield',{name:'list',parse:y.utils.parseStringArray,stringify:y.utils.stringifyList}),y.Wiki=function(e){e=e||{};function l(){return r=r||Object.keys(o).sort(function(e,t){return e.localeCompare(t)})}function n(){return t=t||Object.keys(d)}var o=Object.create(null),r=null,a=[],s=Object.create(null),d=Object.create(null),t=null,i=e.enableIndexers||null,u=[],p=Object.create(null);this.addIndexer=function(e,t){i&&-1===i.indexOf(t)||(u.push(e),(p[t]=e).init())},this.getIndexer=function(e){return p[e]||null},this.addTiddler=function(e){var t,i;(e=e instanceof y.Tiddler?e:new y.Tiddler(e))&&(t=e.fields.title)&&(i={old:{tiddler:this.getTiddler(t),shadow:this.isShadowTiddler(t),exists:this.tiddlerExists(t)}},o[t]=e,r=y.utils.insertSortedArray(r||[],t),i.new={tiddler:e,shadow:this.isShadowTiddler(t),exists:this.tiddlerExists(t)},this.clearCache(t),this.clearGlobalCache(),y.utils.each(u,function(e){e.update(i)}),this.enqueueTiddlerEvent(t))},this.deleteTiddler=function(e){var t,i;y.utils.hop(o,e)&&(t={old:{tiddler:this.getTiddler(e),shadow:this.isShadowTiddler(e),exists:this.tiddlerExists(e)}},delete o[e],r&&-1!==(i=r.indexOf(e))&&r.splice(i,1),t.new={tiddler:this.getTiddler(e),shadow:this.isShadowTiddler(e),exists:this.tiddlerExists(e)},this.clearCache(e),this.clearGlobalCache(),y.utils.each(u,function(e){e.update(t)}),this.enqueueTiddlerEvent(e,!0))},this.getTiddler=function(e){if(e){var t=o[e];if(void 0!==t)return t;t=d[e];if(void 0!==t)return t.tiddler}},this.allTitles=function(){return l().slice(0)},this.each=function(e){for(var t,i=l(),r=0,s=i.length;r<s;r++)t=i[r],e(o[t],t)},this.allShadowTitles=function(){return n().slice(0)},this.eachShadow=function(e){for(var t=n(),i=0,r=t.length;i<r;i++){var s=t[i];o[s]?e(o[s],s):e(d[s].tiddler,s)}},this.eachTiddlerPlusShadows=function(e){for(var t=l(),i=0,r=t.length;i<r;i++)s=t[i],e(o[s],s);for(i=0,r=(t=n()).length;i<r;i++){var s=t[i];o[s]||e(d[s].tiddler,s)}},this.eachShadowPlusTiddlers=function(e){for(var t=n(),i=0,r=t.length;i<r;i++){var s=t[i];o[s]?e(o[s],s):e(d[s].tiddler,s)}for(i=0,r=(t=l()).length;i<r;i++)s=t[i],d[s]||e(o[s],s)},this.tiddlerExists=function(e){return!!y.utils.hop(o,e)},this.isShadowTiddler=function(e){return y.utils.hop(d,e)},this.getShadowSource=function(e){return y.utils.hop(d,e)?d[e].source:null},this.getPluginTypes=function(){var t=[];return y.utils.each(a,function(e){e=e.fields['plugin-type'];e&&-1===t.indexOf(e)&&t.push(e)}),t},this.readPluginInfo=function(e){var i={modifiedPlugins:[],deletedPlugins:[]};return y.utils.each(e||l(),function(e){var t=o[e];t?'application/json'===t.fields.type&&t.hasField('plugin-type')&&t.fields.text&&(s[t.fields.title]=y.utils.parseJSONSafe(t.fields.text),i.modifiedPlugins.push(t.fields.title)):s[e]&&(delete s[e],i.deletedPlugins.push(e))}),i},this.getPluginInfo=function(e){return s[e]},this.registerPluginTiddlers=function(r,e){function i(e,t){var i;!e||'application/json'!==e.fields.type||!e.fields['plugin-type']||r&&e.fields['plugin-type']!==r||(i=s.getTiddler('$:/config/Plugins/Disabled/'+t),'$:/core'!==t&&i&&'yes'===(i.fields.text||'').trim())||(s.unregisterPluginTiddlers(null,[t]),a.push(e),l.push(e.fields.title))}var s=this,l=[];return e?y.utils.each(e,function(e){i(s.getTiddler(e),e)}):this.each(function(e,t){i(e,t)}),l},this.unregisterPluginTiddlers=function(e,t){for(var i=[],r=a.length-1;0<=r;r--){var s=a[r];!s.fields['plugin-type']||e&&s.fields['plugin-type']!==e||t&&-1===t.indexOf(s.fields.title)||(i.push(s.fields.title),a.splice(r,1))}return i},this.unpackPluginTiddlers=function(){a.sort(function(e,t){return'plugin-priority'in e.fields&&'plugin-priority'in t.fields?e.fields['plugin-priority']-t.fields['plugin-priority']:'plugin-priority'in e.fields?-1:'plugin-priority'in t.fields?1:e.fields.title<t.fields.title?-1:e.fields.title===t.fields.title?0:1}),d=Object.create(null),y.utils.each(a,function(i){y.utils.hop(s,i.fields.title)&&y.utils.each(s[i.fields.title].tiddlers,function(e,t){t&&(d[t]={source:i.fields.title,tiddler:new y.Tiddler(e,{title:t})})})}),t=null,this.clearCache(null),this.clearGlobalCache(),y.utils.each(u,function(e){e.rebuild()})},this.addIndexersToWiki&&this.addIndexersToWiki()},y.Wiki.prototype.clearCache=y.Wiki.prototype.clearGlobalCache=y.Wiki.prototype.enqueueTiddlerEvent=function(){},y.Wiki.prototype.addTiddlers=function(e){for(var t=0;t<e.length;t++)this.addTiddler(e[t])},y.Wiki.prototype.defineTiddlerModules=function(){this.each(function(e,t){if(e.hasField('module-type'))switch(e.fields.type){case'application/javascript':y.utils.hop(y.modules.titles,e.fields.title)||y.modules.define(e.fields.title,e.fields['module-type'],e.fields.text);break;case'application/json':y.modules.define(e.fields.title,e.fields['module-type'],y.utils.parseJSONSafe(e.fields.text));break;case'application/x-tiddler-dictionary':y.modules.define(e.fields.title,e.fields['module-type'],y.utils.parseFields(e.fields.text))}})},y.Wiki.prototype.defineShadowModules=function(){var i=this;this.eachShadow(function(e,t){!i.tiddlerExists(t)&&e.hasField('module-type')&&y.modules.define(e.fields.title,e.fields['module-type'],e.fields.text)})},y.Wiki.prototype.processSafeMode=function(){var r=this,i=[],e=(this.each(function(e,t){r.isShadowTiddler(t)&&(console.log(t),i.push(t))}),'TiddlyWiki Safe Mode'),s=[];s.push('TiddlyWiki has been started in [[safe mode|https://tiddlywiki.com/static/SafeMode.html]]. All plugins are temporarily disabled. Most customisations have been disabled by renaming the following tiddlers:'),i.forEach(function(e){var t=r.getTiddler(e),i='SAFE: '+e;r.deleteTiddler(e),r.addTiddler(new y.Tiddler(t,{title:i})),s.push('* [['+e+'|'+i+']]')}),s.push(),this.addTiddler(new y.Tiddler({title:e,text:s.join('\n\n')})),this.addTiddler(new y.Tiddler({title:'$:/DefaultTiddlers',text:'[['+e+']]'}))},y.Wiki.prototype.deserializeTiddlers=function(e,t,i,r){i=i||Object.create(null);var s,r=y.Wiki.tiddlerDeserializerModules[(r=r||{}).deserializer],l=Object.create(null);for(s in!(r=r||y.Wiki.tiddlerDeserializerModules[e])&&y.utils.getFileExtensionInfo(e)&&(e=y.utils.getFileExtensionInfo(e).type,r=y.Wiki.tiddlerDeserializerModules[e]),!r&&y.config.contentTypeInfo[e]&&(e=y.config.contentTypeInfo[e].deserializerType,r=y.Wiki.tiddlerDeserializerModules[e]),r=r||y.Wiki.tiddlerDeserializerModules['text/plain'],i)l[s]=i[s];return r?r.call(this,t,l,e):(l.text=t,[l])};return y.modules.define('$:/boot/tiddlerdeserializer/js','tiddlerdeserializer',{'application/javascript':e}),y.modules.define('$:/boot/tiddlerdeserializer/css','tiddlerdeserializer',{'text/css':e}),y.modules.define('$:/boot/tiddlerdeserializer/tid','tiddlerdeserializer',{'application/x-tiddler':function(e,t){e=e.split(/\r?\n\r?\n/gm);return 1<=e.length&&(t=y.utils.parseFields(e[0],t)),2<=e.length&&(t.text=e.slice(1).join('\n\n')),[t]}}),y.modules.define('$:/boot/tiddlerdeserializer/tids','tiddlerdeserializer',{'application/x-tiddlers':function(e,t){var i=[],r=[],s=/\r?\n\r?\n/gm.exec(e);if(s){t=y.utils.parseFields(e.substr(0,s.index),t);for(var l=e.substr(s.index+s[0].length).split(/\r?\n/gm),n=0;n<l.length;n++){var o,a,d=l[n];'#'!==d.charAt(0)&&-1!==(o=d.indexOf(':'))&&((a=y.utils.extend(Object.create(null),t)).title=(a.title||'')+d.substr(0,o).trim(),-1!==i.indexOf(a.title)&&console.log('Warning: .multids file contains multiple definitions for '+a.title),i.push(a.title),a.text=d.substr(o+2).trim(),r.push(a))}}return r}}),y.modules.define('$:/boot/tiddlerdeserializer/txt','tiddlerdeserializer',{'text/plain':function(e,t,i){return t.text=e,t.type=i||'text/plain',[t]}}),y.modules.define('$:/boot/tiddlerdeserializer/html','tiddlerdeserializer',{'text/html':function(e,t){return t.text=e,t.type='text/html',[t]}}),y.modules.define('$:/boot/tiddlerdeserializer/json','tiddlerdeserializer',{'application/json':function(e,t){var i=function(e){if('object'!=typeof e||!y.utils.hop(e,'title'))return!1;for(var t in e)if(y.utils.hop(e,t)&&('string'!=typeof e[t]||/[\x00-\x1F]/.test(t)))return!1;return!0},r=y.utils.parseJSONSafe(e);return y.utils.isArray(r)&&function(e){for(var t=0;t<e.length;t++)if(!i(e[t]))return!1;return!0}(r)?r:i(r)?[r]:(t.text=e,t.type='application/json',[t])}}),y.browser&&!y.node?(y.boot.decryptEncryptedTiddlers=function(r){var s,e=document.getElementById('encryptedStoreArea');e?(s=e.innerHTML,e='Enter a password to decrypt this TiddlyWiki',y.utils.hop(y.boot,'encryptionPrompts')&&(e=y.boot.encryptionPrompts.decrypt),y.passwordPrompt.createPrompt({serviceName:e,noUserName:!0,submitText:'Decrypt',callback:function(e){y.crypto.setPassword(e.password);e=y.crypto.decrypt(s);if(e){var t,i=y.utils.parseJSONSafe(e);for(t in i)y.preloadTiddler(i[t]);return r(),!0}return!1}})):r()},y.modules.define('$:/boot/tiddlerdeserializer/dom','tiddlerdeserializer',{'(DOM)':function(e){var t,i=[];if(e){var r=e.getAttribute&&e.getAttribute('type')||null;if(r)i=y.wiki.deserializeTiddlers(r,e.textContent);else for(t=0;t<e.childNodes.length;t++){var s=e.childNodes[t];(s=function(e){for(var t=e.firstChild;t&&'pre'!==t.nodeName.toLowerCase();)t=t.nextSibling;var i=e.getAttribute?e.getAttribute('title'):null;if(t&&i){for(var r=e.attributes,s={text:y.utils.htmlDecode(t.innerHTML)},l=r.length-1;0<=l;l--)s[r[l].name]=r[l].value;return[s]}return null}(s)||function(e){if(e.hasAttribute&&e.hasAttribute('data-tiddler-title')){for(var t=e.innerHTML,i=t.indexOf('{'),r=t.lastIndexOf('}'),s={text:t=e.hasAttribute('data-module')&&-1!==i&&-1!==r?t.substring(i+1,r):t},l=e.attributes,n=0;n<l.length;n++)'data-tiddler-'===l[n].nodeName.substr(0,13)&&(s[l[n].nodeName.substr(13)]=l[n].value);return[s]}return null}(s))&&i.push.apply(i,s)}}return i}}),y.loadTiddlersBrowser=function(){for(var e=['#libraryModules','#modules','#bootKernelPrefix','#bootKernel','#styleArea','#storeArea','#systemArea','script.tiddlywiki-tiddler-store'],t=0;t<e.length;t++)for(var i=document.querySelectorAll(e[t]),r=0;r<i.length;r++)y.wiki.addTiddlers(y.wiki.deserializeTiddlers('(DOM)',i[r]))}):y.boot.decryptEncryptedTiddlers=function(e){e()},y.node&&(y.loadTiddlersFromFile=function(e,t){var i=T.extname(e),r=y.utils.getFileExtensionInfo(i),r=r?r.type:null,s=r?y.config.contentTypeInfo[r]:null,s=x.readFileSync(e,s?s.encoding:'utf8'),i=y.wiki.deserializeTiddlers(i,s,t),t=y.loadMetadataForFile(e);return{filepath:e,type:r,tiddlers:i=t?[y.utils.extend({},(i='application/json'===r?[{text:s,type:'application/json'}]:i)[0],t)]:i,hasMetaFile:!!t}},y.loadMetadataForFile=function(e){e+='.meta';return x.existsSync(e)?y.utils.parseFields(x.readFileSync(e,'utf8')||''):null},y.boot.excludeRegExp=/^\.DS_Store$|^.*\.meta$|^\..*\.swp$|^\._.*$|^\.git$|^\.hg$|^\.lock-wscript$|^\.svn$|^\.wafpickle-.*$|^CVS$|^npm-debug\.log$/,y.loadTiddlersFromPath=function(t,i){i=i||y.boot.excludeRegExp;var e,r,s=[];return x.existsSync(t)&&((e=x.statSync(t)).isDirectory()?-1!==(r=x.readdirSync(t)).indexOf('tiddlywiki.files')?Array.prototype.push.apply(s,y.loadTiddlersFromSpecification(t,i)):y.utils.each(r,function(e){i.test(e)||'plugin.info'===e||s.push.apply(s,y.loadTiddlersFromPath(t+T.sep+e,i))}):e.isFile()&&s.push(y.loadTiddlersFromFile(t,{title:t}))),s},y.loadTiddlersFromSpecification=function(a,d){function u(s,e,t,i){var r=(y.config.fileExtensionInfo[T.extname(s)]||{}).type||t.type||'text/plain',r=y.config.contentTypeInfo[r]||{},l=T.resolve(a,s),r=x.readFileSync(l,r.encoding||'utf8'),n=y.loadMetadataForFile(l)||{},r=e?y.wiki.deserializeTiddlers(T.extname(l),r,n)||[]:[y.utils.extend({text:r},n)],o=y.utils.extend({},t,n);y.utils.each(r,function(r){y.utils.each(o,function(e,t){if('string'==typeof e||y.utils.isArray(e))r[t]=e;else{var i=r[t];switch(e.source){case'filename':i=T.basename(s);break;case'filename-uri-decoded':i=y.utils.decodeURIComponentSafe(T.basename(s));break;case'basename':i=T.basename(s,T.extname(s));break;case'basename-uri-decoded':i=y.utils.decodeURIComponentSafe(T.basename(s,T.extname(s)));break;case'extname':i=T.extname(s);break;case'created':i=new Date(x.statSync(l).birthtime);break;case'modified':i=new Date(x.statSync(l).mtime)}e.prefix&&(i=e.prefix+i),e.suffix&&(i+=e.suffix),r[t]=i}})}),i?p.push({filepath:l,hasMetaFile:!!n&&!e,isEditableFile:!0,tiddlers:r}):p.push({tiddlers:r})}var p=[],e=y.utils.parseJSONSafe(x.readFileSync(a+T.sep+'tiddlywiki.files','utf8')),c=function(t,i,r){return i=i||!1,r=r||[],x.readdirSync(t).forEach(function(e){i&&x.statSync(t+T.sep+e).isDirectory()?r=c(t+T.sep+e,i,r):x.statSync(t+T.sep+e).isFile()&&r.push(T.join(t,T.sep,e))}),r};return y.utils.each(e.tiddlers,function(e){e.prefix&&e.suffix?e.fields.text={prefix:e.prefix,suffix:e.suffix}:e.prefix?e.fields.text={prefix:e.prefix}:e.suffix&&(e.fields.text={suffix:e.suffix}),u(e.file,e.isTiddlerFile,e.fields)}),y.utils.each(e.directories,function(e){if('string'==typeof e){var t=T.resolve(a,e);x.existsSync(t)&&x.statSync(t).isDirectory()&&p.push.apply(p,y.loadTiddlersFromPath(t,d))}else{t=T.resolve(a,e.path);if(x.existsSync(t)&&x.statSync(t).isDirectory())for(var i=c(t,e.searchSubdirectories),r=new RegExp(e.filesRegExp||'^.*$'),s=/^.*\.meta$/,l=0;l<i.length;l++){var n=T.relative(a,i[l]),o=T.basename(n);'tiddlywiki.files'!==o&&!s.test(o)&&r.test(o)&&u(n,e.isTiddlerFile,e.fields,e.isEditableFile)}else console.log('Warning: a directory in a tiddlywiki.files file does not exist.'),console.log('dirPath: '+t),console.log('tiddlywiki.files location: '+a)}}),p},y.loadPluginFolder=function(e,t){t=t||y.boot.excludeRegExp;var i=e+T.sep+'plugin.info';if(x.existsSync(e)&&x.statSync(e).isDirectory()){if(!x.existsSync(i)||!x.statSync(i).isFile())return console.log('Warning: missing plugin.info file in '+e),null;var r=y.utils.parseJSONSafe(x.readFileSync(i,'utf8')),s=y.loadTiddlersFromPath(e,t);r.tiddlers=r.tiddlers||Object.create(null);for(var l,n=0;n<s.length;n++)for(var o=s[n].tiddlers,a=0;a<o.length;a++){var d=o[a];d.title&&(r.tiddlers[d.title]=d)}for(l in'version'in r||(r.version=y.packageInfo.version),'plugin-type'in r||(r['plugin-type']='plugin'),r.dependents=r.dependents||[],r.type='application/json',r.text=JSON.stringify({tiddlers:r.tiddlers}),delete r.tiddlers,r)y.utils.isArray(r[l])&&(r[l]=y.utils.stringifyList(r[l]));return r}return null},y.findLibraryItem=function(e,t){var i=0;do{var r=T.resolve(t[i],'./'+e);if(x.existsSync(r)&&x.statSync(r).isDirectory())return r}while(++i<t.length);return null},y.loadPlugin=function(e,t){t=y.findLibraryItem(e,t);if(t){t=y.loadPluginFolder(t);if(t)return void y.wiki.addTiddler(t)}console.log('Warning: Cannot find plugin \''+e+'\'')},y.getLibraryItemSearchPaths=function(e,t){var i=[T.resolve(y.boot.corePath,e)],e=process.env[t];return e&&e.split(T.delimiter).map(function(e){e&&i.push(e)}),i},y.loadPlugins=function(e,t,i){if(e)for(var r=y.getLibraryItemSearchPaths(t,i),s=0;s<e.length;s++)y.loadPlugin(e[s],r)},y.loadWikiTiddlers=function(i,e){var t,r=(e=e||{}).parentPaths||[],s=T.resolve(i,y.config.wikiInfo);if(!x.existsSync(s))return null;var l,n=(l=y.utils.parseJSONSafe(x.readFileSync(s,'utf8'))).config||{},s=(y.boot.wikiPath==i&&(y.boot.wikiTiddlersPath=T.resolve(y.boot.wikiPath,n['default-tiddler-location']||y.config.wikiTiddlersSubDir)),l.includeWikis&&((r=r.slice(0)).push(i),y.utils.each(l.includeWikis,function(e){var t=T.resolve(i,(e='string'==typeof e?{path:e}:e).path);-1===r.indexOf(t)?(e=y.loadWikiTiddlers(t,{parentPaths:r,readOnly:e['read-only']}),l.build=y.utils.extend([],e.build,l.build)):y.utils.error('Cannot recursively include wiki '+t)})),y.loadPlugins(l.plugins,y.config.pluginsPath,y.config.pluginsEnvVar),y.loadPlugins(l.themes,y.config.themesPath,y.config.themesEnvVar),y.loadPlugins(l.languages,y.config.languagesPath,y.config.languagesEnvVar),T.resolve(i,y.config.wikiTiddlersSubDir));if(y.utils.each(y.loadTiddlersFromPath(s),function(t){!e.readOnly&&t.filepath&&y.utils.each(t.tiddlers,function(e){y.boot.files[e.title]={filepath:t.filepath,type:t.type,hasMetaFile:t.hasMetaFile,isEditableFile:n['retain-original-tiddler-path']||t.isEditableFile||0!==t.filepath.indexOf(y.boot.wikiTiddlersPath)}}),y.wiki.addTiddlers(t.tiddlers)}),y.boot.wikiPath==i){var o,a,d,u={};for(d in y.boot.files)(a=y.boot.files[d]).isEditableFile&&(o=T.relative(y.boot.wikiTiddlersPath,a.filepath),a.originalpath=o,u[d]='/'===T.sep?o:o.split(T.sep).join('/'));0<Object.keys(u).length&&y.wiki.addTiddler({title:'$:/config/OriginalTiddlerPaths',type:'application/json',text:JSON.stringify(u)})}var p=T.resolve(i,y.config.wikiPluginsSubDir);if(x.existsSync(p))for(var c=x.readdirSync(p),f=0;f<c.length;f++)(t=y.loadPluginFolder(T.resolve(p,'./'+c[f])))&&y.wiki.addTiddler(t);var g=T.resolve(i,y.config.wikiThemesSubDir);if(x.existsSync(g))for(var h=x.readdirSync(g),f=0;f<h.length;f++)(t=y.loadPluginFolder(T.resolve(g,'./'+h[f])))&&y.wiki.addTiddler(t);var m=T.resolve(i,y.config.wikiLanguagesSubDir);if(x.existsSync(m))for(var b=x.readdirSync(m),f=0;f<b.length;f++)(t=y.loadPluginFolder(T.resolve(m,'./'+b[f])))&&y.wiki.addTiddler(t);return l},y.loadTiddlersNode=function(){y.utils.each(y.loadTiddlersFromPath(y.boot.bootPath),function(e){y.wiki.addTiddlers(e.tiddlers)}),y.wiki.addTiddler(y.loadPluginFolder(y.boot.corePath)),y.utils.each(y.boot.extraPlugins,function(e){var t;'+'===e.charAt(0)?(t=y.loadPluginFolder(e.substring(1)))&&y.wiki.addTiddler(t):(e=(t=e.split('/'))[0],3===t.length&&-1!==['plugins','themes','languages'].indexOf(e)&&y.loadPlugins([t[1]+'/'+t[2]],y.config[e+'Path'],y.config[e+'EnvVar']))}),y.boot.wikiPath&&(y.boot.wikiInfo=y.loadWikiTiddlers(y.boot.wikiPath))}),y.boot.initStartup=function(e){if(y.locationHash='#',y.browser&&!y.node&&('#:safe'===location.hash?y.safeMode=!0:y.locationHash=y.utils.getLocationHash()),y.utils.deepDefaults(y,{modules:{titles:Object.create(null),types:{}},config:{pluginsPath:'../plugins/',themesPath:'../themes/',languagesPath:'../languages/',editionsPath:'../editions/',wikiInfo:'./tiddlywiki.info',wikiPluginsSubDir:'./plugins',wikiThemesSubDir:'./themes',wikiLanguagesSubDir:'./languages',wikiTiddlersSubDir:'./tiddlers',wikiOutputSubDir:'./output',jsModuleHeaderRegExpString:'^\\/\\*\\\\(?:\\r?\\n)((?:^[^\\r\\n]*(?:\\r?\\n))+?)(^\\\\\\*\\/$(?:\\r?\\n)?)',fileExtensionInfo:Object.create(null),contentTypeInfo:Object.create(null),pluginsEnvVar:'TIDDLYWIKI_PLUGIN_PATH',themesEnvVar:'TIDDLYWIKI_THEME_PATH',languagesEnvVar:'TIDDLYWIKI_LANGUAGE_PATH',editionsEnvVar:'TIDDLYWIKI_EDITION_PATH'},log:{},unloadTasks:[]}),!y.boot.tasks.readBrowserTiddlers){for(y.boot.files=Object.create(null),y.boot.bootPath=e.bootPath||T.dirname(module.filename),y.boot.corePath=T.resolve(y.boot.bootPath,'../core'),0===y.boot.argv.length&&(y.boot.argv=['--help']),y.boot.extraPlugins=y.boot.extraPlugins||[];y.boot.argv[0]&&0===y.boot.argv[0].indexOf('+');)y.boot.extraPlugins.push(y.boot.argv[0].substring(1)),y.boot.argv.splice(0,1);y.boot.argv[0]&&0!==y.boot.argv[0].indexOf('--')?(y.boot.wikiPath=y.boot.argv[0],y.boot.argv=y.boot.argv.slice(1)):y.boot.wikiPath=process.cwd(),y.packageInfo=y.packageInfo||require('../package.json'),y.utils.checkVersions(process.version.substr(1),y.packageInfo.engines.node.substr(2))||y.utils.error('TiddlyWiki5 requires node.js version '+y.packageInfo.engines.node)}y.utils.registerFileType('text/vnd.tiddlywiki','utf8','.tid'),y.utils.registerFileType('application/x-tiddler','utf8','.tid'),y.utils.registerFileType('application/x-tiddlers','utf8','.multids'),y.utils.registerFileType('application/x-tiddler-html-div','utf8','.tiddler'),y.utils.registerFileType('text/vnd.tiddlywiki2-recipe','utf8','.recipe'),y.utils.registerFileType('text/plain','utf8','.txt'),y.utils.registerFileType('text/css','utf8','.css'),y.utils.registerFileType('text/html','utf8',['.html','.htm']),y.utils.registerFileType('application/hta','utf16le','.hta',{deserializerType:'text/html'}),y.utils.registerFileType('application/javascript','utf8','.js'),y.utils.registerFileType('application/json','utf8','.json'),y.utils.registerFileType('application/pdf','base64','.pdf',{flags:['image']}),y.utils.registerFileType('application/zip','base64','.zip'),y.utils.registerFileType('application/x-zip-compressed','base64','.zip'),y.utils.registerFileType('image/jpeg','base64',['.jpg','.jpeg'],{flags:['image']}),y.utils.registerFileType('image/jpg','base64',['.jpg','.jpeg'],{flags:['image']}),y.utils.registerFileType('image/png','base64','.png',{flags:['image']}),y.utils.registerFileType('image/gif','base64','.gif',{flags:['image']}),y.utils.registerFileType('image/webp','base64','.webp',{flags:['image']}),y.utils.registerFileType('image/heic','base64','.heic',{flags:['image']}),y.utils.registerFileType('image/heif','base64','.heif',{flags:['image']}),y.utils.registerFileType('image/svg+xml','utf8','.svg',{flags:['image']}),y.utils.registerFileType('image/vnd.microsoft.icon','base64','.ico',{flags:['image']}),y.utils.registerFileType('image/x-icon','base64','.ico',{flags:['image']}),y.utils.registerFileType('application/font-woff','base64','.woff'),y.utils.registerFileType('application/x-font-ttf','base64','.woff'),y.utils.registerFileType('application/font-woff2','base64','.woff2'),y.utils.registerFileType('audio/ogg','base64','.ogg'),y.utils.registerFileType('audio/mp4','base64',['.mp4','.m4a']),y.utils.registerFileType('video/ogg','base64',['.ogm','.ogv','.ogg']),y.utils.registerFileType('video/webm','base64','.webm'),y.utils.registerFileType('video/mp4','base64','.mp4'),y.utils.registerFileType('audio/mp3','base64','.mp3'),y.utils.registerFileType('text/markdown','utf8',['.md','.markdown'],{deserializerType:'text/x-markdown'}),y.utils.registerFileType('text/x-markdown','utf8',['.md','.markdown']),y.utils.registerFileType('application/enex+xml','utf8','.enex'),y.utils.registerFileType('application/vnd.openxmlformats-officedocument.wordprocessingml.document','base64','.docx'),y.utils.registerFileType('application/vnd.openxmlformats-officedocument.spreadsheetml.sheet','base64','.xlsx'),y.utils.registerFileType('application/vnd.openxmlformats-officedocument.presentationml.presentation','base64','.pptx'),y.utils.registerFileType('text/x-bibtex','utf8','.bib',{deserializerType:'application/x-bibtex'}),y.utils.registerFileType('application/x-bibtex','utf8','.bib'),y.utils.registerFileType('application/epub+zip','base64','.epub'),y.utils.registerFileType('application/octet-stream','base64','.octet-stream'),y.wiki=new y.Wiki(y.safeMode&&{enableIndexers:[]}),y.Tiddler.fieldModules=y.modules.getModulesByTypeAsHashmap('tiddlerfield'),y.Wiki.tiddlerDeserializerModules=Object.create(null),y.modules.applyMethods('tiddlerdeserializer',y.Wiki.tiddlerDeserializerModules),y.browser&&(window.onbeforeunload=function(t){var i;return t=t||{},y.utils.each(y.unloadTasks,function(e){e=e(t);e&&(i=e)}),i})},y.boot.loadStartup=function(e){y.boot.tasks.readBrowserTiddlers?y.loadTiddlersBrowser():y.loadTiddlersNode(),y.preloadTiddlers&&y.wiki.addTiddlers(y.preloadTiddlers),y.hooks.invokeHook('th-boot-tiddlers-loaded')},y.boot.execStartup=function(e){y.wiki.readPluginInfo(),y.wiki.registerPluginTiddlers('plugin',y.safeMode?['$:/core']:void 0),y.wiki.unpackPluginTiddlers(),y.safeMode&&y.wiki.processSafeMode(),y.wiki.defineTiddlerModules(),y.wiki.defineShadowModules(),y.crypto&&y.crypto.updateCryptoStateTiddler(),y.boot.remainingStartupModules=[],y.modules.forEachModuleOfType('startup',function(e,t){t.startup&&y.boot.remainingStartupModules.push(t)}),y.boot.executedStartupModules=Object.create(null),y.boot.disabledStartupModules=y.boot.disabledStartupModules||[],y.boot.executeNextStartupTask(e.callback)},y.boot.startup=function(e){y.boot.initStartup(e=e||{}),y.boot.loadStartup(e),y.boot.execStartup(e)},y.addUnloadTask=function(e){-1===y.unloadTasks.indexOf(e)&&y.unloadTasks.push(e)},y.boot.executeNextStartupTask=function(e){for(var t=0,i=function(){return s.name&&(y.boot.executedStartupModules[s.name]=!0),y.boot.executeNextStartupTask(e)};t<y.boot.remainingStartupModules.length;){var r,s=y.boot.remainingStartupModules[t];if(y.boot.isStartupTaskEligible(s))return y.boot.remainingStartupModules.splice(t,1),r=['Startup task:',s.name],s.platforms&&r.push('platforms:',s.platforms.join(',')),s.after&&r.push('after:',s.after.join(',')),s.before&&r.push('before:',s.before.join(',')),y.boot.log(r.join(' ')),!y.utils.hop(s,'synchronous')||s.synchronous?(s.startup(),s.name&&(y.boot.executedStartupModules[s.name]=!0),y.boot.executeNextStartupTask(e)):(s.startup(i),!0);t++}return'function'==typeof e&&e(),!1},y.boot.doesTaskMatchPlatform=function(e){var t=e.platforms;if(t){for(var i=0;i<t.length;i++)switch(t[i]){case'browser':if(y.browser)return!0;break;case'node':if(y.node)return!0;break;default:y.utils.error('Module '+e.name+': \''+t[i]+'\' in export.platforms invalid')}return!1}return!0},y.boot.isStartupTaskEligible=function(e){var t;if(!y.boot.doesTaskMatchPlatform(e))return!1;var i=e.name,r=y.boot.remainingStartupModules;if(i){if(-1!==y.boot.disabledStartupModules.indexOf(i))return!1;for(t=0;t<r.length;t++){var s=r[t];if(s.before&&-1!==s.before.indexOf(i)&&y.boot.doesTaskMatchPlatform(s)&&(!s.name||-1===y.boot.disabledStartupModules.indexOf(s.name)))return!1}}var l=e.after;if(l)for(t=0;t<l.length;t++)if(!y.boot.executedStartupModules[l[t]])return!1;return!0},y.hooks=y.hooks||{names:{}},y.hooks.addHook=function(e,t){y.utils.hop(y.hooks.names,e)?y.hooks.names[e].push(t):y.hooks.names[e]=[t]},y.hooks.invokeHook=function(e){var t=Array.prototype.slice.call(arguments,1);if(y.utils.hop(y.hooks.names,e))for(var i=0;i<y.hooks.names[e].length;i++)t[0]=y.hooks.names[e][i].apply(null,t);return t[0]},y.boot.boot=function(e){y.crypto=new y.utils.Crypto,y.browser&&!y.node&&(y.passwordPrompt=new y.utils.PasswordPrompt),y.boot.decryptEncryptedTiddlers(function(){y.boot.startup({callback:e})})},y.browser&&!y.boot.suppressBoot&&y.boot.boot(),y};'undefined'!=typeof exports?exports.TiddlyWiki=_boot:_boot(window.$tw);</script>
</div>
<!--~~ Raw markup for the bottom of the body section ~~-->
</body>
</html>